Visão Geral do Unix e Linux. História Primeiramente desenvolvido em 1969 por Ken Thompson e Dennis...
Transcript of Visão Geral do Unix e Linux. História Primeiramente desenvolvido em 1969 por Ken Thompson e Dennis...
Visão Geral do Unix e LinuxVisão Geral do Unix e Linux
HistóriaHistória
Primeiramente desenvolvido em 1969 por Ken Thompson e Dennis Ritchie do grupo de pesquisas do laboratório Bell; características incorporadas de outros sistemas operacionais, especialmente o MULTICS.
A terceira versão foi escrita em C, que foi desenvolvida no Bell Labs especificamente para o UNIX.
BSD foi o sistema Unix mais influente que não fazia parte do Bell Labs e do grupo da AT&T UNIX e sim da Universidade da California em Berkeley (Berkeley Software Distributions). 4BSD UNIX resultou do financiamento da DARPA para
desenvolver um sistema UNIX padrão para uso governamental. Desenvolvido para o VAX, o 4.3BSD é uma das versões
principais e foi portada para várias outras plataformas (incluindo o PC).
Vários projetos de padronização buscam consolidar os vários tipos de variantes de UNIX levando a uma interface de programação para o mesmo.
História das versões do UNIXHistória das versões do UNIX
Vantagens iniciais do UNIXVantagens iniciais do UNIX
Escrito em uma linguagem de alto nível.
Distribuído com o arquivo fonte.
Fornece primitivas de sistema operacionais poderosas em plataformas baratas.
Projeto modular, tamanho reduzido e clareza.
Princípios de projeto do UNIXPrincípios de projeto do UNIX
Projetado para ser um sistema de tempo compartilhado.
Tem uma interface padrão com o usuário simples (shell) que pode ser substituída.
Sistema de arquivos com diretórios multiníveis estruturados em árvores.
Os arquivos são suportados pelo núcleo como uma sequência não-estruturada de bytes.
Fornece suporte a vários processos, tendo o processo a capacidade de criar facilmente novos processos.
Prioridade maior para tornar o sistema interativo e para fornecer facilidades para o desenvolvimento de programas.
Interface de programaçãoInterface de programação
Kernel: tudo que fica abaixo da interface da chamada ao sistema e acima do nível de hardware.
Fornece o sistema de arquivos, escalonamento de UCP, gerência de memória e outras funções de sistema através das chamadas.
Programas de sistema: utiliza as chamadas ao sistema do kernel para fornecer funções úteis, tais como a compilação de programas e a manipulação de arquivos.
Como outros sistemas computacionais, o UNIX consiste de duas partes separadas:
Estrutura de camadas do 4.4BSDEstrutura de camadas do 4.4BSD
Estrutura de diretório UNIX típicaEstrutura de diretório UNIX típica
História do LinuxHistória do Linux
Linux é um sistema operacional de código aberto, moderno, baseado nos padrões do UNIX.
Primeiramente desenvolvido como um núcleo pequeno mas auto-contido em 1991 por Linus Torvalds, com um objetivo maior de projeto de compatibilidade com o UNIX.
Sua história têm sido um exemplo de colaboração de muitos usuários espalhados pelo mundo, correspondendo-se quase que exclusivamente através da Internet.
Foi projetado para executar de forma confiável e eficiente em um hardware comum de PC, mas também executa em uma grande variedade de outras plataformas.
O núcleo do sistema operacional Linux é inteiramente original, mas ele pode executar muito do software de código livre do UNIX, resultando em um sistema operacional tipo UNIX de código aberto.
Possui um grande e variado número de Distribuições Linux incluindo o núcleo, aplicações e ferramentas de gerência.
O núcleo do LinuxO núcleo do Linux
A versão 0.01 (maio 1991) não tem rede, executava apenas em processadores compatíveis com o Intel 80386 e em hardware de PC, tinha suporte de dispositivo extremamente limitado e apresentava apenas o sistema de arquivos Minix.
Linux 1.0 (março 1994) incluía essas novas características: Suporte para padrões UNIX de protocolos de rede TCP/IP.
Interface de soquete compatível com BSD para programação em rede.
Suporte de driver para executar IP sobre Ethernet
Sistema de arquivos melhorado
Suporte para uma variedade de controladores SCSI para alto desempenho de acesso à disco
Extra suporte de hardware
Versão 1.2 (março 1995) foi a última versão de núcleo para PC apenas.
Linux 2.0Linux 2.0
Disponibilizado em Junho de 1996, 2.0 adicionou as duas novas grandes capacidades: Suporte para arquiteturas múltiplas, incluindo uma portabilidade
para Alpha. Suporte para arquiteturas multiprocessadas.
Outras características novas incluíram: Melhoria no código de gerência à memória. Melhoria no desempenho do TCP/IP. Suporte para threads de núcleo internas, para tratamento
automático de dependências em módulos carregáveis e por carga automática de módulos sob demanda.
Interface de configuração padronizada. Disponível para processadores da série Motorola 68000, sistemas Sun
Sparc, e para sistemas de PC e PowerMac. 2.4 e 2.6 aumentaram do suporte SMP, adicionaram o sistema de
arquivos journaling, núcleo preemptivo e suporte de memória de 64 bits.
O sistema LinuxO sistema Linux
Linux usa muitas ferramentas desenvolvidas como parte do sistema operacional BSD de Berkeley, o sistema de janelas Xwindows do MIT e o projeto GNU da Free Software Foundation's GNU.
O sistema de bibliotecas foi originado pelo projeto GNU, com melhoramentos providos pela comunidade Linux.
As ferramentas de administração de rede foram derivadas do código do 4.3BSD; derivações recentes do BSD tais como o Free BSD pegaram código emprestado do Linux como retorno.
O sistema Linux é mantido por um conjunto de desenvolvedores trabalhando de forma livre através da Internet, com um pequeno número de sites públicos FTP agindo como repositórios padrão de fato.
As distribuições LinuxAs distribuições Linux
Um conjunto de pacotes padrões pré-compilados ou distribuições incluem o sistema básico Linux, um sistema de instalação e de utilitários de gerência e pacotes prontos para instalação das ferramentas comuns do UNIX.
As primeiras distribuições gerenciavam estes pacotes através simplesmente do fornecimento de um meio para desempacotar todos os arquivos nos lugares apropriados; as distribuições modernas incluem gerência avançada de pacotes.
As primeiras distribuições incluíam o SLS e Slackware
Red Hat e Debian são distribuições populares de fontes comerciais e não-comerciais, respectivamente.
O formato de arquivos do pacotes RPM permite compatibilidade entre as várias distribuições Linux.
Licenças LinuxLicenças Linux
O núcleo do Linux é distribuído sob a licença GNU General Public License (GPL), que tem um conjunto de requisitos estabelecidos pela Free Software Foundation.
Qualquer um usando Linux ou criando código a partir do Linux não pode tornar o produto derivado proprietário; software disponibilizado sob a licença GPL não pode ser distribuído apenas na forma binária.
Princípios de projetoPrincípios de projeto
O Linux é um sistema multiusuário e multitarefa com todo um conjunto de ferramentas compatíveis com o UNIX.
Seu sistema de arquivos adere à semântica tradicional do UNIX e implementa de forma completa o modelo de rede do UNIX.
Os principais objetivos de projeto são a velocidade, eficiência e padronização.
O Linux é projetado para ter conformidade com os documentos relevantes do POSIX; pelo menos duas distribuições do Linux conseguiram a certificação oficial POSIX.
A interface de programação do Linux adere à semântica do SVR4 UNIX, ao invés de ter comportamento BSD.
Componentes de um sistema LinuxComponentes de um sistema Linux
Componentes de um sistema LinuxComponentes de um sistema Linux
Assim como a maioria das implementações de UNIX, o Linux é composto de 3 partes principais de código, sendo mais importante a distinção entre o núcleo e os outros componentes
O kernel (núcleo) é responsável por manter as abstrações importantes do sistema operacional
O código do núcleo executa em modo núcleo ou privilegiado com total acesso aos recursos físicos ou hardware do sistema computacional.
Todo o código do núcleo e suas estruturas de dados são mantidas em um espaço de endereçamento único.
Componentes de um Sistema LinuxComponentes de um Sistema Linux
As bibliotecas do sistema definem um conjunto de funções padronizadas através das quais as aplicações interagem com o núcleo, e que implementam uma grande parte da funcionalidade do sistema que não necessita dos privilégios de execução em modo núcleo.
Os utilitários do sistema são responsáveis por tarefas individuais especializadas.
Diagramas de WaterlooDiagramas de Waterloo
Conceitual Concreto
fs
sched
mm net
ipc
sched
mm
ipcvfs
net
Diagrama de TweedieDiagrama de Tweedie
Scheduler TrapsVMSyscalls
User Processes
ProcessManager
VFSSocket
ManagerMemoryAllocator
MathSupport
NetworkProtocols
FileSystems
IO RequestorPacket Requestor
Char Devices
Block Devices
Net Devices
Diagram de Vahalia Diagram de Vahalia
core utilities
virtualmemory
framework
vnode/vfsinterface
execswitch
blockdeviceswitch
schedulerframework
STREAMS
disk
tapenetwork tty
NFS
FFS
s5fs
elfa.out cofffile
device
anonymous
time-sharing
real-time
system
NúcleoNúcleoApplications
System Libraries (libc)
System Call Interface
Hardware
Architecture-Dependent Code
I/O Related Process RelatedScheduler
Memory Management
IPC
File Systems
Networking
Device Drivers
Mod
ules