FSJ 2011 SO Conceitos

Embed Size (px)

Citation preview

Faculdades So JosTecnologia de Sistemas de Informao

Sistemas Operacionais Prof. Sandro Melo

Apresentao Professor Sandro Melo

Contatos:[email protected]://profsandromelo.blogspot.com2

Plano de AulaSistemas Operacionais I - Conceitos BsicosAulas 04/08 11/08 18/08 25/08 01/09 08/09 15/09

II - Gerncia de tarefas III - Comunicao entre Tarefas

IV - Coordenao entre Tarefas TA1V - Gerncia de Memria VI - Gerncia de Arquivos VII - Gerncia de Entrada/Sada VII - Aspectos de Segurana TA2 TA3

22/09 29/1006/10 13/10 20/10 27/10 03/11 10/11 17/11 24/11 08/123

Bibliografia1- Fundamentos de Sistemas Operacionais.SILBERSCHATZ, Abraham; GALVIN, Peter Baer; GAGNE, Greg. 6 ed. LTC,2004.Parte I - Uma viso geral1. Introduo 2. Estruturas do Sistema Operacional

Parte V - Proteo e segurana14. Proteo 15. Segurana

Parte VI - Sistemas distribudos16. Estruturas de Sistemas Distribudos 17. Sistemas de Arquivos Distribudos 18. Coordenao Distribuda

Parte II - Gerenciamento de processos3. Processos 4. Threads 5. Scheduling da CPU 6. Sincronizao de processos 7. Deadlocks

Parte VII - Sistemas de uso especfico19. Sistemas de Tempo Real 20. Sistemas Multimdia

Parte VIII - Estudos de caso21. O Sistema Linux 22. Windows XP 23. Sistemas Operacionais Influentes

Parte III - Gerenciamento da memria8. Memria Principal 9. Memria Virtual

Parte IV - Gerenciamento de armazenamento10. Interface do Sistema de Arquivos 11. Implementao do Sistema de Arquivos 12. Estrutura de Armazenamento de Massa 13. Sistemas de I/O

4 ADONAI - Preparatrio para QT

Bibliografia2 - Sistemas Operacionais Modernos.TANENBAUM, A. S. 2 ed. So Paulo: Prentice-Hall Brasil,2003Captulo 1 IntroduoCaptulo 2 Processos e Threads Captulo 3 Deadlocks Captulo 4 Gerenciamento de Memria Captulo 5 Entrada/Sada Captulo 6 Sistemas de Arquivos Captulo 7 Sistemas Operacionais Multimdia Captulo 8 Sistemas com Mltiplos Processadores Captulo 9 Segurana Captulo 10 Estudo de Caso 1: Unix e Linux Captulo 11 Estudo de Caso 2: Windows 2000 Captulo 12 Projeto de Sistemas Operacionais

5 ADONAI - Preparatrio pa

Sistemas OperacionaisI Conceitos BsicosIntroduo 1 Objetivos 2 Tipos 3 Funcionalidades 4 Estrutura de um Sistema Operacional 5 Conceitos de Hardware 6 Arquitetura de um Sistema Operacional 7 Histrico dos Sistemas Operacionais

6

Sistemas OperacionaisIntroduo Um sistema de computao constitudo basicamente por hardware e software. O hardware composto por: circuitos eletrnicos (processador, memria, portas de entrada/sada, etc) perifricos eletro-ptico-mecnicos (teclados, mouses, discos rgidos, unidades de disquete, CD ou DVD, dispositivos USB, etc).

O software de aplicao representado por programas destinados ao usurio do sistema, que constituem a razo final de seu uso, como editores de texto, navegadores Internet ou jogos.Entre os aplicativos e o hardware reside uma camada de software multifacetada e complexa, denominada genericamente de Sistema Operacional.7

Sistemas OperacionaisIntroduo O sistema operacional uma camada de software que opera entre o hardware e os programas aplicativos voltados ao usurio final. O sistema operacional uma estrutura de software ampla,muitas vezes complexa, que incorpora: aspectos de baixo nvel (como drivers de dispositivos e gerncia de memria fsica) aspectos de alto nvel (como programas utilitrios e a prpria interface grfica).

8

Sistemas OperacionaisIntroduo A figura ilustra a arquitetura geral de um sistema de computao tpico. elementos de hardware, sistema operacional e programas aplicativos.

9

Sistemas Operacionais1 Objetivos :

Os objetivos bsicos de um sistema operacional podem ser sintetizados em duas palavras-chave: abstrao e gerncia.Existe uma grande distncia entre os circuitos eletrnicos e dispositivos de hardware e os programas aplicativos em software. Os circuitos so complexos, acessados atravs de interfaces de baixo nvel (geralmente usando as portas de entrada/sada do processador) e muitas vezes suas caractersticas e seu comportamento dependem da tecnologia usada em sua construo. Por exemplo, a forma de acesso de baixo nvel a discos rgidos IDE difere da forma de acesso a discos SCSI ou leitores de CD. Essa grande diversidade pode ser uma fonte de dores de cabea para o desenvolvedor de aplicativos. Portanto, torna-se desejvel oferecer aos programas aplicativos uma forma de acesso homognea aos dispositivos fsicos, que permita abstrair as diferenas tecnolgicas entre eles.10

Sistemas Operacionais1.1 Abstrao de recursos Acessar os recursos de hardware de um sistema de computao pode ser uma tarefa complexa, devido s caractersticas especficas de cada dispositivo fsico e a complexidade de suas interfaces. Assim, o sistema operacional deve definir interfaces abstratas para os recursos do hardware, visando atender os seguintes objetivos: Prover interfaces de acesso aos dispositivos, mais simples de usar que as interface de baixo nvel para simplificar a construo de programas aplicativos. Tornar os aplicativos independentes do hardware Definir interfaces de acesso homogneas para dispositivos com tecnologias distintas.11

Sistemas Operacionais1.1 Abstrao de recursos Prover interfaces de acesso aos dispositivos, mais simples de usar que as interface de baixo nvel para simplificar a construo de programas aplicativos. Por exemplo: para ler dados de um disco rgido, uma aplicao usa um conceito chamado arquivo, que implementa uma viso abstrata do disco rgido, acessvel atravs de operaes como open, read e close. Caso tivesse de acessar o disco diretamente, teria de manipular portas de entrada/sada e registradores com comandos para o controlador de disco (sem falar na dificuldade de localizar os dados desejados dentro do disco).12

Sistemas Operacionais1.1 Abstrao de recursos Tornar os aplicativos independentes do hardware Ao definir uma interface abstrata de acesso a um dispositivo de hardware, o sistema operacional desacopla o hardware dos aplicativos e permite que ambos evoluam de forma mais autnoma. Por exemplo, o cdigo de um editor de textos no deve ser dependente da tecnologia de discos rgidos utilizada no sistema.

13

Sistemas Operacionais1.1 Abstrao de recursos Definir interfaces de acesso homogneas para dispositivos com tecnologias distintas. Atravs de suas abstraes, o sistema operacional permite aos aplicativos usar a mesma interface para dispositivos diversos. Por exemplo, um aplicativo acessa dados em disco atravs de arquivos e diretrios, sem precisar se preocupar com a estrutura real de armazenamento dos dados, que podem estar em um: disquete, um disco IDE, uma mquina fotogrfica digital conectada porta USB, um CD ou mesmo um disco remoto, compartilhado atravs da rede. 14

