Вы находитесь на странице: 1из 14

INTRODUO A

SISTEMAS
OPERACIONAIS

Componente: Gesto de Sistemas Operacionais I


Colgio Entec Prof TatianeTolentino de Assis
tatiane@colegioentec.com.br
2010

1 INTRODUO
O computador um aparelho que executa tarefas repetitivas e armazena uma grande
quantidade de dados. atravs de programas e/ou aplicativos, que somos capazes de
interagir com o computador.
O computador basicamente dividido em Hardware e Software.
O hardware composto por circuitos eletrnicos (processador, memria, portas de
entrada/ sada, etc) e perifricos eletro-ptico-mecnicos (teclados, mouses, discos rgidos,
unidades de disquete, CD ou DVD, dispositivos USB, etc). Por sua vez, o software de
aplicao e representado por programas destinados ao usurio do sistema e 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.
Ou seja, um S.O. um programa ou um conjunto de programas cuja a funo
servir de interface entre o computador (hardware) e o usurio.

Unidades de medida
A menor unidade utilizvel para representao de informaes em um
computador o BIT, que assume os valores 0 ou 1. Essa representao, dita binria, est
relacionada com o fato das informaes serem armazenadas fisicamente no computador na
forma de uma polaridade eltrica (positivo ou negativo) ou magntica (norte ou sul nos
ims). Como um nico bit insuficiente para representar informaes mais complexas, eles
so agrupados e combinados. Num primeiro agrupamento, eles so reunidos em conjuntos
de oito, recebendo a denominao de BYTE (8 bits).
Quando nos referimos s informaes armazenadas em um computador
utilizamos, portanto, o termo byte, que corresponde a um caractere. Tendo em vista que a
unidade byte consideravelmente pequena quando indicamos valores mais extensos,
utilizamos mltiplos do byte: kilobyte, megabyte, gigabyte, terabyte, etc.

1 bit = sinal eltrico


8 bits = 1 byte (1 caracter)
1 kilobyte (KB)=1024 bytes
1 megabyte (MB)=1024 kilobytes
1 gigabyte (GB)=1024 megabytes
1 terabyte (TB) = 1024 gigabytes
1 petabyte (PB) = 1024 terabytes
1 exabyte (EB) = 1024 petabytes
1 zettabyte (ZB) = 1024 exabytes
1 yottabyte (YB) = 1024 zettabytes

Histria dos sistemas operacionais


No incio da computao os primeiros "sistemas operacionais" eram nicos, pois cada
mainframe (computadores de grande porte, que eram do tamanho de um armrio ou maior)
vendido necessitava de um sistema operacional especfico. Esse problema era resultado de
arquiteturas diferentes e da linguagem utilizada no caso, assembly (linguagem de baixo
nvel). Aps essa fase, iniciou-se a pesquisa de sistemas operacionais que automatizassem a
troca de tarefas (jobs), pois os sistemas eram mono-usurio e tinham cartes perfurados
como entrada (eliminando, assim, o trabalho de pessoas que eram contratadas apenas para
trocar os cartes perfurados).
Um dos primeiros sistemas operacionais de propsito geral foi o CTSS, desenvolvido no
MIT. Aps o CTSS, o MIT, os laboratrios Bell da AT&T e a General Eletric
desenvolveram o Multics, cujo objetivo era suportar centenas de usurios. Apesar do
fracasso comercial, o Multics serviu como base para o estudo e desenvolvimento de
sistemas operacionais. Um dos desenvolvedores do Multics, que trabalhava para a Bell,
Ken Thompson, comeou a rescrever o Multics num conceito menos ambicioso, criando o
Unics (em 1969), que mais tarde passou a chamar-se Unix. Os sistemas operacionais eram
geralmente programandos em assembly, at mesmo o Unix em seu incio. Ento, Dennis
Ritchie (tambm da Bell) criou a linguagem C a partir da linguagem B, que havia sido
criada por Thompson. Finalmente, Thompson e Ritchie reescreveram o Unix em C. O Unix
criou um ecossistema de verses, onde destacam-se: System V e derivados (HP-UX, AIX);
famlia BSD (FreeBSD, NetBSD, OpenBSD, etc.), Linux e at o Mac OS X (que deriva do
Mach e FreeBSD).
Na dcada de 1970, quando comearam a aparecer os computadores pessoais, houve a
necessidade de um sistema operacional de utilizao mais fcil. Em 1980, William (Bill)
Gates e seu colega de faculdade, Paul Allen, fundadores da Microsoft, compram o sistema
QDOS ("Quick and Dirty Operating System") de Tim Paterson por $50.000, batizam-no de
DOS (Disk Operating System) e vendem licenas IBM. O DOS vendeu muitas cpias,
como o sistema operacional padro para os computadores pessoais desenvolvidos pela
IBM.
Em meados de 1993, o Windows comea a ser tecnicamente considerado como sistema
operacional, com o lanamento do Windows NT. O Windows 3.11, Windows 95 e
Windows 98 so softwares de interface grfica.
No comeo da dcada de 1990, um estudante de computao finlands postou um
comentrio numa lista de discusso da Usenet dizendo que estava desenvolvendo um kernel
de sistema operacional e perguntou se algum gostaria de auxili-lo na tarefa. Este
estudante chamava-se Linus Torvalds e o primeiro passo em direo ao to conhecido
Linux foi dado naquele momento.

