Você está na página 1de 33

Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001

Sistemas Operacionais
Rmulo Silva de Oliveira 1

Alexandre da Silva Carissimi 2

Simo Sirineo Toscani 3

Resumo: Ao longo de mais de 40 anos, sistemas operacionais tm sido


desenvolvidos com o propsito de tornar a utilizao do computador mais
eficiente e mais conveniente. Para isso, um enorme nmero de conceitos,
abstraes, mecanismos e algoritmos foram criados e aprimorados. Este artigo
um tutorial a respeito das tcnicas fundamentais empregadas nos sistemas
operacionais contemporneos. Tambm so discutidos aqui os sistemas
operacionais distribudos e de tempo real.

Abstract: For more than 40 years, operating systems have been developed
with the goal of making the utilization of computers more efficient and more
comfortable. A huge number of concepts, abstractions, mechanisms and
algorithms were created and improved. This paper is a tutorial on the
fundamental techniques applied in the construction of contemporary operating
systems. We also discuss distributed operating systems and real-time operating
systems.

1 Dep. de Automao e Sistemas, UFSC, Caixa Postal 476, 88040-900, Florianpolis-SC


romulo@das.ufsc.br
2 Instituto de Informtica, UFRGS, Caixa Postal 15064, 91501-970, Porto Alegre-RS
asc@inf.ufrgs.br
3 Instituto de Informtica, UFRGS, Caixa Postal 15064, 91501-970, Porto Alegre-RS
simao@inf.ufrgs.br
Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

1 Introduo
O sistema operacional procura tornar a utilizao do computador mais eficiente e
mais conveniente. A utilizao mais eficiente busca um maior retorno no investimento feito
no hardware, significa mais trabalho obtido do mesmo hardware. Uma utilizao mais
conveniente vai diminuir o tempo necessrio para a construo e utilizao dos programas.
Um enorme nmero de conceitos, abstraes, mecanismos e algoritmos foram criados e
aprimorados ao longo dos ltimos 40 anos. Este artigo um tutorial a respeito das tcnicas
fundamentais empregadas nos sistemas operacionais contemporneos. O artigo baseia-se, em
grande parte, no texto do livro Sistemas Operacionais, dos mesmos autores [1].
Para atingir os objetivos propostos, o sistema operacional oferece diversos tipos de
servios. Todo sistema operacional oferece meios para que um programa seja carregado na
memria principal e executado. Talvez o servio mais importante oferecido seja o que
permite a utilizao de arquivos e diretrios. Tambm o acesso aos perifricos feito atravs
do sistema operacional. medida que diversos usurios compartilham o computador, passa a
ser interessante saber quanto de quais recursos cada usurio necessita. Diversas informaes
sobre o estado do sistema so mantidas. Nessa categoria, temos a hora e a data correntes, a
lista de usurios utilizando o computador no momento, a verso do sistema operacional em
uso. Cabe tambm ao sistema operacional garantir que cada usurio possa trabalhar sem
sofrer interferncia danosa dos demais.
Os programas solicitam servios ao sistema operacional atravs das chamadas de
sistema. Elas so semelhantes s chamadas de sub-rotinas. Entretanto, enquanto as chamadas
de sub-rotinas so transferncias para procedimentos normais do programa, as chamadas de
sistema transferem a execuo para o sistema operacional. Atravs de parmetros, o
programa informa exatamente o que necessita. O retorno da chamada de sistema, assim como
o retorno de uma sub-rotina, faz com que a execuo do programa seja retomada a partir da
instruo que segue a chamada. Para o programador assembly (linguagem de montagem), as
chamadas de sistema so bastante visveis. Por exemplo, o conhecido "INT 21H" no MS-
DOS. Em uma linguagem de alto nvel, elas ficam escondidas dentro da biblioteca utilizada
pelo compilador. O programador chama sub-rotinas de uma biblioteca, e estas chamam o
sistema. Por exemplo, qualquer funo da biblioteca que acesse o terminal (como
printf()na linguagem C) exige uma chamada de sistema.
A parte do sistema operacional responsvel por implementar as chamadas de sistema
normalmente chamada de ncleo ou kernel. Os principais componentes do kernel de
qualquer sistema operacional so a gerncia de processador, a gerncia de memria, o
sistema de arquivos e a gerncia de entrada e sada. Cada um desses componentes ser
descrito nas prximas sees.
Os programas de sistema, algumas vezes chamados de utilitrios, so programas
normais executados fora do kernel do sistema operacional. Eles utilizam as mesmas
chamadas de sistema disponveis aos demais programas. Esses programas implementam

2 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

tarefas bsicas para a utilizao do sistema e muitas vezes so confundidos com o prprio
sistema operacional. Exemplos so os utilitrios para manipulao de arquivos: programas
para exibir arquivo, imprimir arquivo, copiar arquivo, trocar o nome de arquivo, listar o
contedo de diretrio, entre outros. O mais importante programa de sistema o
interpretador de comandos. Esse programa ativado pelo sistema operacional sempre que
um usurio inicia sua sesso de trabalho. Sua tarefa receber comandos do usurio e
execut-los. Para isso, ele recebe as linhas tecladas pelo usurio, analisa o seu contedo e
executa o comando teclado. A execuo do comando, na maioria das vezes, vai exigir uma
ou mais chamadas de sistema. Por exemplo, considere um comando do tipo "lista diretrio".
Para execut-lo, o interpretador de comandos deve, primeiramente, ler o contedo do
diretrio solicitado pelo usurio. A informao formatada para facilitar a sua disposio na
tela e, finalmente, novas chamadas de sistema sero feitas para listar essas informaes na
tela. O interpretador de comandos no precisa, obrigatoriamente, ser um programa de
sistema. Ele pode fazer parte do sistema operacional. Entretanto, a soluo descrita antes a
que oferece a maior flexibilidade. O que foi dito sobre o interpretador de comandos
igualmente vlido para a situao em que o sistema operacional oferece uma interface
grfica de usurio (GUI graphical user interface). A diferena est na comodidade para o
usurio, que passa a usar cones, menus e mouse para interagir com o sistema.

2 Gerncia do Processador
Em um sistema multiprogramado diversos programas so mantidos na memria ao
mesmo tempo. Vamos supor que o sistema operacional inicia a execuo do programa 1.
Aps algum tempo, da ordem de milisegundos, o programa 1 faz uma chamada de sistema.
Ele solicita algum tipo de operao de entrada ou sada. Por exemplo, uma leitura do disco.
Sem multiprogramao, o processador ficaria parado durante a realizao do acesso. Em um
sistema multiprogramado, enquanto o perifrico executa o comando enviado, o sistema
operacional inicia a execuo de outro programa. Por exemplo, o programa 2. Dessa forma,
processador e perifrico trabalham ao mesmo tempo. Enquanto o processador executa o
programa 2, o perifrico realiza a operao solicitada pelo programa 1.
Em geral conveniente diferenciar um programa de sua execuo. Para tanto usado
o conceito de processo. No existe uma definio objetiva, aceita por todos, para a idia de
processo. Na maioria das vezes, um processo definido como "um programa em execuo".
O conceito de processo essencial no estudo de sistemas operacionais. Um programa uma
seqncia de instrues. algo passivo e no altera o seu prprio estado. O processo um
elemento ativo, que altera o seu estado, medida que executa um programa. o processo
que faz chamadas de sistema, ao executar um programa.
possvel que vrios processos executem o mesmo programa ao mesmo tempo. Por
exemplo, diversos usurios podem estar utilizando simultaneamente o editor de texto
favorito da instalao. Existe um nico programa "editor de texto". Para cada usurio, existe
um processo executando o programa. Cada processo representa uma execuo independente

RITA Volume VIII Nmero 1 2001 3


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

do editor de textos. Todos os processos utilizam uma mesma cpia do cdigo do editor de
textos, porm cada processo trabalha sobre uma rea de variveis privativa.

2.1 Propriedades dos Processos


Processos so criados e destrudos. O momento e a forma pela qual eles so criados e
destrudos depende do sistema operacional em considerao. Alguns sistemas trabalham com
um nmero fixo de processos. A forma mais flexvel de operao permitir que processos
possam ser criados livremente, atravs de chamadas de sistema. Alm da chamada de sistema
"cria processo", sero necessrias chamadas para "autodestruio do processo" e tambm
para "eliminao de outro processo".
A maioria dos processos de um sistema executam programas dos usurios. Entretanto,
alguns podem realizar tarefas do sistema. So processos do sistema (daemons), no dos
usurios. Por exemplo, para evitar conflitos na utilizao da impressora, muitos sistemas
trabalham com uma tcnica chamada spooling. Para imprimir um arquivo, o processo de
usurio deve coloc-lo em um diretrio especial. Um processo do sistema copia os arquivos
desse diretrio para a impressora. Dessa forma, um processo de usurio nunca precisa
esperar a impressora ficar livre, uma vez que ele no envia os dados para a impressora, mas
sim para o disco. O processo que envia os dados para a impressora no est associado a
nenhum usurio. um processo do prprio sistema operacional.
Alguns sistemas suportam o conceito de grupo de processos. Por exemplo, todos os
processos associados a um mesmo terminal podem formar um grupo. Em muitos sistemas os
processos so criados por outros processos, atravs de uma chamada de sistema. Nesse caso,
possvel definir uma hierarquia de processos. O processo que faz a chamada de sistema
chamado de processo pai. O processo criado chamado de processo filho. Um mesmo
processo pai pode estar associado a vrios processos filhos. Os processos filhos podem criar
outros processos. Essa situao facilmente representada atravs de uma rvore.
A descrio do funcionamento da multiprogramao mostrou diversos momentos
pelos quais passa o processo. A partir dessa descrio, pode-se estabelecer os estados
possveis para um processo. Aps ser criado, o processo entra em um ciclo de processador.
Entretanto, o processador poder estar ocupado com outro processo, e ele dever esperar.
Diversos processos podem estar nesse mesmo estado. Em mquinas multiprocessadoras
existem diversos processadores. Nesse caso, diversos processos executam ao mesmo tempo.
Porm, essa no a situao mais comum. Vamos supor que existe um nico processador no
computador. Nesse caso, necessrio manter uma fila com os processos aptos a ganhar o
processador. Essa fila chamada "fila de aptos" (ready queue).
A Figura 1 mostra o diagrama de estados de um processo. No estado executando,
um processo pode fazer chamadas de sistema. At a chamada de sistema ser atendida, o
processo no pode continuar sua execuo. Ele fica bloqueado e s volta a disputar o
processador aps a concluso da chamada. Enquanto espera pelo trmino da chamada de
sistema, o processo est no estado bloqueado (blocked).

4 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

A mudana de estado de qualquer processo iniciada por um evento. Esse evento


aciona o sistema operacional, que ento altera o estado de um ou mais processos. A transio
do estado executando para bloqueado feita atravs de uma chamada de sistema. Uma
chamada de sistema necessariamente feita pelo processo no estado executando. Ele fica no
estado bloqueado at o atendimento. Com isso, o processador fica livre. O sistema
operacional ento seleciona um processo da fila de aptos para receber o processador. O
processo selecionado passa do estado de apto para o estado executando. O mdulo do
sistema operacional que faz essa seleo chamado escalonador (scheduler).
Outro tipo de evento corresponde s interrupes do hardware. Elas, em geral,
informam o trmino de uma operao de E/S. Isso significa que um processo bloqueado ser
liberado. O processo liberado passa do estado de bloqueado para o estado de apto. Ele volta a
disputar o processador com os demais da fila de aptos.
Alguns outros caminhos tambm so possveis no grafo de estados. A destruio do
processo pode ser em funo de uma chamada de sistema ou por solicitao do prprio
processo. Entretanto, alguns sistemas podem resolver abortar o processo, caso um erro crtico
tenha acontecido durante uma operao de E/S. Nesse caso, passa a existir um caminho do
estado bloqueado para a destruio. Algumas chamadas de sistema so muito rpidas. Por
exemplo, leitura da hora atual. No existe acesso a perifrico, mas apenas consulta s
variveis do prprio sistema operacional. Nesse caso, o processo no precisa voltar para a
fila de aptos. Ele simplesmente retorna para a execuo aps a concluso da chamada.
Muitos sistemas procuram evitar que um nico processo monopolize a ocupao do
processador. Se um processo est h muito tempo no processador, ele volta para o fim da fila
de aptos. Um novo processo da fila de aptos ganha o processador. Esse mecanismo cria um
caminho entre o estado executando e o estado apto.
C ria o