Sistemas Operacionais1.1 Abstrao de recursos Por exemplo, a seqncia a seguir apresenta os principais passos envolvidos na abertura de um arquivo (operao open) em um leitor de disquete:

1. verificar se os parmetros informados esto corretos (nome do arquivo, identificador do leitor de disquete, buffer de leitura, etc); 2. verificar se o leitor de disquetes est disponvel; 3. verificar se o leitor contm um disquete; 4. ligar o motor do leitor e aguardar atingir a velocidade de rotao correta; 5. posicionar a cabea de leitura sobre a trilha onde est a tabela de diretrio; 6. ler a tabela de diretrio e localizar o arquivo ou subdiretrio desejado; 7. mover a cabea de leitura para a posio do bloco inicial do arquivo; 8. ler o bloco inicial do arquivo e deposit-lo em um buffer de memria.15

Sistemas Operacionais1.2 Gerncia de recursos Os programas aplicativos usam o hardware para atingir seus objetivos: ler e armazenar dados, editar e imprimir documentos, navegar na Internet, tocar msica, etc.

Em um sistema com vrias atividades simultneas, podem surgir conflitos no uso do hardware, quando dois ou mais aplicativos precisam dos mesmos recursos para poder executar. Cabe ao sistema operacional definir polticas para gerenciar o uso dos recursos de hardware pelos aplicativos, e resolver eventuais disputas e conflitos.16

Sistemas Operacionais1.2 Gerncia de recursos Vejamos algumas situaes onde a gerncia de recursos do hardware se faz necessria: Gerncia de Processos: Cada computador possui normalmente um s processador. O uso desse processador deve ser distribudo entre os aplicativos presentes no sistema, de forma que cada um deles possa executar na velocidade adequada para cumprir suas funes sem prejudicar os outros.

Gerncia de Memria: O mesmo ocorre com a memria RAM, que deve ser distribuda de forma justa entre as aplicaes.

17

Sistemas Operacionais1.2 Gerncia de recursos Vejamos algumas situaes onde a gerncia de recursos do hardware se faz necessria: Gerncia de Impresso: A impressora um recurso cujo acesso deve ser efetuado de forma mutuamente exclusiva (apenas um aplicativo por vez), para no ocorrer mistura de contedo nos documentos impressos. O sistema operacional resolve essa questo definindo uma fila de trabalhos a imprimir (print jobs) normalmente atendidos de forma seqencial (FIFO).

18

Sistemas Operacionais1.2 Gerncia de recursos Vejamos algumas situaes onde a gerncia de recursos do hardware se faz necessria: Gerncia de Segurana: Ataques de negao de servio (DoS Denial of Service) so comuns na Internet. Eles consistem em usar diversas tcnicas para forar um servidor de rede a dedicar seus recursos a atender um determinado usurio, em detrimento dos demais. Por exemplo, ao abrir milhares conexes simultneas em um servidor de e-mail, um atacante pode reservar para si todos os recursos do servidor (processos, conexes de rede, memria e processador), fazendo com que os demais usurios no sejam mais atendidos. responsabilidade do sistema operacional do servidor detectar tais situaes e impedir que todos os recursos do sistema sejam monopolizados por um s usurio (ou um pequeno grupo).19

Sistemas Operacionais1.3 Concluso Assim, um sistema operacional visa: abstrair o acesso e gerenciar os recursos de hardware. Provendo aos aplicativos um ambiente de execuo abstrato. No qual o acesso aos recursos se faz atravs de interfaces simples, independentes das caractersticas e detalhes de baixo nvel. E no qual os conflitos no uso do hardware so minimizados.

20

Sistemas Operacionais2 Tipos de sistemas operacionais Os sistemas operacionais podem ser classificados segundo diversos parmetros e perspectivas, como tamanho, velocidade, suporte a recursos especficos, acesso rede, etc.

A seguir so apresentados alguns tipos de sistemas operacionais usuais (muitos sistemas operacionais se encaixam bem em mais de uma das categorias): Batch (de lote) : De rede : Distribudo : Multiusurio : Desktop : Servidor : Embutido : Tempo real :21

Sistemas Operacionais2 Tipos de sistemas operacionais Batch (de lote) : os sistemas operacionais mais antigos trabalhavam por lote, ou seja,todos os programas a executar eram colocados em uma fila, com seus dados e demais informaes para a execuo. O processador recebia um programa aps o outro, processando-os em seqncia, o que permitia um alto grau de utilizao do sistema. Ainda hoje o termo em lote usado para designar um conjunto de comandos que deve ser executado em seqncia, sem interferncia do usurio. Exemplos desses sistemas incluem o OS/360 e VMS, entre outros.22

Sistemas Operacionais2 Tipos de sistemas operacionais De rede : um sistema operacional de rede deve possuir suporte operao em rede, ou seja, a capacidade de oferecer s aplicaes locais recursos que estejam localizados em outros computadores da rede, como arquivos e impressoras. Ele tambm deve disponibilizar seus recursos locais aos demais computadores, de forma controlada. A maioria dos sistemas operacionais atuais oferece esse tipo de funcionalidade.

23

Sistemas Operacionais2 Tipos de sistemas operacionais Distribudo : em um sistema operacional distribudo, os recursos de cada mquina esto disponveis globalmente, de forma transparente aos usurios. Ao lanar uma aplicao, o usurio interage com sua janela, mas no sabe onde ela est executando ou armazenando seus arquivos: o sistema quem decide, de forma transparente. Os sistemas operacionais distribudos: Amoeba e Clouds

24

Sistemas Operacionais2 Tipos de sistemas operacionais Multiusurio : um sistema operacional multiusurio deve suportar a identificao do dono de cada recurso dentro do sistema (arquivos, processos, reas de memria, conexes de rede) e impor regras de controle de acesso para impedir o uso desses recursos por usurios no autorizados. Essa funcionalidade fundamental para a segurana dos sistemas operacionais de rede e distribudos. Grande parte dos sistemas atuais so multiusurios.

25

Sistemas Operacionais2 Tipos de sistemas operacionais Desktop : um sistema operacional de mesa voltado ao atendimento do usurio domstico e corporativo para a realizao de atividades corriqueiras, como edio de textos e grficos, navegao na Internet e reproduo de mdias simples. Sua principais caractersticas so a interface grfica, o suporte interatividade e a operao em rede. Exemplos de sistemas desktop so o Windows XP, MacOS X e Linux.

26

Sistemas Operacionais2 Tipos de sistemas operacionais Servidor : um sistema operacional servidor deve permitir a gesto eficiente de grandes quantidades de recursos (disco, memria, processadores), impondo prioridades e limites sobre o uso dos recursos pelos usurios e seus aplicativos. Normalmente um sistema operacional servidor tambm tem suporte a rede e multiusurios.

27

