Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 05 – Estrutura e arquitetura do SO Parte 2 Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed. LTC, 2007. Arquitetura do núcleo • Define o paradigma de programação adotado no desenvolvimento do SO; • Está diretamente relacionada ao tipo de SO que será desenvolvido: tempo compartilhado, mono ou multiusuário ou tempo real; • A tendência dos sistemas operacionais modernos é utilizar POO. • Vantagens: Organização, redução do tempo de desenvolvimento, manutenção e implementação de computação distribuída. Arquitetura monolítica • Formado por vários módulos que são compilados e depois linkados, formando um grande e único programa executável, onde os módulos podem interagir livremente. • Apesar do bom desempenho, a manutenção é bastante prejudicada. Arquitetura monolítica aplicação aplicação Modo usuário Modo kernel System call Hardware Arquitetura de camadas • A camada inferior oferece uma gama de serviços para a camada superior e encapsula detalhes de implementação. • Esta arquitetura isola as funções e facilita a manutenção, além de criar uma hierarquia de níveis de acesso. • A desvantagem desta arquitetura é a performance. • Atualmente, a maioria do S.O. utiliza o modelo de duas camadas: usuário e kernel. Arquitetura de camadas Máquina virtual • Simula via software um hardware, incluindo os modos de acesso, interrupções, dispositivos de E/S. • Rodando várias máquinas virtuais na mesma máquina é possível rodar simultaneamente mais de um sistema operacional e que os usuários executem aplicações como se o computador estivesse dedicado a cada um deles. • Na década de 1960, a IBM implementou este conceito no sistema VM/370. • O software VMWare possibilitar rodar um outro S.O dentro do Windows. VM 1 VM 2 VM n Máquina virtual Ap1 Ap2 Apn SO1 SO2 SOn HV1 HV2 HVn Gerência de Máquinas Virtuais Hardware Máquina virtual • Nesta arquitetura, se uma máquina ficar instável, a operação das outras não é comprometida. • A desvantagem desta arquitetura é sua complexidade e queda de performance. • Outro exemplo de uso desta arquitetura ocorre na linguagem Java, com suas JVM (Java Virtual Machine). VMware • O VMware é um software que cria máquinas virtuais que simulam um PC completo dentro de uma janela (ou em tela cheia), permitindo instalar praticamente qualquer sistema operacional para a plataforma x86. • Referências: – http://www.guiadohardware.net/termos/vmware – http://en.wikipedia.org/wiki/VMware_Workstation VirtualBox • Virtual Box é um software de virtualização desenvolvida pela Oracle. Assim como o VMware, o VirtualBox permite criar máquinas virtuais de várias versões do Linux, Windows, BeOS, DOS, etc. • Referências: – http://www.virtualbox.org/wiki/Screenshots – http://it.wikipedia.org/wiki/VirtualBox Máquina virtual Java Aplicação Máquina Virtual Java Sistema Operacional Hardware JVM - Virtual Java Machine ou Máquina Virtual Java • Na plataforma Java, o bytecode (código intermediário) é interpretado por uma máquina virtual Java (JVM). Assim, o código Java que foi compilado em uma máquina pode ser executado em qualquer máquina virtual Java, independentemente do SO ou arquitetura do computador. • Referências: – http://www.vivaolinux.com.br/dica/Java-Virtual-Machine-e-seus-conceitos-(para-iniciantes) – http://www.vivaolinux.com.br/artigo/Maquina-Virtual-Java-(Java-Virtual-Machine) – http://www.dca.fee.unicamp.br/cursos/PooJava/javaenv/bytecode.html Arquitetura microkernel • Uma tendência dos sistemas operacionais modernos é tornar o núcleo o menor e mais simples possível. • Para implementar esta ideia, os serviços do sistemas são disponibilizados através de processos, onde cada um é responsável por fornecer um conjunto de funções. • Cada vez que uma aplicação deseja algum serviço, é realizada uma solicitação ao processo responsável, numa arquitetura cliente-servidor. • O cliente, que pode ser uma aplicação ou um componente do sistema, solicita um serviço enviando uma mensagem ao servidor. • O núcleo passa a realizar a comunicação entre os processos. em Modo kernel ag ns me Modo usuário Microkernel Hardware me ns ag em Arquitetura microkernel Arquitetura microkernel • A utilização deste modelo permite que os servidores sejam executados em modo usuário. Apenas o núcleo executa em modo kernel. • Como conseqüência, se ocorrer um erro em um servidor, este poderá parar, sem comprometer o restante do sistema. • Esta arquitetura permite implementar sistemas distribuídos, onde o servidor pode estar em outra máquina. Arquitetura microkernel • Esta arquitetura torna o núcleo menor, mais fácil de depurar, mais confiável, mais flexível e de maior portabilidade. • O problema desta abordagem é o desempenho, visto que ocorre mudança no modo de acesso a cada comunicação entre clientes e servidores. • Outro problema é que certas funções exigem acesso direto ao hardware. Desta forma, parte da gerência de dispositivos tem que ser implementada pelo núcleo. Projeto dos SOs • Os primeiros S.O. foram desenvolvidos integralmente em Assembly e o código possuia cerca de um milhão de instruções (IBM OS/360). • Nos sistemas operacionais atuais o número de linhas de código pode chegar a mais de 40 milhões (Windows 2000), sendo grande parte escrita em C/C++, utilizando em alguns casos a programação Orientada a Objetos. Projeto dos SOs • A orientação a objetos e desenvolvimento baseado em componentes são tendências no desenvolvimento de S.O que possibilitam entre outras melhorias: – – – – melhoria na organização das funções e recursos redução do tempo de desenvolvimento maior facilidade de manutenção e extensão do sistema adequação para o modelo de computação distribuída. • A utilização de linguagens de alto nível também permite maior portabilidade. Porém em partes críticas do sistema, como os device drivers, o escalonador e as rotinas de tratamento de interrupções são escritas em assembly, para melhorar sua performance. Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 05 – Estrutura e arquitetura do SO Parte 2 Obrigado e bons estudos!