L im ite d e T e m p o

S e le o
A p to E x e c u ta n d o D e s t r u i o

C h a m a d a S is t e m a
R e t o r n o I m e d ia t o
Interrupo
de Hardware
B lo q u e a d o
E rro C rtic o

Figura 1. Diagrama de estados de um processo


O sistema operacional responsvel por implementar uma proteo apropriada para o
sistema. Para isso necessrio o auxlio da arquitetura do processador (hardware). A forma
usual definir dois modos de operao ou nveis de proteo para o processador. Pode-se
cham-los de modo usurio e modo supervisor. Quando o processador est em modo
supervisor, no existem restries, e qualquer instruo pode ser executada. Em modo

RITA Volume VIII Nmero 1 2001 5


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

usurio, algumas instrues no podem ser executadas. Essas instrues so chamadas de


instrues privilegiadas. Se um processo de usurio tentar executar uma instruo
privilegiada em modo usurio, o hardware automaticamente gera uma interrupo e aciona o
sistema operacional, o qual poder abortar o processo de usurio. As interrupes, alm de
acionarem o sistema operacional, tambm chaveiam automaticamente o processador para
modo supervisor. Nesse mecanismo, o sistema operacional executa com o processador em
modo supervisor. Os processos de usurio executam em modo usurio. Quando ligado o
processador, ele inicia em modo supervisor. Sempre antes de entregar o processador para um
processo de usurio, o sistema operacional comuta o processador para modo usurio.

2.2 Bloco Descritor de Processo


Existem vrias informaes que o sistema operacional deve manter a respeito dos
processos. No "programa" sistema operacional, um processo representado por um registro.
Esse registro chamado de bloco descritor de processo ou simplesmente descritor de
processo (DP). No DP, fica tudo que o sistema operacional precisa saber sobre o processo.
Um processo quase sempre faz parte de alguma fila e os prprios descritores de processo so
utilizados como elementos dessas filas, implementadas como listas encadeadas. Abaixo est
uma lista de campos normalmente encontrados no DP:
- Prioridade do processo no sistema, usada para definir a ordem na qual os processos
recebem o processador;
- Localizao e tamanho da memria principal ocupada pelo processo;
- Identificao dos arquivos abertos no momento;
- Informaes para contabilidade, como tempo de processador gasto, espao de
memria ocupado, etc;
- Estado do processo: apto, executando, bloqueado;
- Contexto de execuo quando o processo perde o processador, ou seja, contedo dos
registradores do processador quando o processo suspenso temporariamente;
- Apontadores para encadeamento dos blocos descritores de processo.
Para criar um processo, um descritor retirado da lista de descritores livres. O
prximo passo completar os campos do descritor alocado com valores apropriados. Por
exemplo, o programa a ser executado pelo processo deve ser localizado no disco, e uma rea
de memria grande o suficiente para ele deve ser alocada. O programa pode ento ser
carregado do disco para a memria principal. Essas tarefas exigem a participao dos
mdulos de gerncia de memria e sistema de arquivos. Para a gerncia do processador,
simplesmente fornecida a informao "endereo e tamanho" da rea de memria alocada
para o processo. Essa informao copiada para o descritor do processo. Quando todos os
campos estiverem preenchidos, o descritor do processo inserido na "lista de espera pelo
processador". A partir desse momento, o processo passa a disputar tempo de processador,

6 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

junto com os demais. Em outras palavras, o processo foi criado. A base da multiprogramao
o compartilhamento do processador entre os processos. Em um sistema multiprogramado,
necessrio interromper processos para continu-los mais tarde. Essa tarefa chamada de
chaveamento de processo, ou chaveamento de contexto de execuo. O local usado para
salvar o contexto de execuo de um processo o seu prprio bloco descritor.
Um processo uma abstrao que rene uma srie de atributos como espao de
endereamento, descritores de arquivos abertos, permisses de acesso, quotas, etc. Um
processo possui ainda reas de cdigo, dados e pilha de execuo. Tambm associado ao
processo um fluxo de execuo. Por sua vez, uma thread nada mais que um fluxo de
execuo. Na maior parte das vezes, cada processo formado por um conjunto de recursos
mais uma nica thread.
A idia de multithreading associar vrios fluxos de execuo (vrias threads) a um
nico processo. Em determinadas aplicaes, conveniente disparar vrias threads dentro do
mesmo processo (programao concorrente). importante notar que as threads existem no
interior de um processo, compartilhando entre elas os recursos do processo, como o espao
de endereamento (cdigo e dados). Devido a essa caracterstica, a gerncia de threads
(criao, destruio, troca de contexto) "mais leve" quando comparada com processos.
Threads so muitas vezes chamadas de processos leves.

2.3 Algoritmos de Escalonamento


No escalonamento do processador decidido qual processo ser executado a seguir.
Na escolha de um algoritmo de escalonamento, utiliza-se como critrio bsico o objetivo de
aumentar a produtividade do sistema e, ao mesmo tempo, diminuir o tempo de resposta
percebido pelos usurios. Esses dois objetivos podem tornar-se conflitantes em determinadas
situaes. Varincia elevada significa que a maioria dos processos recebe um servio (tempo
de processador) satisfatrio, enquanto alguns so bastante prejudicados. Provavelmente, ser
melhor sacrificar o tempo mdio de resposta para homogeneizar a qualidade do servio que
os processos recebem.
Quando os processos de um sistema possuem diferentes prioridades, essa prioridade
pode ser utilizada para decidir qual processo executado a seguir. Considere o cenrio no
qual nmeros menores indicam processos mais importantes. Um processo com prioridade 5
(vamos cham-lo P5) est executando. Nesse momento, termina o acesso a disco de um
processo com prioridade 2 (P2), e ele est pronto para iniciar um ciclo de processador. Nessa
situao, o sistema pode comportar-se de duas formas distintas. O processo que chega na fila
do processador respeita o ciclo de processador em andamento, ou seja, o P2 ser inserido
normalmente na fila. O processo em execuo somente libera o processador no final do ciclo
de processador. Temos nesse caso a "prioridade no-preemptiva". O processo P2, por ser
mais importante que o processo em execuo, recebe o processador imediatamente. O
processo P5 inserido na fila conforme a sua prioridade. Essa soluo conhecida como
"prioridade preemptiva".

RITA Volume VIII Nmero 1 2001 7


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

No mtodo fatia de tempo, tambm conhecido como round-robin, cada processo


recebe uma fatia de tempo do processador (quantum). Se o processo realizar uma chamada
de sistema e ficar bloqueado antes do trmino da sua fatia, simplesmente o prximo processo
da fila recebe uma fatia integral e inicia sua execuo. Se terminar a fatia de tempo do
processo em execuo, ele perde o processador e volta para o fim da fila. Nesse algoritmo
no possvel postergao indefinida (ficar esperando para sempre), pois processos sempre
entram no fim da fila. Um problema definir o tamanho da fatia de tempo. preciso levar
em conta que o chaveamento entre processos no instantneo. Se a fatia de tempo for muito
pequena, esse custo cresce em termos relativos. Por outro lado, uma fatia de tempo muito
grande destri a aparncia de paralelismo na execuo dos processos.
Em um mesmo sistema, normalmente convivem diversos tipos de processos. Por
exemplo, em um Centro de Processamento de Dados, os processos da produo (folha de
pagamentos, etc) podem ser disparados em background (execuo sem interao com o
usurio), enquanto os processos do desenvolvimento interagem com os programadores
(execuo em foreground). possvel construir um sistema no qual existem mltiplas filas,
uma fila de processador para cada tipo de processo. Com mltiplas filas, o tipo do processo
define a fila na qual ele inserido, e o processo sempre volta para a mesma fila. Quando o
processo pode mudar de fila durante a sua execuo, temos mltiplas filas com
realimentao.

3 Gerncia da Memria
Na multiprogramao, diversos processos so executados simultaneamente, atravs da
diviso do tempo do processador. Para que o chaveamento entre eles seja rpido, esses
processos devem estar na memria, prontos para executar. funo da gerncia de memria
do sistema operacional prover os mecanismos necessrios para que os diversos processos
compartilhem a memria de forma segura e eficiente. A tcnica particular que determinado
sistema operacional emprega depende, entre outras coisas, de o que a arquitetura do
computador em questo suporta. Em [2], [3], [4] e [5], podem ser encontradas as descries
de algumas solues empregadas em sistemas operacionais especficos. Uma excelente
descrio de arquiteturas contemporneas pode ser encontrada em [6] e [7].
A memria lgica de um processo aquela que o processo enxerga, ou seja, aquela
que o processo capaz de acessar. Os endereos manipulados pelo processo so endereos
lgicos. Em outras palavras, as instrues de mquina de um processo especificam endereos
lgicos. Por exemplo, um processo executando um programa escrito na linguagem C
manipula variveis tipo pointer. Essas variveis contm endereos lgicos. Em geral, cada
processo possui a sua memria lgica, que independente da memria lgica dos outros
processos. A memria fsica aquela implementada pelos circuitos integrados de memria,
pela eletrnica do computador. O endereo fsico aquele que vai para a memria fsica, ou
seja, usado para enderear os circuitos integrados de memria.

8 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

O espao de endereamento lgico de um processo formado por todos os


endereos lgicos que esse processo pode gerar. Existe um espao de endereamento lgico
por processo. J o espao de endereamento fsico formado por todos os endereos
aceitos pelos circuitos integrados de memria. A unidade de gerncia de memria
(Memory Management Unit, MMU) o componente do hardware responsvel por prover os
mecanismos que sero usados pelo sistema operacional para gerenciar a memria. Entre
outras coisas, a MMU que vai mapear os endereos lgicos gerados pelos processos nos
correspondentes endereos fsicos que sero enviados para a memria.
Quando um programa carregado em uma rea de memria maior que o necessrio,
isso resulta em um desperdcio de memria que chamado de fragmentao interna, isto ,
memria perdida dentro da rea alocada para um processo. Outra possibilidade termos duas
parties livres, digamos, de 25 e 100 Kbytes. Nesse momento criado um processo para
executar um programa de 110 Kbytes. Observe que a memria total livre no momento de
125 Kbytes, mas ela no contgua. Se o programa no pode ser executado devido forma
como a memria gerenciada, o problema chamado de fragmentao externa, isto ,
memria perdida fora da rea ocupada por um processo.