Sistemas Operacionais2 Tipos de sistemas operacionais Embutido : um sistema operacional dito embutido (embedded) quando construdo para operar sobre um hardware com poucos recursos de processamento, armazenamento e energia. Aplicaes tpicas desse tipo de sistema aparecem em telefones celulares, controladores industriais e automotivos, equipamentos eletrnicos de uso domstico (leitores de DVD, TVs, fornos-micro-ondas, centrais de alarme, etc.). Muitas vezes um sistema operacional embutido se apresenta na forma de uma biblioteca a ser ligada ao programa da aplicao (que fixa). Exemplos de sistemas operacionais embutidos so o C/OS, Xylinx, LynxOS e VxWorks.28

Sistemas Operacionais2 Tipos de sistemas operacionais Tempo real : ao contrrio da concepo usual, um sistema operacional de tempo real no precisa ser necessariamente ultra-rpido; sua caracterstica essencial ter um comportamento temporal previsvel (ou seja, seu tempo de resposta deve ser conhecido no melhor e pior caso de operao). A estrutura interna de um sistema operacional de tempo real deve ser construda de forma a minimizar esperas e latncias imprevisveis, como tempos de acesso a disco e sincronizaes excessivas. Existem duas classificaes de sistemas de tempo real: soft real-time systems, nos quais a perda de prazos implica na degradao do servio prestado. Um exemplo seria o suporte gravao de CDs ou reproduo de msicas. Caso o sistema se atrase, pode ocorrer a perda da mdia em gravao ou falhas na msica que est sendo tocada. Por outro lado, nos hard real-time systems a perda de prazos pelo sistema pode perturbar o objeto controlado, com graves conseqncias humanas, econmicas ou ambientais. 29

Sistemas Operacionais2 Tipos de sistemas operacionais Tempo real : Exemplos desse tipo de sistema seriam o controle de funcionamento de uma turbina de avio a jato ou de uma caldeira industrial. Exemplos de sistemas de tempo real incluem o : QNX, RT-Linux e VxWorks. Muitos sistemas embutidos tm caractersticas de tempo real.

30

Sistemas Operacionais3 Funcionalidades Para cumprir seus objetivos de abstrao e gerncia, o sistema operacional deve atuar em vrias frentes. Cada um dos recursos do sistema possui suas particularidades, o que impe exigncias especficas para gerenciar e abstrair os mesmos. As principais funcionalidades implementadas por um sistema operacional tpico so: Gerncia do processador Gerncia de memria Gerncia de dispositivos Gerncia de arquivos Gerncia de proteo31

Sistemas Operacionais3 Funcionalidades: Gerncia do processador tambm conhecida como gerncia de processos ou de atividades, esta funcionalidade visa distribuir a capacidade de processamento de forma justa entre as aplicaes, evitando que uma aplicao monopolize esse recurso e respeitando as prioridades dos usurios. O sistema operacional prov a iluso de que existe um processador independente para cada tarefa, o que facilita o trabalho dos programadores de aplicaes e permite a construo de sistemas mais interativos. Tambm faz parte da gerncia de atividades fornecer abstraes para sincronizar atividades inter-dependentes e prover formas de comunicao entre elas.

32

Sistemas Operacionais3 Funcionalidades: Gerncia de memria tem como objetivo fornecer a cada aplicao uma rea de memria prpria, independente e isolada das demais aplicaes e inclusive do ncleo do sistema. O isolamento das reas de memria das aplicaes melhora a estabilidade e segurana do sistema como um todo, pois impede aplicaes com erros (ou aplicaes maliciosas) de interferir no funcionamento das demais aplicaes. Alm disso, caso a memria RAM existente seja insuficiente para as aplicaes, o sistema operacional pode aument-la de forma transparente s aplicaes, usando o espao disponvel em um meio de armazenamento secundrio (como um disco rgido). Uma importante abstrao construda pela gerncia de memria a noo de memria virtual, que desvincula os endereos de memria vistos por cada aplicao dos endereos acessados pelo processador na memria RAM. Com isso, uma aplicao pode ser carregada em qualquer posio livre da memria, sem que seu programador tenha de se preocupar com os endereos de memria onde ela ir executar.33

Sistemas Operacionais3 Funcionalidades: Gerncia de dispositivos cada perifrico do computador possui suas peculiaridades; assim, o procedimento de interao com uma placa de rede completamente diferente da interao comum disco rgido SCSI. Todavia, existem muitos problemas e abordagens em comum para o acesso aos perifricos. Por exemplo, possvel criar uma abstrao nica para a maioria dos dispositivos de armazenamento como pen-drives, discos SCSI ou IDE, disquetes, etc, na forma de um vetor de blocos de dados. A funo da gerncia de dispositivos (tambm conhecida como gerncia de entrada/sada) implementar a interao com cada dispositivo por meio de drivers e criar modelos abstratos que permitam agrupar vrios dispositivos distintos sob a mesma interface de acesso.34

Sistemas Operacionais3 Funcionalidades: Gerncia de arquivos esta funcionalidade construda sobre a gerncia de dispositivos e visa criar arquivos e diretrios, definindo sua interface de acesso e as regras para seu uso. importante observar que os conceitos abstratos de arquivo e diretrio so to importantes e difundidos que muitos sistemas operacionais os usam para permitir o acesso a recursos que nada tem a ver com armazenamento. Exemplos disso so as conexes de rede (nos sistemas UNIX e Windows, cada socket TCP visto como um descritor de arquivo no qual pode-se ler ou escrever dados) e as informaes do ncleo do sistema (como o diretrio /proc do UNIX).

35

Sistemas Operacionais3 Funcionalidades: Gerncia de proteo com computadores conectados em rede e compartilhados por vrios usurios, importante definir claramente os recursos que cada usurio pode acessar, as formas de acesso permitidas (leitura, escrita, etc) e garantir que essas definies sejam cumpridas. Para proteger os recursos do sistema contra acessos indevidos, necessrio: definir usurios e grupos de usurios; identificar os usurios que se conectam ao sistema, atravs de procedimentos de autenticao; definir e aplicar regras de controle de acesso aos recursos, relacionando todos os usurios, recursos e formas de acesso e aplicando essas regras atravs de procedimentos de autorizao; e finalmente registrar o uso dos recursos pelos usurios, para fins de auditoria e contabilizao.36

Sistemas Operacionais3 Funcionalidades: Alm dessas funcionalidades bsicas oferecidas pela maioria dos sistemas operacionais, vrias outras vm se agregar aos sistemas modernos, para cobrir aspectos complementares, como: interface grfica, suporte de rede, fluxos multimdia, gerncia de energia, etc. As funcionalidades do sistema operacional geralmente so interdependentes: por exemplo, a gerncia do processador depende de aspectos da gerncia de memria, assim como a gerncia de memria depende da gerncia de dispositivos e da gerncia de proteo.

37

Sistemas Operacionais3 Funcionalidades: Alguns autores [Silberschatz et al., 2001, Tanenbaum, 2003] representam a estrutura do sistema operacional conforme indicado na figura 2. Nela, o ncleo central implementa o acesso de baixo nvel ao hardware, enquanto os mdulos externos representam as vrias funcionalidades do sistema.

38