1.1 Objetivos
Existe uma grande distancia 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 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.
O sistema operacional uma camada de software que opera entre o hardware e os
programas aplicativos voltados ao usurio final. O sistema operacional e uma estrutura de
software ampla,muitas vezes complexa, que incorpora aspectos de baixo nvel (como
drivers de dispositivos e gerencia de memria fsica) e de alto nvel (como programas
utilitrios e a prpria interface grfica).
A figura 1 ilustra a arquitetura geral de um sistema de computao tpico. Nela,
podemos observar elementos de hardware, o sistema operacional e alguns programas
aplicativos.

Figura 1 -Objetivos Bsicos de um S.O.

1.1.1- Abstrao de recursos


O acesso aos recursos de hardware de um sistema de computao pode ser
trabalhoso e complicado, devido s caractersticas especficas de cada dispositivo fsico e a
complexidade de sua interface. 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 o corretos (nome do arquivo, identificador
do leitor de disquete, buffer de leitura, etc);
2. verificar se o leitor de disquetes esta 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 esta 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.
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 interfaces de
baixo nvel, para simplificar a construo de programas aplicativos. Por exemplo: para ler
dados de um disco rgido, uma aplicao usa uma abstrao chamada arquivo, 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 a
controladora de disco (sem falar na dificuldade de localizar os dados desejados dentro do
disco).
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 nao deve ser dependente da tecnologia de discos rgidos utilizada no
sistema.
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
usando a abstrao de arquivo, sem levar em conta onde esto os dados reais: num disquete,
num disco IDE, num disco SCSI, numa mquina fotogrfica digital conectada a porta USB,
num CD ou num disco remoto compartilhado atravs da rede.

1.1.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 musica, 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. Vejamos algumas
situaes onde a gerencia de dos recursos do hardware se faz necessria:
Cada computador possui normalmente um s o 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. O
mesmo ocorre com a memria RAM, que deve ser distribuda de forma justa entre as
aplicaes.
A impressor 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 sequencial (FIFO).
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 10.000

conexes simultneas em um servidor de e-mail POP3, um atacante pode puxar para si


todos os recursos do servidor (processos, conexes de rede, memria e processador),
fazendo com que os demais usurios no sejam mais atendidos. Cabe ao sistema
operacional do servidor detectar tais situaes e impedir que todos os recursos do sistema
sejam monopolizados por um so usurio (ou um pequeno grupo).
Assim, um sistema operacional visa abstrair o hardware e gerenciar seus recursos,
provendo aos aplicativos um ambiente de execuo abstrato, no qual o acesso aos recursos
de hardware se faz atravs de interfaces simples, independentes das caractersticas de baixo
nvel do hardware, e no qual os conflitos no uso do hardware so minimizados.

2- 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 apresentadas):

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.
De rede: um sistema operacional de rede deve possuir suporte A operao em
rede, ou seja, a capacidade de oferecer as 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.
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 esta executando
ou armazenando seus arquivos: o sistema quem decide, de forma transparente. Os
sistemas operacionais distribudos j existem h tempos (Amoeba [TKvRB91] e
Clouds [DRJLAR91], por exemplo), mas ainda no so uma realidade de mercado.
Multi-usuario: Um sistema operacional multi-usuario 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 e fundamental
para a segurana dos sistemas operacionais de rede e distribudos. Grande parte dos
sistemas atuais so multi-usuarios.
Desktop: um sistema operacional de mesa voltado ao atendimento do usurio
domestico e corporativo para a realizao de atividades corriqueiras, como edio
de textos e grficos, navegao na Internet e reproduo de mdias simples. Suas
principais caractersticas so a interface grfica, o suporte a interatividade e a