3.1 Paginao
O desperdcio de memria em funo da fragmentao externa um grande problema.
A origem da fragmentao externa est no fato de cada programa necessitar ocupar uma
nica rea contgua de memria. Se essa necessidade for eliminada, ou seja, se cada
programa puder ser espalhado por reas no contguas de memria, a fragmentao externa
eliminada. Esse efeito obtido com a paginao.
A Figura 2 ilustra o funcionamento da tcnica de paginao. O exemplo da figura
utiliza um tamanho de memria exageradamente pequeno para tornar a figura mais clara e
menor. O espao de endereamento lgico de um processo dividido em pginas lgicas de
tamanho fixo. No exemplo, todos os nmeros mostrados so valores binrios. A memria
lgica composta por 12 bytes. Ela foi dividida em 3 pginas lgicas de 4 bytes cada uma. O
endereo lgico tambm dividido em duas partes: um nmero de pgina lgica e um
deslocamento dentro dessa pgina. No exemplo, endereos lgicos possuem 5 bits.
A memria fsica tambm dividida em pginas fsicas com tamanho fixo, idntico
ao tamanho da pgina lgica. No exemplo, a memria fsica composta por 24 bytes. A
pgina fsica tem o mesmo tamanho que a pgina lgica, ou seja, 4 bytes. A memria fsica
foi dividida em 6 pginas fsicas de 4 bytes cada uma. Os endereos de memria fsica
tambm podem ser vistos como compostos por duas partes. Os 3 primeiros bits indicam um
nmero de pgina fsica. Os 2 ltimos bits indicam o deslocamento dentro da pgina fsica.
Um programa carregado para a memria pgina a pgina. Cada pgina lgica do
processo ocupa exatamente uma pgina fsica da memria fsica. Entretanto, a rea ocupada
pelo processo na memria fsica no precisa ser contgua. Durante a carga montada uma
tabela de pginas para o processo. Essa tabela informa, para cada pgina lgica, qual a

RITA Volume VIII Nmero 1 2001 9


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

pgina fsica correspondente. Para que o programa execute corretamente, necessrio


transformar o endereo lgico especificado em cada instruo no endereo fsico
correspondente. Isso feito com o auxlio da tabela de pginas.
O endereo lgico gerado inicialmente dividido em duas partes: um nmero de
pgina lgica e um deslocamento dentro da pgina. O nmero da pgina lgica usado como
ndice no acesso tabela de pginas. Cada entrada da tabela de pginas possui o mapeamento
de pgina lgica para pgina fsica. J o deslocamento do byte dentro da pgina fsica ser o
mesmo deslocamento desse byte dentro da pgina lgica, pois cada pgina lgica carregada
exatamente em uma pgina fsica. Basta juntar o nmero de pgina fsica obtido na tabela de
pginas com o deslocamento j presente no endereo lgico para obter-se o endereo fsico
do byte em questo. A Figura 2 mostra como o endereo lgico do byte Y2 transformado
no endereo fsico correspondente.
Memria Lgica Memria Fsica
000 00 X1 Z1 000 00
000 01 X2 Z2 000 01
000 10 X3 Z3 000 10
000 11 X4 Z4 000 11
001 00 Y1 001 00
001 01 Y2 001 01
001 10 Y3 001 10
001 11 Y4 001 11
010 00 Z1 X1 010 00
010 01 Z2 X2 010 01
010 10 Z3 X3 010 10
010 11 Z4 X4 010 11
011 00
011 01
End.Lgico de Y2 End.Fsico de Y2
011 10
011 11
001 01 101 01 100 00
100 01
100 10
Tabela de Pginas 100 11
Y1 101 00
Pg.Lgica Pg.Fsica
Y2 101 01
000 010 Y3 101 10
Y4 101 11
001 101
010 000

Figura 2. Mecanismo bsico de paginao


Como a unidade de alocao a pgina, um processo sempre ocupa um nmero
inteiro de pginas fsicas, introduzindo assim uma fragmentao interna. A gerncia de
memria deve manter controle das reas ainda livres na memria. Um aspecto importante da
paginao a forma como a tabela de pginas implementada. Observe que ela deve ser

10 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

consultada a cada acesso memria. Uma soluo manter a tabela de pginas na prpria
memria. O problema desse mecanismo que agora cada acesso que um processo faz
memria lgica transforma-se em dois acessos memria fsica. Uma forma de reduzir o
tempo de acesso memria no esquema anterior adicionar uma memria cache especial
que vai manter as entradas da tabela de pginas mais recentemente utilizadas. Essa memria
cache interna MMU chamada normalmente de Translation Lookaside Buffer (TLB).
Na prtica, as tabelas de pginas possuem um tamanho varivel, ajustado
necessidade de cada processo. Ocorre que, se as tabelas puderem ter qualquer tamanho, ento
teremos fragmentao externa novamente (a maior razo para usar paginao foi a
eliminao da fragmentao externa). Para evitar isso, so usadas tabelas de pginas com
dois nveis. As tabelas de pginas crescem de pedao em pedao, e uma tabela auxiliar
chamada diretrio mantm o endereo de cada pedao. Para evitar a fragmentao externa,
cada pedao da tabela de pginas deve ter um nmero inteiro de pginas fsicas, mantendo
assim toda a alocao de memria fsica em termos de pginas, no importando a sua
finalidade. Entradas desnecessrias em cada pedao so marcadas como invlidas.
importante destacar que a implementao de paginao descrita aqui no a nica possvel.
Por exemplo, um esquema chamado Tabela de Pginas Invertida (Inverted Page Table)
usado em alguns processadores, como o PowerPC [6].

3.2 Segmentao
O conceito de pgina, fundamental para a paginao, uma criao do sistema
operacional para facilitar a gerncia da memria. Programadores e compiladores no
enxergam a memria lgica dividida em pginas, mas sim em segmentos. Uma diviso tpica
descreve um programa em termos de quatro segmentos: cdigo, dados alocados
estaticamente, dados alocados dinamicamente e pilha de execuo. possvel orientar a
gerncia de memria para suportar diretamente o conceito de segmento. Uma posio da
memria lgica passa a ser endereada por um nmero de segmento e um deslocamento em
relao ao incio do seu segmento. Em tempo de carga, cada segmento copiado para a
memria fsica, e uma tabela de segmentos construda. Essa tabela informa, para cada
segmento, qual o endereo da memria fsica onde ele foi colocado e qual o seu tamanho.
Uma diferena importante que a segmentao no apresenta fragmentao interna,
visto que a quantidade exata de memria necessria alocada para cada segmento.
Entretanto, como reas contguas de diferentes tamanhos devem ser alocadas, temos a
ocorrncia de fragmentao externa. Uma soluo possvel paginar cada segmento. Na
segmentao paginada o espao lgico formado por segmentos, e cada segmento
dividido em pginas lgicas. O grande atrativo da segmentao est na facilidade para
compartilhar memria. Cada segmento representa uma parte especfica do programa,
podendo ou no ser compartilhado. Segmentos tendem a ser homogneos nesse sentido. Isto
, todo o segmento pode ser compartilhado, ou nenhuma parte do segmento pode ser
compartilhada.

RITA Volume VIII Nmero 1 2001 11


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

3.3 Paginao por Demanda


Um programa no precisa estar todo na memria para executar. Muitas partes de um
programa no so necessrias todo o tempo. Por exemplo, editores de texto oferecem aos
usurios funes que so raramente utilizadas. Se cada programa ocupar, a cada momento,
somente a memria fsica que realmente necessita, haver uma substancial economia de
espao na memria principal. A tcnica conhecida como memria virtual permite a
execuo de programas que no so completamente carregados para a memria fsica. Tanto
paginao como segmentao podem ser estendidas no sentido de prover memria virtual.
Neste texto, vamos considerar apenas memria virtual implementada atravs da paginao
por demanda, que o mtodo mais empregado na prtica.
A paginao por demanda est baseada no mecanismo de paginao simples. Cada
processo possui uma memria lgica, contgua. Essa memria lgica dividida em pginas
lgicas de mesmo tamanho. A memria fsica dividida em pginas fsicas, do mesmo
tamanho das pginas lgicas. Cada pgina lgica carregada em uma pgina fsica e uma
tabela de pginas construda.
Na paginao por demanda, apenas as pginas efetivamente acessadas pelo processo
sero carregadas para a memria fsica. Um bit vlido/invlido na tabela de pginas usado
para indicar quais pginas lgicas foram carregadas. Dessa forma, na paginao por
demanda, uma pgina marcada como invlida na tabela de pginas pode significar que ela
realmente est fora do espao lgico do processo ou pode significar apenas que essa pgina
ainda no foi carregada para a memria fsica. A situao exata pode ser determinada atravs
de uma consulta ao descritor do processo em questo.
Quando a pgina lgica acessada pelo processo est marcada como vlida na tabela de
pginas, o endereo lgico transformado em endereo fsico, e o acesso transcorre
normalmente. Quando a pgina lgica acessada pelo processo est marcada como invlida, a
unidade de gerncia de memria (MMU - Memory Management Unit) gera uma
interrupo de proteo e aciona o sistema operacional. Cabe ao sistema operacional
consultar o descritor do processo em questo. Caso a pgina acessada esteja fora do espao
de endereamento do processo, o processo abortado. Caso a pgina faa parte da memria
lgica, mas esteja marcada como invlida apenas porque ainda no foi carregada para a
memria, dito que ocorreu uma interrupo por falta de pgina (page fault).
Quando o sistema operacional acionado em funo de uma falta de pgina, as
seguintes aes devem ser realizadas:
- O processo que gerou a interrupo de falta de pgina suspenso, seu descritor de
processo removido da fila do processador e inserido em uma fila especial, a "fila dos
processos esperando pgina lgica";
- Uma pgina fsica livre deve ser alocada;
- A pgina lgica acessada deve ser localizada no disco;

12 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

- Uma operao de leitura do disco deve ser solicitada, indicando o endereo da


pgina lgica no disco e o endereo da pgina fsica alocada.
A gerncia do processador pode ento selecionar outro processo para executar.
Quando a operao de leitura do disco for concluda, a gerncia de memria deve concluir o
atendimento falta de pgina realizando as seguintes aes:
- A tabela de pginas do processo corrigida para indicar que a pgina lgica
causadora da interrupo agora vlida e est na pgina fsica que fora alocada antes;
- O descritor do processo retirado da "fila dos processos esperando pgina lgica" e
colocado na fila do processador.
Observe que o processo dever repetir a instruo que causou a falta de pgina (esta
instruo no foi executada devido a falta de pgina). Repetir uma instruo aps a carga da
pgina faltante requer uma arquitetura de computador adequada, especialmente projetada
para suportar memria virtual. Nem todos os processadores suportam esse mecanismo.
A parte do sistema operacional responsvel por carregar pginas do disco para a
memria principal muitas vezes chamada de Pager. importante fazer distino entre o
Pager e o Swapper. O Pager carrega uma pgina especfica de um processo e est associado
com o mecanismo de memria virtual. O Swapper carrega sempre um programa inteiro do
disco para a memria e vice-versa, estando associado com o mecanismo chamado swapping.
medida que processos vo sendo carregados para a memria, possvel que todas
as pginas fsicas acabem ocupadas. Nesse caso, para atender falta de pgina, ser
necessrio antes liberar uma pgina fsica ocupada. Isso significa escolher uma pgina lgica
que est na memria, copiar seu contedo de volta para o disco e marcar a respectiva pgina
como invlida na tabela de pginas do seu processo. A pgina escolhida para ser copiada de
volta ao disco chamada de pgina vtima.
Vrios bits auxiliares so adicionados tabela de pginas, com o objetivo de facilitar
a implementao do mecanismo de substituio de pginas. Embora a existncia de tais bits
no seja absolutamente necessria, eles tornam o mecanismo mais simples e eficiente. O bit
de sujeira (dirty bit) indica se uma pgina foi alterada durante a execuo do processo. O bit
de referncia (reference bit) indica se uma pgina foi acessada pelo processo. O bit tranca
(lock bit) serve para o sistema operacional "trancar" uma pgina lgica na memria fsica.
Um algoritmo baseado em bit de referncia a segunda chance. Nesse caso, a
gerncia de memria considera que todas as pginas lgicas presentes na memria formam
uma lista circular. Um apontador percorre a lista circular formada por todas as pginas e
indica qual a prxima pgina a ser usada como vtima. O algoritmo verifica o bit de
referncia da pgina indicada pelo apontador. Caso esse bit esteja desligado, essa pgina
efetivamente escolhida como vtima, e o apontador avana uma posio na lista circular.
Caso o bit de referncia da pgina apontada esteja ligado, o bit de referncia desligado, e
ela recebe uma segunda chance. O apontador avana uma posio na lista circular, e o
procedimento repetido para a prxima pgina.