Sistemas Operacionais3 Funcionalidades: Uma regra importante a ser observada na construo de um sistema operacional a separao entre os conceitos de poltica e mecanismo. Como poltica consideram-se os aspectos de deciso mais abstratos, que podem ser resolvidos por algoritmos de nvel mais alto, como por exemplo decidir a quantidade de memria que cada aplicao ativa deve receber, ou qual o prximo pacote de rede a enviar para satisfazer determinadas especificaes de qualidade de servio. Por outro lado, como mecanismo consideram-se os procedimentos de baixo nvel usados para implementar as polticas, ou seja, atribuir ou retirar memria de uma aplicao, enviar ou receber um pacote de rede, etc. Os mecanismos devem ser suficientemente genricos para suportar mudanas de poltica sem necessidade de modificaes.39

Sistemas Operacionais4 Estrutura de um sistema operacional Um sistema operacional no um bloco nico e fechado de software executando sobre o hardware. Na verdade, ele composto de diversos componentes com objetivos e funcionalidades complementares. Ncleo Drivers Cdigo de Inicializao Programas utilitrios

40

Sistemas Operacionais4 Estrutura de um sistema operacional Ncleo: o corao do sistema operacional, responsvel pela gerncia dos recursos do hardware usados pelas aplicaes. Ele tambm implementa as principais abstraes utilizadas pelos programas aplicativos. Drivers: mdulos de cdigo especficos para acessar os dispositivos fsicos. Existe um driver para cada tipo de dispositivo, como discos rgidos IDE, SCSI, portas USB, placas de vdeo, etc. Muitas vezes o driver construdo pelo prprio fabricante do hardware e fornecido em forma compilada (em linguagem de mquina) para ser acoplado ao restante do sistema operacional. Cdigo de Inicializao: a inicializao do hardware requer uma srie de tarefas complexas, como reconhecer os dispositivos instalados, test-los e configur-los adequadamente para seu uso posterior. Outra tarefa importante carregar o ncleo do sistema operacional em memria e iniciar sua execuo.41

Sistemas Operacionais4 Estrutura de um sistema operacional Programas utilitrios: so programas que facilitam o uso do sistema computacional, fornecendo funcionalidades complementares ao ncleo, como: formatao de discos e mdias, configurao de dispositivos, manipulao de arquivos (mover, copiar, apagar), interpretador de comandos, terminal, interface grfica, gerncia de janelas, etc.

42

Sistemas Operacionais5 Conceitos de hardware O sistema operacional interage diretamente com o hardware para fornecer servios s aplicaes. Para a compreenso dos conceitos implementados pelos sistemas operacionais, necessrio ter uma viso clara dos recursos fornecidos pelo hardware e a forma de acess-los. Esta seo apresenta uma reviso dos principais aspectos do hardware de um computador pessoal convencional.

43

Sistemas Operacionais5 Conceitos de hardware Um sistema de computao tpico constitudo de um ou mais processadores, responsveis pela execuo das instrues das aplicaes, uma rea de memria que armazena as aplicaes em execuo (seus cdigos e dados) e dispositivos perifricos que permitem o armazenamento de dados e a comunicao com o mundo exterior, como discos rgidos, terminais e teclados.

A maioria dos computadores mono-processados atuais segue uma arquitetura bsica definida nos anos 40 por John Von Neumann, conhecida por arquitetura Von Neumann. A principal caracterstica desse modelo a idia de programa armazenado, ou seja, o programa a ser executado reside na memria junto com os dados. Os principais elementos constituintes do computador esto interligados por um ou mais barramentos (para a transferncia de dados, endereos e sinais de controle).44

Sistemas Operacionais5 Conceitos de hardware A figura 4 ilustra a arquitetura de um computador tpico.

45

Sistemas Operacionais5 Conceitos de hardware O ncleo do sistema de computao o processador. Ele responsvel por continuamente:

ler instrues e dados da memria ou de perifricos, process-los e enviar os resultados de volta memria ou a outros perifricos.

Um processador convencional normalmente constitudo de: uma unidade lgica e aritmtica (ULA), que realiza os clculos e operaes lgicas, um conjunto de registradores para armazenar dados de trabalho e alguns registradores para funes especiais (contador de programa, ponteiro de pilha, flags de status, etc).

46

Sistemas Operacionais5 Conceitos de hardware Todas as transferncia de dados entre processador, memria e perifricos so feitas atravs dos barramentos: o barramento de endereos indica a posio de memria (ou o dispositivo) a acessar, o barramento de controle indica a operao a efetuar (leitura ou escrita) e o barramento de dados transporta a informao indicada entre o processador e a memria ou um controlador de dispositivo.

47

Sistemas Operacionais5 Conceitos de hardware O acesso memria geralmente mediado por um controlador especfico (que pode estar fisicamente dentro do prprio processador): a Unidade de Gerncia de Memria (MMU - Memory Management Unit). Ela responsvel por: analisar cada endereo solicitado pelo processador, valid-los, efetuar as converses de endereamento necessrias e executar a operao solicitada pelo processador (leitura ou escrita de uma posio de memria).

48

Sistemas Operacionais5 Conceitos de hardware Os perifricos do computador (discos, teclado, monitor, etc) so acessados atravs de circuitos especficos genericamente denominados controladores: placa de vdeo permite o acesso ao monitor, placa ethernet d acesso rede, Controlador USB permite acesso ao mouse, teclado e outros dispositivos USB externos.

Para o processador, cada dispositivo representado por seu respectivo controlador. Os controladores podem ser acessados atravs de portas de entrada/sada endereveis: a cada controlador atribuda uma faixa de endereos de portas de entrada/sada.

49

Sistemas Operacionais5 Conceitos de hardware A tabela 1 a seguir apresenta alguns endereos portas de entrada/sada para acessar controladores em um PC tpico:

50

Sistemas Operacionais5 Conceitos de hardware5.1 Interrupes Quando um controlador de perifrico tem uma informao importante a fornecer ao processador, ele tem duas alternativas de comunicao: Aguardar at que o processador o consulte, o que poder ser demorado caso o processador esteja ocupado com outras tarefas (o que geralmente ocorre); Notificar o processador atravs do barramento de controle, enviando a ele uma requisio de interrupo (IRQ Interrupt ReQuest). Ao receber a requisio de interrupo, os circuitos do processador suspendem seu fluxo de execuo corrente e desviam para um endereo pr-definido, onde se encontra uma rotina de tratamento de interrupo (interrupt handler).51

Sistemas Operacionais5 Conceitos de hardware5.1 Interrupes Essa rotina responsvel por tratar a interrupo, ou seja, executar as aes necessrias para atender o dispositivo que a gerou. Ao final da rotina de tratamento da interrupo, o processador retoma o cdigo que estava executando quando recebeu a requisio. A figura 5 representa os principais passos associados ao tratamento de uma interrupo envolvendo a placa de rede Ethernet, enumerados a seguir:

52

Sistemas Operacionais5 Conceitos de hardware5.1 Interrupes 1. O processador est executando um programa qualquer (em outras palavras, um fluxo de execuo); 2. Um pacote vindo da rede recebido pela placa Ethernet; 3. A placa envia uma solicitao de interrupo (IRQ) ao processador; 4. O processamento desviado do programa em execuo para a rotina de tratamento da interrupo; 5. A rotina de tratamento executada para receber as informaes da placa de rede (via barramentos de dados e de endereos) e atualizar as estruturas de dados do sistema operacional; 6. A rotina de tratamento da interrupo finalizada e o processador retorna execuo do programa que havia sido interrompido.

