Sunteți pe pagina 1din 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

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 MSDOS. 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 RITA Volume VIII Nmero 1 2001

Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas Operacionais 3, dezembro de 2001
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.

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

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).

RITA Volume VIII Nmero 1 2001

Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas Operacionais 3, dezembro de 2001
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

A p to

S e le o

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 Interrupo de Hardware

R e t o r n o I m e d ia t o

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

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, RITA Volume VIII Nmero 1 2001

Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas Operacionais 3, dezembro de 2001
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

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.

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.

RITA Volume VIII Nmero 1 2001

Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas Operacionais 3, dezembro de 2001
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

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
000 00 000 01 000 10 000 11 001 00 001 01 001 10 001 11 010 00 010 01 010 10 010 11 X1 X2 X3 X4 Y1 Y2 Y3 Y4 Z1 Z2 Z3 Z4 End.Fsico de Y2 101 01

Memria Fsica
Z1 Z2 Z3 Z4 000 00 000 01 000 10 000 11 001 00 001 01 001 10 001 11 010 00 010 01 010 10 010 11 011 00 011 01 011 10 011 11 100 00 100 01 100 10 100 11 101 00 101 01 101 10 101 11

X1 X2 X3 X4

End.Lgico de Y2 001 01

Tabela de Pginas
Pg.Lgica 000 001 010 Pg.Fsica 010 101 000 Y1 Y2 Y3 Y4

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 Operacionais 3, dezembro de 2001
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 Operacionais 3, dezembro de 2001
- 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.

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 RITA Volume VIII Nmero 1 2001

14

Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas Operacionais 3, dezembro de 2001
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 Operacionais 3, dezembro de 2001
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 Operacionais 3, dezembro de 2001
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.

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 Operacionais 3, dezembro de 2001
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 SCSI driver EIDE driver floppy driver rede driver 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 Operacionais 3, dezembro de 2001
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.

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 RITA Volume VIII Nmero 1 2001

24

Revista de Informtica Terica e Aplicada - RITA - Volume VIII, NmeroSistemas Operacionais 3, dezembro de 2001
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]).

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 Operacionais 3, dezembro de 2001
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.

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 Operacionais 3, dezembro de 2001

A p licao

A p licao

A p licao

Interface do M iddlew a r e M iddlew a re

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

Interface da Plataform a P lataform a : S istem a O p e r a c i o n a l 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.

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 Operacionais 3, dezembro de 2001
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-bywire) 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 Previsibilidade maior
Ncleo de Tempo Real Futuro...

completa

Previsibilidade menor

Qualquer Ncleo Simples

Sistema Operacional 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 RTLinux (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] [2] [3] [4] [5] [6] [7] [8] Oliveira, Rmulo Silva de, Carissimi, Alexandre da Silva e Toscani, Simo Sirineo. Sistemas Operacionais. Editora SagraLuzzatto, ISBN 85-241-0643-3, 2001. Bach, M. The Design of the Unix Operating System. Prentice-Hall, 1986. Comer, D. Operating System Design: The Xinu Approach. Prentice-Hall, 1984. Tanenbaum, A. S., Woodhull, A. S. Operating Systems Design and Implementation. 2nd edition. Prentice-Hall, 1997. Vahalia, U. Unix Internals: The New Frontiers. Prentice-Hall, 1996. Jacob, B., Mudge, T. Virtual Memory: Issues of Implementation. IEEE Computer, pp. 33-43, June 1998. Jacob, B., Mudge, T. Virtual Memory in Contemporary Microprocessors. IEEE Micro, pp. 60-75, July-August 1998. 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 Operacionais 3, dezembro de 2001
[9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] Amoroso, Edward G. Fundamentals of Computer Security Technology. Prentice-Hall PTR, Upper Saddle River NJ, 1994. Sandhu, Ravi S. and Samarati, Pierangela S. Access Control: Principles and Practice. IEEE Communications, 32(9):40-48, September 1994. Sandhu, Ravi S. and Samarati, Pierangela S. Authentication, Access Control, and Audit. ACM Computing Surveys, 28(1):241-243, March 1996. Lampson, Butler W. Protection. In Proceedings of the 5th Princeton Symposium on Information Sciences and Systems, pp. 437-443, Princeton University, March 1971. Tanenbaum, Andrew S. Distributed Operating Systems. Prentice-Hall, ISBN 0-13219908-4, 1995. Bovet, Daniel P. and Cesati, Marco. Understanding the Linux Kernel. O'Reilly & Associates, ISBN 0596000, 2000. Geihs, Kurt. Middleware Challenges Ahead. IEEE Computer, Vol. 34, no. 6, pp. 2431, June 2001. Corbin, John R. The Art of Distributed Applications: Programming Techniques for Remote Procedure Calls. Springer-Verlag, 1991. Vinoski, Steve. CORBA: Integrating Diverse Applications Within Distributed Heterogeneous Environments. IEEE Communications, 35(2):46-55, February 1997. Coulouris, G., Dollimore, J. and Kindberg. Distributed Systems: Concepts and Design. 2nd edition. Addison-Wesley, ISBN 0-201-62433-8, 1994. Horswill, John. Designing and Programming CICS Applications. O'Reilly & Associates, ISBN 1565926765, 2000. 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. 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 Gallmeister, B. O. POSIX.4 Programming for the Real World. O'Reilly & Associates, ISBN 1-56592-074-0, 1995. 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. 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.

[22] [23] [24]

RITA Volume VIII Nmero 1 2001

33

S-ar putea să vă placă și