RITA Volume VIII Nmero 1 2001 13


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

O tratamento de uma falta de pgina vrias ordens de grandeza mais lento que um
acesso normal memria. Quando um processo possui um nmero muito pequeno de
pginas fsicas para executar, a sua taxa de falta de pginas aumenta. medida que o
nmero de pginas fsicas diminui, a taxa de falta de pginas aumenta de tal forma que o
processo pra de realizar qualquer trabalho til. Nesse momento est ocorrendo thrashing.

4 Sistema de Arquivos
O sistema de arquivos a parte do sistema operacional mais visvel para os usurios.
Durante o tempo todo, usurios manipulam arquivos contendo textos, planilhas, desenhos,
figuras, jogos, etc. Esse fato exige que o sistema de arquivos apresente uma interface
coerente e simples, fcil de usar. Ao mesmo tempo, arquivos so normalmente
implementados a partir de discos magnticos. Como um acesso a disco demora cerca de
100000 vezes mais tempo do que um acesso memria principal, so necessrias estruturas
de dados e algoritmos que otimizem os acessos a disco gerados pela manipulao de
arquivos. importante observar que sistemas de arquivos implementam um recurso em
software que no existe no hardware. O hardware oferece simplesmente espao em disco, na
forma de setores que podem ser acessados individualmente, em uma ordem aleatria. O
conceito de arquivo, muito mais til que o simples espao em disco, uma abstrao criada
pelo sistema operacional. Nesse caso, temos o sistema operacional criando um recurso lgico
a partir dos recursos fsicos existentes no sistema computacional.
Existe ampla literatura que descreve os sistemas de arquivos dos sistemas
operacionais mais populares. O sistema de arquivos do UNIX System V release 2 descrito
em [2]. Em [3] tambm descrita uma soluo especfica, utilizada no sistema operacional
Xinu. A implementao utilizada no Minix descrita em [4], inclusive com o cdigo fonte.
Em [5] feita uma excelente descrio de diversos sistemas de arquivos utilizados no mundo
UNIX. Entre eles, System V release 4, Fast File System de Berkeley, Network File System
da Sun, Remote File Sharing da AT&T, Andrew File System da Carnegie-Mellon University
e muitos outros.
Arquivos so recipientes que contm dados. Cada arquivo contm dados que um
usurio, por alguma razo, resolveu colocar juntos no mesmo arquivo. Diretrios so
conjuntos de referncias a arquivos. Os diretrios permitem-nos separar os arquivos em
grupos, facilitando sua localizao e manuseio. Existem situaes nas quais importante
visualizar um nico disco fsico como se fossem vrios. Por exemplo, o mesmo disco fsico
pode ser particionado em dois discos lgicos ou parties. possvel, por exemplo, manter
todos os arquivos do sistema operacional (interpretador de comandos, compiladores, etc.) em
uma partio e todos os arquivos de usurios na outra partio. No momento de fazer uma
cpia de segurana (back-up) em fita ou CD, o particionamento do disco facilita a cpia dos
arquivos do sistema e dos usurios para fitas diferentes.
Cada arquivo identificado por um nome, o qual permite que o usurio faa
referncias a ele. Alm do nome, cada arquivo possui uma srie de outros atributos que so

14 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

mantidos pelo sistema operacional. Entre os mais usuais, esto: tipo do contedo, tamanho,
data e hora do ltimo acesso, data e hora da ltima alterao, identificao do usurio que
criou o arquivo, lista de usurios que podem acessar o arquivo.
Diversas operaes sobre arquivos so suportadas. As operaes bsicas so: criao
do arquivo, destruio do arquivo, leitura do contedo, alterao do contedo, escrita de
novos dados no final do arquivo, execuo do programa contido no arquivo, troca do nome
do arquivo, alterao na lista de usurios que podem acessar o arquivo. Em geral, essas
operaes bsicas correspondem a chamadas de sistema que os programas de usurio podem
usar para manipular arquivos. A partir das operaes bsicas, muitas outras podem ser
implementadas. Por exemplo, as operaes de impresso do contedo do arquivo ou a cpia
de seu contedo para outro arquivo podem ser implementadas a partir das operaes bsicas
de leitura e escrita.
A forma como os dados so dispostos dentro de um arquivo determina sua estrutura
interna. Existe, na prtica, uma enorme quantidade de diferentes tipos de arquivos, cada
tipo com sua estrutura interna particular. Alm disso, a cada dia, novas aplicaes so criadas
e, em conseqncia, novos tipos de arquivos so criados. No vivel para o sistema
operacional conhecer todos os tipos de arquivos existentes. Para o sistema operacional, cada
arquivo corresponde a uma seqncia de bytes. A exceo so os arquivos contendo
programas executveis, cuja estrutura interna definida pelo sistema operacional.
Mtodo de acesso diz respeito forma como o contedo de um arquivo acessado. O
mtodo de acesso mais simples o seqencial. Nesse caso, o contedo do arquivo pode ser
lido seqencialmente, pedao a pedao. O acesso seqencial muito usado. Por exemplo,
compiladores fazem uma leitura seqencial dos programas fontes. Muitas aplicaes no
podem ser implementadas com o acesso seqencial e apresentar um desempenho aceitvel.
No mtodo de acesso relativo, o programa inclui na chamada de sistema qual a posio do
arquivo a ser lida. As posies do arquivo so numeradas a partir de 0 (ou a partir de 1 em
alguns sistemas), sendo que cada posio corresponde a um byte. Em muitos sistemas
operacionais, existe o conceito de posio corrente no arquivo. Nesse caso, a chamada de
sistema para leitura ou escrita no informa uma posio. Essa sempre acontece a partir da
posio corrente. A posio corrente ento avanada para imediatamente aps o ltimo
byte lido ou escrito.

4.1 Implementao de Arquivos


A forma bsica de implementar arquivos criar, para cada arquivo no sistema, um
descritor de arquivo. O descritor de arquivo um registro no qual so mantidas as
informaes a respeito do arquivo. Essas informaes incluem os seus atributos, alm de
outros dados que no so visveis aos usurios, mas que so necessrios para que o sistema
operacional implemente as operaes sobre arquivos. A forma usual manter o descritor de
um arquivo na mesma partio onde est o seu contedo.

RITA Volume VIII Nmero 1 2001 15


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

Enquanto um arquivo est sendo acessado, o seu descritor de arquivo


constantemente necessrio. Entre outras coisas, o descritor acessado a cada operao de
escrita ou leitura para determinar a localizao no disco dos dados a serem escritos ou lidos.
Para tornar mais rpido o acesso aos arquivos, o sistema de arquivos mantm na memria
uma tabela contendo todos os descritores dos arquivos em uso.
A maioria dos sistemas operacionais exige que os prprios programas informem
quando um arquivo entra em uso e quando ele no mais necessrio. Para tanto, existem as
chamadas de sistema open e close. Um programa deve abrir o arquivo antes de poder
acessar seu contedo. Isso feito passando o nome do arquivo como parmetro atravs da
chamada de sistema open. Tambm usual passar como parmetro o tipo de acesso que
ser feito, isto , apenas leitura ("READONLY" ou "RO") ou leitura e escrita
("READWRITE" ou "RW").
O sistema de arquivos utiliza uma Tabela dos Descritores de Arquivos Abertos
(TDAA) para manter em memria os descritores dos arquivos abertos. A TDAA mantm
informaes relativas aos arquivos abertos por todos os processos no sistema. Cada entrada
armazena uma cpia do descritor do arquivo mantido em disco, assim como algumas
informaes adicionais, necessrias apenas enquanto o arquivo est aberto. Por exemplo,
nmero de processos utilizando o arquivo no momento.
Quando o processo executando faz uma chamada de sistema open, o sistema de
arquivos realiza as seguintes tarefas:
- Localiza no disco o descritor do arquivo cujo nome foi fornecido. Isso feito atravs
de uma pesquisa nos diretrios da partio. Essa operao muitas vezes chamada de
lookup. No se trata de uma chamada de sistema, mas sim de uma operao interna do
sistema de arquivos.
- Verifica se o arquivo solicitado j se encontra aberto. Isso feito atravs de uma
pesquisa na TDAA. A maioria dos sistemas operacionais mantm uma estrutura tipo tabela
de disperso (hash table) para localizar a entrada na TDAA correspondente a um
determinado arquivo.
- Caso o arquivo ainda no esteja aberto, aloca uma entrada livre na tabela TDAA e
copia o descritor do arquivo que est no disco para a entrada alocada na TDAA.
- Uma vez que o descritor do arquivo foi copiado para a memria, verifica se o
processo em questo tem o direito de abrir o arquivo conforme solicitado. Isso feito atravs
de uma consulta aos direitos de acesso que esto armazenados no prprio descritor do
arquivo.
- A partir desse momento, o arquivo est aberto e pode ser acessado. Quando um
processo realiza a chamada de sistema close, o nmero de processos utilizando o arquivo
em questo decrementado na sua respectiva entrada da TDAA. Quando esse nmero chega
a zero, o descritor do arquivo atualizado em disco e a entrada da TDAA liberada.

16 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

Existem informaes diretamente associadas com o processo que acessa o arquivo e


no podem ser mantidas na TDAA pois, como vrios processos acessam o mesmo arquivo,
elas possuiro valores diferentes. A soluo tpica criar, para cada processo, uma Tabela
de Arquivos Abertos por Processo (TAAP). Cada processo possui a sua TAAP. Cada
entrada ocupada na TAAP corresponde a um arquivo aberto pelo processo correspondente.
No mnimo, a TAAP contm em cada entrada as seguintes informaes: posio corrente no
arquivo, tipo de acesso autorizado (apenas leitura ou leitura e escrita), apontador para a
entrada correspondente na TDAA.
As operaes de leitura e de escrita so realizadas atravs das chamadas de sistema
read e write. O processo especifica o handle do arquivo a ser acessado, o qual aponta o
respectivo descritor na memria. Existem duas funes importantes que o sistema de
arquivos deve realizar na implementao das chamadas read e write: a montagem e
desmontagem de blocos lgicos e a localizao dos blocos lgicos no disco.
A maneira como o mapeamento entre blocos lgicos e blocos fsicos realizada
depende de como mantida a informao "onde o arquivo est no disco". A alocao
indexada capaz de resolver o problema do crescimento dos arquivos ao mesmo tempo que
permite o acesso relativo. Na alocao indexada, cada arquivo possui uma tabela de ndices.
Cada entrada da tabela de ndices contm o endereo de um dos blocos fsicos que formam o
arquivo. Um acesso relativo pode ser facilmente realizado atravs de uma consulta tabela
de ndices. Para que esse acesso seja rpido, a tabela de ndices normalmente mantida na
memria principal enquanto o arquivo estiver aberto. Uma forma conveniente manter a
tabela de ndices dentro do prprio descritor do arquivo. Quando o arquivo aberto, seu
descritor de arquivo copiado para a memria principal. Nesse caso, a sua tabela de ndices
tambm estaria sendo copiada.
A soluo tpica para compatibilizar uma maioria de arquivos pequenos com um
tamanho mximo de arquivo satisfatrio empregar nveis de indireo na indexao. Por
exemplo, suponha que o descritor de arquivos contm uma tabela de ndices com 13
entradas. As primeiras 10 entradas (numeradas de 0 a 9) apontam para blocos de dados do
arquivo, permitindo o acesso aos primeiros 40 Kbytes de cada arquivo (supondo blocos de 4
Kbytes). Eles so chamados de apontadores diretos.
A entrada 10 da tabela no aponta para um bloco de dados do arquivo, mas sim para
um bloco que contm apontadores para blocos de dados. Supondo que os nmeros de blocos
fsicos ocupem 4 bytes, um bloco de 4 Kbytes capaz de armazenar 1024 apontadores.
Como cada apontador representa um bloco fsico, temos que um nico apontador indireto
na tabela de ndices permite o acesso a 4 Mbytes de dados do arquivo. A entrada 11 da tabela
contm um apontador duplamente indireto, o que permite o acesso a at 4 Gbytes de
dados. Para suportar arquivos realmente grandes, usada a entrada 12, a qual contm um
apontador triplamente indireto, o que permite indexar um total de 4 Tbytes (terabytes).