Sistemas Operacionais5 Conceitos de hardware5.1 Interrupes Esse roteiro de aes ocorre a cada requisio de interrupo recebida pelo processador. Cada interrupo geralmente corresponde a um evento ocorrido em um dispositivo perifrico: a chegada de um pacote de rede, um click no mouse, uma operao concluda pelo controlador de disco, etc.

Isso representa centenas ou mesmo milhares de interrupes recebidas por segundo, dependendo da carga e da configurao do sistema (nmero e natureza dos perifricos). Por isso, as rotinas de tratamento de interrupo devem ser curtas e realizar suas tarefas rapidamente (para no prejudicar o desempenho do sistema).54

Sistemas Operacionais5 Conceitos de hardware5.1 Interrupes Normalmente o processador recebe e trata cada interrupo recebida, mas nem sempre isso possvel. Por exemplo, receber e tratar uma interrupo pode ser problemtico caso o processador j esteja tratando outra interrupo. Por essa razo, o processador pode decidir ignorar temporariamente algumas interrupes, se necessrio. Isso feito ajustando o bit correspondente interrupo em um registrador especfico do processador.

55

Sistemas Operacionais5 Conceitos de hardware5.1 Interrupes Para distinguir interrupes geradas por dispositivos distintos, cada interrupo identificada por um inteiro, normalmente com 8 bits. Como cada interrupo pode exigir um tipo de tratamento diferente (pois os dispositivos so diferentes), cada IRQ deve disparar sua prpria rotina de tratamento de interrupo. A maioria das arquiteturas atuais define um vetor de endereos de funes denominado Vetor de Interrupes (IV - Interrupt Vector); cada entrada desse vetor aponta para a rotina de tratamento da interrupo correspondente. Por exemplo, se a entrada 5 do vetor contm o valor 3C20h, ento a rotina de tratamento da IRQ 5 iniciar na posio 3C20h da memria RAM. O vetor de interrupes reside em uma posio fixa da memria RAM, definida pelo fabricante do processador, ou tem sua posio indicada pelo 56 contedo de um registrador da CPU especfico para esse fim.

Sistemas Operacionais5 Conceitos de hardware5.1 Interrupes As interrupes recebidas pelo processador tm como origem eventos externos a ele, ocorridos nos dispositivos perifricos e reportados por seus controladores. Entretanto, alguns eventos gerados pelo prprio processador podem ocasionar o desvio da execuo usando o mesmo mecanismo das interrupes: so as excees. Eventos como instrues ilegais (inexistentes ou com operandos invlidos), tentativa de diviso por zero ou outros erros de software disparam excees no processador, que resultam na ativao de uma rotina de tratamento de exceo, usando o mesmo mecanismo das interrupes (e o mesmo vetor de endereos de funes).

57

Sistemas Operacionais5 Conceitos de hardware5.1 Interrupes A tabela 2 representa o vetor de interrupes do processador Intel Pentium

58

Sistemas Operacionais5 Conceitos de hardware5.1 Interrupes O mecanismo de interrupo torna eficiente a interao do processador com os dispositivos perifricos. Se no existissem interrupes, o processador perderia muito tempo varrendo todos os dispositivos do sistema para verificar se h eventos a serem tratados. Alm disso, as interrupes permitem construir funes de entrada/sada assncronas, ou seja, o processador no precisa esperar a concluso de cada operao solicitada a um dispositivo, pois o dispositivo gera uma interrupo para avisar o processador quando a operao for concluda. Interrupes no so raras, pelo contrrio: em um computador pessoal, o processador trata de centenas a milhares de interrupes por segundo, dependendo da carga do sistema e dos perifricos instalados.59

Sistemas Operacionais5 Conceitos de hardware5.2 Proteo do ncleo Um sistema operacional deve gerenciar os recursos do hardware, fornecendo-os s aplicaes conforme suas necessidades. Para assegurar a integridade dessa gerncia, essencial garantir que as aplicaes no consigam acessar o hardware diretamente, mas sempre atravs de pedidos ao sistema operacional, que avalia e intermedeia todos os acessos ao hardware. Ncleo, drivers, utilitrios e aplicaes so constitudos basicamente de cdigo de mquina. Todavia, devem ser diferenciados em sua capacidade de interagir com o hardware. Enquanto o ncleo e os drivers devem ter pleno acesso ao hardware, para poder configur-lo e gerenci-lo, Os utilitrios e os aplicativos devem ter acesso mais restrito a ele, para no interferir nas configuraes e na gerncia, o que acabaria desestabilizando o sistema inteiro.

Sistemas Operacionais5 Conceitos de hardware5.2 Proteo do ncleo Alm disso, aplicaes com acesso pleno ao hardware tornariam inteis os mecanismos de segurana e controle de acesso aos recursos (tais como arquivos, diretrios e reas de memria). Para permitir diferenciar os privilgios de execuo dos diferentes tipos de software, os processadores modernos contam com dois ou mais nveis de privilgio de execuo. Esses nveis so controlados por flags especiais nos processadores, e as formas de mudana de um nvel de execuo para outro so controladas estritamente pelo processador. O processador Pentium, por exemplo, conta com 4 nveis de privilgio (sendo 0 o nvel mais privilegiado), embora a maioria dos sistemas operacionais construdos para esse processador s use os nveis extremos (0 para o ncleo e drivers do sistema operacional e 3 para utilitrios e aplicaes).

Sistemas Operacionais5 Conceitos de hardware5.2 Proteo do ncleo Na forma mais simples desse esquema, podemos considerar dois nveis bsicos de privilgio: Nvel ncleo e Nvel usurio. Nvel ncleo : tambm denominado nvel supervisor, sistema, monitor ou ainda kernel space.

Para um cdigo executando nesse nvel, todo o processador est acessvel: todos os recursos internos do processador (registradores e portas de entrada/sada) e reas de memria podem ser acessados. Alm disso, todas as instrues do processador podem ser executadas. Ao ser ligado, o processador entra em operao neste nvel.

Sistemas Operacionais5 Conceitos de hardware5.2 Proteo do ncleo Na forma mais simples desse esquema, podemos considerar dois nveis bsicos de privilgio: Nvel ncleo e Nvel usurio. Nvel usurio (ou userspace): neste nvel, somente um sub-conjunto das instrues do processador, registradores e portas de entrada/sada esto disponveis. Instrues perigosas como HALT (parar o processador) e RESET (reiniciar o processador) so proibidas para todo cdigo executando neste nvel. Alm disso, o hardware restringe o uso da memria, permitindo o acesso somente a reas previamente definidas. Caso o cdigo em execuo tente executar uma instruo proibida ou acessar uma rea de memria inacessvel, o hardware ir gerar uma exceo, desviando a execuo para uma rotina de tratamento dentro do ncleo, que provavelmente ir abortar o programa em execuo (e tambm gerar a famosa frase este programa executou uma instruo ilegal e ser finalizado, no caso do Windows).

Sistemas Operacionais5 Conceitos de hardware5.2 Proteo do ncleo fcil perceber que, em um sistema operacional convencional, o ncleo e os drivers operam no nvel ncleo, enquanto os utilitrios e as aplicaes operam no nvel usurio, confinados em reas de memria distintas, conforme ilustrado na figura 6. Todavia, essa separao nem sempre segue uma regra to simples; outras opes de organizao de sistemas operacionais sero abordadas na seo 6.

