Universidade Nova de Lisboa Faculdade de Ciências e Tecnologia Departamento de Informática Sistemas de Operação Estruturas e Componentes do S.O. (1) Baseado nos transparente de SO de Pedro Medeiros (DI/FCT/UNL) João Lourenço Joao.Lourenço@di.fct.unl.pt http://www-asc.di.fct.unl.pt/~jml 1
Funcionamento do S.O. Conjunto de código carregado em memória central (RAM) Também chamado núcleo (kernel) Normalmente está permanentemente em RAM A sua acção é complementada por Programas/processos de sistema interpretador de comandos, carregadores, ligadores, O SO é carregado na RAM quando há um power up ou um reset hardware 2
Necessidade de um reset hardware! 3
Arranque do SO O carregador inicial (bootstrap loader) em ROM lê o programa de arranque (boot) para memória B o o t M e m o r y B o o t O p e r a t i n g s y s t e m O programa de arranque (boot) lê o resto do sistema de operação para memória B o o t M e m o r y O p e r a t i n g s y s t e m O p e r a t i n g s y s t e m 4
Inicialização do S.O. Inicialização do hardware controladores, sistema de interrupções, vector de interrupções Inicialização das estruturas de dados representam os vários recursos de sistema suportam os algoritmos de gestão desses recursos Criação dos primeiros processos processos auxiliares de sistema rede, sistema de ficheiros, interpretador de comandos Wait for interrupt 5
Interpretador de comandos Vários nomes e formas: CLI (command-line interpreter) : Shell (UNIX) Gráfico (Windows, Macintosh, X-Windows) Loop: - apresentar prompt - ler comando - executar comando - goto Loop 6
Um sistema multi-programado executando vários processos Na RAM estão carregados vários processos simultaneamente de diferentes tipos: [Sistema de Operação] Processos de Sistema Shell e/ou outros Aplicações Shell Espaço livre Processo de um utilizador Processo de sistema Shell Núcleo (kernel) 7
Exemplo de invocação através da Standard C Library Programa em C printf() write() sys_write() 8
Passagem de parâmetros para a chamada ao sistema Chamadas ao sistema frequente passar parâmetros O nº e tipo de parâmetros dependem do SO e da chamada Três métodos usados para passar parâmetros Em registos do CPU (o mais simples) Pode haver mais parâmetros que registos Parâmetros colocados numa zona de memória cujo endereço é passado num registo Não há limite ao número de parâmetros Parâmetros empilhados (pushed) no stack pelo programa e desempilhados (popped) do stack pelo SO Não há limite ao número de parâmetros 9
Passagem de parâmetros numa zona da memória atribuída ao utilizador 10
Invocação do serviço: relação com a organização interna Sistema monolítico Equivalente a uma chamada de uma subrotina executada em modo supervisor! Não há troca de contexto Exemplos: MS-DOS, Linux, Windows NT/2000 Sistema baseado num micro-núcleo Serviço é executado por um processo autónomo Exemplos: Windows NT (1 as. Versões), Tru64, QNX, Mach, [NextStep, Mac OS/X] 11
Sistema organizado de forma monolítica Espaço livre Imagem do processo P2 Imagem do processo P1 Núcleo (kernel) RAM disponível para imagens de processos Quando o IP/PC está nesta zona só a RAM associada ao processo está acessível RAM ocupada pelo SO Quando o IP/PC está nesta zona o CPU está em modo supervisor todo o código do SO está acessível (monolítico) 12
Sistema monolítico organizado em camadas (1) 13
Sistema monolítico organizado em camadas (2) O SO é dividido em camadas (ou níveis) Cada camada usa as funcionalidades das camadas inferiores A camada mais baixa (nível 0) é o hardware A camada superior (nível N) é a interface com os programas utilizadores interface de chamadas ao sistema A funcionalidade de cada camada respeitaa a organização hierárquica 14
Organização do UNIX (1) A versão original tinha pouca estruturação devido às limitações (RAM) do hardware da altura O sistema é constituído por dois componentes O núcleo (kernel) Composto por tudo o que está entre a interface de chamadas ao sistema e o hardware Suporta o escalonamento do CPU, a gestão da memória e dos periféricos, e o sistema de ficheiros muitas funções para um único nível!!! Programas de sistema 15
Organização do UNIX (2) 16
Módulos Extensão do núcleo carregada dinamicamente Blocos de código que podem ser acrescentados ao kernel com este em funcionamento Cada módulo suporta uma funcionalidade um novo periférico, por exemplo Relaciona-se com o resto do kernel através de uma interface bem definida Suportados por muitos S.O. modernos Linux, Solaris, Window$ 17
Sistema baseado em micro-núcleo (micro-kernel) Processos em modo utilizador (componentes) suportam/implementam grande parte da funcionalidade do S.O. Comunicação entre componentes mensagens Vantagens: mais fácil de estender e modificar mais fácil de transportar para diferentes plataformas mais fiável (menos código a ser executado em modo supervisor) mais seguro mais lento comunicação por mensagens entre o utilizador e o sistema entre os vários componentes do sistema 18
Invocação de serviços num S.O. baseado em micro-núcleo Aplicação resposta Gestor de ficheiros chamada ao sistema Gestor de memória Processos servidores de sistema CPU em modo utilizador Gestor do disco Micro-núcleo Paginação / Memória virtual Atendimento de interrupções Troca de mensagens: send(+proc,+msg); recv(+proc,-msg) CPU em modo supervisor 19
Comunicação entre processos através de mensagens Processo do utilizador 4 - recv(-servidor,-resposta) 3 - send(+cliente,+resposta) 2 - recv(-cliente,-pedido) Processo servidor Processo servidor Processo servidor 1 - send(+servidor,+pedido) Micro-núcleo 20
Comunicação entre processos através de memória partilhada 3 Escrever resposta Zona de memória partilhada 1 - Escrever pedido Processo do utilizador Processo servidor 4 - Ler resposta 2 Ler pedido Processo servidor Processo servidor Micro-núcleo 21
Exemplo: Mac OS/X 22
Estrutura cliente-servidor do Windows NT (antes da versão 4) 23