RITA Volume VIII Nmero 1 2001 17


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

4.2 Mecanismos Auxiliares na Implementao de Arquivos


At poucos anos atrs, os sistemas operacionais incluiam um nico sistema de
arquivos. A partir dos anos 80 surgiram solues que comportam a coexistncia simultnea
de vrios sistemas de arquivos no mesmo sistema operacional. As primeiras solues nesse
sentido foram para o sistema operacional UNIX, destacando-se o "File System Switch" da
AT&T, a arquitetura "gnode" da Digital Equipament Corporation e o "Virtual File System"
da Sun. Atualmente o VFS (virtual file system) a soluo mais empregada [5].
Em todas as solues, a idia bsica a mesma: fazer com que o sistema operacional
suporte diversos sistemas de arquivos diferentes simultaneamente. As diferenas entre os
sistemas de arquivos devem ser transparentes para os processos que acessam arquivos, a no
ser por alguma caracterstica especfica tpica do sistema de arquivos em questo (por
exemplo, arquivo em CD-ROM no pode ser alterado). A soluo empregada foi inspirada
na gerncia de perifricos, a qual suporta uma enorme diversidade de dispositivos, fornece
acesso transparente e permite a instalao dinmica de novos perifricos. Isso conseguido
separando-se a parte independente da parte dependente do sistema de arquivos em questo.
Uma importante estrutura de dados presente na implementao de um sistema de
arquivos a sua cache. A cache no oferece funcionalidade nova, mas representa um grande
aumento no desempenho de qualquer sistema de arquivos, pois o uso do disco tende a ser
intenso em sistemas operacionais de propsito geral. O objetivo da cache manter na
memria principal uma certa quantidade de blocos do disco. Dessa forma, se algum desses
blocos for requisitado, ele ser encontrado na memria principal, evitando o acesso ao disco.
Uma das tarefas do sistema de arquivos gerenciar o espao livre nos discos.
Primeiramente, muitos sistemas operacionais agrupam os setores em blocos fsicos. O disco
passa a ser visto como uma seqncia de blocos fsicos, e no de setores. Uma forma simples
de gerenciar o espao livre em disco atravs de um mapa de bits. Cada bit presente no
mapa representa um bloco fsico do disco. O espao livre em disco tambm pode ser
gerenciado atravs de uma lista contendo os nmeros de todos os blocos fsicos livres (Lista
de Blocos Livres).

4.3 Diretrios
Os diretrios so as estruturas do sistema de arquivos que contm a informao
"quais arquivos existem no disco". Um diretrio pode ser entendido como sendo um
conjunto de arquivos ou um conjunto de referncias a arquivos. Existem diversas formas
de estruturar os diretrios de um sistema. A mais simples ter um nico diretrio para o
disco inteiro. Essa soluo, conhecida como diretrio linear, aceitvel apenas para
sistemas de arquivos muito pequenos.
possvel ter no diretrio principal uma entrada para cada usurio do sistema. Essa
entrada no corresponde a um arquivo, mas sim a um subdiretrio que, por sua vez, contm
os arquivos do usurio correspondente. possvel estender o conceito de subdiretrios de tal

18 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

forma que os usurios tambm possam criar livremente os seus prprios subdiretrios. O
resultado um sistema de diretrios organizado na forma de rvore. Em um sistema de
diretrios organizado na forma de rvore, qualquer arquivo ou subdiretrio pode ser
identificado de forma no ambgua atravs do caminho (pathname) para atingi-lo a partir da
raiz da rvore. Utilizando a notao do sistema operacional UNIX, "/" representa a raiz da
rvore. A subrvore pertencente ao usurio Joo inicia no subdiretrio "/usr/joao". O usurio
Joo possui um total de trs arquivos: "/usr/joao/teste", "/usr/joao/so/trab1" e
"/usr/joao/so/trab2". Facilmente, a rvore de diretrios cresce at uma altura tal que passa a
ser desconfortvel fornecer sempre o caminho completo at cada arquivo ou diretrio. Ao
mesmo tempo, a cada momento, um usurio tipicamente manipula apenas arquivos de um
dado diretrio. O conceito de diretrio corrente facilita a identificao dos arquivos.
Uma questo importante como especificar, no nome do arquivo, qual a partio de
disco na qual ele se encontra. Uma possibilidade preceder o caminho absoluto com uma
identificao da partio em questo. Por exemplo, "C:\fontes\prog.c" indica, no MSDOS, o
programa cujo caminho absoluto "\fontes\prog.c" a partir da raiz da partio identificada
por "C:". Uma forma alternativa usada no UNIX. Uma partio escolhida como principal.
O diretrio raiz do sistema de diretrios corresponde ao diretrio raiz dessa partio
principal ou partio de root. Todas as demais parties so montadas em subdiretrios
dessa partio principal. Atravs de um comando especfico, o administrador do sistema faz
com que um dado subdiretrio permita o acesso ao diretrio raiz da rvore sendo montada.
A forma mais simples de implementar diretrios e subdiretrios consider-los como
arquivos especiais, cujo contedo manipulado pelo prprio sistema operacional. Dessa
forma, todo o mecanismo de alocao, liberao e localizao de blocos fsicos no disco,
disponvel para arquivos, tambm usado para os diretrios.
Quando diretrios so implementados como conjuntos de descritores de arquivos, o
contedo de um diretrio corresponde aos descritores dos arquivos. Nesse caso, o nome do
arquivo ou subdiretrio faz parte do seu descritor. Nesse esquema, aps a leitura do diretrio,
o sistema de arquivos j possui na memria todas as informaes necessrias para procurar
pelo nome do arquivo buscado e, caso encontre, acessar o seu contedo. Por outro lado, os
nomes esto fortemente vinculados aos descritores de arquivos. Isso impede, por exemplo,
que um mesmo arquivo possua mais de um nome. Alm disso, diretrios tendem a ser
maiores e esto mais sujeitos a inconsistncias, pois informaes importantes esto
espalhadas por todo o disco.
Outra possibilidade separar um conjunto de blocos da partio para armazenar
exclusivamente os descritores de arquivos e de subdiretrios. Esse conjunto de blocos forma
um vetor de descritores, no qual cada descritor pode ser perfeitamente identificado pelo
nmero da partio e pela posio nesse vetor. Essa estrutura de dados forma o que
normalmente conhecido como um flat file system (na terminologia do UNIX). A estrutura
em rvore criada a partir de alguns arquivos do sistema flat (que na verdade atuam como
subdiretrios), cada um organizado internamente como uma tabela contendo nomes e
respectivos endereos no vetor de descritores. Dessa forma, para percorrer um caminho na

RITA Volume VIII Nmero 1 2001 19


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

rvore dos diretrios, necessrio abrir o subdiretrio, procurar o nome desejado, pegar o
endereo flat associado e ler o respectivo descritor de arquivo do vetor de descritores. Esse
procedimento deve ser repetido para cada nome presente no caminho.
Cada partio autocontida no sentido de que todas as informaes necessrias para
o acesso aos seus arquivos esto contidas na prpria partio. As informaes incluem:
diretrios e subdiretrios contidos na partio; descritores dos arquivos na partio; blocos
de dados dos arquivos contidos na partio; lista ou mapa de blocos livres da partio.

5 Entrada e Sada
O objetivo primeiro de um computador solucionar problemas. Para tanto,
necessrio que algum tipo de mecanismo exista para que possamos informar esse problema
ao computador e recuperar sua soluo. Esse mecanismo constitui o que denominamos
genericamente de dispositivos de entrada e sada. Atualmente, possvel encontrar uma
grande variedade de dispositivos, desde dispositivos desenvolvidos para permitir a
comunicao do homem com o computador (teclado, mouse, monitor de vdeo, etc) at
dispositivos que possibilitam a comunicao entre computadores (modems, placas de redes,
etc), ou ainda aqueles destinados conexo de outros equipamentos ao computador
(unidades de fita, disquetes, disco rgido, CD-ROM, etc). Apesar dessa diversidade, esses
dispositivos de entrada e sada possuem alguns aspectos de hardware em comun. De acordo
com o sentido do fluxo de dados entre o computador e o dispositivo, esses podem ser
divididos em perifricos de entrada, perifricos de sada, ou ainda perifricos de entrada e
sada. Um perifrico pode ser visto como qualquer dispositivo conectado a um computador
de forma a possibilitar sua interao com o mundo externo. Os perifricos so conectados ao
computador atravs de um componente de hardware denominado interface. Considerando-se
a diversidade, a complexidade, e as diferentes formas de operaes em funo do tipo de
perifrico, as interfaces empregam no seu projeto um outro componente de hardware: o
controlador. A funo bsica de um controlador traduzir operaes genricas do tipo ler
dados, escrever dados, reinicializar, ler status ou escrever comando para uma
seqncia de acionamentos eletrnicos, eltricos e mecnicos capazes de realizar a operao
solicitada. Para isso, o controlador deve saber como o perifrico funciona, resultando que
cada tipo de perifrico necessita de um controlador diferente. A gerncia de E/S est
intimamente relacionada com aspectos de hardware de um computador.
O mecanismo de interrupes permite que um controlador de perifrico chame a
ateno do processador. Fisicamente, o barramento de controle usado pelos controladores
de perifricos para o envio de sinais eltricos associados com a gerao de uma interrupo.
Uma interrupo sempre sinaliza a ocorrncia de algum evento. Quando ela acontece, desvia
a execuo da posio atual de programa para uma rotina especfica. Essa rotina, responsvel
por atender a interrupo, chamada de tratador de interrupo. O tratador realiza as
aes necessrias em funo da ocorrncia da interrupo. Ele , simplesmente, uma rotina
que somente executada quando ocorre uma interrupo.

20 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

Interrupes de software (tambm chamadas de traps) so causadas pela execuo


de uma instruo especfica para isso. Ela tem como parmetro o nmero da interrupo que
deve ser ativada. O efeito semelhante a uma chamada de sub-rotina, pois o prprio
programa interrompido gera a interrupo, levando execuo do tratador correspondente. A
vantagem sobre sub-rotinas que o endereo do tratador no precisa ser conhecido pelo
programa que causa a interrupo, basta usar o tipo de interrupo apropriado. Existe uma
terceira classe de interrupes geradas pelo prprio processador. So as interrupes por
erro, muitas vezes chamadas de interrupes de exceo. Elas acontecem quando o
processador detecta algum tipo de erro na execuo do programa. Por exemplo, uma diviso
por zero ou o acesso a uma posio de memria que no existe.

5.1 Princpios Bsicos de Software de Entrada e Sada


O objetivo primeiro do subsistema de entrada e sada tentar padronizar ao mximo
as rotinas de acesso aos perifricos de forma a reduzir o nmero de primitivas de entrada e
sada. Tal caracterstica tambm facilita a incluso de novos dispositivos, minimizando a
necessidade de alterar a interface de programao do usurio. Para atingir esse objetivo, o
subsistema de entrada e sada normalmente organizado em uma estrutura de quatro
camadas, onde a camada i fornece abstraes de mais alto nvel para a camada i+1 do
subsistema. Essa abstrao obtida atravs de uma interface de programao padro,
englobando uma srie de operaes comuns e necessrias a todos os dispositivos (figura 3).

E/S nvel de usurio


Software

E/S independente do dispositivo

Drivers de dispositivos
driver driver driver driver driver
SCSI EIDE floppy rede teclado