Sistemas Operacionais5 Conceitos de hardware5.3 Chamadas de Sistema O confinamento de cada aplicao em sua rea de memria, imposto pelos mapeamentos de memria realizados pela MMU nos acessos em nvel usurio, prov robustez e confiabilidade ao sistema, pois garante que uma aplicao no poder interferir nas reas de memria de outras aplicaes ou do ncleo. Entretanto, essa proteo introduz um novo problema: como chamar, a partir de uma aplicao, as rotinas oferecidas pelo ncleo para o acesso ao hardware e suas abstraes? Em outras palavras, como uma aplicao pode acessar a placa de rede para enviar/receber dados, se no tem privilgio para acessar as portas de entrada/sada correspondentes nem pode invocar o cdigo do ncleo que implementa esse acesso (pois esse cdigo reside em outra rea de memria)?

Sistemas Operacionais5 Conceitos de hardware5.3 Chamadas de Sistema A resposta a esse problema est no mecanismo de interrupo, apresentado na seo 5.1. Os processadores implementam uma instruo especial que permite acionar o mecanismo de interrupo de forma intencional, sem depender de eventos externos ou internos. Ao ser executada, essa instruo (int no Pentium, syscall no MIPS) comuta o processador para o nvel privilegiado e procede de forma similar ao tratamento de uma interrupo. Por essa razo, esse mecanismo denominado interrupo de software, ou trap. Processadores modernos oferecem instrues especficas para entrar/sair do modo privilegiado, como SYSCALL e SYSRET (nos processadores Pentium), que permitem a transferncia rpida do controle para o ncleo, com custo menor que o tratamento de uma interrupo.

Sistemas Operacionais5 Conceitos de hardware5.3 Chamadas de Sistema A ativao de procedimentos do ncleo usando interrupes de software (ou outros mecanismos correlatos) denominada chamada de sistema (system call ou syscall). Os sistemas operacionais definem chamadas de sistema:

para todas as operaes envolvendo o acesso a recursos de baixo nvel (perifricos, arquivos, alocao de memria, etc) ou abstraes lgicas (criao e finalizao de tarefas, operadores de sincronizao e comunicao, etc).

Geralmente as chamadas de sistema so oferecidas para as aplicaes em modo usurio atravs de uma biblioteca do sistema (system library), que prepara os parmetros, invoca a interrupo de software e retorna aplicao os resultados obtidos.

Sistemas Operacionais5 Conceitos de hardware5.3 Chamadas de Sistema A figura 7 ilustra o funcionamento bsico de uma chamada de sistema (a chamada read, que l dados de um arquivo previamente aberto).

Sistemas Operacionais5 Conceitos de hardware5.3 Chamadas de Sistema Os seguintes passos so realizados: 1. No nvel usurio, a aplicao invoca a funo read (fd, &buffer, bytes) da biblioteca de sistema (no Linux a biblioteca GNU C Library, ou glibc; no Windows, essas funes so implementadas pela API Win32). 2. A funo read preenche uma rea de memria com os parmetros recebidos e escreve o endereo dessa rea em um registrador da CPU. Em outro registrador, ela escreve o cdigo da chamada de sistema desejada (no caso do Linux, seria 03h para a syscall read). 3. A funo read invoca uma interrupo de software (no caso do Linux, sempre invocada a interrupo 80h). 4. O processador comuta para o nvel privilegiado (kernel level) e transfere o controle para a rotina apontada pela entrada 80h do vetor de interrupes. 5. A rotina obtm o endereo dos parmetros, verifica a validade de cada um deles e realiza (ou agenda para execuo posterior) a operao desejada pela aplicao.

Sistemas Operacionais5 Conceitos de hardware5.3 Chamadas de Sistema Os seguintes passos so realizados: 6. Ao final da execuo da rotina, eventuais valores de retorno so escritos na rea de memria da aplicao e o processamento retorna funo read, em modo usurio. 7. A funo read finaliza sua execuo e retorna o controle aplicao. 8. Caso a operao solicitada no possa ser realizada imediatamente, a rotina de tratamento da interrupo de software passa o controle para a gerncia de atividades, ao invs de retornar diretamente da interrupo de software para a aplicao solicitante. Isto ocorre, por exemplo, quando solicitada a leitura de uma entrada do teclado. 9. Na seqncia, a gerncia de atividades devolve o controle do processador a outra aplicao que tambm esteja aguardando o retorno de uma interrupo de software, e cuja operao solicitada j tenha sido concluda.

Sistemas Operacionais5 Conceitos de hardware5.3 Chamadas de Sistema A maioria dos sistemas operacionais implementa centenas de chamadas de sistema distintas, para as mais diversas finalidades. O conjunto de chamadas de sistema oferecidas por um ncleo define a API (Application Programming Interface) desse sistema operacional. Exemplos de APIs bem conhecidas so: a Win32, oferecida pelos sistemas Microsoft derivados doWindows NT, e a API POSIX [Gallmeister, 1994], que define um padro de interface de ncleo para sistemas UNIX.

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Embora a definio de nveis de privilgio (seo 5.3) imponha uma estruturao mnima a um sistema operacional, as mltiplas partes que compem o sistema podem ser organizadas de diversas formas, separando suas funcionalidades e modularizando seu projeto. Sistemas Monolticos Sistemas em Camadas Sistemas micro-ncleo Mquinas Virtuais

72

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Sistemas Monolticos Em um sistema monoltico, todos os componentes do ncleo operam em modo ncleo e se inter-relacionam conforme suas necessidades, sem restries de acesso entre si, pois o cdigo no nvel ncleo tem acesso pleno a todos os recursos e reas de memria. A grande vantagem dessa arquitetura seu desempenho: qualquer componente do ncleo pode acessar os demais componentes, toda a memria ou mesmo dispositivos perifricos diretamente, pois no h barreiras impedindo esse acesso. A interao direta entre componentes tambm leva a sistemas mais compactos. Todavia, a arquitetura monoltica pode pagar um preo elevado por seu desempenho: a robustez e a facilidade de desenvolvimento.73

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Sistemas Monolticos Caso um componente do ncleo perca o controle devido a algum erro, esse problema pode se alastrar rapidamente por todo o ncleo, levando o sistema ao colapso (travamento, reinicializao ou funcionamento errtico). Alm disso, a manuteno e evoluo do ncleo se tornam mais complexas, porque as dependncias e pontos de interao entre os componentes podem no ser evidentes: pequenas alteraes na estrutura de dados de um componente podem ter um impacto inesperado em outros componentes, caso estes acessem aquela estrutura diretamente. A arquitetura monoltica foi a primeira forma de organizar os sistemas operacionais; sistemas UNIX antigos e o MS-DOS seguiam esse modelo. Atualmente, apenas sistemas operacionais embutidos usam essa arquitetura, devido s limitaes do hardware sobre o qual executam.74

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Sistemas Monolticos O ncleo do Linux nasceu monoltico,mas vem sendo paulatinamente estruturado e modularizado desde a verso 2.0 (embora boa parte de seu cdigo ainda permanea no nvel de ncleo).