operao em rede. Exemplos de sistemas desktop so o Windows XP, MacOS X e


Linux.
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 multiusuarios.
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 domestico (leitores de DVD, TVs, fornos-micro-ondas, centrais
de alarme, etc). Muitas vezes um sistema operacional embutido de 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.
Tempo real: ao contrario 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 a gravao de CDs ou reproduo de musicas. Caso o sistema se
atrase, pode ocorrer perda da mdia em gravao ou falhas na musica 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. 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, e vice-versa.

3 - Funcionalidades
Para cumprir seus objetivos de abstrao e gerncia, o sistema operacional deve
atuar em varias frentes. Cada um dos recursos do sistema possui suas particularidades, o
que impe exigncias especficas para gerenciar e abstrair os mesmos. Sob essa
perspectiva, as principais funcionalidades implementadas por um sistema operacional tpico
so:

Gerncia do processador: tambm conhecida como gerencia 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. Busca-se criar a abstrao de um
processador para cada tarefa, que facilita a vida dos programadores de aplicaes e
permite a construo de sistemas mais interativos. Tambm faz parte da gerencia de

atividades fornecer abstraes para sincronizar atividades interdependentes e prover


formas de comunicao entre elas.
Gerncia de memria: tem como objetivo fornecer a cada aplicao um espao de
memria prprio, independente e isolado dos demais, inclusive do ncleo do
sistema. Caso a memria RAM no seja suficiente, o sistema deve prover
armazenamento secundrio (espao em disco) como complemento de memria, de
forma transparente as aplicaes. A principal abstrao construda pela gerncia de
memria e a noo de memria virtual, que desvincula o espao de endereos visto
por cada aplicao dos respectivos espaos de armazenamento providos pela RAM
e pelos discos. Com isso, os programadores podem construir suas aplicaes sem se
preocupar com os endereos de memria onde elas irao executar.
Gerncia de dispositivos: cada perifrico do computador possui suas
peculiaridades; assim, o procedimento de interao com uma placa de rede e
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.
Gerncia de arquivos: esta funcionalidade construda sobre a gerncia de
dispositivos e visa criar as abstraes de arquivo e diretrio, definindo tambm sua
interface de acesso e as regras para seu uso. importante observar que essas
abstraes so to importantes e difundidas que muitos sistemas operacionais as
usam para permitir o acesso a recursos que nada tem a ver com armazenamento,
como 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), informaes
do ncleo do sistema (como o diretrio /proc do UNIX) ou mesmo para abstrair
todos os recursos do sistema (como faz o sistema operacional Plan 9 [PPT+93], para
o qual todos os recursos so vistos como arquivos).
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 sero cumpridas. Para proteger os recursos do sistema contra
acessos indevidos, necessrio: a) definir usurios e grupos de usurios; b)
identificar os usurios que se conectam ao sistema, atravs de procedimentos de
autenticao; c) 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 d) registrar o uso dos
recursos pelos usurios, para fins de auditoria e contabilizao.

Alem dessas funcionalidades bsicas, oferecidas pela maioria dos sistemas


operacionais, vrias outras vm se agregar aos sistemas modernos, para cobrir aspectos
complementares, como a 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. Alguns autores 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.

Uma regra importante a ser observada na construo de um sistema operacional


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. Essa separao entre os conceitos de poltica e mecanismo
traz uma grande flexibilidade aos sistemas operacionais, permitindo alterar sua
personalidade (sistemas mais interativos ou mais eficientes, etc) sem ter de mexer no
cdigo que interage diretamente com o hardware. Alguns sistemas, como o InfoKernel,
permitem as aplicaes escolher as polticas do sistema mais adequadas para suas
necessidades.

4 - 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. Alguns dos componentes mais relevantes de um sistema
operacional tpico so:

Ncleo: o corao do sistema operacional, responsvel pela gerencia 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 binria para ser acoplado ao restante
do sistema operacional.
Cdigo de inicializao: a inicializao do hardware requer uma serie 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.
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, gerencia de janelas, etc.

