professorcamillo@gmail.com https://sites.google.com/site/microprocessadores2cefet/ Proteo Ncleo e Arq de SO 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. Mas como impedir as aplicaes de acessar o hardware diretamente? Ncleo, Drivers, Utilitrios e Aplicaes so constitudos basicamente de cdigo de mquina. Proteo do ncleo So diferenciados em sua capacidade de interagir como hardware: Ncleo e os Drivers possuem pleno acesso ao hardware, para poder configur-lo e gerenci-lo, Utilitrios e os Aplicativos possuem acesso mais restrito ao hardware, para no interferir nas configuraes e na gerncia, o que acabaria desestabilizando o sistema inteiro. As 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). Proteo do ncleo Os processadores modernos contam com dois ou mais nveis de privilgio de execuo. Para permitir diferenciar os privilgios de execuo dos diferentes tipos de software, Nos processadores Esses nveis so controlados por flags especiais , e as formas de mudana de um nvel de execuo para outro so controladas estritamente pelo processador. Exemplo: Processador Pentium 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 3 para utilitrios e aplicaes Proteo do ncleo Na forma mais simples desse esquema, podemos considerar dois nveis bsicos de privilgio: Nvel ncleo : tambm denominado nvel supervisor, sistema, monitor ou ainda kernel space. Ao ser ligado, o processador entra em operao neste nvel. 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. Todas as instrues do processador podem ser executadas. Proteo do ncleo 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. O hardware restringe o uso da memria, permitindo o acesso somente a reas previamente definidas. Proteo do ncleo 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 gerar a famosa frase, no caso do Windows este programa executou uma instruo ilegal e ser finalizado Proteo do ncleo Chamadas de sistema Unidade de Gerncia de Memria (MMU - Memory Management Unit) Nos Acessos ao Nvel Usurio realiza os mapeamentos de memria confinando cada aplicao em sua rea de memria Desta forma: garante que uma aplicao no poder interferir nas reas de memria de outras aplicaes ou do ncleo E prov robustez e confiabilidade ao sistema Chamadas de sistema 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? OU SEJA: 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) ? Chamadas de sistema Resposta: Mecanismo de interrupo 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: comuta o processador para o nvel privilegiado e procede de forma similar ao tratamento de uma interrupo. Exemplo: int no Pentium syscall no MIPS Chamadas de sistema 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 INTEL), que permitem a transferncia rpida do controle para o ncleo, com custo menor que o tratamento de uma interrupo. Chamadas de sistema Portanto: Chamada de sistema (system call ou syscall) a ativao de procedimentos do ncleo usando interrupes de software (ou outros mecanismos correlatos). Os Sist. Opers. 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). Chamadas de sistema Geralmente 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. Chamadas de sistema Roteiro Tpico de uma Chamada de Sistema 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 - 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). Chamadas de sistema 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) - 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. Chamadas de Sistema 6. Ao final da execuo da rotina, - Eventuais valores de retorno so escritos na rea de memria da aplicao - 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. Chamadas de Sistema 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. 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 do Windows NT, - e a API POSIX, que define um padro de interface de ncleo para sistemas UNIX. Arquiteturas de Sistemas Operacionais A definio de Nveis de Privilgio impe uma estruturao mnima a um sistema operacional E as Mltiplas partes que compem o sistema podem ser organizadas de diversas formas, separando suas funcionalidades e modularizando seu projeto Sistemas Monolticos 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. Arquiteturas de Sistemas Operacionais Grande vantagem : 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. Sistemas Monolticos Arquiteturas de Sistemas Operacionais A interao entre componentes: Direta RESULTANDO: sistemas mais compactos. Desvantagem: a arquitetura monoltica pode pagar um preo elevado por seu desempenho: Robustez e a Facilidade de desenvolvimento. 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). Sistemas Monolticos Arquiteturas de Sistemas Operacionais Desvantagem: 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. Sistemas Monolticos Arquiteturas de Sistemas Operacionais 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. Linux: Seu ncleo 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). Sistemas Monolticos Arquiteturas de Sistemas Operacionais Uma outra forma de estruturar um sistema operacional faz uso da noo de camadas: Camada mais baixa realiza a interface como hardware, Camadas intermedirias provem nveis de abstrao e gerncia cada vez mais sofisticados. Camada superior define a interface do ncleo para as aplicaes (as chamadas de sistema). Sistemas em Camadas Arquiteturas de Sistemas Operacionais Essa abordagem de estruturao de software fez muito sucesso no domnio das redes de computadores, atravs do modelo de referncia OSI (Open Systems Interconnection) Por isso sua adoo no domnio dos sistemas operacionais. 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. Sistemas em Camadas Arquiteturas de Sistemas Operacionais A diviso no bvia 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. Conseqncia: a estruturao em camadas apenas parcialmente adotada hoje em dia. 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) Sistemas em Camadas Arquiteturas de Sistemas Operacionais e tambm organizam em camadas alguns sub-sistemas como - a Gerncia de arquivos - e o Suporte de rede (seguindo omodelo OSI). Exemplos de Sistemas Fortemente Estruturados em camadas - IBM OS/2 - MULTICS (MULTiplexed Information and Computing Service) Sistemas em Camadas Arquiteturas de Sistemas Operacionais 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). Exemplo: 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. Sistemas Micro-Ncleo Arquiteturas de Sistemas Operacionais Por fazer os ncleos de sistema ficarem menores, essa abordagem foi denominada micro-ncleo (ou -kernel). Um micro-ncleo normalmente implementa somente a noo de atividade, de espaos de memria protegidos e de comunicao entre atividades. 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. Sistemas Micro-Ncleo Arquiteturas de Sistemas Operacionais Sistemas Micro-Ncleo Arquiteturas de Sistemas Operacionais As interaes entre componentes e aplicaes so feitas atravs de trocas de mensagens. Exemplo: Se uma aplicao deseja abrir um arquivo no disco rgido, - envia uma mensagem para o gerente de arquivos o gerente de arquivos 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. Por isso, todas as mensagens so transmitidas atravs de servios do micro-ncleo, Sistemas Micro-Ncleo Arquiteturas de Sistemas Operacionais Essa abordagem tambm foi denominada Cliente-Servidor. devido aos processos precisarem solicitar servios uns dos outros, para poder realizar suas tarefas As principais VANTAGENS so: - 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. - possvel customizar o sistema operacional, - iniciando somente os componentes necessrios - ou escolhendo os componentes mais adequados s aplicaes que sero executadas. Sistemas Micro-Ncleo Arquiteturas de Sistemas Operacionais DESVANTAGEM: Custo associado s trocas de mensagens entre componentes pode ser bastante elevado, prejudicando seu desempenho e diminuindo a aceitao desta abordagem. O QNX um dos poucos exemplos de micro-ncleo amplamente utilizado, sobretudo em sistemas embutidos e de tempo-real. Sistemas Micro-Ncleo Arquiteturas de Sistemas Operacionais 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. Mquinas virtuais Arquiteturas de Sistemas Operacionais Nos sistemas atuais Interfaces de baixo nvel so pouco flexveis: geralmente no possvel criar novas instrues de processador ou novas chamadas de sistema, ou mudar sua semntica. Desta Forma: 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 As aplicaes tambm tm de obedecer a interfaces pr- definidas. Mquinas virtuais Arquiteturas de Sistemas Operacionais Entretanto Atravs de tcnicas de virtualizao possvel contornar os problemas de compatibilidade entre os componentes de um sistema Atravs dos servios oferecidos por um determinado componente do sistema, possvel construir uma camada de software que oferea 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. Mquinas virtuais Arquiteturas de Sistemas Operacionais O sistema computacional visto atravs dessa camada denominado Mquina Virtual. 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). Mquinas virtuais Arquiteturas de Sistemas Operacionais Mquinas virtuais Arquiteturas de Sistemas Operacionais 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. Mquinas virtuais Arquiteturas de Sistemas Operacionais Dcada de 70 - Pesquisadores Popek & Goldberg formalizaram vrios conceitos associados s mquinas virtuais e definiram as condies necessrias para que uma plataforma de hardware suporte de forma eficiente a virtualizao - Surgem as primeiras experincias concretas de utilizao de mquinas virtuais para a execuo de aplicaes com o ambiente UCSD p-System, no qual programas Pascal so compilados para execuo sobre um hardware abstrato denominado P-Machine. Mquinas virtuais Arquiteturas de Sistemas Operacionais Dcada de 90 - Aumento de desempenho e funcionalidades do hardware PC - Surgimento da linguagem Java Consequencia: Volta interesse pelas tecnologias de virtualizao Atualmente - Solues de virtualizao de linguagens e de plataformas vm despertando grande interesse do mercado. Mquinas virtuais Arquiteturas de Sistemas Operacionais Vrias linguagens so compiladas para mquinas virtuais portveis 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: Mquinas virtuais Arquiteturas de Sistemas Operacionais 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. 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 VirtualBox. Mquinas virtuais Arquiteturas de Sistemas Operacionais Mquinas virtuais Arquiteturas de Sistemas Operacionais Mquinas virtuais de aplicao so geralmente usadas como suporte de execuo de linguagens de programao. 1970 Primeiras experincias com linguagens usando mquinas virtuais com a linguagem UCSD Pascal (da Universidade da Califrnia em San Diego). Um programa escrito em Pascal era compilado em um cdigo binrio denominado P-Code, que executava sobre o processador abstrato P-Machine. Mquinas virtuais Arquiteturas de Sistemas Operacionais O interpretador de P-Codes era bastante compacto e facilmente portvel, O que tornou o sistema P muito popular. Atualmente: Muitas linguagens adotam estratgias similares, como Java, C#, Python, Perl, Lua e Ruby. C#, o cdigo-fonte compilado em um formato intermedirio denominado CIL (Common Intermediate Language), que executa sobre uma mquina virtual CLR (Common Language Runtime). CIL e CLR fazem parte da infraestrutura .NET da Microsoft. Mquinas virtuais Arquiteturas de Sistemas Operacionais 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. Mquinas virtuais Arquiteturas de Sistemas Operacionais Mquinas virtuais de sistema suportam um ou mais sistemas operacionais convidados, com suas respectivas aplicaes, que executam de forma isolada e independente. constituem a primeira abordagem usada para a construo de hipervisores, desenvolvida na dcada de 1960. No que diz respeito sua arquitetura, existem basicamente dois tipos de hipervisores de sistema: Mquinas virtuais Arquiteturas de Sistemas Operacionais Hipervisores nativos (ou de tipo I): o hipervisor executa diretamente sobre o hardware da mquina real, sem um sistema operacional subjacente. A funo do hipervisor multiplexar os recursos de hardware (memria, discos, interfaces de rede, etc) de forma que cada mquina virtual veja um conjunto de recursos prprio e independente. Alguns exemplos de sistemas que empregam esta abordagem so o IBM OS/370, o VMWare ESX Server e o ambiente Xen. Mquinas virtuais Arquiteturas de Sistemas Operacionais Mquinas virtuais Arquiteturas de Sistemas Operacionais Hipervisores convidados (ou de tipo II): o hipervisor executa como um processo normal sobre um sistema operacional hospedeiro. O hipervisor usa os recursos oferecidos pelo sistema operacional real para oferecer recursos virtuais ao sistema operacional convidado que executa sobre ele. Exemplos de sistemas que adotam esta estrutura incluem o VMWare Workstation, o QEmu e o VirtualBox Mquinas virtuais Arquiteturas de Sistemas Operacionais Mquinas virtuais Arquiteturas de Sistemas Operacionais A literatura relaciona algumas vantagens para a utilizao de mquinas virtuais em sistemas de computao: Aperfeioamento e testes de novos sistemas operacionais; Ensino prtico de sistemas operacionais e programao de baixo nvel; Executar diferentes sistemas operacionais sobre o mesmo hardware, simultaneamente; Simular configuraes e situaes diferentes do mundo real, como por exemplo, mais memria disponvel, outros dispositivos de E/S; Mquinas virtuais Arquiteturas de Sistemas Operacionais Simular alteraes e falhas no hardware para testes ou reconfigurao de um sistema operacional, provendo confiabilidade e escalabilidade para as aplicaes; Garantir a portabilidade das aplicaes legadas (que executariam sobre uma VM simulando o sistema operacional original); Desenvolvimento de novas aplicaes para diversas plataformas, garantindo a portabilidade destas aplicaes; Diminuir custos com hardware. Mquinas virtuais Arquiteturas de Sistemas Operacionais Principal desvantagem: 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. Mquinas virtuais Arquiteturas de Sistemas Operacionais 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 Mquinas virtuais