75

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Sistemas em Camadas Uma forma mais elegante de estruturar um sistema operacional faz uso da noo de camadas: a camada mais baixa realiza a interface como hardware, enquanto as camadas intermedirias provem nveis de abstrao e gerncia cada vez mais sofisticados. Por fim, a camada superior define a interface do ncleo para as aplicaes (as chamadas de sistema). Essa abordagem de estruturao de software fez muito sucesso no domnio das redes de computadores, atravs do modelo de referncia OSI (Open Systems Interconnection), e tambm seria de se esperar sua adoo no domnio dos sistemas operacionais. No entanto, alguns inconvenientes limitam sua aceitao nesse contexto:76

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Sistemas em Camadas No entanto, alguns inconvenientes limitam sua aceitao nesse contexto: O empilhamento de vrias camadas de software faz com que cada pedido de uma aplicao demore mais tempo para chegar at o dispositivo perifrico ou recurso a ser acessado, prejudicando o desempenho do sistema. No bvio como dividir as funcionalidades de um ncleo de sistema operacional em camadas horizontais de abstrao crescente, pois essas funcionalidades so inter-dependentes, embora tratem muitas vezes de recursos distintos. Em decorrncia desses inconvenientes, a estruturao em camadas apenas parcialmente adotada hoje em dia.

77

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Sistemas em Camadas Muitos sistemas implementam uma camada inferior de abstrao do hardware para interagir com os dispositivos (a camada HAL Hardware Abstraction Layer, implementada no Windows NT e seus sucessores), e tambm organizam em camadas alguns sub-sistemas como a gerncia de arquivos e o suporte de rede (seguindo o modelo OSI). Como exemplos de sistemas fortemente estruturados em camadas podem ser citados o IBM OS/2 e o MULTICS.

78

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Sistemas micro-ncleo Uma outra possibilidade de estruturao consiste em retirar do ncleo todo o cdigo de alto nvel (normalmente associado s polticas de gerncia de recursos), deixando no ncleo somente o cdigo de baixo nvel necessrio para interagir como hardware e criar as abstraes fundamentais (como a noo de atividade). Por exemplo, usando essa abordagem o cdigo de acesso aos blocos de um disco rgido seria mantido no ncleo, enquanto as abstraes de arquivo e diretrio seriam criadas e mantidas por um cdigo fora do ncleo, executando da mesma forma que uma aplicao do usurio. Por fazer os ncleos de sistema ficarem menores, essa abordagem foi denominada micro-ncleo (ou -kernel).79

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Sistemas micro-ncleo Um micro-ncleo normalmente implementa somente a noo de atividade, de espaos de memria protegidos e de comunicao entre atividades. Todos os aspectos de alto nvel, como polticas de uso do processador e da memria, o sistema de arquivos e o controle de acesso aos recursos so implementados fora do ncleo, em processos que se comunicam usando as primitivas do ncleo. Em um sistema micro-ncleo, as interaes entre componentes e aplicaes so feitas atravs de trocas de mensagens. Assim, se uma aplicao deseja abrir um arquivo no disco rgido, envia uma mensagem para o gerente de arquivos que, por sua vez, se comunica com o gerente de dispositivos para obter os blocos de dados relativos ao arquivo desejado. Os processos no podem se comunicar diretamente, devido s restries impostas pelos mecanismos de proteo do hardware. 80

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Sistemas micro-ncleo Por isso, todas as mensagens so transmitidas atravs de servios do microncleo. Como os processos tm de solicitar servios uns dos outros, para poder realizar suas tarefas, essa abordagem tambm foi denominada clienteservidor. O micro-ncleos foram muito investigados durante os anos 80. Dois exemplos clssicos dessa abordagem so os sistemas Mach e Chorus. As principais vantagens dos sistemas micro-ncleo so sua robustez e flexibilidade: caso um sub-sistema tenha problemas, os mecanismos de proteo de memria e nveis de privilgio iro confin-lo, impedindo que a instabilidade se alastre ao restante do sistema.81

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Sistemas micro-ncleo Alm disso, possvel customizar o sistema operacional, iniciando somente os componentes necessrios ou escolhendo os componentes mais adequados s aplicaes que sero executadas. Vrios sistemas operacionais atuais adotam parcialmente essa estruturao; por exemplo, o MacOSX da Apple tem suas razes no sistema Mach, ocorrendo o mesmo com o Digital UNIX. Todavia, o custo associado s trocas de mensagens entre componentes pode ser bastante elevado, o que prejudica seu desempenho e diminui a aceitao desta abordagem. O QNX um dos poucos exemplos de micro-ncleo amplamente utilizado, sobretudo em sistemas embutidos e de tempo-real.82

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Sistemas micro-ncleo

83

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Mquinas Virtuais Para que programas e bibliotecas possam executar sobre uma determinada plataforma computacional, necessrio que tenham sido compilados para ela, respeitando o conjunto de instrues do processador e o conjunto de chamadas do sistema operacional. Da mesma forma, um sistema operacional s poder executar sobre uma plataforma de hardware se for compatvel com ela. Nos sistemas atuais, as interfaces de baixo nvel so pouco flexveis: geralmente no possvel criar novas instrues de processador ou novas chamadas de sistema, ou mudar sua semntica. Por isso, um sistema operacional s funciona sobre o hardware para o qual foi construdo, uma biblioteca s funciona sobre o hardware e sistema operacional para os quais foi projetada e as aplicaes tambm tm de obedecer a interfaces pr-definidas. 84

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Mquinas Virtuais Todavia, possvel contornar os problemas de compatibilidade entre os componentes de um sistema atravs de tcnicas de virtualizao. Usando os servios oferecidos por um determinado componente do sistema, possvel construir uma camada de software que oferea aos demais componentes servios com outra interface. Essa camada permitir assim o acoplamento entre interfaces distintas, de forma que um programa desenvolvido para uma plataforma A possa executar sobre uma plataforma distinta B. O sistema computacional visto atravs dessa camada denominado mquina virtual.

85

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Mquinas Virtuais A figura mostra um exemplo de mquina virtual, onde uma camada de virtualizao permite executar um sistema operacional Windows e suas aplicaes sobre uma plataforma de hardware Sparc, distinta daquela para a qual foi projetado (Intel/AMD).

86

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Mquinas Virtuais Um ambiente de mquina virtual consiste de trs partes bsicas: O sistema real, ou sistema hospedeiro (host system), que contm os recursos reais de hardware e software do sistema; O sistema virtual, tambm denominado sistema convidado (guest system), que executa sobre o sistema virtualizado; em alguns casos, vrios sistemas virtuais podem coexistir, executando sobre o mesmo sistema real; A camada de virtualizao, denominada hipervisor ou monitor de virtualizao (VMM - Virtual Machine Monitor), que constri as interfaces virtuais a partir da interface real.