Hardware

Figura 3. Estrutura em camadas do subsistema de entrada e sada

RITA Volume VIII Nmero 1 2001 21


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

5.2 Drivers de Dispositivo


A camada inferior de software - drivers de dispositivos (device drivers) - composta
por um conjunto de mdulos de software implementados para fornecer os mecanismos
necessrios ao acesso de um dispositivo de entrada e sada especfico. O principal objetivo
dos drivers de dispositivos esconder as diferenas entre os vrios dispositivos de entrada
e sada fornecendo camada superior uma viso uniforme desses dispositivos atravs de
uma interface de programao nica.
A camada de drivers de dispositivo representa uma parte significativa do sistema de
entrada e sada em relao s funcionalidades. No seu nvel mais baixo, ela responsvel por
implementar as rotinas necessrias ao acesso e gerncia de um dispositivo especfico.
nesse nvel que o software de E/S realiza a programao de registradores internos de
controladores que compem a interface fsica dos dispositivos e implementa os respectivos
tratadores de interrupo. Assim, cada tipo de dispositivo requer um driver apropriado.
Para atender o requisito de fornecer uma viso uniforme, os dispositivos de entrada
e sada, independente de como so interconectados s interfaces fsicas (serial ou paralelo),
so classificados segundo a unidade de transferncia de dados em orientados a bloco e
orientados a caractere. Em um dispositivo orientado a bloco (block devices), o
armazenamento de informaes e sua transferncia entre o perifrico e o sistema so
realizados atravs de blocos de dados de tamanho fixo. Tipicamente, o tamanho de um bloco
varia entre 512 bytes e 32 kbytes. Essa caracterstica implica que o perifrico de E/S e o
driver de dispositivo estejam de acordo sobre a estrutura e o tamanho do bloco. As unidades
de disco so o exemplo mais comum de dispositivos orientados a bloco. Os dispositivos
orientados a caractere (character devices), por sua vez, realizam as transferncias byte a
byte, a partir de um fluxo de caracteres sem necessidade de considerar uma estrutura
qualquer. As portas seriais so exemplos de dispositivos de E/S orientados a caractere. Essa
classificao, entretanto, no adequada, pois nem todos os dispositivos de E/S podem ser
enquadrados em um desses dois grupos. Os temporizadores (relgios) e monitores de vdeo
de memria mapeada so exemplos bastante comuns de dispositivos de E/S que no se
enquadram em nenhuma dessas categorias.
Existe ainda um outro tipo de dispositivo denominado de pseudo-dispositivo
(pseudo-devices) que na realidade no corresponde a nenhum perifrico fsico. Ele apenas
uma abstrao empregada para adicionar funcionalidades ao sistema operacional, explorando
a interface padronizada j existente para o tratamento de dispositivos. dessa forma que o
sistema operacional UNIX oferece o dispositivo nulo (/dev/null) para descartar dados.

5.3 E/S Independente do Dispositivo


A camada de software de E/S independente do dispositivo implementa procedimentos
e funes gerais a todos os dispositivos de entrada e sada. Os principais servios sob
responsabilidade dessa camada so:

22 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

Escalonamento de E/S: Esse servio responsvel por ordenar requisies de acesso


a dispositivos de entrada e sada de forma a melhorar o desempenho total do sistema.
Denominao: Cada perifrico deve possuir um nome lgico a partir do qual ele
identificado. Essa associao perifrico-nome deve ter uma atribuio uniforme,
independente do dispositivo, de forma a generalizar as rotinas de acesso. Um exemplo o
sistema operacional UNIX, no qual o nome de um dispositivo um string e faz parte do
sistema de arquivos.
Buferizao: Um buffer uma zona de memria onde dados so temporariamente
armazenados enquanto eles esto sendo transferidos entre as diferentes camadas do software
de E/S. Muitas vezes, a quantidade de dados que o usurio deseja ler, ou escrever, no
natural para o dispositivo em questo. O principal objetivo da buferizao ento ajustar a
velocidade e a quantidade de dados transferidos entre camadas.
Cache de dados: Consiste em armazenar na memria um conjunto de dados que esto
sendo freqentemente acessados para realizar uma determinada operao, ou ainda, para
serem transferidos de uma s vez a um dispositivo. O acesso a dados em memria RAM
mais rpido que em disco; por isso, esse mecanismo torna-se interessante. Como exemplo,
ns podemos citar as caches de disco.
Alocao e liberao: Muitos dispositivos admitem, no mximo, um usurio de cada
vez. O software de E/S deve ento gerenciar a alocao, a liberao e o uso destes
dispositivos de forma a evitar que acessos concorrentes sejam realizados. A tcnica
conhecida como spooling normalmente empregada. Os pedidos so organizados em uma
fila especial (spool), a qual acessada por um processo especial do sistema operacional
(daemon). O daemon efetua ento a requisio de entrada e sada. A gerncia de impressora
um exemplo clssico do emprego de spool.
Direitos de acesso: Nem todos os usurios podem acessar os dispositivos da mesma
forma. Cabe ento ao sistema operacional garantir que cada dispositivo seja acessado
somente por usurios autorizados.
Tratamento de erros: O software de entrada e sada deve fornecer a capacidade de
manipular erros, informando camada superior o sucesso ou fracasso de uma operao. O
tratamento de erro em si depende de seu tipo.

5.4 Entrada e Sada a Nvel de Usurio


A viso que um usurio possui dos dispositivos de entrada e sada de um sistema
fornecida por uma interface de programao associada as bibliotecas de entrada e sada, ou
aos ambientes de desenvolvimento. O fabricante do compilador de uma linguagem de
programao responsvel ento por implementar e fornecer rotinas que realizam entrada e
sada para um determinado sistema. A interface de programao depende da linguagem em
si. Por exemplo, a funo printf() da linguagem C, que realiza sada formatada de dados.

RITA Volume VIII Nmero 1 2001 23


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

As bibliotecas de entrada e sada no fazem parte do sistema operacional, mas esto


associadas s linguagens de programao e/ou ambientes de desenvolvimento.

6 Segurana
Desde que diferentes usurios passaram a compartilhar o mesmo computador, a
segurana computacional tornou-se um problema relevante. Com a informatizao da
sociedade, o advento da Internet, o fcil acesso a computadores remotos e a disseminao
dos vrus de computador, segurana computacional tornou-se a preocupao nmero um de
muitas pessoas. Os principais objetivos do sistema operacional com respeito a segurana
garantir a confidencialidade (somente usurios autorizados podem ler determinada
informao), a integridade (informaes no so modificadas sem autorizao) e a
disponibilidade (recursos permanecem disponveis para usurios legtimos). Exemplos de
violaes destas propriedades so, respectivamente, ler arquivos de outros usurios sem
autorizao, vrus que instala-se em executveis, formatar o disco sem autorizao.
Segundo a taxonomia apresentada em [8], uma ameaa consiste de uma ao possvel
que, uma vez concretizada, produziria efeitos indesejveis sobre os dados ou recursos do
sistema. Uma vulnerabilidade uma falha ou caracterstica indevida que pode ser explorada
para concretizar uma ameaa. Um ataque uma ao que envolve a explorao de
determinadas vulnerabilidades de modo a concretizar uma ou mais ameaas.
A poltica de segurana de uma dada instalao corresponde ao conjunto de regras
que estabelecem os limites de operao dos usurios no sistema, isto , as autorizaes de
cada um. Os mecanismos de segurana do sistema operacional so responsveis pela
implantao de uma determinada poltica de segurana. Por exemplo, a poltica de segurana
tpica em um sistema operacional multiusurio exige que cada usurio seja identificado
univocamente pelo sistema. Para tanto, so empregados mecanismos de autenticao que
podem incluir senhas, cartes magnticos ou at mesmo dispositivos biomtricos.
Neste contexto, um sujeito uma entidade ativa que inicia requisies de servios e
recursos. Via de regra trata-se de um usurio ou de um processo executando em nome de um
usurio. Um objeto uma entidade passiva que armazena informaes e/ou admite um certo
conjunto de operaes. Mesmo que o sistema operacional no seja construdo com orientao
a objetos, esses conceitos so teis para entender a problemtica da segurana
computacional.
O controle de acesso a mediao das requisies de acesso a objetos iniciadas pelos
sujeitos. Cabe ao sistema operacional implementar um controle de acesso que imponha a
poltica de segurana definida para a instalao em questo. As vezes a poltica de segurana
efetivamente implantada no aquela desejada pela administrao do sistema, em funo de
falhas nos mecanismos de segurana ou limitaes de natureza prtica.
possvel classificar as diferentes solues para o controle de acesso conforme
acontece a distribuio de autoridade. No Controle de Acesso Discricionrio o proprietrio

24 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

do objeto deve determinar quem tem acesso a ele. Por exemplo, o usurio que criou o
arquivo decide quem pode ter acesso a este arquivo. o tipo de controle de acesso mais
utilizado em sistemas operacionais. O Controle de Acesso Obrigatrio baseia-se em uma
administrao centralizada que dita regras incontornveis para acesso aos objetos. Por
exemplo, pode-se definir nveis de segurana ordenados conforme a sensibilidade do objeto
e a confiabilidade do sujeito (no-classificado, confidencial, secreto e ultra-secreto). Um
sujeito com acesso "confidencial" jamais poder acessar um objeto "secreto". Finalmente, o
Controle de Acesso Baseado em Papis requer que os direitos de acesso sejam atribudos a
papis e no a usurios, os quais devem obter direitos atravs da incorporao de papis.
Leituras adicionais podem ser feitas em [9], [10] e [11].
A Matriz de Acesso [12] uma forma conveniente de representar-se o controle de
acesso existente em um dado sistema. A proteo do sistema representada por uma matriz,
onde as linhas correspondem aos sujeitos e as colunas correspondem aos objetos. Cada clula
da matriz indica quais operaes o sujeito daquela linha pode realizar sobre o objeto daquela
coluna. Operaes sobre a matriz so tambm controladas pelo mesmo mecanismo.
Na prtica a matriz de acesso de um sistema multiusurio muito grande para ser
armazenada exatamente como uma matriz pelo sistema operacional. Alm do que a maioria
de suas clulas estaria vazia, pois em geral um usurio no pode acessar arquivos de outros
usurios. Embora a matriz de acesso exista conceitualmente, a forma mais popular para
guardar as informaes atravs de listas de controle de acesso. Cada objeto possui uma
lista de controle de acesso, a qual essencialmente a sua coluna na matriz conceitual. Os
famosos bits "rwx" do Unix so uma forma simplificada de guardar esta informao.
A forma alternativa para armazenar a matriz de acesso faz-lo pelas linhas. Cada
sujeito associado a uma lista de capacidades (capabilities), a qual indica que operaes
sobre quais objetos ele tem direito. Em alguns sistemas as listas de capacidades so mantidas
pelo sistema operacional (Mach [13]). Em outros, cada capacidade corresponde a uma
informao criptografada que entregue ao processo e responsabilidade do processo
apresentar esta informao no momento de acessar o respectivo objeto (Chorus [13]).

7 Organizao Interna
Um sistema operacional tambm um programa de computador e, como tal, possui
uma especificao e um projeto. A especificao do mesmo corresponde lista de servios
que deve executar e as chamadas de sistema que deve suportar. Por outro lado, o seu projeto
ou design diz respeito a sua estrutura interna, como as diferentes rotinas, necessrias na
implementao dos servios, so organizadas internamente. O tamanho de um sistema
operacional pode variar desde alguns milhares de linhas no caso de um pequeno ncleo de
tempo real at vrios milhes de linhas, como na verso 2.4 do Linux, chegando a 30
milhes de linhas no caso do Windows 2000. Embora princpios bsicos como baixo
acoplamento e alta coeso sejam sempre desejveis, existem algumas formas de organizao
interna para sistemas operacionais que tornaram-se clssicas ao longo do tempo. Tambm

