ESAB – Pós-graduação em Engenharia de Sistemas Módulo: Sistemas Operacionais
RESUMO
UNIDADE 1: Histórico do desenvolvimento de Sistemas Operacionais
Apresenta um histórico dos computadores (Eniac, MultiVac, desenvolvimento de transistores), concomitante aos sistemas operacionais (no começo, nem existia).
UNIDADE 2: Tipos de sistemas operacionais • Quanto à Arquitetura do Sistema :
• Monolítico → instruções de alto nível que possibilitam o gerenciamento de processos (coleção de rotinas). Ex: windows 98, Linux, Solaris;
• Microkernel → algumas funções do S.O. São separadas em programas Servidores, que se comunicam com um S.O. mínimo (que possui as instruções de manipulação e acesso a componentes do computador). Ex: Minix.
• Híbrido → os Servidores executam em “modo protegido”, permitindo privilégios de acesso a esses programas, e tem a capacidade de agregar e desgregar
funcionalidades.
• Quanto à Capacidade de Execução de Tarefas :
• Mono tarefa → apenas 1 tarefa por vez (desperdício de recursos). Ex: MS-DOS; • Multitarefa → várias tarefas simultaneamente (otimizando o uso de recursos). Ex:
Ms-Windows XP. A Multitarefa pode ser:
• Tempo Compartilhado: cada programa recebe um “time-slice” e roda nele. O S.O. gerencia as fatias de tempo e executa a troca de contexto quando os programas precisam de mais slices para concluir o processamento; • Tempo Real: não utiliza “time-slice”, cada aplicação define seu nível de
prioridade, e o S.O. executa o programa pelo tempo necessário (ou até outro aplicativo de maior prioridade entrar em execução).
• Pela Quantidade de Usuários :
• Monousuário: não existe separação de arquivos, programas, documentos, tudo é tratado como pertencendo a um único usuário;
• Multiusuário: recursos definidos para cada usuário do sistema, separando as tarefas e documentos.
UNIDADE 3: Sistemas avançados de Processamento (multiprocessadores)
Sistemas avançados possuem duas ou mais unidades de processamento, permitindo execução de múltiplas tarefas sem compartilhamento de tempo do processador. Temos os seguintes tipos principais:
• Sistemas Multiprocessadores: computadores com 2 ou mais processadores, antes em uso restrito (científico), atualmente mais viável ao usuário comum;
• Processador Multi-núcleo: o processador central é feito com mais de uma unidade central de processamento;
• Processamento Distribuído: sistema formado por uma rede de computadores interligados (nós da rede). Existem Sistemas Operacionais próprios para lidar com isso. Um sistema distribuído real possui uma arquitetura eletrônica específica para processamento distribuído, enquanto um cluster é formado por computadores comuns conectados via Ethernet.
Estrutura básica do sistema: ele organiza e controla a realização das tarefas e acesso aos dispositivos, controlar conflitos de execução, acesso aos usuários, etc.
Funções do Sistema operacional:
• Tratamento de interrupções → controla a execução do programa quando ocorre uma interrupção externa ao código que está sendo executado;
• Tratamento de Exceções → exceções são geradas por algum programa em execução; • Gerenciamento de Programas → alocação de memória e recursos;
• Gerenciamento de Memória RAM; • Gerenciamento de Arquivos e Criação; • Gerenciamento de Dispositivos; • Suporte a Redes.
Sistema de Segurança: o S.O. deve garantir que apenas programas confiáveis e usuários cadastrados tenham acesso aos dados (que só podem ser disponibilizados para quem estiver autorizado).
Chamadas ao Sistema: rotinas responsáveis por executar as operações especiais de acesso aos recursos do computador e de acesso ao kernel do sistema.
UNIDADE 5: Processos
Processos são instâncias de um programa rodando no computador ou mesmo trechos de código dentro de um programa.
Para garantir a execução de múltiplos processos, o S.O. deve armazenar (contexto): • código executável do programa associado ao processo;
• espaço de memória utilizado;
• descritores do sistema operacional (tabelas de arquivos em disco ou banco de dados, por exemplo);
• Atributos de Segurança (nome de usuário, permissões); • Estado do Processo.
O gerenciamento de processos, exige a Troca de Contexto (paralisar um programa em execução para executar trechos de outro processo).A troca de contexto está associada aos seguintes eventos:
• Escalonamento de Processo;
• Ocorrência de Interrupção ou exceção; • Troca de modo usuário para modo kernel. Estados de um processo:
• Estado de Espera → após ser criado, o processo é armazenado na memória principal e entra em estado de espera;
• Estado de Execução → quando recebe autorização do S.O. para execução, alternado este estado com o de Espera (escalonamento);
• Estado de Bloqueio → o processo entra neste estado quando solicita um recurso do S.O. que já está sendo utilizado por outro processo (ele não participa das trocas de contexto).
Comunicações entre Processos: baseadas em funções e rotinas do S.O. específicas para esta função, fazendo uso de filas (FIFO – um processo abre um canal de escrita enquanto outro apenas lê, controlado então pelos programas), PIPES unidirecionais (semelhante ao FIFO, mas gerenciado pelo S.O.), FILA de MENSAGENS (área de troca de mensagens entre os processos, gerenciada pelo S.O.), MEMÓRIA COMPATILHADA (semelhante à fila de mensagens, porém o controle deve ser feitos pelos programas).
UNIDADE 6: Threads
Threads são partes independentes de um processo em execução.
Um processo não compartilha um mesmo recurso simultaneamente com outro processo, mas uma thread pode compartilhar um mesmo recurso simultaneamente com outras threads (desde que esteja dentro do mesmo processo).
Um processadores multi-threading, cada unidade de processamento pode executar threads independentes.
Threads necessitam armazenar menos informações que os processos numa troca de contexto, por isso é mais fácil executar simultaneamente threads do que processos.
Troca de contexto entre threads:
• Cooperativa → cada thread possui o próprio controle e determina o momento de interromper a execução e passar o processador para outra thread;
• Preemptiva → o S.O. tem controle total sobre a thread e determina o momento da troca de contexto.
Threads do Sistema são executadas em modo kernel (que realiza a troca de contexto preemptiva), enquanto as threads de usuário são gerenciadas no Modo Usuário (trocas de contexto cooperativas). Casos de concorrência entre threads (por acesso a um recurso) exigem um controle e mecanismo de proteção.
UNIDADE 7: Comunicação entre Processos e Threads
Tanto o S.O. quanto os processos devem ser construídos de forma a suportar comunicação entre programas ou processos.
O COM (Componente Object Model) é a estrutura da Microsoft para prover este comportamento. O desenvolvedor não precisa se preocupar com o funcionamento interno dos componentes da COM, apenas com suas interfaces. Isso otimiza o desenvolvimento, uma vez que parte das rotinas de gerenciamento de componentes passam a ser responsabilidade do S.O.
Alguns componentes são executados como processos dentro de um programa enquanto outros podem rodar através de Serviços de Componentes do Windows, de forma independente, mas em sincronia com o aplicativo.
As rotinas de comunicação do Windows Vista passaram a ser chamadas: Windows Communication Foundation (WCF).
O POSIX Core Services foi definido para ser um padrão de funcionamento entre as diversas versões do Unix. Possui rotinas para gerenciamento de processos e troca de dados entre eles.
MacOS Xcore Foundation é o padrão de rotinas de comunicação entre processos para a linha MacOS.
UNIDADE 8: Gerenciamento de Processos
Onde se definem as propriedades dos processos em execução e a maneira como cada um receberá o tempo de execução no processador.
Tipos:
• Gerenciadores por Admissão → o gerenciador escolhe quais programas serão selecionados para serem excutados no processador. E quando um programa solicita uma operação ao
S.O., o gerenciador de processos irá decidir o momento em que a solicitação será atendida, baseado em Prioridade de Processo (entre outros). Este tipo de gerenciador é bastante usado em sistemas de tempo real;
• Gerenciadores por Tempo Médio → presente nos sistemas que trabalham com memória virtual, retiram processos temporariamente da memória principal e os transferem para a secundária. A escolha de qual processo irá sair da memória depende do estado do processo (se estiver em Espera e Execução ficará na principal e se estiver em Bloqueio irá para a secundária);
• Gerenciadores Despachantes → designam os processos a serem executados pelo processador baseados em alterações do sistema (interrupções, dispositivos, chamada ao sistema), ou seja, de acordo com o nível de atividade do sistema.
UNIDADE 9: Mecanismo de sincronização
• Sincronização de dados: integridade de dados;
• Sincronização de Processos: evitar conflito no uso de recursos do computador em sistemas multitarefa.
Para a sincronização, são usados:
• Barreiras: criadas e gerenciadas pelos aplicativos (quando encontra uma instrução de barreira, o processo entra em estado de espera até que todos os processos pertencentes ao mesmo programa também executem a instrução de barreira);
• Semáforos: usados pelos programas e pelo S.O. indicando se um dado recurso pode ser utilizado (o modo mais comum é um contador no semáforo);
• Travas: usada quando um recurso deve ser utilizado exclusivamente por um processo, impedindo sua utilização por outros processos, até a liberação da trava.
A granularidade da sincronização é importante para o desempenho do sistema: compartilhamento de área grande dados, exige maior controle ao passo que realizar vários compartilhamentos em
pequenas áreas pode gerar um DeadLock.
UNIDADE 10: Métodos para prevenção de bloqueio entre processos
Bloqueio (DeadLock) ocorre quando um processo A, que está usando um recurso X, está parado esperando liberação de um recurso Y que está travado em outro processo B, que está esperando a liberação do recurso X.
Uma maneira de evitar a dependência circular é a precedência dos recursos, que devem ser solicitados linearmente. Além disso, algumas estratégias válidas são:
• Nenhum processo terá acesso exclusivo aos recursos;
• Alocação de recursos por um processo só é permitida em modo sequencial; • Pré-alocação de recursos no início da execução do processo;
• Alocação de recurso por tempo determinado.
Tratamento de bloqueio: os processos são terminados, dados são salvos e recursos liberados. Após a finalização dos processos, eles são reiniciados em sequência, para evitar novo bloqueio.
Bloqueio aberto: quando processos tentam acesso simultâneo a um recurso e “cedem a vez” para aguardar a liberação do recurso (o recurso não é utilizado e os processos estão “esperando” sua liberação, que não ocorre).
UNIDADE 11: Gerenciamento de memória
Memória ou Paginação de Memória.
• Paginação de Memória → divisão da memória em páginas de tamanho fixo (com uso da Memória Virtual, as páginas podem ser armazenadas em qualquer local do computador); • Segmentação da Memória → divisão da memória em segmentos de dados (o programa deve
informar o endereço de memória e o segmento). Memória compartilhada, pode ser:
• Hardware → feita em área da RAM acessada por vários processadores; • Software → feita por estruturas de dados para realizar a troca de informação. Organização da memória:
• Cache → dentro do processador, pequena e rápida;
• Principal → RAM, armazena programas e informações em uso no computador;
• Secundária → usualmente o disco, armazena dados temporários ou que não estão em uso. Coletor de lixo: tarefa do gerenciador de memória, libera espaço não utilizado.
UNIDADE 12: Memória Virtual
A memória virtual é um recurso que disponibiliza a um programa um ambiente de memória unificada e contínua (no aspecto lógico), implementada em memória fragmentada (aspecto físico), melhorando o uso de memória principal e aumentando o desempenho do computador.
No início, gerenciar a memória era responsabilidade dos programas, e recentemente (1990) se tornou um recurso do S.O.
A memória virtual normalmente divide a memória em espaços de endereçamento (pelo menos 2kb) denominados Página de Memória. Cada página é uma área contínua de dados, não fragmentada. O mapeamento entre o endereço físico de memória e o endereço da MV é feito com uma tabela de paginação (a paginação é a técnica para transferir dados da memória principal para a secundária). *algumas páginas de memória não podem ser removidas da memória principal, porque não há garantias de que as páginas retornarão ao mesmo endereço físico (p.ex: a tabela de paginação, rotinas ativadas por interrupção, dispositivos que usam o DMA).
UNIDADE 13: Memória Paginada
A memória principal e a secundária são divididas em páginas de memória para facilitar a
recuperação de informações que estão na memória secundária (quando o gerenciador de memória não encontra uma informação na memória principal ele deve localizar página que a contém na memória secundária, determinar qual área da memória principal irá receber os dados e transferi-los para lá).
Se não houver espaço disponível, ocorre uma troca de página (page swap), removendo da memória principal a página menos utilizada.
Paginação → transferência de dados inativos da memória principal para a secundária;
Troca de Página → quando uma página da memória secundária irá ocupar espaço de uma página em uso na memória principal.
No windows o arquivo físico que armazena as páginas menos utilizadas é o pagefile.sys, cujo tamanho pode ser definido pelo usuário (fixo ou variável). No Linux o arquivo de paginação fica
numa partição independente.
UNIDADE 14: Segmentação de Memória
Divisão de memória em segmentos com as propriedades: • localização física na memória;
• permissão de acesso; • tamanho;
• identificador.
A segmentação de memória é gerenciada pela Unidade de Gerenciamento de Memória (MMU), que faz o mapeamento entre os endereços físicos e os endereços dos segmentos de memória.
Memória Virtual Segmentada: em alguns sistemas, a memória virtual não utiliza páginas,m e sim segmentos de memória.
Em sistemas IBM, o gerenciamento de memória é feito utilizando-se a paginação e a segmentação, onde cada segmento de memória é dividido em páginas.
UNIDADE 15: Princípios básicos do gerenciamento de dispositivos
O gerenciamento de dispositivos é feito através do Driver (que contém instruções específicas do dispositivo, funcionando como um tradutor de comandos entre o sistema operacional e o
equipamento eletrônico).
Existe uma dependência direta entre o driver e o dispositivo e entre o driver e o sistema operacional. Drivers podem ser divididos em duas partes: comandos lógicos (acessados pelo S.O. e qualquer programa que use o driver, para executar comandos e transferir dados ao dispositivo) e comandos físicos (usados pelo próprio driver para operar o dispositivo).
Firmware: circuito eletrônico que possui internamente um software. Driver genérico: operações-padrão para um tipo de dispositivo.
Plug-And-Play: padrão que define um conjunto de características que um dispositivo deve possuir para facilitar a instalação de drivers.
UNIDADE 16: Funcionamento básico do gerenciamento de arquivos
Sistema de arquivos: definem a maneira como os dados serão gravados e gerenciados nos
dispositivos de armazenamento acessados pelo computador (que serão estruturas de dados com a representação lógica das informações).
Os dados são organizados em blocos de informação, em geral de 4KB. Arquivos possuem as seguintes propriedades principais:
• Modo de Acesso → somente leitura, por exemplo; • Modo de Exibição → se será oculto ou não; • Data de Criação;
• Data de Alteração; • Nome do Arquivo; • Extensão do Arquivo.
*Tabela de Arquivos: contém o identificador de arquivo e o número do primeiro bloco físico de dados no disco rígido.
*metadados armazenados na tabela de arquivos: tamanho em bytes dos dados, formato do conteúdo, data de criação, de modificação, usuário que criou, resumo do conteúdo do arquivo, etc.
Os sistemas de arquivos podem ser: • De disco;
• Em Rede, p. Ex o NFS;
UNIDADE 17: Funcionamento do NTFS
Introduzido em 1993. Possui vantagens em relação ao FAT, como melhor aproveitamento do espaço, maior desempenho nas operações de leitura/escrita, mecanismo de criptografia, etc. No NTFS todo o conteúdo do arquivo é armazenado como um metadado, numa estrutura denominada tabela mestre de arquivos (a estrutura de dados usada é a Árvore B+).
Para organizar os meta dados, o NTFS utiliza um arquivo especial (Meta Arquivo) que contém informação referente a cópias de segurança, dados do sistema, dados temporários, alocação de espaço livre, partes do disco com defeito, informações de segurança e utilização do disco.
Arquivos pequenos são armazenados diretamente na Tabela Mestre (arquivos residentes) para não desperdiçar espaço (porque não ocupam uma Unidade Básica de Informação, por exemplo, um arquivo de 800 bytes ocuparia 4kb e desperdiçaria 3200 bytes, o que não ocorre quando ele é residente).
*NTFS não possui compatibilidade com outros sistemas operacionais, embora seja possível ler dados num disco NTFS e até escrever dados nele (sem ter completa garantia contra perda de dados). O NTFS desenvolvido para Windows Vista possui as seguintes características:
• Nome alternativo do arquivo: um segundo nome com permissões de acesso distintas; • Cota de armazenamento;
• Pontos de montagem: associar uma nova unidade de disco a uma determinada pasta; • Ponto de junção: o conteúdo de duas pastas será exibido em conjunto;
• Ligação entre arquivos;
• Gerenciamento Hierárquico de Armazenamento: organiza os arquivos de acordo com a frequência de acesso a eles;
• Controle de Versão dos arquivos: • Compressão de Arquivos;
• Armazenagem Unificada de Arquivos: quando múltiplos arquivos com o mesmo conteúdo são armazenados em locais diferentes, o NTFS armazena apenas uma referência dos
arquivos no disco,; quando um arquivo é modificado uma nova referência física ao arquivo é feita no disco;
• Criptografia do Sistema de Arquivos: arquivos são são acessíveis a partir do disco de origem (se forem copiados para outro disco, não serão lidos).
UNIDADE 18: Sistema de arquivos do Linux Denominado Linux Ext2.
A Unidade Básica de Informação é de 4KB.
Padrão Ext3 desenvolvido em 2001 (utiliza um mecanismo de Journaling, que otimiza o
desempenho). Posteriormente se criou o ext4 e tanto o ext3 quanto o ext4 mantém as caracterísitcas do ext2 (descritas abaixo).
Tratamento de arquivos diferente do NTFS (informações sobre o arquivo são explicitamente separadas do arquivo). A estrutura do padrão ext2 se divide em:
criação, etc), sendo que 1 arquivo pode ter mais de um Inode (cada um associado a um bloco de dados);
• Bloco de Dados → dados fisicamente gravados no disco. O ext2 prioriza a gravação de um bloco contínuo de dados.
Os arquivos são organizados numa tabela (Tabela Descritiva de Grupos).
Arquivos ext2 e ext3 podem ser acessados por outros S.Os., como o MacOS X, MS-Windows Server.
O padrão ext3 possui as seguintes características: • Definição padrão dos atributos de um arquivo;
• Definição padrão do Grupo de Usuário a um diretório;
• Definição do tamanho da Unidade Básica de Informação na criação do arquivo; • Checagem da integridade do sistema de arquivos.
UNIDADE 19: Interfaces entre usuário e computador
Descreve a importância da interface com o usuário e o foco nas interfaces gráficas (um pouco do histórico, a primeira GUI da Xerox em 1981).
Projetos de GUI: facilidade de uso, abrangência, eficiência devem ser considerados. UNIDADE 20: Sistemas Operacionais de Rede
S.O. de rede → responsáveis por gerenciar de maneira eficiente os computadores de uma rede, bem como os usuários que utilizam os recursos disponíveis.
Funcionalidades necessárias:
• Suporte a protocolos de rede (TCP, IPX, NetBIOS); • Mecanismo de Segurança;
• Gerenciamento de Arquivos distribuídos; • Gerenciamento de Dispositivos distribuídos; • Gerenciamento de Usuários.
UNIDADE 21: Gerenciamento de usuários Política de gerenciamento de usuário:
• Pessoas que podem utilizar o computador; • Recursos que poderão ser usados;
• Horários de utilização;
• Proteção de informações e programas.
Autenticação de usuário → confirmar as permissões do usuário para realização de alguma tarefa (usuário e senha, biometria, etc).
Permissões concedidas ao usuário → recursos a que ele terá acesso (definidos pelo administrativo, em nível superior ao dele).
Permissões concedidas pelo usuário → permissões definidas no mesmo nível do usuário. UNIDADE 22: Protocolo LDAP
LDAP → Lightweight Directory Access Protocol.
Diretório → organização onde os elementos representam recursos e usuários de uma rede de computadores, como:
• Usuários; • Computadores; • Impressoras; • Arquivos;
• Departamentos Administrativos;
• qualquer recurso que possa ser representado por um objeto.
Computador passa a usar o diretório do LDAP quando se conecta a ele, podendo solicitar as seguintes operações:
• Requisição de canal seguro TLS (Transport Layer Security); • Autenticação e especificação da versão do LDAP;
• Buscas no diretório do LDAP;
• Adicionar e modificar um objeto no diretório; • Cancelar solicitações;
• Fechar a conexão com o servidor LDAP.
A estrutura do Diretório é em árvore de registros, cada registro possui um conjunto de propriedades e cada propriedade possui um conjunto de valores.
O conteúdo de um registro → denominado Esquema (possui regras para os tipos de propriedades do registro em questão).
UNIDADE 23: Active Directory
Serviço de Diretório baseado no LDAP para sistemas MS-Windows. Foco em Objetos → que representam os registros do protocolo LDAP.
Possui uma estrutura hierárquica (nível mais alto → Floresta, contém Árvores, que contém Domínios que contém Unidades Organizacionais, definidas a partir de Objetos de Política de Grupo).
As informações do AD ficam armazenadas em Controladores de Domínio, que mantém a sincronização quando ocorre alteração num deles.
Relacionamento de Confiança → mecanismo para permissão de acesso (um domínio, ao ser criado, possui relacionamentos de confiança com todos os domínios da árvore ao qual ele pertence).
Tipos de relacionamento: • Direção Única; • Direção Dupla; • Domínio Confiável;
• Domínio Confiante (permite acesso de usuários confiáveis); • Relacionamento Transitivo;
• Relacionamento Explícito (criado por um administrador);
• Relacionamento Cruzado (Relacionamento Explícito entre Domínios de Árvores diferentes); • Floresta Confiável (na raiz do AD).
UNIDADE 24: Técnicas básicas de segurança
Objetivo → Garantir o acesso a recursos apenas a usuários e programas autorizados.
Histórico: conta sobre o surgimento do MBL ( Model Bell-LaPadula, desenvolvido pela Agência de Segurança dos EUA, altamente seguro, porém muito complexo).
Regras para Restrições de segurança (execução de programas):
• Execute apenas programas que forem testados por algum mecanismo de segurança (menos confiável);
• Execute apenas programas que forem testados por um mecanismo confiável de segurança (mais onerosa);
(pouco confiável);
• Execute qualquer programa e durante a execução verifique se as operações são seguras (mais usada atualmente).
S.O. separa suas próprias operações de operações de usuário, e o processador agrupa as instruções em níveis, para melhorar a segurança (só o S.O. pode executar as instruções de nível mais baixo de segurança).
*adicionais de segurança: Firewall, Antivírus, Criptografia e Cópia de Segurança. UNIDADE 25: Sistemas embarcados (embutidos)
Sistemas reduzidos, criados para uma função específica (dedicada). Possuem limitação quanto ao uso de memória e aplicativos suportados. Cita LiMo (Linux), Ms-Windows Mobile e Symbian.
UNIDADE 26: Sistemas virtuais
Conceito básico de VM. Cita Ms-Virtual PC. Convidado (Guest) → S.O. instalado na VM;
Hospedeiro (Host) → máquina real que abriga a VM. Máquina Virtual Binária → JVM (java) e plataforma .NET.
Máquina LAM-MPI também é uma máquina virtual binária para simular clusters. UNIDADE 27: Sistemas Operacionais da Web
Define um S.O. de web (fazer as operações básicas de um S.O., operando na Web). Cita WebOS e conta seu histórico.
Depois cita outros (mais atuais, mas já morreram): • YouOS;
• DesktopTwo;
• EyeOS (este parece que está vivo ainda). UNIDADE 28: Computação de Alto Desempenho
Aplicada a supercomputadores e clusters (computação científica). Exige um S.O. mais especializado para as operações.
Arquiteturas de processamento:
• SISD: Single Instruction Single Data → 1 instrução por vez em uma área de dados;
• SIMD: Single Instruction Multiple Data → 1 instrução por vez, podendo aplicar em várias áreas de dados;
• MISD: Multiple Instruction Single Data → múltiplas instruções em apenas uma área de dados (em geral apenas para verificação criptográfica, escrever muita coisa ao mesmo tempo não faz sentido);
• MIMD: Multiple Instruction Multiple Data → múltiplas instruções aplicadas em várias áreas de memória.
Supercomputadores podem ter múltiplos processadores ou múltiplos computadores (cluster). UNIDADE 29: História e desenvolvimento do MS-Windows
Início em 1983 → MS-DOS, 1985 → Windows 1.0, 1987 → Windows 2.0, 1990 → Windows 3.0 (aí a Microsoft começa a desenvolver o NT para integrar as plataformas existentes só concluiu o
projeto de integração NT-Win3.0 ao lançar o WinXP em 2001).
O resto é um bla-blá-blá falando o que cada versão de windows melhorava em relação à anterior (win95, win98, winMe, Win2000, WinVista, WinServer2003).
UNIDADE 30: Linux
Histórico do Linux (primeira versão funcional em 1992). Enumera as distribuições (comerciais, não-comerciais, etc).
Explica a estrutura de desenvolvimento (numeração do Linux → X.Y.Z, X = versão do kernel, Y = revisão da versão, Z = número de pequenas revisões).