INTRODUÇÃO AOS SISTEMAS OPERACIONAIS setembro/2013

Propaganda
INTRODUÇÃO AOS SISTEMAS OPERACIONAIS
setembro/2013
SEMANA 07
Arquitetura dos sistemas operacionais.
Sistema monolítico, sistema em camadas, microkernel, cliente-servidor,
máquinas virtuais.
1 - Introdução
A estrutura interna dos sistemas operacionais está relacionada ao desenho [design] do
sistema. Ao longo do tempo essa estrutura tem evoluído, buscando uma estrutura mais apropriada.
Entre outras, existem as seguintes estruturas: sistema monolítico, sistema em camadas,
sistema cliente-servidor [microkernel] e máquinas virtuais.
2 - Sistema monolítico
O modelo monolítico dominou nos primórdios da computação, nele o sistema operacional é
escrito como um programa único composto por uma coleção de subrotinas que chamam umas às
outras sempre que for necessário.
A organização mais comum é estruturar o sistema operacional como um conjunto de rotinas
que podem interagir livremente umas com as outras. O sistema monolítico pode ser comparado a
uma aplicação formada por várias rotinas ou procedimentos compilados separadamente e depois
ligados [linked, "lincados"], para formar um grande e único programa executável.
Como vantagem está o grande desempenho e a alta eficiência. Além disso, existe forte
integração interna dos componentes e por isso permite que detalhes de baixo nível do hardware
sejam bem explorados.
Como desvantagens estão manutenção e expansão complexos. Além disso, como os
módulos trabalham no mesmo espaço de endereçamento, uma falha pode paralisar todo o kernel.
Os modelos monolíticos também adotam modo usuário e modo supervisor [kernel], que
operam com diferentes privilégios e diferentes prioridades de execução. Às aplicações é reservado o
modo usuário, com baixo privilégio e baixa prioridade, já para as rotinas do sistema operacional é
reservado o modo supervisor.
Introdução aos Sistemas Operacionais - www.jairo.pro.br
1/6
O Linux é um exemplo de
kernel monolítico e modular.
Modular pois módulos podem ser
carregados para acessar algum
recurso, isso com o sistema
rodando. Posteriormente, se não
estiver mais em uso, esse módulo
poderá ser descarregado para
melhorar o desempenho da
máquina e economizar memória.
aplicação aplicação aplicação aplicação aplicação
4
3
1
2
n
modo usuário
modo kernel
interface de chamadas de sistema [system calls]
componentes do
sist. operacional
O sistema monolítico não é
estruturado, mas também não é
totalmente desestruturado. Por
exemplo, existe um pouco de
estrutura para os serviços do
sistema que são requisitados via
chamadas de sistema.
hardware
Fig 1 – Sistema monolítico
Os primeiros Unix, no início dos anos 1970, também eram sistemas monolíticos.
Atualmente, FreeBSD, AIX e HP-UX são sistemas monolíticos.
Outro exemplo é o antigo MS-DOS.
Atualmente, a maioria dos sistemas operacionais são monolíticos.
3 - Sistema em camadas
No sistema em camadas, a comunicação ocorre apenas entre camadas adjacentes. Isso
garante segurança e funcionamento para o sistema. A camada mais inferior é a que tem acesso aos
dispositivos de hardware e a camada mais externa é a que
realiza a interface com os usuários e com as aplicações.
modo usuário
A organização dos módulos ocorre por meio de
hierarquia de camadas sobrepostas, onde cada módulo
oferece um conjunto de funções que podem ser utilizados por
outros módulos.
Os módulos de uma camada podem fazer referência
apenas a módulos de camadas inferiores, e quanto mais
interna a camada, mais privilegiada ela é.
A vantagem em estruturar o sistema operacional em
camadas é a isolação que essas camadas proporcionam, pois
facilitam a alteração e depuração do sistema e criam uma
Introdução aos Sistemas Operacionais - www.jairo.pro.br
camada 2
camada 1
hardware
Fig 2 – Sistema em camadas
2/6
hierarquia de níveis de modos, que protege as camadas mais internas.
Porém, o empilhamento de várias camadas de software faz com que a requisição de uma
aplicação demore mais tempo para chegar até o dispositivo ou recurso a ser acessado, prejudicando
o desempenho do sistema. Além disso, não é tarefa óbvia dividir as funcionalidades de um kernel
em camadas horizontais de abstração crescente, pois mesmo funcionalidades que tratam de recursos
distintos podem ser interdependentes.
Muitos dos sistemas operacionais comerciais utilizam o modelo de duas camadas, onde uma
camada trabalha no modo kernel e a outra no modo usuário.
Como exemplo, o MULTICS1 tinha oito camadas.
Outro exemplo é o Minix, que foi criado pelo professor Andrew S. Tanenbaum em 1987.
Atualmente o Minix é um projeto de código fonte aberto [http://www.minix3.org/].
4 - Sistema cliente-servidor [microkernel]
Os sistemas operacionais em estrutura cliente-servidor têm um microkernel, que é um kernel
menor e mais simples. Para funcionar, esse sistema é dividido em processos. Existem processos
clientes e processos servidores.
A proposta do microkernel é tornar o kernel menor e mais simples possível, movendo
código para as camadas superiores. Como implementação, o sistema é dividido em processos, onde
cada processo é responsável por oferecer um conjunto de serviços.
Sempre que uma aplicação necessita algum recurso ela solicita ao processo responsável. A
aplicação que solicita um serviço é chamada de cliente, e o processo que atende a essa solicitação é
chamado de servidor.
Nessa implementação, o sistema é dividido em processos, onde cada processo é responsável
por oferecer um conjunto de serviços. Por exemplo:
•
•
•
•
serviço de arquivos [ou servidor de arquivos];
serviço de criação de processos [servidor de processos];
serviço de memória [servidor de memória];
serviço de rede [servidor de rede].
Num exemplo de funcionamento, se um processo de usuário [processo cliente] precisar ler
um bloco de dados em arquivo, este fará uma solicitação ao serviço de arquivos que, por sua vez,
irá acessar o sistema de arquivos e ler esse bloco de dados, para depois enviar para o processo
cliente.
Um microkernel permite que os processos servidores executem em modo usuário e não
1 MULTICS: Multiplexed Information and Computing Service foi um sistema operacional cujo desenvolvimento teve
início em 1964. O último sistema MULTICS foi desligado em 2000. O Unix foi baseado no MULTICS.
Introdução aos Sistemas Operacionais - www.jairo.pro.br
3/6
modo kernel [que é o caso do sistema monolítico]. Apenas o microkernel, que é o responsável pela
comunicação entre clientes e servidores, executa no modo kernel.
A função básica do microkernel é permitir a comunicação entre processos clientes e
processos servidores. Essa comunicação ocorre pela troca de mensagens.
Uma vantagem é que o sistema operacional passa a ter manutenção mais simples, indiferente
do fato do processo de serviço estar numa máquina com um único processador, com múltiplos
processadores ou num sistema distribuído.
No entanto, a implementação do sistema cliente-servidor é difícil, então usualmente é
implantado uma combinação de modelo em camadas com o cliente-servidor.
Ainda como desvantagem, tem baixo desempenho, pois é frequente a mudança do modo de
acesso. Além diso, algumas funções exigem acesso ao hardware, então o microkernel precisa
assumir também funções críticas como escalonamento, intercomunicação entre processos, gerência
de memória, tratamento de interrupções e gerência de dispositivos.
servidor de
rede
mensagem
gem
servidor de
memória
me
nsa
servidor de
processos
mensagem
gem
Também como vantagem, é
facilmente adaptável para uso em
sistemas tanto monoprocessados
quanto multi, seja forte ou fracamente
acoplados. Em sistema distribuídos,
possibilita a um cliente solicitar um
serviço e ser atendido remotamente,
fato que garante alta escalabilidade
[pode-se adicionar mais e mais
máquinas].
servidor de
arquivos
nsa
me
Como vantagem, os serviços
executam em modo usuário, então se
algum falhar não comprometerá o
sistema como um todo.
modo
usuário
modo
kernel
microkernel
hardware
Fig 3 – Sistema cliente-servidor
E ainda como vantagem, o sistema cliente-servidor é mais fácil de depurar pois os serviços
são pequenos e específicos.
No passado, uma das razões para adoção do microkernel era a limitação de memória no
hardware de 16 bits ou menos. Mas após o surgimento de arquiteturas de 32 bits, não houve mais
necessidade do kernel ser pequeno.
Como exemplos de sistemas que usam microkernel temos a família de sistemas operacionais
Windows baseados no NT [que são todos os Windows atuais]. Porém, esses sistemas não são 100%
cliente-servidor, pois usam uma camada de abstração de hardware [HAL, Hardware Abstraction
Layer], coisa que deveria estar incluída no microkernel.
5 - Máquinas virtuais
Introdução aos Sistemas Operacionais - www.jairo.pro.br
4/6
Um máquina virtual é formada por recursos virtuais mapeados para recursos reais. Assim,
uma máquina física com muitos processadores e muita memória pode ser particionada em muitas
máquinas virtuais, cada uma com menos recursos que a máquina real.
Uma máquina real pode abrigar internamente diferentes ambientes virtuais, cada um
simulando uma máquina distinta, com processadores, memória, I/O, sistema operacional, recursos e
processos próprios. Desta forma, cada usuário ou aplicação tem a impressão de possuir a sua
própria máquina.
O propósito da máquina virtual é criar um nível intermediário entre o hardware e o sistema
operacional. E este nível cria máquinas virtuais independentes.
Como vantagens no uso de máquinas virtuais temos a convivência de diferentes sistemas
operacionais na mesma máquina física, centralização, alta segurança e independência para cada
máquina virtual. E se determinada máquina virtual falhar, as demais não serão afetadas.
Como desvantagem, o compartilhamento e gerenciamento dos recursos de hardware entre
diferentes máquinas virtuais não é tarefa simples.
Virtualização é um conceito antigo, e a IBM já tinha suporte à virtualização no seu
System/370, no final dos anos 1960.
Conceitos comuns em virtualização são hipervisor e paravirtualização.
O hipervisor é um componente básico
na virtualização. É um software que desvincula
o sistema operacional e seus aplicativos dos
recursos de hardware. São de dois tipos:
hipervisor 1 e hipervisor 2.
O hipervisor tipo 1 roda direto no
hardware [bare metal], sem um sistema
operacional. Na prática, nesse caso o próprio
hipervisor é um kernel modificado. Como
exemplos, temos Citrix Xen Server, VMware
ESX (ou ESXi) Server e Microsoft Hyper-V
technology.
aplicações
aplicações
aplicações
Windows
Server
2003
Windows
Server
2008
Linux
Red Hat
serviço
de
console
Vmware
hardware x86
Fig 4 – Hypervisor tipo 1
O hipervisor tipo 2 roda sobre um sistema operacional, dito sistema hospedeiro (host), e
portanto se assemelha a uma aplicação que roda sobre um determinado sistema operacional para
permitir virtualização. Como exemplos, temos Workstation da Vmware, Microsoft Virtual PC e
VirtualBox da Oracle.
Introdução aos Sistemas Operacionais - www.jairo.pro.br
5/6
Paravirtualização é uma técnica de
virtualização que apresenta uma interface de
software para máquinas virtuais que é similar
mas não idêntica àquela encontrafa direta no
hardware. Nesse caso, o sistema operacional
virtualizado precisa ser preparado para rodar
sobre a máquina virtual.
aplicações
aplicações
aplicações
aplicações
Windows
Server
2003
Windows
Server
2008
Linux
Red Hat
Vmware workstation
sistema operacional hospedeiro (host)
A técnica de paravirtualização requer
que o sistema operacional virtualizado seja
explicitamente portado [modificado] para
hardware x86
permitir essa execução e com isso obter melhor
desempenho que a virtualização total, pois os
Fig 5 – Hypervisor tipo 2
drivers executados nas máquinas
paravirtualizadas são os drivers reais para os
dispositivos físicos, e na virtualização total são drivers emulados.
Outros conceitos são virtualização total [full virtualization], onde a máquina virtual é capaz
de oferecer todo o hardware que o sistema operacional hospedado [guest] necessita para ser
executado de maneira isolada e virtualização auxiliada pelo hardware, quando a própria
arquitetura de hardware suporta a execução de máquinas virtuais isoladas.
Na virtualização total, todo o hardware sofre uma virtualização para que o sistema
operacional hospedado [guest] não precise sofrer nenhuma modificação. E esta é a grande vantagem
da virtualização total.
5.1 - Máquina virtual Java
A máquina virtual Java [Java Virtual Machine, JVM], é uma
aplicação que roda num sistema operacional e que tem por objetivo
interpretar as instruções contidas no arquivo ".jar" [aplicação Java].
Nesse arquivo, as instruções estão em bytecode e são resultado da
compilação de um programa Java.
O objetivo da JVM é tornar a aplicação Java independente
tanto do sistema operacional quanto da arquitetura do computador.
Em princípio, basta que nesse sistema operacional rode uma JVM que
a aplicação Java irá funcionar. Isso economiza portar a aplicação para
diferentes sistemas operacionais.
aplicação java [bytecode]
máquina virtual java
kernel
hardware
Fig 6 – Máquina virtual Java
Introdução aos Sistemas Operacionais - www.jairo.pro.br
6/6
Download