RITA Volume VIII Nmero 1 2001 25


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

ao longo do tempo a terminologia sofreu variaes. A forma como os termos so definidos


neste texto procura criar uma taxonomia coerente e didtica, mesmo que alguns autores, em
alguns momentos, tenham usado os termos com um sentido ligeiramente diferente.
A forma mais simples de organizar um sistema operacional colocar toda a sua
funcionalidade dentro de um nico programa chamado kernel. O kernel executa em modo
supervisor e suporta o conjunto de chamadas de sistemas. Ele carregado na inicializao do
computador (boot) e permanece o tempo todo na memria principal. Qualquer alterao no
kernel exige um novo procedimento de inicializao (um novo boot). Internamente, o cdigo
do kernel dividido em procedimentos e procedimentos podem ser agrupados em mdulos.
De qualquer forma, tudo ligado (linked) junto e qualquer rotina pode, a princpio, chamar
qualquer outra rotina. O conceito de processo existe fora do kernel, mas no dentro dele,
onde existe apenas um fluxo de execuo. Vamos chamar este projeto de kernel monoltico.
Uma forma mais eficiente executar o cdigo do kernel com interrupes habilitadas.
O kernel monoltico interrompvel possui desempenho melhor pois os eventos associados
com perifricos e temporizadores ganham imediata ateno, mesmo quando o cdigo do
kernel est executando. Entretanto, preciso notar que tratadores de interrupes podem
acessar estruturas de dados do kernel, as quais podem estar inconsistentes enquanto uma
chamada de sistema atendida. Nessa situao, a execuo do tratador de interrupo poder
corromper todo o sistema. Na construo de um kernel monoltico interrompvel necessrio
identificar todas as estruturas de dados acessadas por tratadores de interrupo e, quando o
cdigo normal do kernel acessa estas estruturas de dados, interrupes devem ser
desabilitadas (no necessariamente todas as interrupes, mas pelo menos aquelas cujos
tratadores acessam as estruturas em questo). As estruturas de dados acessadas por tratadores
de interrupo formam uma seo crtica que deve ser protegida, e o mecanismo neste caso
simplesmente desabilitar as interrupes enquanto estas estruturas so acessadas.
Vamos chamar de kernel convencional aquele que, alm de interrompvel, permite
uma troca de contexto mesmo quando cdigo do kernel estiver executando. A passagem de
um kernel monoltico interrompvel mas no-preemptvel para um kernel convencional
possui vrias implicaes. Agora o conceito de processo existe tambm dentro do kernel,
uma vez que o processo pode ser suspenso e liberado mais tarde enquanto executa cdigo do
kernel. No kernel monoltico apenas uma pilha basta, pois a cada momento apenas um fluxo
de execuo existe dentro dele. Interrupes podem acontecer, mas ainda assim uma nica
pilha suficiente. No kernel convencional um processo pode perder o processador para outro
processo que tambm vai executar cdigo do kernel. Logo, necessria uma pilha interna ao
kernel para cada processo, alm das pilhas em modo usurio. O Linux atualmente funciona
dessa forma [14].
Outra questo relevante so as estruturas de dados internas ao kernel. Elas passam a
representar sees crticas e devem ser protegidas. Neste momento surgem os dois tipos de
kernel convencionais. O kernel convencional com pontos de preempo somente suspende
um processo que executa cdigo do kernel em pontos previamente definidos do cdigo, nos
quais sabido que nenhuma estrutura de dados est inconsistente. O desempenho deste tipo

26 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

de kernel superior ao kernel monoltico, mas o processo de mais alta prioridade ainda deve
esperar at que a execuo do processo de baixa prioridade atinja um ponto de preempo.
Por outro lado, o kernel convencional preemptvel realiza o chaveamento de
contexto to logo o processo de mais alta prioridade seja liberado. Para isto, todas as
estruturas de dados do kernel que so compartilhadas entre processos devem ser protegidas
por algum mecanismo de sincronizao, como semforos, mutexes ou algo semelhante. Esta
soluo, usada no Solaris, resulta em melhor desempenho, considerando-se as diferentes
prioridades dos processos [5].
Modernamente uma organizao alternativa ao kernel tem sido proposta na qual a
funcionalidade tpica de kernel dividida em duas camadas. Esta soluo baseia-se na
existncia de um microkernel, o qual suporta os servios mais elementares de um sistema
operacional: gerncia de processador e uma gerncia de memria simples. Sobre o
microkernel existe um conjunto de processos servidores que implementam o restante da
funcionalidade: gerncia de perifricos, sistema de arquivos, memria virtual. Exemplos de
sistemas desse tipo so o Minix [4] e o Mach [13]. Internamente, o microkernel tem a forma
de um pequeno kernel monoltico. As desvantagens do kernel monoltico no so to srias
neste caso pois o cdigo do microkernel pequeno. Por sua vez, cada processo servidor pode
ser composto por vrias threads e constitui um espao de endereamento independente.

8 Sistemas Operacionais Distribudos


Durante a dcada de 1980 foram disseminadas diversas novas tecnologias, tais como
microcomputadores e redes locais de computadores (LAN - Local Area Network). Uma
conseqncia natural da existncia dessas tecnologias foi a solidificao do conceito de
Sistema Operacional Distribudo. Um sistema distribudo uma coleo de computadores
independentes que, para os usurios do sistema, aparecem como um computador nico. Seu
objetivo prover acesso transparente a servios e recursos distribudos ao longo de uma rede
de computadores. Para tanto, o hardware necessrio consiste de mquinas autnomas
interligadas por uma rede, algo fcil de ser construdo. Do lado software, o desafio no to
simples fazer os usurios perceberem todo o sistema como um computador nico. Diversas
aplicaes poderiam fazer uso deste tipo de sistema. Desde um escritrio utilizando uma rede
de estaes de trabalho e servidores at fbricas automatizadas e bancos [13].
Logo no incio das pesquisas nesta rea, foram escolhidos dois termos diferentes para
denotar as duas solues extremas para o suporte operacional. Um Sistema Operacional de
Rede definido como uma rede de estaes de trabalho em uma LAN, cada estao tem seu
prprio sistema operacional local, possivelmente diferente, com alto grau de autonomia.
Neste caso os comandos so locais, mas possvel realizar operaes remotas, tais como
login remoto e cpia de arquivos entre mquinas.
No outro extremo do espectro, temos o Sistema Operacional Distribudo (SOD)
propriamente dito. Ele cria a iluso de um nico sistema atravs da propriedade da

RITA Volume VIII Nmero 1 2001 27


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

transparncia. Ele oferece processos e atributos vlidos em todo o sistema, mecanimos para
sincronizao de processos que so vlidos no importa em que computador o processo
executa, um esquema de proteo nico, um sistema de arquivos com viso nica e
independente da localizao do usurio e do arquivo. Em boa parte, o sistema operacional
distribudo perfeito ainda no existe, um objetivo a ser alcanado. Deve-se observar que,
mesmo nele, algumas operaes permanencem essencialmente locais, tais como gerncia da
memria fsica e escalonamento do processador local.
O termo transparncia, associado com SOD, aceita muitas interpretaes. Em geral,
quanto mais transparncia melhor. Temos a transparncia de localizao (usurio no sabe
onde os recursos esto), a transparncia de migrao (recursos migram sem mudar o nome),
a transparncia de replicao (usurios no percebem existncia de rplicas), a transparncia
de concorrncia (usurios no percebem o compartilhamento com outros usurios), a
transparncia de paralelismo (usurio no sabe o que feito em paralelo), entre outras.
Diversos so os servios que um SOD pode prestar. Podemos citar: servio de nomes
que mapeia nomes de aplicaes (ou outros nomes) para endereos de rede e de programas;
servio de autenticao que fornece mecanismos confiveis para restringir o acesso a dados
privados; servio de tempo, capaz de manter os relgios de um conjunto de computadores
em sincronismo e prximos do tempo real; tolerncia a faltas para que um computador
defeituoso no derrube todo o sistema; execuo remota; acesso a perifricos remotos;
sistema de arquivos distribudo; suporte para aplicaes de groupware; suporte para
aplicaes baseadas em RPC (Remote Procedure Call) ou objetos distribudos.
Na implementao de um Sistema Operacional Distribudo temos uma complexidade
excessiva, uma tecnologia em rpida evoluo, a possibilidade de novos servios em funo
da distribuio, alm da dificuldade resultante do estado global no ser conhecido. Na prtica
temos ento a abordagem atravs de desenvolvedores mltiplos, e o modelo Caixa Preta
invivel. O modelo mais usado passa a ser o dos Componentes Autnomos Cooperantes.
Cada Componente Autnomo Cooperante ao mesmo tempo fornece e solicita
servios. Servios de mais alto nvel so obtidos pela composio de outros servios. Nas
solues acadmicas o SOD baseado em um microkernel, o qual executa em todas as
mquinas do sistema. O conjunto de servios oferecido selecionado por instalao.
A idia original de SOD encontra uma realizao parcial no conceito de Middleware.
Componentes de Middleware [15] executam entre aplicao e sistema operacional local,
utilizando a infraestrutura de comunicao existente. O objetivo do middleware suportar
servios distribudos que vo facilitar a criao de aplicaes distribudas. Desta forma, a
API (Application Program Interface) do middleware complementa e at mesmo s vezes
substitui a API do sistema operacional local, passando a definir um ambiente computacional
distribudo, exatamente o papel que esperado de um SOD. A figura 4 ilustra essa situao.
O middleware procura a convivncia de novas aplicaes distribudas com velhas aplicaes
legadas, o que facilita sua aceitao pelo mercado. Esta preocupao menor nas solues
acadmicas, as quais possuem maior liberdade para explorar novas idias.

28 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

A p licao A p licao A p licao

Interface do M iddlew a r e

M iddlew a re

Interface da Plataform a Interface da Plataform a

P lataform a : P lataform a :
S istem a O p e r a c i o n a l S istem a O p e r a c i o n a l
H a rdware H a rdware

Figura 4. Middleware como a realizao da idia de SOD


Existem componentes de Middleware que fornecem servios fundamentais, tais
como: interconectividade baseada em RPC (Remote Procedure Call) como o DCE da Open
Software Foundation (Distributed Computing Environment [13]) e o ONC da Sun (Open
Network Computing [16]); interconectividade baseada em objetos como o CORBA (Common
Object Request Broker Arquitecture [17]). Tambm podem fornecer servios de mais alto
nvel, tais como: sistemas de arquivos distribudos como o NFS (Network File System, [13]);
servio de nomes como o DNS (Domain Name System [18]); servio de tempo como o NTP
(Network Time Protocol); servio de autenticao como o Kerberos [18]. Temos ainda
middleware para processamento de transaes distribudas como o CICS da IBM [19].
Algumas solues oferecem middleware para um grande conjunto de servios, tais como: o
CORBA da OMG, as tecnologias Java da Sun e o PontoNet da Microsoft. Por exemplo,
CORBA adota o modelo orientado a objetos para implementar solicitaes transparentes de
servios. Ele suporta a idia de um sistema distribudo com mltiplos objetos que interagem
apesar de habitarem uma rede heterognea, com diferentes linguagens de programao,
sistemas operacionais e arquiteturas de computador. Java faz o mesmo, mas restringe a
linguagem de programao. PontoNet uma soluo proprietria da Microsoft que tenta
fazer a mesma coisa.

9 Sistemas Operacionais de Tempo Real


Sistemas computacionais de tempo real so definidos como aqueles submetidos a
requisitos de natureza temporal [20]. Nestes sistemas, os resultados devem estar corretos no
somente do ponto de vista lgico, mas tambm devem ser gerados no momento correto. Os
aspectos temporais no esto limitados a uma questo de maior ou menor desempenho, mas
esto diretamente associados com a funcionalidade do sistema.

