Você está na página 1de 58

Microprocessadores II

Prof. Luciano Mendes Camillo


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