arquitetura dos sistemas operacionais - andrix.com.br · sistemas operacionais arquitetura dos...
TRANSCRIPT
Sistemas Operacionais
Arquitetura dos
Sistemas
Operacionais
Andrique Amorimwww.andrix.com.br
Sistemas Operacionais
Previously on OS...
Sistemas Operacionais
Arquitetura: O QUE É?
• Estrutura básica sobre a qual é projetado o sistema operacional
• Como as ABSTRAÇÕES são realmente implementadas
• Como o sistema computacional deve ser solicitado e atender aos aplicativos,
• Como interagem as partes do SO entre si
Sistemas Operacionais
E essa tal ABSTRAÇÃO?
Sistemas Operacionais
Abstração
Sistemas Operacionais
Elementos de um SO
Kernel Shell
System-calls
Sistemas Operacionais
Elementos de um SO
Sistemas Operacionais
Chamadas do Sistema
System-calls
São chamadas (solicitações) aprocedimentos (ou serviços) do SO, feitaspor um usuário (ou aplicativo).
Sistemas Operacionais
Chamadas do Sistema
System-calls
Chamadas são usadas paragerenciar processos, arquivos,diretórios e outros.
Sistemas Operacionais
Chamadas do Sistema
NÚCLEO
CHAMADAS
HARDWARE
APLICATIVOS
Sistemas Operacionais
Chamadas do Sistema
Em geral, quando se faz um programa,existem certas instruções que o programaem execução (processo), pode executar.
EXEMPLO: operar com posições dememória pertencentes ao seu espaçode endereçamento.
Sistemas Operacionais
Chamadas do Sistema: EXEMPLO
Um processo pode perfeitamente somar oconteúdo de duas posições de memória earmazenar numa terceira sem precisar do SistemaOperacional.
Entretanto, caso esse processo precisa armazenarisso em um arquivo, mandar via rede ousimplesmente mostrar na tela, ele vai precisar doSistema operacional para isso.
Sistemas Operacionais
Chamadas do Sistema
Sistemas Operacionais
Chamadas do Sistema
COMO FUNCIONA?
Sistemas Operacionais
Chamadas do Sistema
1 - Quando a chamada de sistema éinvocada, o programa que a invocou éinterrompido, e a informação necessáriapara continuar a sua execução é salva.
Sistemas Operacionais
Chamadas do Sistema
2 - O processador inicia a execução docódigo.
3 - Quando a chamada termina, ocontrole retorna para o programa e oestado previamente salvo é restaurado
4 - programa continua a sua execução.
Sistemas Operacionais
Chamadas do Sistema
Sistemas Operacionais
Chamadas do Sistema
Em alguns casos, o retorno de fatopara o programa não é imediato.
Entrada/saída
Sistemas Operacionais
Chamadas do Sistema
Os sistemas operacionais atuais temcentenas de chamadas de sistema.
LINUX tem quase 300 chamadas de sistema diferentes
FREEBSD APROXIMADAMENTE 330 chamadas
Sistemas Operacionais
Chamadas do Sistema
Linux System Call TableAlguns exemplos de chamadas
&eax Name Source
1 sys_exit kernel/exit.c
3 sys_read fs/read_write.c
6 sys_close fs/close.c
21 sys_mount fs/super.c
37 sys_kill kernel/signal.c
Sistemas Operacionais
Chamadas do Sistema
COMO USAR?
Sistemas Operacionais
Chamadas do Sistema
É preciso conhecer a API (conjunto deprocedimentos) do sistema operacional quedefine quais chamadas estão disponíveis equais são os parâmetros que devem serpassados.
Sistemas Operacionais
Chamadas do Sistema: UNIX
Para ler ou escrever um arquivo, deve-se
primeiro usar uma chamada open.
Ela especifica o nome do arquivo e omodo de abertura.
Para criar um novo arquivo é usadoO_CREAT.
Sistemas Operacionais
Chamadas do Sistema: UNIX
Para cada arquivo, o Unix registra o mododo arquivo, o tamanho e o momento daúltima modificação.
A chamada stat mostra essasinformações.
Sistemas Operacionais
Chamadas do Sistema
Existem certas chamadas de sistema quenão podem ser colocadas diretamente àdisposição das aplicações.
A sua utilização indevida ocasionariasérios problemas à integridade dosistema.
Sistemas Operacionais
E as arquiteturas?
Sistemas Operacionais
Arquiteturas: TIPOS
Sistemas Operacionais
Monolítico
É a arquitetura mais antiga e mais comum.
Cada componente do SO é contido no núcleo
(kernel) e pode comunicar-se com qualquer
outro componente diretamente.
Sistemas Operacionais
MonolíticoDois tipos de chamadas:
1 - o modo Kernel, onde é permitida aexecução de todas as instruções básicas damáquina e;
2 - o modo usuário, para os programas deusuário, onde certas instruções, como aquelasque controlam entrada/saída não podem serexecutadas.
Sistemas Operacionais
Monolítico
Sistemas Operacionais
Monolítico
Todos os componentes do núcleo operamem modo núcleo e se inter-relacionamconforme suas necessidades, semrestrições de acesso entre si.
Código no nível núcleotem acesso pleno atodos os recursos eàreas de memória.
Sistemas Operacionais
Monolítico
1.Essa intercomunicação direta permiterapidez na resposta de sistemaoperacional monolíticos.
2.A interação direta entrecomponentes também leva a sistemasmais compactos.
Sistemas Operacionais
Monolítico
3.Qualquer componente do núcleopode acessar os demais componentessem qualquer impedimento.
1.Componentes todos juntos, é difícilidentificar a origem de umdeterminado problema ou erro.
Sistemas Operacionais
Monolítico
2.Caso um componente do núcleoperca o controle devido a algum erro,esse problema pode se alastrarrapidamente por todo o núcleo,levando o sistema ao colapso(travamento, reinicialização oufuncionamento errado).
Sistemas Operacionais
Monolítico
Sistemas Operacionais
Monolítico
3. Manutenção e evolução do kernel se tornam mais complexas, porque as dependências e pontos de interação entre os componentes podem não ser evidentes.
Sistemas Operacionais
Monolítico
4. Pequenas alterações na estrutura dedados de um componente podem terum impacto inesperado em outroscomponentes, caso estes acessemaquela estrutura diretamente.
Sistemas Operacionais
Monolítico
Ótimo Desempenho
Não é tão Robusto (segurança)
Dificuldade de desenvolvimento
Dependências entre componentes
Sistemas Operacionais
Monolítico
A arquitetura monolítica foi a primeiraforma de organizar os sistemasoperacionais; sistemas UNIX antigos e oMS-DOS seguiam esse modelo.
Sistemas Operacionais
Monolítico
Atualmente, apenas sistemasoperacionais embutidos usam essaarquitetura, devido as limitações dohardware sobre o qual executam.
Sistemas Operacionais
Monolítico
O núcleo do Linux nasceu monolítico, masvem sendo paulatinamente estruturado emodularizado desde a versão 2.0 (emboraboa parte de seu código ainda permaneça nonível de núcleo).
Sistemas Operacionais
Monolítico
Alguns exemplos de sistemas que utilizam este tipo de núcleo:
* BSD* Linux* MS-DOS e derivados, incluindo Windows 95, Windows 98 e Windows ME* Solaris
Sistemas Operacionais
Sistemas em camadas
À medida que os sistemasoperacionais tornaram-se maiscomplexos e maiores, projetospuramente monolíticos tornaram-seinviáveis.
Sistemas Operacionais
Sistemas em camadas
A arquitetura em camada, oumodular, tornou-se uma boa opção,agrupando “camadas” decomponentes, ou seja, conjunto deprocedimentos, que realizam tarefassimilares.
Sistemas Operacionais
Sistemas em camadas
Arquitetura modular
HARDWARE
SOFTWARE
Sistemas Operacionais
Sistemas em camadas
1) Cada camada comunica-se somentecom as suas camadas imediatamenteinferior e superior.
2) Uma camada inferior sempre presta umserviço à sua camada superior, sendo quea camada superior não sabe como oserviço é feito, apenas o solicita.
Sistemas Operacionais
Sistemas em camadas
A implementação de uma camada pode sermodificada sem exigir modificação em outracamada, pois possuem componentesautocontidos.
Sistemas Operacionais
Sistemas em camadas
Essa abordagem de estruturação de softwarefez muito sucesso no domínio das redes decomputadores, através do modelo dereferencia OSI.
Sistemas Operacionais
Sistemas em camadas
O empilhamento de várias camadas desoftware faz com que cada pedido de umaaplicação demore mais tempo para chegaraté o dispositivo periférico ou recurso a seracessado, prejudicando o desempenho dosistema.
Sistemas Operacionais
Sistemas em camadas
Não é tão óbvio dividir as funcionalidades deum núcleo em camadas horizontais deabstração crescente, pois essasfuncionalidades são interdependentes,embora tratem muitas vezes de recursosdistintos.
Sistemas Operacionais
Sistemas em camadas
A estruturação em camadas é apenas parcialmente adotada hoje em dia.
Alguns sistemas implementam uma camada inferiorde abstração do hardware para interagir com osdispositivos (a camada HAL – Hardware AbstractionLayer, implementada no Windows NT e seussucessores)
Sistemas Operacionais
Sistemas em camadas
Também organizam em camadas alguns sub-sistemas como a gerência de arquivos e osuporte de rede.
Sistemas Operacionais
Sistemas em camadas
Exemplos de sistemas fortemente estruturados em camadas:
IBM OS/2MULTICS
Sistemas Operacionais
Micro-kernel
Possui apenas um núcleo que
provê recursos mínimosnecessários ao ambiente.
Sistemas Operacionais
Micro-kernel
Núcleo somente com o código de baixonível necessário para interagir comohardware.
Todos os aspectos de alto nível, como:• políticas de uso do processador e da memória,• o sistema de arquivos• o controle de acesso aos recursossão implementados fora do núcleo, em processosque se comunicam usando as primitivas do núcleo.
Sistemas Operacionais
Micro-kernel
Por fazer os núcleos de sistema ficaremmenores, essa abordagem foidenominada micro-nucleo (ou μ-kernel).
Sistemas Operacionais
Micro-kernel
Sistemas Operacionais
Micro-kernel
Exemplo:usando essa abordagem o código de acesso aosblocos de um HD seria mantido no núcleo,
enquanto as abstrações de arquivo e diretórioseriam criadas e mantidas por um código forado núcleo, executando da mesma forma queuma aplicação do usuário.
Sistemas Operacionais
Micro-kernel
Essa arquitetura de kernel tem avantagem de separar os serviços deforma que se acontecer algum problemaem algum serviço, esse serviço não vaiafetar o kernel como o todo.
Sistemas Operacionais
Micro-kernel
Algumas das funções do sistema operacional foram
separadas em programas chamados Servidores.
Sistemas Operacionais
Micro-kernel
As interações entre componentes eaplicações são feitas através de trocas demensagens.
Sistemas Operacionais
Micro-kernel
Exemplo:
Uma aplicação deseja abrir umarquivo no disco rígido.
Sistemas Operacionais
Micro-kernel
1) A app envia uma mensagem parao gerente de arquivos que, por suavez, 2) se comunica com o gerentede dispositivos para obter os blocosde dados relativos ao arquivodesejado.
Sistemas Operacionais
Micro-kernel
3) Os processos nãopodem se comunicardiretamente, devido asrestrições impostas pelosmecanismos de proteçãodo hardware.
Sistemas Operacionais
Micro-kernel
Todas as mensagens são transmitidas através de serviços do micro-núcleo.
Sistemas Operacionais
Micro-kernel
Muito investigados durante os anos 80.
Exemplos:
• Mach• Chorus• Hurd• Minix• QNX
Sistemas Operacionais
Micro-kernel
Customizar o SO iniciando somente oscomponentes necessários ouescolhendo os componentes maisadequados às aplicações que serãoexecutadas.
Sistemas Operacionais
Micro-kernel
As trocas de mensagens entrecomponentes pode ser bastanteelevadas, o que prejudica seudesempenho e diminui a aceitaçãodesta abordagem.
Sistemas Operacionais
Monolítico Vs Micro-kernel
Sistema operacional baseado em kernel monolítico
Sistema operacional baseado em Microkernel
Sistemas Operacionais
Híbridos
Tem a capacidade de agregar oudesagregar funcionalidades, sem perderperformance ou estabilidade presentesna sua estrutura inicial.
Sistemas Operacionais
Híbridos
EXEMPLOS:
• MacOS X• Windows 2000• Windows NT• Windows 7• BeOS