RITA Volume VIII Nmero 1 2001 29


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

Nos sistemas tempo real crticos (hard real-time) o no atendimento de um requisito


temporal pode resultar em consequncias catastrficas tanto no sentido econmico quanto
em vidas humanas. Para sistemas deste tipo necessria uma anlise de escalonabilidade em
tempo de projeto (off-line). Esta anlise procura determinar se o sistema vai ou no atender
os requisitos temporais mesmo em um cenrio de pior caso, quando as demandas por
recursos computacionais so maiores. Quando os requisitos temporais no so crticos (soft
real-time) eles descrevem o comportamento desejado. O no atendimento de tais requisitos
reduz a utilidade da aplicao mas no resulta em conseqncias catastrficas.
Sistemas operacionais de propsito geral (SOPG) encontram dificuldades em atender
as demandas especficas das aplicaes de tempo real. Fundamentalmente, SOPG so
construdos com o objetivo de apresentar um bom comportamento mdio, ao mesmo tempo
em que distribuem os recursos do sistema de forma eqitativa entre os processos e os
usurios. Existe pouca preocupao com previsibilidade temporal. Mecanismos como caches
de disco, memria virtual, fatias de tempo do processador, etc, melhoram o desempenho
mdio do sistema mas tornam mais difcil fazer afirmaes sobre o comportamento de um
processo em particular frente s restries temporais. Aplicaes com restries de tempo
real esto menos interessadas em uma distribuio uniforme dos recursos e mais interessadas
em atender requisitos tais como perodos de ativao e deadlines.
Como qualquer sistema operacional, um Sistema Operacional de Tempo Real (SOTR)
procura tornar a utilizao do computador mais eficiente e mais conveniente. Alguns
servios so fundamentais: processos, mecanismos para a comunicao e sincronizao,
instalao de tratadores de dispositivos e a disponibilidade de temporizadores. A maioria das
aplicaes tempo real possui uma parte (talvez a maior parte) de suas funes sem restries
temporais. Logo, preciso considerar que um SOTR deveria, alm de satisfazer as
necessidades dos processos de tempo real, fornecer funcionalidade apropriada para os
processos convencionais, tais como sistema de arquivos, interface grfica de usurio e
protocolos de comunicao para a Internet. Em [21] apresentado um programa de avaliao
de SOTR independente de fornecedor que define vrios requisitos.
Aspectos temporais esto relacionados com a capacidade do SOTR fornecer os
mecanismos e as propriedades necessrios para o atendimento dos requisitos temporais da
aplicao tempo real. Uma vez que tanto a aplicao como o SOTR compartilham os
mesmos recursos do hardware, o comportamento temporal do SOTR afeta o comportamento
temporal da aplicao. Por exemplo, considere a rotina do sistema operacional que trata as
interrupes do temporizador em hardware (timer). O projetista da aplicao pode ignorar
completamente a funo desta rotina, mas talvez no possa ignorar o seu efeito temporal, isto
, a interferncia que ela causa na execuo da aplicao.
O fator mais importante a vincular aplicao e sistema operacional so os servios
que este ltimo presta. A simples operao de solicitar um servio ao sistema operacional
atravs de uma chamada de sistema significa que: (1) o processador ser ocupado pelo
cdigo do sistema operacional durante a execuo da chamada de sistema e, portanto, no
poder executar cdigo da aplicao; (2) a capacidade da aplicao atender aos seus

30 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

deadlines passa a depender da capacidade do sistema operacional em fornecer o servio


solicitado em um tempo que no inviabilize aqueles deadlines.
Com respeito ao comportamento temporal do sistema, qualquer anlise deve
considerar conjuntamente aplicao e sistema operacional, pois os requisitos temporais que
um SOTR deve atender esto completamente atrelados aos requisitos temporais da aplicao
tempo real que ele dever suportar. Uma vez que existe um amplo espectro de aplicaes de
tempo real, tambm existiro diversas solues possveis para a construo de SOTR, cada
uma mais apropriada para um determinado contexto. Por exemplo, o comportamento
temporal exigido de um SOTR capaz de suportar o controle de vo em um avio (fly-by-
wire) muito diferente daquele esperado de um SOTR usado para videoconferncia.

9.1 Tipos de Suportes para Tempo Real


A diversidade de aplicaes de tempo real gera uma diversidade de necessidades com
respeito ao suporte para tempo real, a qual resulta em um leque de solues com respeito aos
suportes disponveis, com diferentes tamanhos e funcionalidades. De uma maneira
simplificada podemos classificar os suportes de tempo real em dois tipos: ncleos de tempo
real (NTR) e sistemas operacionais de tempo real (SOTR). O NTR consiste de um pequeno
microkernel com funcionalidade mnima mas excelente comportamento temporal. Seria a
escolha indicada para, por exemplo, o controlador de uma mquina industrial. O SOTR um
sistema operacional com a funcionalidade tpica de propsito geral, mas cujo kernel foi
adaptado para melhorar o comportamento temporal. A qualidade temporal do kernel
adaptado varia de sistema para sistema, pois enquanto alguns so completamente reescritos
para tempo real, outros recebem apenas algumas otimizaes. Por exemplo, o sistema Solaris
[5] implementa funcionalidade Unix, mas foi projetado para fornecer boa resposta temporal.
A figura 5 procura resumir os tipos de suportes encontrados na prtica. Esta uma
classificao subjetiva, mas permite entender o cenrio atual. Alm do NTR e do SOTR
descritos antes, existem outras duas combinaes de funcionalidade e comportamento
temporal. Obter funcionalidade mnima com pouca previsibilidade temporal trivial,
qualquer ncleo oferece isto. Por outro lado, obter previsibilidade temporal determinista em
um sistema operacional completo muito difcil e objeto de estudo pelos pesquisadores das
duas reas. Entretanto, razovel supor que existiro sistemas deste tipo no futuro.
Funcionalidade
mnima completa

Previsibilidade Ncleo de
Futuro...
maior Tempo Real

Previsibilidade Qualquer Ncleo Sistema Operacional


menor Simples Adaptado

Figura 5. Tipos de suportes para aplicaes de tempo real

RITA Volume VIII Nmero 1 2001 31


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, Nmero 3, dezembro de 2001
Sistemas Operacionais

Posix um padro para sistemas operacionais, baseado no Unix, criado pelo IEEE
(Institute of Electrical and Eletronic Engineers). Posix define as interfaces do sistema
operacional mas no sua implementao. Muitos SOTR atualmente j suportam a API do
Posix, como pode ser constatado atravs de uma visita s pginas listadas em
http://www.cs.bu.edu/pub/ieee-rts. Uma descrio completa do Posix capaz de ocupar um
livro inteiro [22]. Uma descrio detalhada do escalonamento em vrias verses do Unix
pode ser encontrada em [5].
Existem vrios projetos envolvendo adaptaes do Linux para tempo real. O RT-
Linux (http://luz.cs.nmt.edu/~rtlinux/) um sistema operacional no qual um microkernel de
tempo real co-existe com o kernel do Linux. O objetivo do projeto RED-Linux
(http://linux.ece.uci.edu/RED-Linux/) fornecer suporte de escalonamento tempo real para o
Linux, atravs da integrao de escalonadores baseados em prioridade, baseados no tempo e
baseados em compartilhamento de recursos [23]. O KURT-Linux
(http://hegel.ittc.ukans.edu/projects/kurt/), ou "Kansas University Real Time Linux Project"
um sistema operacional que permite o escalonamento explcito de qualquer evento [24].

Agradecimentos
Os autores agradecem ao Rafael R. Obelheiro pelas vrias sugestes e comentrios.

Referncias
[1] Oliveira, Rmulo Silva de, Carissimi, Alexandre da Silva e Toscani, Simo Sirineo.
Sistemas Operacionais. Editora SagraLuzzatto, ISBN 85-241-0643-3, 2001.
[2] Bach, M. The Design of the Unix Operating System. Prentice-Hall, 1986.
[3] Comer, D. Operating System Design: The Xinu Approach. Prentice-Hall, 1984.
[4] Tanenbaum, A. S., Woodhull, A. S. Operating Systems Design and Implementation.
2nd edition. Prentice-Hall, 1997.
[5] Vahalia, U. Unix Internals: The New Frontiers. Prentice-Hall, 1996.
[6] Jacob, B., Mudge, T. Virtual Memory: Issues of Implementation. IEEE Computer, pp.
33-43, June 1998.
[7] Jacob, B., Mudge, T. Virtual Memory in Contemporary Microprocessors. IEEE
Micro, pp. 60-75, July-August 1998.
[8] Obelheiro, Rafael R. Modelos de Segurana Baseados em Papis para Sistemas de
Larga Escala: A Proposta RBAC-JaCoWeb. Dissertao de mestrado, Programa de
Ps-Graduao em Engenharia Eltrica da UFSC, 2001.

32 RITA Volume VIII Nmero 1 2001


Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas
3, dezembro de 2001
Operacionais

[9] Amoroso, Edward G. Fundamentals of Computer Security Technology. Prentice-Hall


PTR, Upper Saddle River NJ, 1994.
[10] Sandhu, Ravi S. and Samarati, Pierangela S. Access Control: Principles and Practice.
IEEE Communications, 32(9):40-48, September 1994.
[11] Sandhu, Ravi S. and Samarati, Pierangela S. Authentication, Access Control, and
Audit. ACM Computing Surveys, 28(1):241-243, March 1996.
[12] Lampson, Butler W. Protection. In Proceedings of the 5th Princeton Symposium on
Information Sciences and Systems, pp. 437-443, Princeton University, March 1971.
[13] Tanenbaum, Andrew S. Distributed Operating Systems. Prentice-Hall, ISBN 0-13-
219908-4, 1995.
[14] Bovet, Daniel P. and Cesati, Marco. Understanding the Linux Kernel. O'Reilly &
Associates, ISBN 0596000, 2000.
[15] Geihs, Kurt. Middleware Challenges Ahead. IEEE Computer, Vol. 34, no. 6, pp. 24-
31, June 2001.
[16] Corbin, John R. The Art of Distributed Applications: Programming Techniques for
Remote Procedure Calls. Springer-Verlag, 1991.
[17] Vinoski, Steve. CORBA: Integrating Diverse Applications Within Distributed
Heterogeneous Environments. IEEE Communications, 35(2):46-55, February 1997.
[18] Coulouris, G., Dollimore, J. and Kindberg. Distributed Systems: Concepts and
Design. 2nd edition. Addison-Wesley, ISBN 0-201-62433-8, 1994.
[19] Horswill, John. Designing and Programming CICS Applications. O'Reilly &
Associates, ISBN 1565926765, 2000.
[20] Farines, Jean-Marie, Fraga, Joni da Silva e Oliveira, Rmulo Silva de. Sistemas de
Tempo Real. 12 Escola de Computao, IME-USP, So Paulo-SP, julho de 2000.
[21] Timmeman, M., Beneden, B. V. and Uhres, L. RTOS Evaluation Kick Off. Real-Time
Magazine, 1998-Q33, http://www.realtime-info.be, (atualmente Dedicated Systems
Magazine), 1998
[22] Gallmeister, B. O. POSIX.4 Programming for the Real World. O'Reilly & Associates,
ISBN 1-56592-074-0, 1995.
[23] Wang,Y.-C., Lin, K.-J. Implementing a General Real-Time Scheduling Framework in
the RED-Linux Real-Time Kernel. Proc. of the Real-Time Systems Symp., Dec 1999.
[24] Srinivasan, B., Pather, S., Hill, R., Ansari, F. and Niehaus, D. A Firm Real-Time
System Implementation Using Commercial Off-The-Shelf Hardware and Free
Software. Proc. of the Real-Time Technology and Applications Symp., June 1998.

RITA Volume VIII Nmero 1 2001 33

Você também pode gostar