• Nenhum resultado encontrado

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 07

N/A
N/A
Protected

Academic year: 2021

Share "INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 07"

Copied!
6
0
0

Texto

(1)

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.

(2)

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.

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.

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. 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

modo usuário modo kernel aplicação 1 aplicação2 aplicação3 aplicação 4 aplicação n

interface de chamadas de sistema [system calls]

co m p on en te s do si st . o p er ac io na l hardware

Fig 1 – Sistema monolítico

hardware camada 1 camada 2 modo usuário

(3)

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.

(4)

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.

Como vantagem, os serviços executam em modo usuário, então se algum falhar não comprometerá o sistema como um todo.

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].

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 servidor de arquivos servidor de processos servidor de rede servidor de memória modo usuário modo kernel m en sage m m en sa ge m m en sa ge m men sage m microkernel hardware

(5)

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.

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. Windows Server 2003 Vmware hardware x86

Fig 4 – Hypervisor tipo 1 Windows Server 2008 Linux Red Hat serviço de console aplicações aplicações aplicações

(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.

A técnica de paravirtualização requer que o sistema operacional virtualizado seja explicitamente portado [modificado] para permitir essa execução e com isso obter melhor desempenho que a virtualização total, pois os 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. hardware

kernel

aplicação java [bytecode] máquina virtual java

Fig 6 – Máquina virtual Java

Windows Server

2003

sistema operacional hospedeiro (host) hardware x86

Fig 5 – Hypervisor tipo 2

Vmware workstation aplicações aplicações aplicações Windows Server 2008 Linux Red Hat aplicações

Referências

Documentos relacionados

Embora o parasitismo tenha se mantido por 9 meses, o animal não apresentou manifestações clínicas severas que justificassem o término do trabalho

O objetivo geral deste projeto é apoiar a Secretaria de Telecomunicações (SETEL) do Ministério da Ciência, Ministério da Ciência, Tecnologia, Inovações e

Método microbiológico não apresenta resposta igual para os vitâmeros, mede apenas o valor total. Método CLAE não mede todos os vitâmeros de

Este tópico descreve padrões e especificações que controlam as redes wireless, explicando também como os dados são transportados através da rede de um computador

Esta confiança, no entanto, para ter normatividade precisa revestir-se de um caráter jurídico, e não puramente sociológico. Daí porque foi decomposto o seu

Nas condições em que o trabalho foi realizado, conclui-se que o herbicida tembotrione apresentou baixa fitotoxicidade aos cultivares de milho IAC 8390, IAC Airan e IAC

3 François Hartog trabalhou sobretudo com a obra “Un autre regard” do antropólogo C.. O presente é então vivenciado como sendo o único horizonte possível, como sua

Neste contexto, analisou-se a frequência dos polimorfis- mos da região promotora do gene TNFA (-308 G>A e –238 G>A) e IL1B (-511C>T), bem como o polimorfis- mo da