5 - Proteo do ncleo
Um sistema operacional deve gerenciar os recursos do hardware, fornecendo-os as
aplicaes conforme suas necessidades. Para assegurar a integridade dessa gerencia,
essencial garantir que as aplicaes no consigam acessar o hardware diretamente, mas
sempre atravs de pedidos ao sistema operacional, que avalia e intermdia 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
maquina. Todavia, devem ser diferenciados em sua capacidade de interagir como hardware:
enquanto o ncleo e os drivers devem ter pleno acesso ao hardware (para poder configurlo e gerenci-lo), os utilitrios e os aplicativos devem ter acesso mais restrito a ele, para no
interferir nas configuraes e na gerencia, o que acabaria desestabilizando o sistema inteiro.
Alem disso, aplicaes com acesso pleno ao hardware tornariam inteis os mecanismos de
segurana e controle de acesso aos recursos (arquivos, diretrios, reas de memria, etc).
Para permitir a diferenciao de privilegio de acesso entre os 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 a mudana
de um nvel de execuo para outro controlada por condies especificas. O processador
Pentium, por exemplo, conta com 4 nveis de privilegio (sendo 0 o nvel mais privilegiado),
embora a maioria dos sistemas operacionais construdos para esse processador s o use os
nveis extremos (0 para o ncleo e drivers do sistema operacional e 3 para utilitrios e
aplicaes). Na forma mais simples desse esquema, podemos considerar dois nveis bsicos
de privilegio:
Nvel ncleo: tambm denominado nvel supervisor, sistema, monitor ou ainda
kernelspace. Para um cdigo executando nesse nvel, todo o processador esta
acessvel:todos os registradores, portas de entrada/sada e reas de memria podem ser
acessados em leitura e escrita. Alem disso, todas as instrues do processador podem ser
executadas. Ao ser ligado, o processador entra em operao neste nvel.

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. Alem 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 ira gerar uma exceo, desviando a execuo para uma rotina de
tratamento dentro do ncleo, que provavelmente ira abortar o programa em execuo (e
tambm gerar a famosa frase este programa executou uma instruo ilegal e ser
finalizado, no caso do Windows).
fcil perceber que, em um sistema operacional convencional, o ncleo e os drivers
operam no nvel ncleo, enquanto os utilitrios e as aplicaes operando nvel usurio,
confinados em reas de memria distintas, conforme ilustrado na figura 3

Figura 3 Separao entre ncleos e Aplicaes

6 - Arquiteturas de Sistemas Operacionais


Embora a definio de nveis de privilegio 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. Nesta seo sero apresentadas as arquiteturas mais populares para a
organizao de sistemas operacionais.

6.1 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
figura 4 ilustra essa arquitetura.

Figura 4: Uma arquitetura monoltica


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 ha 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. 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, reinicializaro ou funcionamento
errtico). Alem disso, a manuteno e evoluo do ncleo se tornam mais complexas,
porque as dependncias e pontos de interao entre os componentes podem no ser
evidente: pequenas alteraes em 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 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. 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).

6.2 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 gerencia 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 referencia 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:
O empilhamento de varias camadas de software faz com que cada pedido de uma
aplicao demore mais tempo para chegar ate o dispositivo perifrico ou recurso a ser
acessado, prejudicando o desempenho do sistema.
No obvio como dividir as funcionalidades de um ncleo de sistema operacional em
camadas horizontais de abstrao crescente, pois essas funcionalidades so interdependentes, embora tratem muitas vezes de recursos distintos.
Em decorrncia desses inconvenientes, 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), 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.

6.3 Sistemas microncleo


Uma outra possibilidade de estruturao consiste em retirar do ncleo todo o cdigo
de alto nvel (normalmente associado s polticas de gerencia 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
microncleo (ou kernel). Um microncleo 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. A figura 5 ilustra essa
abordagem.

Figura 9: Viso geral de uma arquitetura microncleo

Em um sistema micro-nucleo, 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.
Todas as mensagens so transmitidas atravs de servios do microncleo, como mostra a
figura 9. Como os processos tem de solicitar servios uns dos outros (para poder realizar
suas incumbncias), essa abordagem tambm foi denominada cliente-servidor.
Os microncleos foram muito investigados durante os anos 80. Dois exemplos
clssicos dessa abordagem so os sistemas Mach e Chorus. As principais vantagens dos
sistemas microncleo so sua robustez e flexibilidade: caso um sub-sistema tenha
problemas, os mecanismos de proteo de memria e nveis de privilegio iro confin-lo,
impedindo que a instabilidade se alastre ao restante do sistema. Alem disso, possvel
customizar o sistema operacional, iniciando somente os 20 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 e um dos poucos exemplos de microncleo amplamente utilizado,
sobretudo em sistemas embutidos e de tempo-real.

Вам также может понравиться