87

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Mquinas Virtuais Atualmente, as solues de virtualizao de linguagens e de plataformas vm despertando grande interesse do mercado. Vrias linguagens so compiladas para mquinas virtuais portveis e os processadores mais recentes trazem um suporte nativo virtualizao de hardware, finalmente respeitando as condies conceituais definidas no incio dos anos 70. Existem diversas possibilidades de implementao de sistemas de mquinas virtuais. De acordo com o tipo de sistema convidado suportado, os ambientes de mquinas virtuais podem ser divididos em duas grandes famlias (figura 11): Mquinas virtuais de aplicao Mquinas virtuais de sistema88

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Mquinas Virtuais Mquinas virtuais de aplicao So ambientes de mquinas virtuais destinados a suportar apenas um processo ou aplicao convidada especfica. A mquina virtual Java um exemplo desse tipo de ambiente. As mquinas virtuais de aplicao so geralmente usadas como suporte de execuo de linguagens de programao. Mquinas virtuais de sistema : So construdos para suportar sistemas operacionais convidados completos, com aplicaes convidadas executando sobre eles. Como exemplos podem ser citados os ambientes VMWare, Xen e Virtual Box Mquinas virtuais de sistema suportam um ou mais sistemas operacionais convidados, com suas respectivas aplicaes, que executam de forma 89 isolada e independente.

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Mquinas Virtuais Mquinas virtuais de aplicao Mquinas virtuais de sistema :

90

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Mquinas Virtuais Em uma mquina virtual, cada sistema operacional convidado tem a iluso de executar sozinho sobre uma plataforma de hardware exclusiva. Como o sistema operacional convidado e o ambiente de execuo dentro da mquina virtual so idnticos ao da mquina real, possvel usar os softwares j construdos para a mquina real dentro das mquinas virtuais. Essa transparncia evita ter de construir novas aplicaes ou adaptar as j existentes.

91

Sistemas Operacionais6 Arquiteturas de Sistemas Operacionais Mquinas Virtuais A principal desvantagem do uso de mquinas virtuais o custo adicional de execuo dos processos na mquina virtual em comparao com a mquina real. Esse custo muito varivel, podendo passar de 50% em plataformas sem suporte de hardware virtualizao, como os PCs de plataforma Intel mais antigos. Todavia, pesquisas recentes tm obtido a reduo desse custo a patamares abaixo de 20%, graas sobretudo a ajustes no cdigo do sistema hospedeiro. Esse problema no existe em ambientes cujo hardware oferece suporte virtualizao, como o caso dos mainframes e dos processadores Intel/AMD mais recentes.92

Sistemas Operacionais7 Um breve histrico dos sistemas operacionais Os primeiros sistemas de computao, no final dos anos 40 e incio dos anos 50, no possuam sistema operacional. Por outro lado, os sistemas de computao atuais possuem sistemas operacionais grandes, complexos e em constante evoluo. A seguir so apresentados alguns dos marcos mais relevantes na histria dos sistemas operacionais: Anos 40 Anos 50 Anos 60 Anos 80 Anos 90 Anos 2000

93

Sistemas Operacionais7 Um breve histrico dos sistemas operacionais Anos 40: Cada programa executava sozinho e tinha total controle do computador. Tudo devia ser programado detalhadamente pelo desenvolvedor da aplicao: a carga do programa em memria, a varredura dos perifricos de entrada para busca de dados, a computao propriamente dita e o envio dos resultados para os perifrico de sada, byte a byte,

94

Sistemas Operacionais7 Um breve histrico dos sistemas operacionais Anos 50: os sistemas de computao fornecem bibliotecas de sistema (systeml ibraries) que encapsulam o acesso aos perifricos, para facilitar a programao de aplicaes. Algumas vezes um programa monitor (system monitor) auxilia a carga e descarga de aplicaes e/ou dados entre a memria e perifricos (geralmente leitoras de carto perfurado, fitas magnticas e impressoras de caracteres).

95

Sistemas Operacionais7 Um breve histrico dos sistemas operacionais Anos 60: 1961 : o grupo do pesquisador Fernando Corbat, do MIT, anuncia o desenvolvimento do CTSS Compatible Time-Sharing System , o primeiro sistema operacional com compartilhamento de tempo. 1965 : a IBM lana o OS/360, um sistema operacional avanado, com compartilhamento de tempo e excelente suporte a discos. 1965 : um projeto conjunto entre MIT, GE e Bell Labs define o sistema operacional Multics, cujas idias inovadoras iro influenciar novos sistemas durante dcadas. 1969 : Ken Thompson e Dennis Ritchie, pesquisadores dos Bell Labs, criam a primeira verso do UNIX.

96

Sistemas Operacionais7 Um breve histrico dos sistemas operacionais Anos 80: 1981 : a Microsoft lana o MS-DOS, um sistema operacional comprado da empresa Seattle Computer Products em 1980. 1984 : a Apple lana o sistema operacional Macintosh OS 1.0, o primeiro a ter uma interface grfica totalmente incorporada ao sistema. 1985 : primeira tentativa da Microsoft no campo dos sistemas operacionais com interface grfica, atravs do MS-Windows 1.0. 1987 : Andrew Tanenbaum, um professor de computao holands, desenvolve um sistema operacional didtico simplificado, mas respeitando a API do UNIX, que foi batizado como Minix. 1987 : IBM e Microsoft apresentam a primeira verso do OS/2, um sistema multitarefa destinado a substituir o MS-DOS e o Windows. Mais tarde, as duas empresas rompem a parceria; a IBM continua no OS/2 e a Microsoft investe no ambiente Windows.97

Sistemas Operacionais7 Um breve histrico dos sistemas operacionais Anos 90: 1991 : Linus Torvalds, um estudante de graduao finlands, inicia o desenvolvimento do Linux, lanando na rede Usenet o ncleo 0.01, logo abraado por centenas de programadores ao redor do mundo. 1993 : a Microsoft lana Windows NT, o primeiro sistema 32 bits da empresa. 1993 : lanamento dos UNIX de cdigo aberto FreeBSD e NetBSD.

98

Sistemas Operacionais7 Um breve histrico dos sistemas operacionais Anos 2000: 2001 : a Apple lana o MacOS X, um sistema operacional derivado da famlia UNIX BSD. 2001 : lanamento do Windows XP. 2004 : lanamento do ncleo Linux 2.6. 2006 : lanamento do Windows Vista.

99

Sistemas OperacionaisExerccios1. Quais os dois principais objetivos dos sistemas operacionais?2. Por que a abstrao de recursos importante para os desenvolvedores de aplicaes? Ela tem utilidade para os desenvolvedores do prprio sistema operacional? 3. A gerncia de atividades permite compartilhar o processador, executando mais de uma aplicao ao mesmo tempo. Identifique as principais vantagens trazidas por essa funcionalidade e os desafios a resolver para implement-la. 4. O que caracteriza um sistema operacional de tempo real? Quais as duas classificaes de sistemas operacionais de tempo real e suas diferenas? 5. O que diferencia o ncleo do restante do sistema operacional? 6. Seria possvel construir um sistema operacional seguro usando um processador que no tenha nveis de privilgio? Por que?

100

Sistemas OperacionaisExerccios7. Quais as diferenas entre interrupes, excees e traps? 8. O comando em linguagem C fopen uma chamada de sistema ou uma funo de biblioteca? Por que? 9. Monte uma tabela com os benefcios e deficincias mais significativos das principais arquiteturas de sistemas operacionais. 10. Relacione as principais caractersticas dos respectivos tipos de sistemas operacionais: distribudo (D), multi-usurio (M), desktop (K), servidor (S), embutido (E) ou de tempo-real (T). 11. A operao em modo usurio permite ao processador executar somente parte das instrues disponveis em seu conjunto de instrues. Quais as operaes no deveria ser permitida em nvel usurio? Por que?

101