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

SISTEMAS OPERACIONAIS 1.

Introduo
Definio de Sistema Operacional: Um sistema operacional um conjunto de rotinas executadas pelo processador, com a funo de controlar o funcionamento do computador, sendo o gerente dos vrios recursos disponveis no sistema. Funes do Sistema Operacional: 1. Facilitar o acesso aos recursos do sistema Um sistema de computao possui normalmente diversos componentes tais como: terminais, impressoras, discos etc.. Quando utilizamos um destes dispositivos, no nos preocupamos com a maneira como realizada esta comunicao e os inmeros detalhes envolvidos. Uma operao cotidiana para a maioria de ns, como por exemplo uma leitura de um disquete, pode parecer simples. Na realidade, existe um conjunto de rotinas especficas, controladas pelo sistema operacional, responsvel por acionar a cabea de leitura e gravao da unidade de disco, posicionar na trilha e setor onde esto os dados, transferir os dados do disco para a memria e, finalmente, informar ao programa a chegada dos dados. O sistema operacional, ento, serve de interface entre o usurio e os recursos disponveis no sistema, tornando esta comunicao transparente e permitindo ao usurio um trabalho mais eficiente e com menores chances de erros. Este conceito de ambiente simulado, criado pelo sistema operacional, denominado mquina virtual (virtual machine) e est presente, de alguma forma, na maioria dos sistemas atuais. 2. Compartilhamento de recursos de forma organizada e protegida Quando pensamos em sistemas multiusurios, onde vrios usurios podem estar compartilhando os mesmos recursos, como, por exemplo, memria e discos, necessrio que todos tenham chance de ter acesso a esses recursos, de forma que um usurio no interfira no trabalho do outro. Por exemplo, se imaginarmos que uma impressora possa ser utilizada por vrios usurios do sistema, dever existir algum controle para impedir que a impresso de um usurio no interrompa a impresso de outro. Novamente, o sistema operacional responsvel por permitir o acesso concorrente a esse e a outros recursos, de forma organizada e protegida, dando ao usurio a impresso de ser o nico a utiliz-los. O compartilhamento de recursos permite, tambm, a diminuio de custos, na medida em que mais de um usurio possa utilizar as mesmas facilidades concorrentemente.

Introduo

___________________________________________________________________________________________________________________________

2. Mquina Virtual
Nos primeiros computadores, a programao era realizada em painis, atravs de fios, exigindo um grande conhecimento do hardware e de sua linguagem de mquina. Isso era uma grande dificuldade para os programadores da poca. A soluo para esse problema foi o surgimento do sistema operacional, que tornou a interao entre usurio e computador mais simples, confivel e eficiente. A partir desse acontecimento, no existia mais necessidade de o programador se envolver com a complexidade do hardware para poder trabalhar; ou seja, a parte fsica do computador tomou-se transparente para o usurio. Partindo desse princpio, podemos encarar o computador como uma mquina de nveis ou camadas, onde inicialmente existem dois nveis: o nvel 0 (hardware) e o nvel 1 (sistema operacional). Desta forma, o usurio pode enxergar a mquina como sendo apenas o sistema operacional, ou seja, como se o hardware no existisse. Esta viso modular e abstrata chamada mquina virtual. Na realidade, um computador no possui apenas dois nveis, e sim tantos nveis quantos forem necessrios para adequar o usurio s suas diversas aplicaes. Quando o usurio est trabalhando em um desses nveis, no necessita saber da existncia das outras camadas, acima ou abaixo de sua mquina virtual.

3. Hardware
Todos os componentes de um computador so agrupados em trs subsistemas bsicos: unidade central de processamento, memria principal e dispositivos de entrada e sada. Estes subsistemas, tambm chamados unidades funcionais, esto presentes em todo computador digital, apesar de suas implementaes variarem em funo da arquitetura de cada fabricante.

4. Unidade Central de Processamento


A unidade central de processamento (UCP), ou processador, tem como funo principal unificar todo o sistema, controlando as funes realizadas por cada unidade funcional. A UCP tambm responsvel pela execuo de todos os programas do sistema, que obrigatoriamente devero estar amazenados na memria principal. Um programa composto por uma srie de instrues que so executadas seqencialmente pela UCP, atravs de operaes bsicas como somar, subtrair, comparar e movimentar dados. Desta forma, a UCP busca cada instruo na memria principal e a interpreta para sua execuo.

Introduo

___________________________________________________________________________________________________________________________

5. Clock
um dispositivo, localizado na UCP, que gera pulsos eltricos constantes (sncronos) em um mesmo intervalo de tempo (sinal de clock). Este intervalo de tempo determina qual a freqncia da gerao dos pulsos, e, por conseguinte, qual o seu perodo. A cada perodo do sinal de clock d-se o nome de estado. O sinal de clock utilizado pela unidade de controle para a execuo das instrues. A execuo de uma instruo demora vrios estados, ou seja, em um estado, parte da instruo executada. Para sabermos quanto tempo gasta uma instruo para ser executada, devemos saber quantos estados ela possui e qual o tempo de durao do estado.

6. Registradores
So dispositivos de alta velocidade, localizados fisicamente na UCP, para armazenamento temporrio de dados. O nmero de registradores varia em funo da arquitetura de cada processador. Algum registradores so de uso especfico e tm propsitos especiais, enquanto outros so ditos de uso geral. Dentre os registradores de uso especfico, alguns merecem destaque: o contador de instrues (CI) ou program counter (PC) , o apontador da pilha (AP) ou stackpointer (SP), o registrador de estado, tambm chamado em alguns equipamentos de program status word (PSW).

7. Memria Principal
A memria principal, tambm conhecida como memria primria ou real, a parte do computador onde so armazenadas instrues e dados. Ela composta por unidades de acesso chamadas clulas, sendo cada clula composta por um determinado nmero de bits (bynary digit). O bit a unidade bsica de memria, podendo assumir o valor 0 ou 1. Muitos computadores utilizam o byte (8 bits) como tamanho de clula, porm encontramos computadores com clulas de 16, 32 e at mesmo 60 bits. Podemos concluir, ento, que a memria formada por um conjunto de clulas, onde cada clula possui um determinado nmero de bits. O acesso ao contedo de uma clula realizado atravs da especificao de um nmero chamado endereo. O endereo uma referncia nica, que podemos fazer a uma clula da memria. Quando um programa deseja ler ou escrever um dado em uma clula, deve primeiro especificar qual o endereo de memria desejado, para depois realizar a operao. A memria principal pode ser classificada em funo de sua volatilidade, que a capacidade de a memria preservar o seu contedo mesmo sem uma fonte de alimentao. As memrias chamadas volteis se caracterizam por poderem ser lidas ou gravadas, como o tipo RAM (random access memory), que constitui quase que a

Introduo

___________________________________________________________________________________________________________________________

totalidade da memria principal de um computador. O outro tipo, chamado de no voltil, no permite alterar ou apagar seu contedo. Este tipo de memria, conhecido Como read-only memory (ROM), j vem pr-gravado do fabricante, geralmente com algum programa, e seu contedo preservado mesmo quando a alimentao desligada. Uma variao da ROM a erasable programmable ROM (EPROM), onde podemos gravar e regravar a memria atravs da exposio de luz ultravioleta por um dispositivo especial.

8. Memria Cache
uma memria de alta velocidade. O tempo de acesso a um dado nela contido muito menor que se o mesmo estivesse na memria principal. Toda vez que o processador faz referncia a um dado armazenado na memria principal, ele "olha" antes na memria cache. Se o processador encontrar o dado na cache, no h necessidade do acesso memria principal; do contrrio, o acesso obrigatrio. Neste ltimo caso, o processador transfere um bloco de dados, a partir do dado referenciado, para a cache. O tempo de transferencia entre as memrias pequeno, se comparado com o aumento da performance obtido com a utilizao desse tipo de memria. Apesar de ser uma memria de acesso rpido, seu uso limitado em funo do seu alto custo.

9. Memria Secundria
um meio permanente (no voltil) de armazenamento de programas e dados. Enquanto a memria principal precisa estar sempre energizada para manter suas informaes, a memria secundria no precisa de alimentao. O acesso a esse tipo de memria lento, se comparado com o acesso memria cache ou principal, porm, seu custo baixo e sua capacidade de armazenamento bem superior da memria principal.

10. Dispositivos de Entrada e Sada


So dispositivos utilizados para permitir a comunicao entre o computador e o mundo externo. Atravs desses dispositivos, a UCP e a memria principal podem se comunicar, tanto com usurios quanto com memrias secundrias, a fim de realizar qualquer tipo de processamento.

11. Barramento
A UCP, a memria principal e os dispositivos de E/S so interligados atravs de linhas de comunicao denominadas barramentos. Um barramento (bus), tambm

Introduo

___________________________________________________________________________________________________________________________

chamado via, um conjunto de fios paralelos (linhas de transmisso), onde trafegam informaes, como dados, endereos ou sinais de controle. Os barramentos podem ser classificados como unidirecionais (transmisso em um s sentido) ou bidirecionais (transmisso em ambos os sentidos). Na ligao entre UCP e memria principal, podemos observar que trs barramentos so necessrios para que a comunicao seja realizada. O barramento de dados, do tipo bidirecional, transmite informaes entre a memria principal e a UCP. O barramento de endereos, do tipo unidirecional, utilizado pela UCP para especificar o endereo da clula de memria que ser acessada. Finalmente, o barramento de controle, do tipo unidirecional, por onde a UCP envia os pulsos de controle relativos s operaes de leitura e gravao.

12. Inicializao do Sistema (Boot)


O sistema operacional essencial para o funcionamento de um computador. Sem ele, grande parte dos recursos do sistema no estaria disponvel, ou se apresentaria de uma forma complexa para utilizao pelos usurios. Toda vez que um computador ligado, necessrio que o sistema operacional seja carregado da memria secundria para a memria principal. Este processo denominado inicializao do sistema (boot) e realizado por um programa localizado em uma posio especfica do disco (boot block), geralmente o primeiro bloco.

13. Software
O hardware, por si s, no tem a menor utilidade. Para torn-lo til, existe um conjunto de programas, utilizado como interface entre as necessidades do usurio e a capacidade do hardware. A utilizao de softwares adequados s diversas tarefas e aplicaes (conceito de camadas) toma o trabalho dos usurios muito mais simples e eficiente.

14. Tradutor
Nos sistemas operacionais antigos, o ato de programar era bastante complicado, j que o programador deveria possuir conhecimento do hardware e programar em painis atravs de fios. Esses programas eram desenvolvidos em linguagem de mquina e carregados diretamente na memria principal para execuo. Com o surgimento das primeiras linguagens de montagem (assembly languages) e das linguagens de alto nvel, o programador deixou de se preocupar com muitos aspectos pertinentes ao hardware, como em qual regio da memria o programa deveria ser carregado ou quais endereos de memria seriam reservados para as variveis. A utilizao dessas linguagens facilitou a construo de programas em muitos aspectos. Desse modo, um programa poderia, ento, ser escrito de uma forma bem documentada e com facilidades para realizar alteraes.

Introduo

___________________________________________________________________________________________________________________________

Apesar das inmeras vantagens proporcionadas pelas linguagens de montagem e alto nvel, os programas escritos nessas linguagens (programas-fonte) no esto prontos para ser diretamente executados pela UCP. Para isso, eles tm de passar por uma etapa de converso, onde toda representao simblica dos programas traduzida para cdigo de mquina. Esta converso realizada por um software denominado tradutor. O mdulo gerado pelo tradutor denominado mdulo-objeto, que, apesar de estar em cdigo de mquina, na maioria das vezes no pode ser ainda executado. Isso ocorre em funo de um programa poder chamar sub-rotinas externas, e, neste caso, o tradutor no tem como associar o programa principal s sub-rotinas chamadas. Esta funo realizada por um utilitrio denominado linker e ser visto adiante.

15. Montador
O montador (assembler) o utilitrio responsvel por gerar, a partir de um programa escrito em linguagem de montagem, um programa em linguagem de mquina no executvel (mdulo-objeto). A linguagem de montagem um conjunto de smbolos (mnemnicos) associado s instrues da linguagem de mquina do processador. Apesar das facilidades, como instrues simblicas e possibilidade de documentao, a programao em linguagem de montagem est diretamente ligada s caractersticas da arquitetura do processador. Em funo disto, este tipo de linguagem diferente para cada computador, pois a linguagem de mquina e, conseqentemente, a linguagem de montagem so caractersticas especficas do processador.

16. Compilador
O compilador o utilitrio responsvel por gerar, a partir de um programa escrito em uma linguagem de alto nvel, um programa em linguagem de mquina no executvel (mdulo-objeto). As linguagens de alto nvel, como Pascal, Fortran, Cobol, no tm nenhuma relao direta com a mquina, ficando essa preocupao exclusivamente com o compilador. Os programadores de alto nvel tm, apenas, que se preocupar com o desenvolvimento de suas aplicaes, no tendo que se envolver com detalhes sobre a arquitetura do processador. Assim, os programas-fonte podem ser transportados entre computadores de diversos fabricantes, desde que existam regras de definio para a linguagem. Isso permite o desenvolvimento de aplicaes independentes do equipamento. Um compilador um utilitrio que opera de modo integrado aos componentes do sistema de programao disponveis, sob a superviso do sistema operacional. Podemos visualizar, ento, o compilador como uma interface entre o sistema operacional e o usurio, de maneira que seja possvel acessar diversos servios do

Introduo

___________________________________________________________________________________________________________________________

sistema sem a necessidade da utilizao de linguagem de controle ou de outros utilitrios.

17. Interpretador
O interpretador considerado um tradutor que no gera cdigo-objeto. A partir de um programa-fonte, escrito em linguagem de alto nvel, o interpretador, no momento da execuo do programa, traduz cada instruo e a executa em seguida. A maior desvantagem da utilizao de interpretadores o tempo gasto na traduo das instrues de um programa toda vez que este for executado, j que no existe a gerao de um cdigo executvel. A vantagem permitir a implementao de tipos de dados dinmicos, ou seja, que podem mudar de tipo durante a execuo do programa, aumentando, assim, sua flexibilidade. Algumas linguagens tipicamente interpretadas so o Basic, dBase e APL.

18. Linker
O linker (ligador), tambm chamado de linkage editor (editor de ligao), o utilitrio responsvel por gerar, a partir de um ou mais mdulos-objeto, um nico programa executvel. Suas funes bsicas so resolver todas as referncias simblicas existentes entre os mdulos e reservar memria para a execuo do programa. Para resolver todas as referncias a smbolos, o linker tambm pode pesquisar em bibliotecas do sistema ou do prprio usurio. Bibliotecas so arquivos que contm diversos mdulos-objeto e/ou definies de smbolos. Outra funo importante do linker determinar uma regio de memria na qual o programa ser carregado para ser executado. Esta operao denominada relocao. Se o cdigo executado for do tipo absoluto, o loader s necessita conhecer o endereo de memria inicial e o tamanho do mdulo para realizar o carregamento. Ento, o loader transfere o programa da memria secundria para a memria principal e inicia sua execuo (loader absoluto). Em sistemas multiprogramveis esse tipo de relocao invivel, j que a memria compartilhada entre diversos programas, e pouco provvel que, no momento em que o sistema carrega um programa, sua rea de memria prefixada esteja disponvel. A soluo para este problema permitir que o programa seja carregado em regies diferentes toda vez que for trazido para a memria (cdigo relocvel). Este tipo de relocao no realizado pelo linker, mas, sim, atravs de outro utilitrio denominado loader, responsvel por carregar os programas na memria,

Introduo

___________________________________________________________________________________________________________________________

19. Loader
O loader, tambm chamado carregador, o utilitrio responsvel por colocar fisicamente na memria um programa para execuo. O procedimento de carga varia com o cdigo gerado pelo linker e, em funo deste, o loader c1assificado como sendo do tipo absoluto ou relocvel. No caso do cdigo relocvel, o programa pode ser carregado em qualquer posio de memria, e o loader responsvel pela relocao no momento do carregamento (loader relocvel).

20. Depurador
O desenvolvimento de programas est sujeito a erros de lgica, independentemente de metodologias utilizadas pelo programador. A depurao um dos estgios desse desenvolvimento, e a utilizao de ferramentas adequadas essencial para acelerar o processo de correo dos programas. O depurador (debugger) o utilitrio que permite ao usurio controlar toda a execuo de um programa a fim de detectar erros na sua estrutura. Este utilitrio oferece ao usurio recursos como: acompanhar a execuo de um programa instruo por instruo; possibilitar a alterao e visualizao do contedo de variveis;

implementar pontos de parada dentro do programa (breakpoint), de forma que, durante a execuo, o programa pare nesses pontos; especificar que, toda vez que o contedo de uma varivel for modificado, o programa envie uma mensagem (watchpoint).

21. Linguagem de Controle


A linguagem de controle, tambm denominada linguagem de comando, a forma mais direta de um usurio se comunicar com o sistema operacional. Esta linguagem oferecida por cada sistema operacional pare que, atravs de comandos simples, o usurio possa ter acesso a rotinas especficas do sistema. Esses comandos, quando digitados pelos usurios, so interpretados por um programa denominado interpretador de comandos, ou shell. O interpretador reconhece a linha de comando, verifica sua sintaxe, envia mensagens de erro e faz chamadas a rotinas do sistema. Dessa forma, o usurio dispe de uma interface interativa com o sistema operacional, para realizar tarefas como acessar um arquivo em disco ou consultar um diretrio.

Introduo

___________________________________________________________________________________________________________________________

Algumas linguagens de controle so poderosas a ponto de oferecerem a possibilidade de se criar programas com estruturas de deciso e iterao. Esses programas nada mais so do que uma seqncia de comandos em um arquivo (arquivo de comandos), que podem ser executados sempre que necessrio. As linguagens de controle evoluem no sentido de permitirem a interao mais amigvel com os usurios, utilizando interfaces grficas, como windows e cones.

22. Monoprogramao
Os sistemas monoprogramveis ou monotarefa se caracterizam por permitir que o processador, a memria e os perifricos fiquem dedicados a um nico usurio. Nesses sistemas, enquanto o programa aguarda por um evento, como a digitao de um dado, o processador fica ocioso sem realizar qualquer tarefa. A memria subutilizada caso o programa no a preencha totalmente, e os perifricos, como discos e impressoras, esto dedicados a um nico usurio, nem sempre utilizados de forma integral.

23. Multiprogramao
Os sistemas mutiprogramveis ou multitarefa so muito mais complexos e eficientes do que os sistemas monoprogramveis. Enquanto em sistemas monoprogramveis existe apenas um usurio utilizando seus diversos recursos, nos multiprogramveis, vrios usurios dividem esses mesmos recursos. Dessa forma possvel aumentar a produtividade dos usurios e reduzir os custos de utilizao do sistema. Por exemplo, enquanto um programa espera por uma operao de leitura ou gravao em disco, outros programas podem estar sendo processados no mesmo intervalo de tempo. Neste caso, podemos observar o compartilhamento de memria e processador. Com o surgimento das estaes de trabalho (workstation ), tomou-se possvel um sistema multiprogramvel estar dedicado a um nico usurio. Nesse ambiente, o usurio pode estar executando vrias tarefas concorrentemente em um nico terminal. A comunicao com as diversas tarefas feita atravs de softwares que criam ambientes diferenciados para cada tarefa.

24. Sistemas Batch


Os sistemas batch (lote) caracterizam-se por terem seus programas, quando submetidos, armazenados em disco ou fita, onde esperam para ser executados seqencialmente. Esses sistemas, quando bem projetados, podem ser bastante eficientes, devido melhor utilizao do processador. Entretanto, podem oferecer tempos de resposta

Introduo

10

___________________________________________________________________________________________________________________________

longas, em face do processamento puramente seqencial e com uma variao alta dos seus tempos de execuo.

25. Sistemas de Tempo Compartilhado


Os sistemas de tempo compartilhado (time-sharing) permitem a interao dos usurios com o sistema, basicamente atravs de terminais de vdeo e teclado (interao online). Dessa forma, o usurio pode interagir em cada fase do desenvolvimento de suas aplicaes e, se preciso, modific-las imediatamente. Para cada usurio, o sistema operacional aloca uma fatia de tempo (time-slice) do processador. Caso o programa do usurio no esteja concludo nesse intervalo de tempo, ele substituido por um de outro usurio, e fica esperando por uma nova fatia de tempo. No s o processador compartilhado nesse sistema, mas tambm a memria e os perifricos, como discos e impressoras. O sistema cria para o usurio um ambiente de trabalho prprio, dando a impresso de que todo o sistema est dedicado, exclusivamente, a ele.

26. Sistemas de Tempo Real


Os sistemas de tempo real (real-time) so bem semelhantes em implementao aos sistemas de tempo compartilhado. A maior diferena o tempo de resposta exigido na execuo das tarefas. Enquanto em sistemas de tempo compartilhado o tempo de resposta pode variar sem comprometer as aplicaes em execuo, nos sistemas de tempo real os tempos de resposta devem estar dentro de limites rgidos, que devem ser obedecidos. Caso contrrio, podero ocorrer problemas irreparveis. Nos sistemas de tempo real no existe a idia de fatia de tempo, utilizada pelos sistemas de tempo compartilhado. Um programa executa o tempo que for necessrio, ou at que aparea outro mais prioritrio em funo de sua importncia no sistema. Esta importncia ou prioridade de execuo controlada pela prpria aplicao e no pelo sistema operacional, como nos sistemas de tempo compartilhado. Esses sistemas, normalmente, esto presentes em controle de processos, como no monitoramento de refinarias de petrleo, controle de trfego areo, de usinas termoeltricas e nucleares, ou em qualquer aplicao ande a segurana fator fundamental.

SISTEMAS OPERACIONAIS
PROCESSOS CONCORRENTES

1. Concorrncia
O conceito de concorrncia fundamental para compreendermos o funcionamento de um sistema operacional multiprogramvel. A possibilidade de perifricos e dispositivos funcionarem simultaneamente entre si, juntamente com a UCP, permitiu a execuo de tarefas concorrentes, que o princpio bsico para projeto e implementao de sistemas multiprogramveis. Sistemas operacionais podem ser vistos como um conjunto de rotinas que executam concorrentemente de uma forma ordenada. Os sistemas multiprogramveis surgiram de um problema existente nos sistemas monoprogramveis, que a baixa utilizao de recursos do sistema, como processador, memria e perifricos. Nos sistemas monoprogramveis, somente um programa pode estar residente na memria, e a UCP permanece dedicada, exclusivamente, execuo desse programa. Podemos observar que, nesse tipo de sistema, ocorre um desperdcio na utilizao da UCP, pois enquanto o programa est realizando, por exemplo, uma leitura em disco, o processador permanece sem realizar nenhuma tarefa. O tempo de espera consideravelmente grande, j que as operaes com dispositivos de entrada e sada so muito lentas se comparadas com a velocidade da UCP. Outro aspecto que devemos considerar a subutilizao da memria. Um programa que no ocupe totalmente a memria principal, ocasiona a existncia de reas livres, sem utilizao. Nos sistemas multiprogramveis, vrios programas podem estar residentes em memria, concorrendo pela utilizao da UCP. Dessa forma, quando um programa solicita uma operao de entrada/sada, outros programas podero estar disponveis para utilizar o processador. Nesse caso, a UCP permanece menos tempo ociosa e a memria principal utilizada de forma mais eficiente, pois existem vrios programas residentes se revezando na utilizao do processador. A utilizao concorrente da UCP deve ser implementada de maneira que, quando um programa perde o uso do processador e depois retoma para continuar o processamento, seu estado deve ser idntico ao do momento em que foi interrompido. O programa dever continuar sua execuo exatamente na instruo seguinte quela em que havia parado, aparentando ao usurio que nada aconteceu. Em sistemas de tempo compartilhado, existe a impresso de que o computador est inteiramente dedicado ao usurio, ficando todo esse mecanismo transparente para ele. No caso de perfricos, comum termos, em sistemas monoprogramveis, impressoras paradas por um grande perodo de tempo e discos com acesso restrito a

Processos Concorrentes

12

___________________________________________________________________________________________________________________________

um nico usurio. Esses problemas so solucionados em sistemas multiprogramveis, onde possvel compartilhar impressoras entre vrios usurios e realizar acesso concorrente a discos por diversos programas. Nos prximos itens sero mostrados alguns mecanismos e dispositivos que possibilitam a implementao de um sistema de tarefas concorrentes, ou seja, um sistema multiprogramvel.

2. Interrupo
Na execuo de um programa, alguns eventos podem ocorrer durante seu processamento, obrigando a interveno do sistema operacional. Este tipo de interveno chamada interrupo e obriga que o fluxo de execuo do programa seja desviado para uma rotina de tratamento. Os eventos responsveis pela ocorrncia da interrupo podem ser resultado da execuo de um programa, gerados pelo prprio sistema operacional ou por algum dispositivo de hardware. Dependendo do tipo de evento, uma interrupo pode ser classificada como interna ou externa. Uma interrupo interna resultado direto da execuo do prprio programa, ou seja, uma instruo responsvel pela ocorrncia da interrupo. Este tipo tambm chamado, em alguns sistemas, traps (armadilhas) ou excees, e deve ser tratado pelo sistema para que o programa possa continuar sua execuo. Uma interrupo interna ocorre quando, por exemplo, um nmero dividido por zero, ou, em uma operao aritmtica, o resultado exceda o limite de representao dos nmeros (overflow). Uma interrupo externa ou do sistema gerada pelo sistema operacional ou por algum dispositivo e, neste caso, independe do programa que est sendo executado. Este tipo de interrupo ocorre, por exemplo, quando um perifrico avisa UCP que est pronto para transmitir algum dado. Neste caso, a UCP deve interomper o programa que est sendo executado para atender o dispositivo. A diferena fundamental entre as interrupes intema e extema que a primeira gerada por um evento sncrono, enquanto a segunda gerada por eventos assncronos. Um evento sncrono quando resultado direto da execuo do programa (processo) corrente. Tais eventos so previsveis e, por definio, s podem ocorrer um de cada vez. Se um programa que causa esse tipo de evento for reexecutado, por exemplo, um milho de vezes com a mesma entrada de dados, as interrupes ocorrero sempre no mesmo lugar. Um evento dito assncrono quando ocorre independentemente da execuo do programa (processo) corrente. Esses eventos, por serem imprevisveis, podem ocorrer mltiplas vezes simultaneamente, como, por exemplo, no caso de diversos dispositivos de E/S informarem UCP que esto prontos para receber ou transmitir dados. No momento em que a unidade de controle detecta a ocorrncia de algum tipo de interrupo, o programa em execuo interrompido, e o controle desviado para

Processos Concorrentes

13

___________________________________________________________________________________________________________________________

uma rotina responsvel pelo tratamento da interrupo (rotina de tratamento da interrupo). Muitas vezes, aps a execuo dessa rotina, o controle deve voltar ao programa que, anteriormente, estava sendo processado. Para isso acontecer, necessrio que, no momento da interrupo, um conjunto de informaes sobre a execuo do programa (contexto do programa) seja preservado. Essas informaes consistem no contedo de alguns registradores, que devero ser restaurados posteriormente para a continuao do programa. Alguns computadores dispem de uma instruo prpria para esse tipo de operao. No existe apenas um nico tipo de interrupo e sim mltiplos tipos que devem ser atendidos por diversas rotinas de tratamento. No momento que uma interrupo acontece, a UCP deve saber para qual rotina de tratamento dever ser desviado o fluxo de execuo. Para isso, cada tipo de interrupo dever estar associado a uma rotina de tratamento. Essas informaes esto em um estrutura do sistema chamada vetor de interrupo, que contm a relao de todas as rotinas de tratamento existentes, associadas a cada tipo de interrupo. No caso de mltiplas interrupes ocorrerem, o processador deve saber qual interrupo dever atender primeiro. Para isso, as interrupes devero possuir prioridades, em funo da necessidade de atendimento de cada uma. Normalmente, o hardware dos computadores possui um dispositivo denominado controlador de pedidos de interrupo, responsvel por avaliar as interrupes geradas e suas prioridades de atendimento.

3. Operaes de Entrada/Sada
Em sistemas mais primitivos, a comunicao entre a UCP e os perifricos era controlada por um conjunto de instrues especiais, denominadas instrues de E/S, executadas pela prpria UCP. Essas instrues continham detalhes especficos de cada perifrico, como qual trilha e setor de um disco deveria ser lido ou gravado um determinado bloco de dados. Esse tipo de instruo limitava a comunicao do processador a um grupo particular de dispositivos. A implementao de um dispositivo eletrnico chamado controlador ou interface permitiu UCP agir de maneira independente dos dispositivos de E/S. Com esse novo elemento, a UCP no se comunicava mais diretamente com os perifricos, mas, sim, atravs do controlador. Isso simplificou as instrues de E/S, por no ser mais preciso especificar detalhes de operao dos perifricos, tarefa esta realizada pelo controlador. Com a nova implementao, existiam duas maneiras bsicas pela qual o processador controlava as operaes de E/S. Na primeira, a UCP sincronizava-se com o perifrico para o incio da transferncia de dados e, aps iniciada a transferncia, o sistema ficava permanentemente testando o estado do perifrico para saber quando a operao chegaria ao seu final. Este controle, chamado E/S controlada por programa, mantinha a UCP ocupada at o trmino da operao de E/S (busy wait). Como a UCP, geralmente, executa uma instruo muito mais rapidamente que a realizao de uma operao de E/S pelo controlador, existia um desperdcio de tempo de UCP.

Processos Concorrentes

14

___________________________________________________________________________________________________________________________

Outra forma derivada da anterior, porm mais inteligente, era permitir que, aps o incio da transferncia dos dados, a UCP ficasse livre para se ocupar de outras tarefas. Assim, em determinados intervalos de tempo, o sistema operacional deveria realizar um teste para saber do trmino ou no da operao de E/S em cada dispositivo (polling). Esse tipo de operao introduziu um certo grau de paralelismo de operaes, j que um programa poderia ser processado, enquanto outro esperava pelo trmino de uma operao de E/S. O problema dessa implementao que, no caso de existir um grande nmero de perifricos, o sistema tem que frequentemente interromper o processamento dos programas para testar os diversos perifricos, j que difcil determinar o momento exato do trmino das operaes de E/S em andamento. Com a implementao do mecanismo de interrupo no hardware dos computadores, as operaes de E/S puderam ser realizadas de uma forma mais eficiente. Em vez de o sistema periodicamente checar o estado de uma operao pendente, o prprio controlador interrompia a UCP para avisar do trmino da operao. A operao de E/S controlada por interrupo muito mais eficiente que a operao de E/S controlada por programa, j que elimina a necessidade de a UCP esperar pelo trmino da operao, alm de permitir que vrias operaes de E/S sejam executadas simultaneamente. Apesar disso, essa implementao ainda sobrecarregava a UCP, j que toda transferncia de dados entre memria e perifricos exigia a interveno da UCP. A soluo para esse problema foi a implementao, por parte do controlador, de uma tcnica de transferncia de dados denominada DMA (Direct Memory Access). A tcnica de DMA permite que um bloco de dados seja transferido entre memria e perifricos, sem a interveno da UCP, exceto no incio e no final da transferncia. Quando o sistema deseja ler ou gravar um bloco de dados, so passadas da UCP para o controlador informaes como: onde o dado est localizado, qual o dispositivo de E/S envolvido na operao, posio inicial da memria de onde os dados sero lidos ou gravados e o tamanho do bloco de dados. Com estas informaes, o controlador realiza a transferncia entre o perifrico e a memria principal, e a UCP somente interrompida no final da operao. A rea de memria utilizada pelo controlador na tcnica de DMA chamada buffer, sendo reservada exclusivamente para este propsito. No momento em que a transferncia de DMA realizada, o controlador deve assumir, momentaneamente, o controle do barramento. Como a utilizao do barramento exclusiva de um dispositivo, a UCP deve suspender o acesso ao bus, temporariamente, durante a operao de transferncia. Este procedimento no gera uma interrupo, e a UCP pode realizar tarefas, desde que sem a utilizao do barramento, como, por exemplo, um acesso memria cache. A extenso do conceito do DMA permitiu o surgimento dos canais de E/S, ou somente canais. O canal de E/S um processador com capacidade de executar programas de E/S, permitindo o controle total sobre operaes de entrada e sada. As instrues de E/S so armazenadas na memria principal pela UCP, porm, o canal responsvel pela sua execuo. Assim, a UCP realiza uma operao de E/S, instruindo o canal para executar um programa localizado na memria (programa de canal). Este programa especifica os dispositivos para transferncia, reas de memria para

Processos Concorrentes

15

___________________________________________________________________________________________________________________________

armazenamento (buffers) e atitudes a serem tomadas em caso de erros. O canal de E/S realiza a transferncia e, ao final, gera uma interrupo na UCP, avisando do trmino da operao. Um canal de E/S pode controlar mltiplos dispositivos atravs de diversos controladores. Cada dispositivo, ou conjunto de dispositivos, manipulado por um nico controlador. O canal atua como um elo de ligao entre a UCP e o controlador. A evoluo do canal permitiu que este possusse sua prpria memria, eliminando a necessidade de os programas de E/S serem carregados para a memria principal. Com essa nova arquitetura, vrias funes de E/S puderam ser controladas com mnima interveno da UCP. Este ltimo estgio do canal tambm denominado processador de E/S, embora seja comum encontrarmos os dois termos empregados indistintamente.

4. Buffering
A tcnica de buffering consiste na utilizao de uma rea de memria (buffer) para a transferncia de dados entre os perifricos e a memria principal. O buffering veio permitir que, quando um dado fosse transferido para o buffer aps uma operao de leitura, o dispositivo de entrada pudesse iniciar uma nova leitura. Neste caso, enquanto a UCP manipula o dado localizado no buffer, o dispositivo realiza outra operao de leitura no mesmo instante. O mesmo raciocnio pode ser aplicado para operaes de gravao, onde a UCP coloca o dado no buffer para um dispositivo de sada manipular. O buffering outra implementao para minimizar o problema da disparidade da velocidade de processamento existente entre a UCP e os dispositivos de E/S. O objetivo do buffering manter, na maior parte do tempo, UCP e dispositivos dc E/S ocupados. A unidade de transferencia usada no mecanismo de buffering o registro. O tamanho do registro pode ser especificado em funo da natureza do dispositivo (como uma linha gerada por uma impressora ou um caractere de um teclado) ou da aplicao (como um registro lgico definido em um arquivo). O buffer deve possuir a capacidade de armazenar diversos registros, de forma a permitir que existam dados lidos no buffer, mas ainda no processados (operao de leitura), ou processados, mas ainda no gravados (operao de gravao). Desta forma, o dispositivo de entrada poder ler diversos registros antes que a UCP os processe, ou a UCP poder processar diversos registros antes de o dispositivo de sada realizar a gravao. Isso extremamente eficiente, pois, dessa maneira, possvel compatibilizar a diferena existente entre o tempo que a UCP processa os dados e o tempo que o dispositivo de E/S realiza as operaes de leitura e gravao.

Processos Concorrentes

16

___________________________________________________________________________________________________________________________

5. Spooling
A tcnica de spooling (simultaneous peripheral operation on-line) foi introduzida no final dos anos 50 para aumentar a produtividade e a eficincia dos sistemas operacionais. Naquela poca, os programas dos usurios eram submetidos um a um para processamento pelo operador. Como a velocidade de operao dos dispositivos de entrada/sada muito lenta se comparada ao do processador, era comum que a UCP ficasse ociosa espera de programas e dados de entrada ou pelo trmino de uma impresso. A soluo foi armazenar os vrios programas e seus dados, tambm chamados de jobs, em uma fita magntica e, em seguida, submet-los a processamento. Desta forma, a UCP poderia processar sequencialmente cada job, diminuindo o tempo de execuo dos jobs e o tempo de transio entre eles. Da mesma forma, em vez de um job gravar suas sadas diretamente na impressora, poderia direcion-las para uma outra fita, que depois seria impressa integralmente. Esta forma de processamento chamada spooling e foi a base dos sistemas batch. A utilizao de fitas magnticas obrigava o processamento a ser estritamente sequencial, ou seja, o primeiro job a ser gravado na fita era o primeiro a ser processado. Assim, se um job que levasse vrias horas antecedesse pequenos jobs, seus tempos de resposta ficariam seriamente comprometidos. Com o surgimento de dispositivos de acesso direto, como discos, foi possvel tornar o spooling muito mais eficiente e, principalmente, permitir a eliminao do processamento estritamente sequencial, com a atribuio de prioridades aos jobs. A tcnica de buffering, como j apresentamos, permite que um job utilize um buffer concorrentemente com um dispositivo de entrada/sada. O spooling, basicamente, utiliza o disco como um grande buffer, permitindo que dados sejam lidos e gravados em disco, enquanto outros jobs so processados. Um exemplo dessa tcnica est presente quando impressoras de linha so utilizadas. No momento em que um comando de impresso executado por um programa, as informaes que sero impressas so gravadas em um arquivo em disco (arquivo de spool), para ser impresso posteriormente pelo sistema. Dessa forma, situaes como a de um programa reservar a impressora, imprimir uma linha e ficar horas para continuar a impresso no acontecero. Essa implementao permite maior grau de compartilhamento na utilizao de impressoras. Atualmente, a tcnica de spooling implementada na maioria dos sistemas operacionais, fazendo com que tanto a UCP quanto os dispositivos de entrada/sada sejam aproveitados de forma mais eficiente.

Processos Concorrentes

17

___________________________________________________________________________________________________________________________

6. Reentrncia
comum, em sistemas multiprogramveis, vrios usurios executarem os mesmos utilitrios do sistema operacional simultaneamente, como, por exemplo, um editor de textos. Se cada usurio que utilizasse o editor trouxesse o cdigo do utilitrio para a memria, haveria diversas cpias de um mesmo programa na memria principal, o que ocasionaria um desperdcio de espao. Reentrncia a capacidade de um cdigo de programa (cdigo reentrante) poder ser compartilhado por diversos usurios, exigindo que apenas uma cpia do programa esteja na memria. Uma caracterstica da reentrncia que o cdigo no pode ser modificado por nenhum usurio no momento em que est sendo executado. A reentrncia permite que cada usurio possa estar em um ponto diferente do cdigo reentrante, manipulando dados prprios, exclusivos de cada usurio. Os utilitrios do sistema, como editores de texto, compiladores e linkers, so exemplos de cdigo reentrante, que proporciona grande economia de espao em memria e aumento na performance do sistema.

7. Processo
O conceito de processo um dos mais importantes em sistemas operacionais. O processo pode ser entendido como um programa em execuo, s que seu conceito mais abrangente. Este conceito toma-se mais claro, quando pensamos de que forma os sistemas multiprogramveis atendem os diversos usurios e mantm informaes a respeito dos vrios programas que esto sendo executados concorrentemente. Como sabemos, um sistema multiprogramvel simula um ambiente de monoprogramao para cada usurio, isto , cada usurio do sistema tem a impresso de possuir exclusivamente o processador para ele. Nesses sistemas, o processador executa a tarefa de um usurio durante um intervalo de tempo e, no instante seguinte, est processando outra tarefa. A cada troca, necessrio que o sistema preserve todas as informaes da tarefa que foi interrompida, para quando voltar a ser executada no lhe faltar nenhuma informao para a continuao do processamento. A estrutura responsvel pela manuteno de todas as informaes necessrias execuo de um programa, como contedo de registradores e espao de memria, chama-se processo. O conceito de processo pode ser definido como sendo o ambiente onde um programa executado. Esse ambiente formado por elementos de hardware (contexto de hardware) e elementos de software (contexto de software), onde esto todas as informaes necessrias execuo do programa. O contexto de hardware constitu-se, basicamente, no contedo de registradores e na rea de memria onde o programa est sendo executado. Quando um processo est executando, o contexto de hardware armazenado nos registradores do processador.

Processos Concorrentes

18

___________________________________________________________________________________________________________________________

No momento em que o processo perde a utilizao da UCP, o sistema salva as informaes. O contexto de hardware fundamental para que os processos se revezem na utilizao do processador, podendo ser interrompidos e, posteriormente, restaurados como se nada tivesse acontecido. A troca de um processo por outro na UCP, realizada pelo sistema operacional, denominada mudana de contexto (context switching). A mudana de contexto consiste em salvar o contedo dos registradores da UCP e carreg-los com os valores referentes ao do processo que esteja ganhando a utilizao do processador. Essa operao resume-se, ento, em substituir o contexto de hardware de um processo pelo de outro (Fig. 1). Processo A
Executando Salva Registradores Carrega Registradores Executando Salva Registradores Carrega Registradores Executando

Processo B

Fig. 1 - Mudana de Contexto O contexto de software especifica caractersticas do processo que vo influir na execuo de um programa, como o nmero mximo de arquivos abertos simultaneamente ou o tamanho do buffer para operaes de E/S. Essas caractersticas so determinadas no momento da criao do processo. Um mesmo programa pode produzir resultados diferentes, em funo do processo no qual ele executado. Isso pode ocorrer devido falta de algum elemento de hardware ou software. Por exemplo, se um programa necessitar abrir cinco arquivos simultaneamente, e o processo onde ser executado s permitir que se abram quatro, o programa ser interrompido durante a execuo. O sistema operacional materializa o processo atravs de uma estrutura chamada bloco de controle do processo (process control block - PCB). A partir do PCB, o sistema operacional mantm todas as informaes sobre o processo, como seu nome, prioridade para execuo, estado corrente, recursos alocados por ele e informaes sobre o programa em execuo, ou seja, os contextos de hardware e de software. O sistema operacional controla os processos atravs de rotinas do sistema, que realizam operaes, como criao, eliminao, sincronizao, suspenso de processos, dentre outras.

Processos Concorrentes

19

___________________________________________________________________________________________________________________________

8. Estados do Processo
Um processo, em um sistema multiprogramvel, no executado todo o tempo pelo processador. Durante sua existncia, ele passa por uma srie de estados. Basicamente, existem trs estados em que o processo pode se encontrar: Execuo (running) Um processo dito no estado de execuo quando est sendo processado pela UCP. Em sistemas com apenas um processador, somente um processo pode estar sendo executado num dada instante. Pronto (ready) Um processo est no estado de pronto quando apenas aguarda uma oportunidade para executar, ou seja, aguarda a UCP. O sistema operacional responsvel por determinar a ordem, pela qual os processos em estado de pronto devem ganhar a UCP. Espera (wait) Um processo est no estado de espera quando aguarda algum evento externo para poder prosseguir. Como exemplo, podemos citar o trmino de uma operao de entrada/sada ou a espera de uma determinada data e/ou hora para poder continuar sua execuo. Em alguns sistemas, o estado de espera pode possuir uma subdiviso, em funo do tipo de evento que o processo aguarda. Quando um processo espera por um recurso do sistema que no se encontra disponvel, dito que o processo est no estado de bloqueado (blocked). A diferena bsica entre os estados de bloqueado e o de espera que um processo em estado de bloqueado espera ser autorizado a utilizar um recurso, enquanto o processo em estado de espera aguarda pela concluso de uma operao em um recurso que j foi garantido. Um processo em estado de pronto ou de espera pode no se encontrar, momentaneamente, na memria principal, ou seja, pode estar armazenado em memria secundria (outswapped). Ele sofre esse tipo de operao quando no existe espao suficiente para todos os processos na memria principal. O sistema operacional gerncia os processos atravs de listas encadeadas, onde cada PCB tem um ponteiro para seu sucessor. Como podem existir vrios processos nos estados de pronto ou de espera, o sistema implementa listas, onde os processos aguardam seu processamento (listas de processos no estado de pronto) ou esperam por algum evento (listas de processos no estado de espera).

9. Mudanas de Estado do Processo


Um processo muda de estado diversas vezes, durante seu processamento, em funo de eventos originados por ele prprio (eventos voluntrios) ou pelo sistema operacional (eventos involuntrios).

Processos Concorrentes

20

___________________________________________________________________________________________________________________________

Como eventos originados pelo prprio processo, podemos exemplificar uma operao de entrada/sada ou qualquer chamada a uma rotina do sistema, requisitando algum tipo de servio. Eventos que tenham como origem o sistema operacional tm a inteno de permitir maior compartilhamento dos recursos do sistema. Por exemplo, se um programa est em looping, o sistema deve intervir para que o processador no fique dedicado eternamente ao processo onde o programa est sendo executado. Basicamente, existem cinco mudanas de estado que podem ocorrer a um processo:

Execuo

b d

Espera

Pronto

c Fig. 2 - Mudanas de Estado do Processo Pronto/Execuo Quando um processo criado, o sistema o coloca em uma lista de processos no estado de pronto, onde aguarda uma oportunidade para ser executado (Fig. 2a). Cada sistema operacional tem seus prprios critrios e algoritmos para a escolha da ordem em que os processos sero executados (escalonamento). Execuo/Espera Um processo em execuo passa para o estado de espera por eventos gerados pelo prprio processo, como, por exemplo, uma operao de entrada/sada (Fig. 2b). Nesse caso, o processo ficar neste estado esperando pela concluso do evento solicitado. Espera/Pronto Um processo no estado de espera sempre ter de passar pelo estado de pronto antes de poder ser novamente selecionado para execuo. No existe a mudana do estado de espera para o estado de execuo diretamente (Fig. 2c). Execuo/Pronto Um processo em execuo passa para o estado de pronto por eventos gerados pelo sistema, como, por exemplo, o fim da fatia de tempo que o processo possui para executar (Fig. 2d). Nesse caso, o processo volta para a fila de pronto, onde aguarda por um nova fatia de tempo.

Processos Concorrentes

21

___________________________________________________________________________________________________________________________

10. Estados de Execuo


Um sistema operacional possui, basicamente, dois estados de execuo: usurio e supervisor. Um processo em estado de execuo usurio acessa apenas cdigo e dados do prprio processo. No momento em que um processo necessita executar algum cdigo do sistema, como em uma rotina de entrada/sada, ele deve estar no estado de execuo supervisor. Estes dois estados de execuo permitem ao sistema operacional controlar todos os seus recursos. Um processo somente passar do estado usurio para o estado supervisor com a autorizao do sistema operacional, que, desta forma, garante a sua integridade. Existem sistemas operacionais que implementam at quatro estados de execuo, a fim de separar suas diversas tarefas em estados de execuo diferentes.

11. Tipos de Processos


Os processos podem ser classificados de acordo com o tipo de processamento que realizam. Sob esse aspecto, pode haver dois tipos de processos: CPU-bound Um processo dito CPU-bound (ligado UCP) quando passa a maior parte do tempo no estado de execuo, ou seja, utilizando o processador. Esse tipo de processo realiza poucas operaes de entrada/sada e encontrado em aplicaes matemticas ou cientficas, que efetuam muitos clculos e poucas operaes de leitura/gravao. I/O-bound Um processo chamado I/O-bound (ligado E/S) quando passa a maior parte do tempo no estado de espera, pois realiza um elevado nmero de operaes de entrada/sada. Esse tipo de processo encontrado em aplicaes comerciais, que se baseiam em leitura, processamento e gravao. Os processos interativos tambm so bons exemplos de processos I/O-bound, pela forma de comunicao entre o usurio e o sistema, normalmente lenta, devido utilizao de terminais.

SISTEMAS OPERACIONAIS
SINCRONIZAO E COMUNICAO DE PROCESSOS CONCORRENTES

1. Introduo
comum processos que trabalham juntos (concorrentes) compartilharem recursos do sistema, como arquivos, registros, dispositivos e reas de memria. Na verdade, no importa quais recursos so compartilhados, pois os problemas decorrentes dessa comunicao so os mesmos [Tanenbaum (1992)], [Deitel (1990)], [Peterson (1983)], [Shay (1996)]. De maneira geral, o compartilhamento de recursos entre processos pode gerar situaes indesejveis, que podem at comprometer o sistema. Vejamos um exemplo onde dois processos concorrentes trocam informaes atravs de operaes de gravao e leitura em um buffer. Um processo s poder gravar dados no buffer caso ele no esteja cheio. Da mesma forma, um processo s poder ler dados armazenados do buffer se existir algum dado para ser lido. Em ambos os casos, os processos devero aguardar at que o buffer esteja pronto para as operaes de gravao ou de leitura (Fig. 1).
Sincronizao Processo Gravador Dados Dados Processo Leitor

Buffer

Fig. 1 - Troca de Informaces entre Processos Os mecanismos que garantem a comunicao entre processos concorrentes e o acesso a recursos compartilhados, de forma organizada, so chamados mecanismos de sincronizao. No projeto de sistemas operacionais multiprogramveis, fundamental a implementao de mecanismos de sincronizao que garantam sua integridade e confiabilidade.

2 Especificao de Concorrncia em Programas


Existem vrias notaes utilizadas para especificar as partes de um programa que devem ser executadas concorrentemente. As tcnicas mais recentes tentam expressar a concorrncia nos programas de uma forma mais estruturada e clara de se identificar. Uma das implementaes mais simples de expressar concorrncia em um programa a utilizao dos comandos PARBEGIN e PAREND [Dijkstra (1965)].

Sincronizao e Comunicao de Processos Concorrentes

23

___________________________________________________________________________________________________________________________

Outra caracterstica importante dessa representao, alm de sua simplicidade, a clareza de sua sintaxe. PARBEGIN Comando 1; Comando 2 ; ... Comando n; PAREND O comando PARBEGIN especifica que a seqncia de comandos seja executada concorrentemente numa ordem imprevisvel, atravs da criao de um subprocesso (Processo_1, ..., Processo_n) para cada comando (Comando1, ..., Comando_n). O comando PAREND define um ponto de sincronizao, onde o processamento s continuar quando todos os subprocessos j tiverem terminado suas execues. Os comandos delimitados pelos comandos PARBEGIN e PAREND podem ser comandos simples, como atribuies ou chamadas a procedimentos (Fig. 2).

Processo Principal

Processo 1

Processo 2

Processo 3

Processo n

Processo Principal

Fig. 2 - Especificao da Concorrncia

3 Problemas da Comunicao entre Processos


Para compreendermos melhor como a sincronizao entre processos fundamental para a confiabilidade dos sistemas multiprogramveis, vejamos alguns problemas aplicados a duas situaes prticas. A primeira situao envolve o compartilhamento de um arquivo em disco e a outra, de uma varivel em memria. Suponha um arquivo de contas bancrias (Arq_Contas), onde cada cliente tem seu saldo controlado. O programa abaixo que atualiza o saldo de um cliente, aps um

Sincronizao e Comunicao de Processos Concorrentes

24

___________________________________________________________________________________________________________________________

lanamento, bastante simples. O programa l o registro do cliente no arquivo (Reg_Cliente), l o valor a ser depositado ou retirado (Valor_Dep_Ret) e, em seguida, atualiza o saldo no arquivo de contas. READ (Arq_Contas, Reg_Cliente) ; READLN (Valor_Dep_Ret); Reg_C1iente.Saldo := Reg_C1iente.Saldo+Valor_Dep_Ret; WRITE (Arq_Contas, Reg_Cliente); Agora, imaginem dois caixas diferentes atualizando o saldo de um mesmo cliente simultaneamente. O primeiro caixa l o registro do cliente e soma ao campo Saldo o valor do lanamento. Antes de gravar o novo saldo no arquivo, outro caixa l o registro do mesmo cliente, que est sendo atualizado, para realizar outro lanamento. Independentemente de qual dos caixas atualize primeiro o saldo no arquivo, o dado gravado estar inconsistente. Vejamos outro exemplo, ainda mais simples, onde o problema de acesso concorrente pode levar a resultados inesperados. Suponha que dois processos (A e B) estejam executando um comando de atribuio, onde o processo A some 1 varivel X, e o processo B diminua 1 da mesma varivel que est sendo compartilhada. Inicialmente, vamos considerar que a varivel X possua o valor 2. PROCESSO A X := X + 1; PROCESSO B X := X - 1;

Seria razovel pensar que o resultado final de X, aps a execuo dos processos A e B, continuasse 2, porm, isto nem sempre ser verdade. Os comandos de atribuio, em uma linguagem de alto nvel, podem ser decompostos em comandos mais elementares, como visto abaixo: PROCESSO A LOAD x,Ra ADD 1,Ra STORE Ra,x PROCESSO B LOAD x,Rb SUB 1,Rb STORE Rb,x

Agora, imaginemos que o processo A carregue o valor de X no registrador Ra, some 1 a ele e, no momento em que vai armazenar o valor em X, seja interrompido. Nesse instante, o processo B inicia sua execuo, carregando o valor de X em Rb e subtraindo 1 dele. O processo A volta a ser processado e atribui o valor 3 a X, terminando, assim, sua execuo. Finalmente, o processo B processado e atribui o valor 1 a X, sobrepondo o valor anterior. Analisando os dois exemplos, conclumos que em qualquer situao, onde dois ou mais processos tenham acesso a um mesmo recurso compartilhado, devam existir mecanismos de controle que evitem esses tipos de problemas.

Sincronizao e Comunicao de Processos Concorrentes

25

___________________________________________________________________________________________________________________________

4 Soluo para os Problemas de Comunicao


A soluo mais simples, para evitar os problemas de comunicao apresentados no item anterior, impedir que dois ou mais processos tenham acesso a um mesmo recurso no mesmo instante de tempo. Para isso, enquanto um processo estiver acessando determinado recurso, todos os outros, que queiram ter acesso ao mesmo recurso, devero esperar at que o primeiro processo termine o acesso. Essa idia de exclusividade de acesso chamada excluso mtua (mutual exclusion). A excluso mtua deve apenas afetar os processos concorrentes quando um deles estiver fazendo acesso ao recurso compartilhado. A parte do programa onde feito o acesso ao recurso compartilhado denominada regio crtica. Se pudermos evitar que dois processos entrem em suas regies crticas ao mesmo tempo, ou seja, se conseguirmos a execuo mutuamente exclusiva das regies crticas, evitaremos os problemas de comunicao. Os mecanismos que implementam a excluso mtua utilizam um protocolo de acesso regio crtica. Toda vez que um processo for executar sua regio crtica, ele obrigatoriamente executar, antes, um protocolo de entrada na regio crtica. Da mesma forma, quando sair, o processo deve executar um protocolo de sada da regio crtica. BEGIN ... Entra_Regio_Crtica ; (* Protocolo de Entrada *) Regio Crtica; Sai_Regio_Crtica; (* Protocolo de Sada *) ... END Utilizando o exemplo apresentado no item 3, vejamos a aplicao dos protocolos para dois processos (A e B), manipulando o arquivo de contas. Sempre que o processo A for atualizar o saldo de um cliente, antes de ler o registro, ele dever garantir o acesso exclusivo atravs do protocolo de entrada na sua regio crtica. O protocolo indica se j existe ou no algum processo acessando o registro. Caso o processo A esteja em sua regio crtica, e o processo B tente acessar o mesmo registro, o protocolo de entrada faz com que ele fique aguardando, at que o processo A termine o acesso ao recurso. Quando o processo A termina a execuo de sua regio crtica, deve sinalizar, aos outros processos concorrentes, que terminou o acesso ao recurso. Isso realizado atravs do protocolo de sada, que informa aos outros processos que podem tentar acessar o recurso com sucesso.

Sincronizao e Comunicao de Processos Concorrentes

26

___________________________________________________________________________________________________________________________

5. Sincronizao de Processos Concorrentes


Existem trs fatores fundamentais na sincronizao de processos concorrentes que devero ser atendidos: o nmero de processadores e o tempo de execuo dos processos concorrentes devem ser irrelevantes; um processo, fora de sua regio crtica, no pode impedir que outros processos entrem em suas prprias regies crticas; um processo no pode permanecer indefinidamente esperando para entrar em sua regio crtica. [Dijkstra (1965b)] foi quem primeiro apresentou uma soluo para o problema da excluso mtua entre n processos. Uma soluo mais simples foi dada tambm por [Peterson (1981)]. Ambas as solues geram o problema do starvation, e os algoritmos que se seguiram tinham o objetivo de diminuir o tempo de espera. Dessas solues destacamos a de [McGuire (1972)] e o algoritmo de [Lamport (1974)] (Bakery Algorithm). Apesar de as solues at ento apresentadas implementarem a excluso mtua, todas tinham a deficincia da espera ocupada (busy wait). Na espera ocupada, toda vez que um processo tenta entrar em sua regio crtica e impedido, por j existir outro processo acessando o recurso, ele fica em looping, testando uma condio, at que lhe seja permitido o acesso. Dessa forma, o processo bloqueado consome tempo do processador desnecessariamente. A soluo para o problema da espera ocupada foi a introduo de comandos (primitivas) que permitissem que um processo, quando no pudesse entrar em sua regio crtica, fosse colocado no estado de espera, at que outro processo o liberasse. Esse mecanismo passou a ser adotado nas solues que se seguiram. As solues, por mais simples que parecessem, no permitiam facilmente sua aplicao em problemas mais complexos. Fatores como legibilidade, simplicidade e correo dos programas concorrentes ganharam grande importncia. Para atender essas necessidades, [Dijkstra (1965)] introduziu uma nova ferramenta de sincronizao (semforo) e, posteriormente, [Hansen (1973)] e [Hoare (1974)] desenvolveram uma estrutura de sincronizao de alto nvel (monitor).

6. Semforos
Uma soluo genrica para o problema da excluso mtua no fcil para problemas complexos. Para superar esta dificuldade uma ferramenta de sincronizao foi proposta por [Dijkstra (1965)], como uma soluo para os problemas de sincronizao entre processos concorrentes. Um semforo S uma varivel inteira que s pode ser acessada pela inicializao e por duas operaes atomicas: wait e signal. A definio clssica do wait e signal so:

Sincronizao e Comunicao de Processos Concorrentes wait (S): while S <= 0 do skip; S := S - 1; signal (S): S := S + 1;

27

___________________________________________________________________________________________________________________________

Modificaes do valor inteiro do semforo nas operaes wait e signal so executados indivisivelmente. Isto , quando um processo modifica o valor do semforo, nenhum outro processo pode simultaneamente modificar o mesmo valor do semforo. No caso do wait(S), o teste do valor inteiro do S (S <= 0), e sua possvel modificao (S := S 1) precisa ser executado sem interrupo.

7. Usos dos Semforos


Semforos podem ser usados para manipular a regio crtica de n processos concorrentes. Os n processos partilham um semforo comum, mutex, inicializado com 1. Cada processo Pi organizado como segue: repeat wait (mutex); regio crtica; signal (mutex); restante da seo until false; Semforos podem tambm serem usados na resoluo de vrios problemas de sincronizao. Por exemplo, considere dois processos concorrentes executando: P1 com um comando S1, e P2 com um comando s2. Suponha que nos queremos que S2 seja executado somente depois que S1 tenha completado. Este esquema pode ser prontamente implementado permitindo P1 e P2 partilharem um semforo comum synch, inicializado com 0, e inserindo os comandos: No processo P1: S1; signal (synch);

No processo P2: wait (synch); S2; Desde que synch inicializado com 0, P2 executar S2 somente depois P1 tenha executado signal (synch), o que s acontece depois que S1 executa.

Sincronizao e Comunicao de Processos Concorrentes

28

___________________________________________________________________________________________________________________________

As operaes signal e wait, aplicadas a um semforo S, podem ser representadas pelas definies a seguir, numa sintaxe Pascal no convencional:

TYPE Semforo = RECORD Valor : INTEGER; Fila_Espera : lista; (* Lista de processos pendentes *) END; PROCEDURE wait (VAR S : Semforo); BEGIN IF (S = 0) THEN Coloca_Processo_na_Fila_de_Espera ELSE S := S + 1; END; PROCEDURE signal (VAR S : Semforo); BEGIN S := S + 1; IF (Tem _Processo_Esperando) THEN Tira_da_Fila_de_Espera; END;

8. Monitores
O uso de semforos exige do programador muito cuidado, pois qualquer engano pode levar a problemas de sincronizao imprevisveis e difceis de se reproduzir, devido execuo concorrente dos processos. Monitores so mecanismos de sincronizao de alto nvel, propostos por [Hansen (1973)] e [Hoare (1974)], que tentam tornar mais fcil o desenvolvimento e a correo de programas concorrentes. O monitor um conjunto de procedimentos, variveis e estrutura de dados definido dentro de um mdulo. Sua caracterstica mais importante a implementao automtica da excluso mtua entre seus procedimentos, ou seja, somente um processo pode estar executando um dos procedimentos do monitor em um determinado instante. Toda vez que algum processo chama um desses procedimentos, o monitor verifica se j existe outro processo executando algum procedimento do monitor. Caso exista, o processo ficar aguardando a sua vez at que tenha permisso para executar. As variveis globais ao monitor so visveis apenas a ele e a seus procedimentos. O bloco de comandos do monitor responsvel por inicializar essas variveis, sendo executado apenas uma vez, na ativao do programa onde est declarado o monitor. A estrutura de um monitor mostrada a seguir, utilizando uma sintaxe Pascal no convencional:

Sincronizao e Comunicao de Processos Concorrentes

29

___________________________________________________________________________________________________________________________

MONITOR Excluso Mtua; (* Declarao das variaveis do monitor *) PROCEDURE Regio_Crtica_1; BEGIN ... END; PROCEDURE Regio_Crtica_2; BEGIN ... END; BEGIN (* Bloco de comandos do monitor *) END; Toda a implementao da excluso mtua nos monitores realizada pelo compilador, e no mais pelo programador, como no caso do uso de semforos. Para isso, basta colocar todas as regies crticas em forma de procedimentos no monitor e o compilador se encarregar de garantir a excluso mtua desses procedimentos. Assim, o desenvolvimento de programas concorrentes fica mais fcil, e as chances de erro so menores. O monitor no pode ser executado como uma sub-rotina comum. A comunicao do processo com o monitor feita unicamente atravs de chamadas a seus procedimentos e dos parmetros passados para eles. Vejamos um exemplo bastante simples, onde dois processos somam e diminuem o valor 1, concorrentemente, da varivel compartilhada X. PROGRAM Exemplo; MONITOR Regio_Crtica; VAR X : INTEGER; PROCEDURE Soma; BEGIN X := X + 1; END;

Sincronizao e Comunicao de Processos Concorrentes PROCEDURE Diminui ; BEGIN X := X - 1; END; BEGIN X := 0; END; BEGIN PARBEGIN Regio_Crtica .Soma; Regio_Crtica.Diminui; PAREND; END.

30

___________________________________________________________________________________________________________________________

A inicializao da varivel compartilhada X com o valor zero s acontecer uma vez, no momento da primeira ativao do monitor Regio_Crtica. Nesse exemplo, podemos garantir que o valor de X ao final da execuo concorrente dos procedimentos de soma e diminuio ser igual a zero. Isso porque, como os procedimentos esto definidos dentro do monitor, estar garantida a execuo mutuamente exclusiva entre eles.

9. Troca de Mensagens
Troca de mensagens um mecanismo de comunicao e sincronizao entre processos, implementado pelo sistema operacional atravs de duas rotinas do sistema: SEND e RECEIVE. A rotina SEND responsvel por enviar uma mensagem para um processo receptor, e a rotina RECEIVE por receber uma mensagem de um processo transmissor (Fig. 3). As rotinas podem ser representadas atravs dos procedimentos a seguir: SEND (Receptor, Mensagem); RECEIVE (Transmissor, Mensagem) ; Os procedimentos SEND e RECEIVE, mesmo no sendo suas execues mutuamente exclusivas, permitem tanto a comunicao entre processos como a sincronizao entre eles. A comunicao ocorre porque um processo, ao receber uma mensagem, obtm dados enviados de outro processo. A sincronizao obtida porque uma mensagem somente pode ser lida aps ter sido enviada, restringindo, dessa forma, a ordem na qual os dois eventos devem ocorrer.

Sincronizao e Comunicao de Processos Concorrentes

31

___________________________________________________________________________________________________________________________

Processo Transmissor

Processo Receptor

SEND Fig. 3 - Troca de Mensagens

RECEIVE

A comunicao por troa de mensagens possui muitos problemas, como, por exemplo, a perda de uma mensagem. Para garantir que uma mensagem no se perca, o processo receptor, ao receb-la, deve enviar ao processo transmissor uma mensagem de recebimento (acknowledgement - ACK). Caso o transmissor no receba um ACK em um determinado tempo, ele retransmite a mensagem. A comunicao entre processos pode ser feita diretamente, bastando que o processo que deseja enviar ou receber uma mensagem enderece explicitamente o nome do processo receptor ou transmissor. Uma caracterstica do endereamento direto que este s permite a comunicao entre dois processos. Seu maior problema , justamente, a necessidade da especificao do nome dos processos envolvidos na troca de mensagens, o que pode restringir a utilizao dessa forma de comunicao. O endereamento indireto utiliza uma rea compartilhada, onde as mensagens podem ser colocadas pelo processo transmissor e retiradas pelo receptor. Esse tipo de buffer conhecido como mailbox e suas caractersticas, como, por exemplo, o nmero de mensagens que pode armazenar, so especificadas no momento de sua criao. No endereamento indireto, vrios processos podem estar associados a mailbox, e os parmetros dos procedimentos SEND e RECEIVE passam a ser nomes de mailboxes, e no mais nomes de processos (Fig. 4).

Processo A

Processo B

Mailbox

Fig. 4 - Endereamento Indireto Independentemente da forma de endereamento entre os processos, a comunicao entre eles pode bloquear ou no os processos envolvidos. Basicamente, existem duas formas de comunicao entre processos atravs da troca de mensagens: comunicao sncrona e comunicao assncrona. A comunicao dita sncrona, quando um processo envia uma mensagem (SEND) e fica esperando, at que o processo receptor leia a mensagem, ou quando um processo

Sincronizao e Comunicao de Processos Concorrentes

32

___________________________________________________________________________________________________________________________

tenta receber uma mensagem (RECEIVE) e permanece esperando, at que o processo transmissor grave alguma mensagem. Esse tipo de comunicao dispensa a necessidade de buffers; porm, a execuo dos processos fica limitada ao tempo de processamento das mensagens. Esse mecanismo tambm conhecido como rendezvous, e o programa Produtor_Consumidor ilustra este tipo de comunicao. Na comunicao assncrona, nem o receptor permanece aguardando o envio de uma mensagem, nem o transmissor o seu recebimento. Nesse caso, alm da necessidade de buffers para armazenar as mensagens, deve haver outros mecanismos de sincronizao que permitam ao processo identificar se uma mensagem j foi enviada ou recebida. A grande vantagem da comunicao assncrona o maior paralelismo na execuo dos processos, comparado comunicao sncrona, onde a necessidade de espera dos processos reduz o grau de concorrncia. PROGRAM Produtor_Consumidor_4; PROCEDURE Produtor; VAR Msg: Tipo_Msg; BEGIN REPEAT Produz_Mensagem (MSg); SEND (Msg); UNTIL False; END; PROCEDURE Consumidor; VAR Msg: Tipo_Msg; BEGIN REPEAT RECEIVE (Msg); Consome_Mensagem (Msg); UNTIL False; END; BEGIN PARBEGIN Produtor; Consumidor; PAREND; END.

5.8 Deadlock
Um processo dito em deadlock, quando est esperando por um evento que nunca ocorrer. Essa situao conseqncia, na maioria das vezes, do compartilhamento de recursos do sistema entre vrios processos, sendo que cada processo deve ter acesso ao recurso de forma exclusiva (excluso mtua).

Sincronizao e Comunicao de Processos Concorrentes

33

___________________________________________________________________________________________________________________________

Na Fig. 5 ilustrado graficamente o problema do deadlock entre os processos PA e PB, quando utilizando os recursos R1 e R2. Inicialmente, PA obtm acesso exclusivo a R1, da mesma forma que PB obtm a R2. Durante o processamento, PA necessita de R2 para poder prosseguir. Como R2 est dedicado a PB, PA ficar aguardando que o recurso seja liberado. Em seguida, PB necessita de R1 e, da mesma forma, ficar aguardando at que PA libere o recurso. Coma cada processo est esperando que o outro libere o recurso alocado, temos o que chamamos de espera circular (circular wait), caracterizando uma situao de deadlock. Isso pode acontecer com qualquer recurso que necessite de acesso exclusivo, como dispositivos, arquivos e registros.

Processo A Solicita o Recurso 2

Processo A

Recurso 1 Alocaado ao Processo A

Recurso 2

Recurso 1

Recurso 2 Alocado ao Processo B

Processo B

Processo B Solicita o Recurso 1

Fig. 5 - Espera Circular

SISTEMAS OPERACIONAIS
ESCALONAMENTO DE PROCESSOS CONCORRENTES

1. Introduo
O conceito bsico que gerou a implementao dos sistemas multiprogramveis foi a possibilidade de a UCP ser compartilhada entre diversos processos. Para isso, todo sistema multiprogramvel possui um critrio para determinar qual a ordem na escolha dos processos para execuo, dentre os vrios que concorrem pela utilizao do processador. Esse procedimento de seleo uma das principais funes realizadas por um sistema operacional, e conhecido como escalonamento (scheduling). Os principais objetivos do escalonamento so, basicamente, manter a UCP ocupada a maior parte do tempo, balancear a utilizao do processador entre os diversos processos, maximizar o throughput do sistema e oferecer tempos de resposta razoveis para os usurios interativos. Esses objetivos devem ser atendidos de forma que o sistema trate todos os processos igualmente, evitando, assim, que um processo fique indefinidamente esperando pela utilizao do processador (starvation). Para atender alguns desses objetivos, muitas vezes conflitantes, os sistemas operacionais devem levar em considerao caractersticas dos processos, ou seja, se um processo do tipo batch, interativo, CPU-bound ou I/O-bound. Sistemas de tempo real ou de tempo compartilhado tambm so aspectos fundamentais para a implementao de uma poltica adequada de escalonamento.

2. Escalonamentos No-preemptivos
Nos primeiros sistemas multiprogramveis, onde predominava tipicamente o processamento batch, o escalonamento implementado era do tipo no-preemptivo. Nesse tipo de escalonamento, quando um processo (ou job) ganha o direito de utilizar a UCP, nenhum outro processo pode lhe tirar esse recurso.

3. Algoritmos de escalonamento no-preemptivos Escalonamento First-in-first-out (Fifo)


Nesse escalonamento, o processo que chegar primeiro (first-in) o primeiro a ser selecionado para execuo (first-out). Seu algoritmo de implementao bastante simples, sendo necessria apenas uma fila, onde os processos que passam para o estado de pronto entram no seu final e so escalonados quando chegarem ao seu incio. Nesse esquema, quando um processo ganha o processador, ele utilizar a UCP sem ser interrompido. O problema do escalonamento Fifo a impossibilidade de se prever quando um processo ter sua execuo iniciada, j que isso varia em funo do tempo de

Escalonamento de Processos

35

___________________________________________________________________________________________________________________________

execuo dos processos que se encontram na sua frente. Outro problema a possibilidade de processos CPU-bound de menor importncia prejudicarem processos I/O-bound mais prioritrios. Essa poltica de escalonamento foi inicialmente implementada em sistemas batch, sendo ineficiente, se aplicada da forma original em sistemas de tempo compartilhado. Atualmente, sistemas de tempo compartilhado utilizam o escalonamento Fifo com variaes, permitindo, assim, sua implementao, como veremos em outros itens.

Escalonamento Shortest-Job-First (SJF)


Esse algoritmo de escalonamento associa cada processo ao seu tempo de execuo. Dessa forma, quando o processador est livre, o processo em estado de pronto que precisar de menos tempo de UCP para terminar seu processamento selecionado para execuo (shortest-job-first). O escalonamento SJF favorece os processos que executam programas menores, alm de reduzir o tempo mdio de espera em relao ao Fifo. O problema em relao a esse algoritmo determinar, exatamente, quanto tempo de UCP cada processo necessita para terminar seu processamento. Esse tempo nem sempre determinado de forma precisa. Em ambientes de produo, onde os programas executam freqentemente, possvel estimar o tempo de execuo, j em ambientes de desenvolvimento, isso se torna difcil [Deitel (1984)]. Tanto o SJF, quanto o Fifo, no so algoritmos de escalonamento aplicados a sistemas de tempo compartilhado, onde um tempo de resposta razovel deve ser garantido ao usurio interativo.

4. Escalonamentos Preemptivos
Um algoritmo de escalonamento dito preemptivo, quando o sistema pode interromper um processo em execuo, para que outro processo utilize o processador. Em sistemas que no implementam preempo, um processo pode utilizar o processador enquanto for necessrio. O escalonamento preemptivo permite que o sistema d ateno imediata a processos mais prioritrios, como no caso de sistemas de tempo real, alm de proporcionar melhores tempos de resposta em sistemas de tempo compartilhado. Outro benefcio, decorrente deste tipo de escalonamento, o compartilhamento do processador de uma maneira mais uniforme entre os processos. A troca de um processo por outro na UCP (mudana de contexto) causada pela preempo, gera um overhead ao sistema. Para isso no se tomar crtico, o sistema deve estabelecer corretamente os critrios de preempo.

Escalonamento de Processos

36

___________________________________________________________________________________________________________________________

5. Algoritmos de Escalonamento Preemptivos Escalonamento Circular (Round Robin)


O escalonamento circular implementado atravs de um algoritmo projetado especialmente para sistemas de tempo compartilhado. Esse algoritmo bastante semelhante ao Fifo, porm, quando um processo passa para o estado de execuo, ou seja, ganha a UCP, existe um tempo limite para sua ulilizao de forma contnua. Quando esse tempo, denominado time-slice ou quantum, expira, sem que antes a UCP seja liberada pelo processo, este volta ao estado de pronto (preempo), dando a vez para outro processo. A fila de processos em estado de pronto tratada como uma fila circular. O escalonamento realizado, alocando a UCP para cada processo da fila no intervalo de tempo determinado pelo quantum. Em geral, o valor do quantum de tempo est entre 100 e 300 ms. Atravs do escalonamento circular, nenhum processo poder monopolizar a UCP, sendo o tempo mximo alocado continuamente para um determinado processo igual ao quantum de tempo definido pelo sistema. No caso de sistemas de tempo compartilhado, onde vrios usurios utilizam o sistema concorrentemente, esse algoritmo bastante adequado.

Escalonamento por Prioridades


O escalonamento circular consegue melhorar a distribuio do tempo de UCP em relao aos escalonamentos no-preemptivos, porm ainda no consegue implementar um compartilhamento igual entre os diferentes tipos de processos. Isso acontece porque o escalonamento circular trata todos os processos de uma maneira igual, o que nem sempre desejvel. Os processos I/O-bound devem levar alguma vantagem no escalonamento, a fim de compensar o excessivo tempo gasto no estado de espera. Como alguns processos devem ser tratados de maneira diferente dos outros, deve ser associada a cada um deles uma prioridade de execuo. Nesse esquema, processos de maior prioridade so escalonados preferencialmente. Toda vez que um processo for para a fila de pronto com prioridade superior ao do processo em execuo, o sistema dever interromper o processo corrente, coloc-lo no estado de pronto e selecionar o processo mais prioritrio para ser executado (preempo). Este tipo de preempo implementado atravs de um clock, que interrompe o processador em determinados intervalos de tempo, para que a rotina de escalonamento reavalie prioridades e, possivelmente, escalone outro processo. Se desejarmos distribuir o tempo de processador de forma igual, devemos associar ao processo B (I/O-bound) uma prioridade superior ao do processo A (CPU-bound), com o objetivo de compensar seu tipo de processamento.

Escalonamento de Processos

37

___________________________________________________________________________________________________________________________

Todos os sistemas de tempo compartilhado implementam algum esquema de prioridade, de forma a dar maior importncia a um processo no momento do escalonamento. A prioridade uma caracterstica do processo e pode ser esttica ou dinmica. A prioridade dita esttica quando no modificada durante a existncia do processo. Apesar da simplicidade de implementao, a prioridade esttica pode fornecer tempos de resposta elevados. Na prioridade dinmica, a prioridade do processo pode ser ajustada de acordo com o tipo de processamento realizado pelo processo e/ou a carga do sistema. Todo o processo ao sair do estado de espera recebe um acrscimo sua prioridade. Dessa forma, os processos I/O-bound tero mais chance de ser escalonados e, assim, compensar o tempo que passam no estado de espera. importante perceber que os processos CPU-bound no so prejudicados, pois podem ser executados enquanto os processos I/O-bound esperam por algum evento. Embora os sistemas de prioridade dinmica sejam mais complexos de implementar, e gerem um overhead maior que os sistemas de prioridade esttica, o tempo de resposta oferecido compensa.

Escalonamento por Mltiplas Filas


Como os diversos processos do sistema possuem caractersticas de processamento diferentes, difcil que um nico mecanismo de escalonamento seja adequado a todos os tipos de processo. Uma boa poltica seria classificar os processos em funo do tipo de processamento realizado, e aplicar a cada grupo mecanismos de escalonamentos distintos. Partindo desse princpio, o escalonamento por mltiplas filas (multi-level queues) implementa diversas filas de processo no estado de pronto, onde cada processo associado exclusivamente a uma delas. Cada fila possui um mecanismo prprio de escalonamento, em funo das caractersticas do processo. Nesse esquema, os processos devem ser classificados, previamente, em funo do tipo de processamento, para poderem ser encaminhados a uma determinada fila. Cada fila possui uma prioridade associada, que estabelece quais filas so prioritrias em relao s outras. O sistema s pode escalonar processos de uma fila, se todas as outras de prioridade maior estiverem vazias.

Escalonamento por Mltiplas Filas com Realimentao


No escalonamento visto no item anterior, os processos so previamente classificados para serem associados a uma determinada fila. No caso de um processo que altere o seu comportamento no decorrer do tempo, esse esquema falho, pois o processo no poder ser redirecionado para uma outra fila mais adequada. Um mecanismo ideal seria aquele em que o sistema conhea como os diversos processos e o prprio sistema

Escalonamento de Processos

38

___________________________________________________________________________________________________________________________

se comportam ao longo do tempo, ajustando dinamicamente seus tipos de escalonamento. O escalonamento por mltiplas filas com realimentao (mullti-level feed-back queues), semelhante ao escalonamento citado no item anterior, implementa diversas filas, onde cada fila tem associada uma prioridade de execuo, porm os processos no permanecem em uma mesma fila at o trmino de processamento. Neste escalonamento, o sistema tenta identificar dinamicamente o comportamento de cada processo, ajustando assim suas prioridades de execuo e mecanismos de escalonamento. Esse esquema permite que os processos se movimentem entre as filas do sistema, fazendo com que o sistema operacional implemente um mecanismo de ajuste dinmico, denominado mecanismo adaptativo, que tem como objetivo ajustar os processos em funo do desempenho do sistema. Os processos no so previamente associados s filas de pronto, e sim direcionados entre as diversas filas pelo sistema, em funo do seu comportamento. Um processo, quando criado, entra no final da fila de mais alta prioridade. Cada fila implementa o mecanismo de Fifo para se chegar a UCP. Quando um processo que est sendo executado deixa a UCP passando para o estado de pronto, ou sofre preempo por outro processo de uma fila mais prioritria, ele reescalonado dentro da mesma fila. No caso de o processo esgotar seu quantum de tempo, ele direcionado para uma fila de menor prioridade. O quantum em cada fila varia em funo da sua prioridade. Quanto maior a prioridade da fila, maior o seu quantum. O escalonamento de um processo em uma fila s acontece quando todas as outras filas de prioridades mais altas esto vazias. A fila de mais baixa prioridade implementa o mecanismo do escalonamento circular. O escalonamento por mltiplas filas com realimentao o mecanismo de escalonamento mais generalista, podendo ser implementado em qualquer tipo de sistema. Seu maior problema que, por sua complexidade, gerado um overhead ao sistema, o que, mesmo assim, pode compensar a sua implementao.

SISTEMAS OPERACIONAIS GERNCIA DE MEMRIA 1. Introduo


Na memria principal residem todos os programas e dados que sero executados ou referenciados pelo processador. importante no confundir memria principal com memria secundria. A memria secundria, normalmente disco ou fita, um meio permanente, mais abundante e barato, onde so armazenados programas e dados. Toda vez que desejarmos executar um programa residente na memria secundria, devemos, de alguma forma, carreg-lo para a memria principal. Organizao e gerncia da memria principal tm sido fatores importantes no projeto de sistemas operacionais. Historicamente, a memria principal sempre foi vista como um recurso escasso e caro. Uma das maiores preocupaes dos projetistas foi desenvolver sistemas operacionais que no ocupassem muita memria e, ao mesmo tempo, otimizassem sua utilizao. Enquanto nos sistemas monoprogramveis a gerncia da memria no muito complexa, nos sistemas multiprogramveis ela se torna crtica. Isso ocorre, devido necessidade de se manter o maior nmero de usurios possvel utilizando a memria eficientemente, tornando sua gerncia muito mais difcil.

2 Alocao Contgua Simples


A alocao contgua simples foi implementada nos primeiros sistemas operacionais desenvolvidos, porm, ainda est presente em alguns sistemas monoprogramveis. Nesse tipo de organizao, a memria principal dividida em duas partes: uma para o sistema operacional e outra para o programa do usurio (Fig. 1). Dessa forma, o programador deve desenvolver suas aplicaes, preocupado, apenas, em no ultrapassar o espao de memria disponvel, ou seja, o tamanho total da memria principal menos o que est sendo ocupado pelo sistema operacional. Apesar de sua simplicidade de implementao e cdigo reduzido, a alocao contgua simples no permite a utilizao eficiente do processador e da memria, pois apenas um usurio pode utilizar esses recursos. Em relao memria, caso o programa do usurio no a preencha totalmente, existir um espao de memria sem utilizao. Nesse esquema, o usurio tem controle sobre toda a memria principal, podendo acessar qualquer posio de memria, inclusive para alterar e destruir o sistema operacional. Para proteg-lo desses ataques, que podem ser conscientes ou no, alguns sistemas implementam proteo atravs de um registrador, que delimita as reas do sistema operacional e do usurio. Dessa forma, sempre que um programa de usurio faz referncia a um endereo na memria, o sistema verifica se o endereo est nos

Gerncia de Memria

40

___________________________________________________________________________________________________________________________

seus limites. Caso no esteja, o programa do usurio cancelado e uma mensagem de erro enviada (violao de acesso - access violation).

Memria Principal Sistema Operacional Programa do Usurio

rea Livre

Fig. 1 - Alocao Contgua Simples A princpio, os programas dos usurios estavam limitados ao tamanho da memria principal disponvel. A soluo encontrada para o problema, foi dividir o programa em partes (mdulos), de forma que pudessem executar independentemente uma da outra, utilizando uma mesma rea de memria. Essa tcnica chamada de overlay (sobreposio) (Fig. 2). Suponhamos, por exemplo, um programa que tenha trs mdulos: um principal, um de cadastramento e outro de impresso, sendo que os mdulos de cadastramento e impresso sejam independentes. Quer dizer, quando um mdulo estiver na memria, o outro no precisa necessariamente estar. O mdulo principal comum aos dois mdulos, logo deve permanecer na memria durante todo o tempo.
Memria Principal Sistema Operacional Mdulo Principal 2 Kb Cadastramento 3 Kb 4 Kb

rea de Overlay 4 Kb rea Livre 1 Kb Impresso rea No Utilizada

3 Kb 1 Kb

Fig. 2 - Overlay A tcnica de overlay tem a vantagem de permitir ao programador expandir os limites da memria principal. A utilizao dessa tcnica exige muito cuidado, pois pode

Gerncia de Memria

41

___________________________________________________________________________________________________________________________

trazer implicaes na performance das aplicaes, devido transferncia excessiva que pode ocorrer dos mdulos entre o disco e a memria, e na sua manuteno.

3 Alocao Particionada
Os sistemas monoprogramveis permitem que o processador permanea ocioso e que a memria seja subutilizada, enquanto um programa aguarda, por exemplo, o trmino de uma operao de leitura. A multiprogramao veio resolver o problema, pois, enquanto um programa aguarda por algum evento, outros programas podem ser executados nesse intervalo de tempo. Para a multiprogramao ser eficiente, necessrio que vrios programas estejam na memria ao mesmo tempo, da a necessidade de uma nova forma de organizao para memria principal, como veremos a seguir.

3.1 Alocao Particionada Esttica


Nos primeiros sistemas multiprogramveis, a memria foi dividida em pedaos de tamanho fixo, chamados parties. O tamanho das parties era estabelecido na fase de inicializao do sistema (boot), em funo do tamanho dos programas que executariam no ambiente (Fig. 3). Sempre que fosse necessria a alterao do tamanho de uma partio, o sistema deveria ser desativado e reinicializado com uma nova configurao.
Memria Principal Sistema Operacional Partio 1 Partio 2 2 Kb

5 Kb

Partio 3

8 Kb

Fig. 3 - Alocao Particionada A princpio, os programas s podiam executar em uma das parties, mesmo se outras estivessem disponveis. Essa limitao se devia aos compiladores e montadores que geravam apenas cdigo absoluto. A esse tipo de alocao chamou-se alocao particionada esttica absoluta.

Gerncia de Memria

42

___________________________________________________________________________________________________________________________

Com a evoluo dos compiladores, linkers e loaders, a gerao de cdigo relocvel foi possvel, e os programas puderam ser carregados em qualquer partio. A esse novo tipo de alocao deu-se o nome de alocao particionada esttica relocvel. Para manter o controle sobre quais parties estavam alocadas ou no, os sistemas possuam uma tabela, delimitando cada partio, seu tamanho e se estava em uso ou no. Sempre que um programa era carregado para a memria, o sistema percorria a tabela, na tentativa de localizar uma partio livre, onde o programa pudesse ser alocado. A proteo, nesse esquema de alocao de memria, baseia-se em dois registradores, que indicam os limites inferior e superior da partio onde o programa est sendo executado (Fig. 4). Caso o programa tente acessar uma posio de memria fora dos limites definidos pelos registradores, ele interrompido, e uma mensagem de erro enviada.
Memria Principal Sistema Operacional Endereo Inicial

Endereo Final

Fig. 4 - Delimitao da Partio Tanto nos sistemas de alocao absoluta quanto nos de alocao relocvel, os programas, normalmente, no preenchiam totalmente as parties onde eram carregados. Se considerarmos os programas C, A e E da Fig. 5, concluiremos que eles produzem reas livres que, somadas, totalizam 7 kb. Alm disso, se um programa for maior que qualquer partio livre, ele ficar aguardando uma que o acomode, mesmo que existam duas ou mais parties adjacentes que, somadas, totalizem o tamanho do programa. Esse tipo de problema, onde pedaos de memria ficam impedidos de serem utilizados por outros programas, chamado fragmentao.

Gerncia de Memria
Memria Principal Sistema Operacional Programa C 1 Kb Programa A 3 Kb Programa E 3 Kb

43

___________________________________________________________________________________________________________________________

Fig. 5 - Fragmentao na Memria Principal

2. Alocao Particionada Dinmica


A alocao particionada esttica, analisada no item anterior, deixou claro a necessidade de uma nova forma de organizao para a memria principal, que diminusse o problema da fragmentao e, conseqentemente, aumentasse o grau de compartilhamento da memria. Na alocao particionada dinmica (ou varivel), foi eliminado o conceito de parties de tamanho fixo. Nesse esquema, cada programa utilizaria o espao que necessitasse, passando esse pedao a ser sua partio (Fig. 6).

Sistema Operacional

Sistema Operacional Programa 11 Kb B 4 Kb 1 3 2 1 Kb Kb Kb Kb

Programa C Programa E Programa Programa A A

Fig. 6 - Alocao Particionada A princpio, o problema da fragmentao pareceu estar resolvido, porm, nesse caso, o problema no to bvio quanto no esquema anterior. A fragmentao comear a ocorrer realmente, quando os programas forem terminando e deixando espaos cada vez menores na memria, no permitindo o ingresso de novos programas. Depois de j ter sido detectada a fragmentao da memria, existem duas solues para o problema. A primeira, somente os espaos adjacentes so reunidos, produzindo um nico espao de tamanho maior.

Gerncia de Memria

44

___________________________________________________________________________________________________________________________

A segunda maneira de resolver o problema da fragmentao envolve a relocao de todas as parties ocupadas, eliminando todos os espaos entre elas e criando-se uma nica rea livre contgua (Fig. 7). Esse mecanismo de compactao, tambm conhecido como alocao dinmica com relocao, reduz muito mais o problema da fragmentao, porm, a complexidade do seu algoritmo e o consumo de recursos do sistema, como processador e rea em disco, podem torn-lo invivel.
Memria Principa l Sistema Operacional Memria Principal Sistema Operacional Programa C 4 Kb
Realocao

1 Kb 2 Kb

Programa A

Programa C

1 Kb 3 Kb 8 Kb

Programa A

2 Kb 1 Kb

Fig. 7 - Soluo para a Fragmentao

3. Estratgias para Escolha da Partio


Os sistemas operacionais implementam, basicamente, trs estratgias para determinar em qual partio livre um programa ser carregado para execuo. Essas estratgias tentam evitar, ou diminuir, o problema da fragmentao antes que ela ocorra. A melhor estratgia a ser adotada por um sistema depende de uma srie de fatores, sendo o mais importante o tamanho dos programas processados no ambiente. Independentemente do algoritmo utilizado, o sistema possui uma lista de reas livres (free list), com o endereo de cada rea livre e seu tamanho.

Best-fit
Esse mecanismo escolhe a melhor partio (best-fit), ou seja, aquela em que o programa deixa o menor espao sem utilizao. Nesse algoritmo, a lista de reas livres est ordenada por tamanho, diminuindo o tempo de busca por uma rea desocupada. Uma grande desvantagem desse mtodo conseqncia do prprio algoritmo. Como alocado a partio que deixa a menor rea livre, a tendncia que cada vez mais a memria fique com pequenas reas no contguas, aumentando o problema da fragmentao.

Gerncia de Memria

45

___________________________________________________________________________________________________________________________

Worst-fit
Esse mecanismo escolhe a pior partio (worst-fit), ou seja, aquela em que o programa deixa o maior espao sem utilizao. A tcnica de worst-fit apesar de utilizar as parties maiores, deixa, porm, espaos livres maiores que permitem a um maior nmero de programas utilizar a memria, diminuindo o problema da fragmentao.

First-fit
Esse mecanismo escolhe a primeira partio (first-fit) livre, de tamanho suficiente para carregar o programa. Nesse algoritmo, a lista de reas livres est ordenada por endereos crescentemente. Como o mtodo tenta primeiro utilizar as reas livres de endereos mais baixos, existe uma grande chance de se obter uma grande partio livre nos endereos de memria mais altos. Das trs estratgias, a first-fit a mais rpida, consumindo menos recursos do sistema.

4. Swapping
Mesmo com o aumento da eficincia da multiprogramao e, particularmente, da gerncia de memria, muitas vezes um programa no podia ser executado por falta de uma partio livre disponvel. A tcnica de swapping veio tentar resolver o problema da insuficincia de memria para todos os usurios. Em todos os esquemas apresentados anteriormente, um programa permanecia na memria principal at o final da sua execuo, inclusive nos momentos em que esperava por um evento, como uma operao de leitura ou gravao. O swapping uma tcnica aplicada gerncia de memria, para programas que esperam por memria livre para serem processados. Nesta situao, o sistema escolhe um programa residente que levado da memria para o disco (swapped out), retornando posteriormente para a memria principal (swapped in), como se nada tivesse ocorrido. Um dos problemas gerados pelo swapping a relocao dos programas. O loader relocvel permite que um programa seja colocado em qualquer posio de memria, porm a relocao realizada no momento do carregamento. No caso de um programa que saia e volte muitas vezes para a memria, necessrio que a relocao seja realizada pelo loader a cada carregamento. Essa situao torna o mecanismo ineficiente em funo do tempo gasto para o carregamento. Outra alternativa, tambm pouco eficiente, esperar que a regio de memria usada pelo programa na ocasio do seu primeiro carregamento esteja novamente disponvel. A melhor soluo para esse problema uma implementao no hardware dos computadores, para permitir que a.

Gerncia de Memria

46

___________________________________________________________________________________________________________________________

relocao seja realizada durante a execuo do programa. Esse tipo de mecanismo denominado relocao dinmica. A relocao dinmica realizada atravs de um registrador especial denominado registrador de relocao. No momento em que o programa carregado na memria, o registrador recebe o endereo inicial da regio de memria que o programa ir ocupar. Toda vez que ocorrer uma referncia a algum endereo, o endereo contido na instruo somado ao contedo do registrador, gerando, assim, o endereo fsico (Fig. 8). Dessa forma, um programa pode ser carregado em qualquer regio da memria. A relocao dinmica essencial para a implementao de um sistema multiprogramvel.
Registrador de Relocao Endereo Inicial da Partio Instruo Codigo Operao

Endereo

Endereo de Memria

Fig. 8 - Relocao Dinmica O conceito de swapping permitiu um maior compartilhamento da memria e, conseqentemente, um maior throughput. A tcnica se mostrou eficiente para sistemas onde existiam poucos usurios competindo por memria e em ambientes que trabalhavam com aplicaes pequenas. Seu maior problema o elevado custo das operaes de entrada/sada (swapped in/out).

5. Memria Virtual
Memria virtual (virtual memory) uma tcnica sofisticada e poderosa de gerncia de memria, onde as memrias principal e secundria so combinadas, dando ao usurio a iluso de existir uma memria muito maior que a memria principal. O conceito de memria virtual est baseado em desvincular o endereamento feito pelo programa dos endereos fsicos da memria principal. Assim, os programas e suas estruturas de dados deixam de estar limitados ao tamanho da memria fsica disponvel. A memria virtual tambm veio minimizar o to srio problema da fragmentao da memria, j discutido nos itens anteriores.

Gerncia de Memria

47

___________________________________________________________________________________________________________________________

5.1. Espao de Endereamento Virtual


Um programa no ambiente de memria virtual no faz referncia a endereos fsicos de memria (endereos reais), mas apenas a endereos virtuais. No momento da execuo de uma instruo, o endereo virtual traduzido para um endereo fsico, pois o processador acessa apenas posies da memria principal. O mecanismo de traduo do endereo virtual para endereo fsico denominado mapeamento. O conjunto de endereos virtuais que os processos podem enderear chamado espao de endereamento virtual. Analogamente, o conjunto de endereos reais chamado espao de endereamento real. O espao de endereamento virtual no tem nenhuma relao direta com os endereos no espao real. Um programa pode fazer referncia a endereos virtuais que estejam fora dos limites do espao real, ou seja, os programas e suas estruturas de dados no esto mais limitados ao tamanho da memria fsica disponvel. Como os programas podem ser muito maiores que a memria fsica, somente parte deles pode estar residente na memria em um determinado instante. O sistema operacional utiliza a memria secundria como extenso da memria principal. Quando um programa executado, somente uma parte do cdigo fica residente na memria principal, o restante permanece na memria secundria at o momento de ser referenciado. Quando o usurio desenvolve suas aplicaes, ele ignora a existncia dos endereos virtuais. Os compiladores e linkers se encarregam de gerar o cdigo executvel em funo desses endereos, e o sistema operacional cuida dos detalhes de sua execuo.

5.2 Mapeamento
Toda a estrutura do processo ou o programa executado em seu contexto precisa estar no espao de endereamento real para poder ser referenciado ou executado; portanto, deve existir um mecanismo que transforme os endereos virtuais em endereos reais. Esse mecanismo, conhecido por mapeamento, permite ao sistema operacional traduzir um endereo localizado no espao virtual para um no espao real. Como conseqncia do mapeamento, um programa no precisa estar necessariamente contguo na memria real para ser executado (Fig. 9). Nos sistemas atuais, a tarefa de traduo realizada por um hardware especfico, juntamente com o sistema operacional, de forma a no comprometer seu desempenho e torn-lo transparente a usurios e suas aplicaes. Cada processo tem o mesmo espao de endereamento virtual, como se possusse sua prpria memria virtual. O mecanismo de traduo se encarrega, ento, de manter tabelas de mapeamento exclusivas para cada processo, relacionando os endereos virtuais do processo s suas posies na memria fsica.

Gerncia de Memria

48

___________________________________________________________________________________________________________________________

Memria Virtual

Memria Principal

...

Mapeamento

... Fig. 9 - Mapeamento

Quando um programa est sendo executado, o sistema utiliza a tabela de mapeamento do processo, no qual o programa executa, para realizar a traduo. Se um outro programa vai ser executado no contexto de outro processo, o sistema deve passar a referenciar a tabela do novo processo. Isso realizado atravs de um registrador, que indica a posio inicial da tabela de mapeamento corrente, onde, toda vez que h mudana de contexto, o registrador atualizado com o endereo da nova tabela.

5.3. Paginao
Paginao (paging) a tcnica de gerncia de memria onde o espao de endereamento virtual e o espao de endereamento real so divididos em blocos do mesmo tamanho, chamados pginas. As pginas no espao virtual so denominadas pginas virtuais, enquanto as pginas no espao real so chamadas de pginas reais ou frames (molduras). Todo o mapeamento realizado em nvel de pgina, atravs de tabelas de pginas. Cada pgina virtual do processo possui uma entrada na tabela (entrada na tabela de pginas - ETP), com informaes de mapeamento que permitem ao sistema localizar a pgina real correspondente. Quando um programa executado, as pginas virtuais so transferidas da memria secundria para a memria principal e colocadas em frames. Sempre que o programa fizer referncia a um endereo virtual, o mecanismo de mapeamento localiza, na ETP da tabela de processo, o endereo fsico do frame. Nesse sistema, o endereo virtual formado pelo nmero da pgina virtual (NPV) e um deslocamento dentro da pgina. O NPV identifica, unicamente, uma pgina virtual

Gerncia de Memria

49

___________________________________________________________________________________________________________________________

na tabela de pginas (ETP), e pode ser considerado como um vetor, enquanto o deslocamento funciona como seu ndice. O endereo fsico calculado, ento, somando-se o endereo do frame localizado na tabela de pginas com o deslocamento contido no endereo virtual. Alm da informao sobre a localizao da pgina virtual, a ETP possui outras informaes, dentre elas o bit de validade que indica se uma pgina est ou no na memria fsica (valid bit ou residence bit). Se o bit tem o valor 0, indica que a pgina virtual no est na memria principal, enquanto, se for igual a 1, a pgina est localizada na memria. Sempre que o processo faz referncia a um endereo virtual, o sistema verifica, atravs do bit de validade, se a pgina que contm o endereo referenciado est ou no na memria principal. Caso no esteja, o sistema tem de transferir a pgina da memria secundria para a memria fsica. Toda vez que o sistema solicitado para isso, dizemos que ocorreu um page fault (falta de pgina). O problema da fragmentao tambm existe em sistemas paginveis, s que em menor escala, se comparada com a de outras organizaes j apresentadas. A maior ou menor fragmentao consequencia do tamanho da pgina, que, tambm, tem influncia em outros fatores. Pginas pequenas, por exemplo, necessitam de tabelas de mapeamento maiores, provocam maior taxa de paginao e, consequentemente, aumentam o nmero de acessos memria secundria, porm, geram menor fragmentao. O tamanho da pgina varia de sistema para sistema, mas normalmente est entre 512 bytes e 4kb. A maioria dos estudos em relao ao tamanho ideal de pgina indica pginas de tamanho pequeno.

5.3.1. Working set


O conceito de working set surgiu a partir da anlise da taxa de paginao dos processos. Quando um programa iniciava sua execuo, percebia-se uma elevada taxa de page faults, que se estabilizava com o decorrer de sua execuo. Esse fato est ligado diretamente a um outro conceito-chave na estratgia de gerncia de memria chamado localidade. Localidade a tendncia que existe em um programa de fazer referncias a posies de memria, de forma quase uniforme, a instrues prximas. Isso significa que um processo tender a concentrar suas referncias em um mesmo conjunto de pginas durante um determinado perodo de tempo. Se imaginarmos, por exemplo, um loop cujo cdigo ocupe trs pginas, a tendncia de essas trs pginas serem referenciadas novamente muito grande. A localidade tem muito haver com a forma que a aplicao foi escrita. Normalmente, se um programa foi desenvolvido utilizando tcnicas estruturadas, o conceito de localidade quase sempre vlido. . A partir da observao da localidade, formulou-se a teoria do working set. O working set o conjunto de pginas que um processo referencia constantemente, e, por isso

Gerncia de Memria

50

___________________________________________________________________________________________________________________________

mesmo, deve permanecer na memria principal [Denning (1968)]. Caso contrrio, o sistema poder sofrer com a elevada taxa de paginao, comprometendo sua performance. Quando um processo criado, todas as suas pginas esto na memria secundria. medida que acontecem referncias s pginas virtuais, elas so transferidas para o working set do processo na memria principal (page in). Sempre que um processo faz referncia a uma pgina, o sistema verifica se a pgina j se encontra no working set do processo. O working set deve ter um limite mximo de pginas permitidas. Quanto maior o working set do processo, menor a chance de ocorrer uma referncia a uma pgina que no esteja na memria principal (page fault); entretanto, como os working sets dos processos ocuparo mais memria, um nmero menor de processos poder estar compartilhando a memria principal.

5.4. Segmentao
Segmentao a tcnica de gerncia de memria, onde os programas so divididos logicamente em sub-rotinas e estruturas de dados, e colocados em blocos de informaes na memria. Os blocos tm tamanhos diferentes e so chamados segmentos, cada um com seu prprio espao de endereamento. A grande diferena entre a paginao e a segmentao que, enquanto a primeira divide o programa em partes de tamanho fixo, sem qualquer ligao com a estrutura do programa, a segmentao permite uma relao entre a lgica do programa e sua diviso na memria. O mecanismo de mapeamento muito semelhante ao de paginao. Os segmentos so mapeados atravs de tabelas de mapeamento de segmentos (TMS), e os endereos so compostos pelo nmero do segmento e um deslocamento dentro do segmento. O nmero do segmento identifica unicamente uma entrada na tabela de segmentos (ETS), onde esto as informaes sobre o segmento na memria real. O endereo absoluto calculada a partir do endereo inicial do segmento mais o deslocamento dentro do segmento. Alm do endereo do segmento na memria fsica, cada entrada na tabela de segmentos possui informaes sobre o tamanho do segmento, se ele est ou no na memria e sua proteo. O sistema operacional mantm uma tabela com as reas livres e ocupadas da memria. Quando um novo processo carregado para a memria, o sistema localiza um espao livre que o acomode. As estratgias para escolha da rea livre podem ser as mesmas utilizadas no item Alocao Particionada Dinmica, ou seja, best-fit, worst-fit ou firstfit. Na segmentao, apenas os segmentos referenciados so transferidos da memria secundaria para a memria real. Logo, para ser mais eficiente, os programas devem

Gerncia de Memria

51

___________________________________________________________________________________________________________________________

estar bem modularizados. Se as aplicaes no estiverem divididas em mdulos, grandes pedaos de cdigo estaro na memria desnecessariamente, no permitindo a outros usurios utilizarem, tambm, a memria. O problema da fragmentao tambm ocorre nesse modelo, quando as reas livres so to pequenas, que no acomodam nenhum segmento que necessite ser carregado. Um outro problema sua complexidade, pois o sistema deve manter tabelas de segmentos que variam de acordo com o nmero de segmentos. .

5.5. Segmentao com Paginao


Sistemas que implementam segmententao com paginao permitem a diviso lgica dos programas em segmentos e, por sua vez, cada segmento dividido, fisicamente, em pginas. Nesse sistema, um endereo formado pelo nmero do segmento, um nmero de pgina dentro desse segmento e um deslocamcnto dentro dessa pgina. Atravs do nmero do segmento, obtm-se uma entrada na tabela de segmentos, contendo informaes da tabela de pginas do segmento. Com o nmero da pgina, obtm-se uma entrada na tabela de pginas com informaes da pgina na memria fsica. O endereo fsico obtido somando-se a posio inicial do frame e o deslocamento.

5.6. Swapping em Memria Virtual


A tcnica de swapping foi implementada para aumentar o nmero de usurios compartilhando a memria principal e, consequentemente, o sistema. O conceito de swapping continua vlido quando aplicado memria virtual. Em sistemas que implementam essa tcnica, quando existem novos processos que desejam ser processados e no existe memria real suficiente, o sistema seleciona um ou mais processos que devero sair da memria para ceder espao aos novos processos. H vrios critrios que podem ser aplicados na escolha do(s) processo(s) que deve (m) sair da memria. Os mais utilizados so a prioridade e o estado do processo. O critrio de estado seleciona os processos que esto no estado de espera, ou seja, aguardando por algum evento. O critrio de prioridade escolhe, dentre os processos, os de menor prioridade de execuo. Depois de escolhido(s) o(s) processo(s), o sistema intervm e ativa uma rotina do sistema responsvel por retirar (swap out) e trazer (swap in) os processos da memria principal para a memria secundria, onde so gravados em um arquivo de swapping (swap file).

Gerncia de Memria

52

___________________________________________________________________________________________________________________________

5.7. Thrashing
Thrashing pode ser definido como sendo a excessiva transferncia de pginas/segmentos entre a memria principal e a memria secundria. Esse problema se aplica tanto a sistemas que implementam paginao como segmentao. Na paginao, o thrashing ocorre em dois nveis: em nvel do prprio processo e em nvel do sistema. Em nvel do processo, a excessiva paginao ocorre devido ao elevado nmero de page faults, gerado pelo programa em execuo. Esse problema faz com que o processo passe mais tempo esperando por pginas que realmente sendo executado. Existem dois motivos que levam um processo a sofrer esse tipo de thrashing. O primeiro o mau dimensionamento no tamanho do working set de um processo, pequeno demais para acomodar as pginas constantemente referenciadas por ele. Nesse caso, basta aumentar-se o tamanho do working set do processo. O segundo a no obedincia do conceito de localidade, ou seja, o programa faz referncia a comandos/dados localizados em pginas fora do working set do processo. Neste caso, o problema de programao, e a aplicao dever ser reescrita. Em nvel do sistema, o thrashing ocorre quando existem mais processos competindo por memria que espao disponvel. O sistema tenta administrar a memria de forma que todos os processos sejam atendidos. O primeiro passo a reduo do tamanho dos working sets dos processos, porm, como j analisamos, esse mecanismo leva ao thrashing em nvel do processo. Caso a reduo do working set no seja suficiente, o sistema comea o trabalho de swapping, tirando e trazendo processos da memria principal para a memria secundria. Se esse mecanismo for levado ao extremo, o sistema passar mais tempo fazendo swapping que executando os processos. O thrashing em sistemas que implementam segmentao tambm ocorre em dois nveis. Em nvel do processo, a transferncia de segmentos excessiva devido modularizao extrema do programa, no seguindo o conceito de localidade. Em nvel do sistema, o thrashing em segmentao bastante semelhante ao da paginao com a ocorrncia de swapping. Nos dois casos, o problema da transferncia de todas as pginas/segmentos do(s) processo(s) entre memria principal e secundria pode ser uma situao transitria, devido a uma elevada carga de processamento em momentos especficos. De qualquer forma, se existem mais processos para serem executados que memria real disponvel, a nica soluo a expanso da memria principal. importante ressaltar que esse problema no ocorre apenas em sistemas que implementam memria virtual, mas tambm em sistemas com outros mecanismos de gerncia de memria.

GERNCIA DE DISPOSITIVOS
1. INTRODUO A gerncia de dispositivos de entrada/sada uma das principais e mais complexas funes exercidas por um sistema operacional. Sua implementao estruturada atravs de camadas de software e hardware, onde as camadas de mais baixo nvel escondem caractersticas do hardware dos dispositivos das camadas superiores. Desta forma, possvel oferecer uma interface simples e confivel para o usurio e suas aplicaes (Fig. 1). A gerncia de dispositivos deve esconder das camadas superiores os diversos detalhes de cada perifrico e suas diferenas, como velocidade de operao, unidade de transferncia, representao dos dados, tipos de operaes etc. O conceito de camadas nada mais do que o mesmo conceito visto para o sistema operacional como um todo, s que analisado apenas para a gerncia de dispositivos. Nesse caso, as camadas so divididas em dois grupos. O primeiro grupo visualiza os diversos tipos de dispositivos do sistema de um modo nico, enquanto o segundo especfico para cada dispositivo. Na realidade, a maior parte da gerncia de E/S trabalha de forma independente do dispositivo. Isso significa que o sistema manipula todos os dispositivos de uma nica maneira, o que proporciona uma grande flexibilidade, permitindo a comunicao dos processos com qualquer tipo de perifrico. Esse conceito, denominado independncia de dispositivos, est presente em qualquer sistema de arquivos.

Sistemas Operacionais

Gerncia de Dispositivos
75

_______________________________________________________________________________________________________________________________________________________

PROCESSOS

OPERAES DE E/S Independente do Dispostivo SOFTWARE

SUBSISTEMAS DE E/S

DEVICE DRIVERS Dependente do Dispostivo

CONTROLADORES HARDWARE

DISPOSITIVOS

Fig. 1 Gerncia de dispositivos.

Sistemas Operacionais

Gerncia de Dispositivos
76

_______________________________________________________________________________________________________________________________________________________

2. OPERAES DE ENTRADA/SADA A maneira mais simples de ter acesso a um dispositivo atravs das bibliotecas de comandos de entrada/sada, oferecidas pela maioria das linguagens de programao. Os comandos de E/S de linguagens de alto nvel, como Pascal ou C, independem do ambiente operacional onde se est trabalhando. Para obter a independncia de dispositivos, as operaes de E/S devem ser realizadas atravs de system calls. Dessa forma, possvel escrever um programa que manipule arquivos, estejam eles em disquetes, discos rgidos ou fita magntica, sem ter que alterar o cdigo para cada tipo de dispositivo. As system calls responsveis por essa comunicao so denominadas system calls de entrada/sada. Estas rotinas esto presentes na camada de mais alto nvel implementada pelo sistema operacional, permitindo ao usurio realizar operaes de E/S, sem se preocupar com detalhes do dispositivo que est sendo acessado. Nesse caso, quando um usurio cria um arquivo em disco, no lhe interessa como a formatao do disco, nem em que trilha ou setor o arquivo ser gravado. A comunicao entre os comandos de E/S oferecidos pelas linguagens de programao de alto nvel e as system calls de E/S feita simplesmente atravs de passagem de parmetros. O relacionamento entre o comando e a system call criado na fase de link do programa. Objetivos: simplificar a interface entre as aplicaes e os dispositivos; elimina-se a necessidade de duplicao de rotinas idnticas nos diversos aplicativos; esconder do programador caractersticas especficas associadas programao de cada dispositivo.

Sistemas Operacionais

Gerncia de Dispositivos
77

_______________________________________________________________________________________________________________________________________________________

3. SUBSISTEMA DE ENTRADA/SADA O subsistema de entrada/sada responsvel por realizar as funes que so comuns a todos os dispositivos, ficando os aspectos especficos de cada perifrico a cargo dos device drivers. Podemos considerar que o subsistema de E/S realmente a parte do sistema operacional responsvel pela gerncia dos dispositivos. Uma de suas funes mapear o nome do dispositivo com o seu respectivo driver. As camadas superiores conhecem apenas o nome do dispositivo e utilizam esse nome para terem acesso ao perifrico. Cada dispositivo trabalha com unidades de informao de tamanhos diferentes, como caracteres, bytes, registros ou blocos. O subsistema de E/S responsvel por criar uma unidade lgica de informao independente do dispositivo e repass-la para os nveis superiores. Todos os dispositivos de E/S so controlados, com o objetivo de obter o maior compartilhamento possvel entre os diversos usurios de forma segura e confivel. O subsistema de E/S responsvel tambm por implementar todo um mecanismo de proteo de acesso aos dispositivos. No momento que o usurio realiza uma operao de E/S, verificado se o seu processo possui permisso para realizar a operao. Bufferizao outra tarefa do subsistema de E/S. Essa tcnica permite reduzir o nmero de operaes de E/S, utilizando uma rea de memria intermediria, chamada buffer. 4. DEVICE DRIVERS O device driver, ou somente driver, tem como principal funo a comunicao com dispositivos de E/S em nvel de hardware, geralmente atravs de controladores, especificando caractersticas fsicas de cada dispositivo. Enquanto o subsistema de E/S trata de funes que afetam a todos os dispositivos, os drivers tratam apenas dos seus aspectos particulares.

Sistemas Operacionais

Gerncia de Dispositivos
78

_______________________________________________________________________________________________________________________________________________________

Cada device driver manipula somente um tipo de dispositivo ou grupo de dispositivos semelhantes. Os drivers tm como funo receber comandos gerais sobre acessos aos dispositivos e traduzi-los para comandos especficos, que podero ser executados pelos controladores (Fig. 2). Normalmente, um sistema possui diferentes drivers, como drivers para disco (disk driver), fita magntica (tape driver), rede (network driver) e terminal (terminal driver).
Device driver 1 Device driver 2 Device driver 3 Dispositivo 4

Dispositivo 1

Dispositivo 2

Dispositivo 3

Fig. 2 - Device drivers. Caractersticas: integrado diretamente nas funes do controlador; componente do sistema que reconhece o hardware, ou seja, sabe quantos registradores um controlador possui; funo principal receber comandos abstratos, geralmente das system calls de E/S, e traduzi-los para comandos que o controlador do dispositivo possa entender e executar. Os drivers fazem parte do ncleo do sistema operacional, sendo escritos geralmente em assembly. Devido ao alto grau de dependncia entre os drivers e as system calls de E/S, os fabricantes desenvolvem, para um mesmo dispositivo, diferentes device drivers, um para cada sistema operacional. Sempre que um novo dispositivo adicionado, o(s) driver(s) do dispositivo deve(m) ser acoplado(s) ao ncleo do sistema.

Sistemas Operacionais

Gerncia de Dispositivos
79

_______________________________________________________________________________________________________________________________________________________

5. CONTROLADORES Os controladores ou interfaces so componentes eletrnicos (hardware) responsveis por manipular diretamente os dispositivos de E/S. O sistema operacional (device drivers) se comunica com os dispositivos atravs dos controladores (Fig. 3).
Discos Impressora Fita

UCP

Memria Principal

Controlador de disco

Controlador de impressora

Controlador de fita

Fig. 3 - UCP, memria e controladores. Em geral, o controlador possui memria e registradores prprios, para executar instrues enviadas pelo device driver. Essas instrues de baixo nvel so responsveis pela interface entre o controlador e o dispositivo. Em operaes de leitura, o controlador deve armazenar em seu buffer interno uma seqncia de bits vinda do dispositivo e verificar a ocorrncia de erros. No havendo erro, o bloco pode ser transferido para a memria principal. Na maioria dos dispositivos orientados a bloco, como discos, implementada a tcnica de DMA para transferncia de dados entre o controlador e a memria principal. O device driver executa as operaes de E/S gravando os comandos nos registradores do controlador. Enquanto o controlador realiza a operao com o dispositivo, a UCP permanece livre para realizar outras tarefas. Por exemplo, ao trmino de uma operao de leitura, o controlador transfere as informaes do buffer para a memria principal sem a interveno da UCP e gera uma interrupo, informando o fim da transferncia. O device driver, ento, testa os resultados atravs dos registradores do controlador .

Sistemas Operacionais

Gerncia de Dispositivos
80

_______________________________________________________________________________________________________________________________________________________

Alguns controladores, particularmente os de discos, implementam tcnicas de cache semelhantes s implementadas pelos sistemas de arquivos, na tentativa de melhorar o desempenho. Normalmente, o controlador avisa o sistema operacional do trmino de uma operao de gravao, quando os dados no buffer do controlador so gravados no disco (write-through caching). O controlador tambm pode ser configurado para avisar do trmino da gravao, mesmo quando os dados ainda se encontram no buffer do controlador (write-back caching), oferecendo considerveis ganhos de desempenho. O padro mais popular para a conexo de dispositivos a um computador o SCSI (Small Computer Systems Interface). Inicialmente utilizado em estaes de trabalho RISC, o SCSI pode ser encontrado hoje em sistemas de computao de todos os portes, desde micros at mainframes. O SCSI define padres de hardware e software que permitem conectar ao computador qualquer tipo de dispositivo (mesmo de fabricantes diferentes), como discos, CD-ROMS, scanners e unidades de fita, desde que sigam o padro SCSI. Para que isso seja possvel, deve-se configurar o sistema operacional com um driver SCSI e o hardware com um controlador SCSI, onde os perifricos so conectados. 6. DISPOSITIVOS DE ENTRADA/SADA Os dispositivos de entrada/sada (E/S) so responsveis pela comunicao entre o computador e o mundo externo. Existem dispositivos que servem apenas para a entrada de dados (como teclado e mouse), dispositivos apenas de sada (como impressoras) e dispositivos que realizam tanto entrada quanto sada de dados (como modems, discos e fitas). A transferncia de dados ocorrida nessa comunicao pode ser efetuada atravs de blocos de informao ou palavra a palavra. Realiza-se a transferncia por meio dos controladores dos dispositivos, sob superviso da UCP.

Sistemas Operacionais

Gerncia de Dispositivos
81

_______________________________________________________________________________________________________________________________________________________

Em funo da forma com que os dados so armazenados, os dispositivos de E/S podem ser classificados em duas categorias: dispositivos estruturados e dispositivos no-estruturados. Os dispositivos estruturados (block devices) caracterizam-se por armazenar informaes em blocos de tamanho fixo, possuindo cada qual um endereo. O tamanho dos blocos varia, geralmente, entre 128 e 1.024 bytes, e podem ser lidos ou gravados de forma independente. O disco magntico um exemplo de dispositivo estruturado, onde um programa pode ler ou gravar um bloco em qualquer instante de tempo. Nesse tipo de dispositivo sempre possvel acessar um bloco atravs do seu endereo. Os dispositivos estruturados classificam-se em dispositivos de acesso direto e seqencial, em funo da forma com que os dados so acessados. Um dispositivo classificado como de acesso direto quando um bloco de dados pode ser recuperado diretamente atravs de um endereo. O disco magntico o melhor exemplo para esse tipo de dispositivo. Um dispositivo do tipo de acesso seqencial quando, para se acessar, um bloco de dados, o dispositivo deve percorrer seqencialmente o meio de armazenamento procura do bloco. Como, por exemplo, a fita magntica. Os dispositivos no-estruturados (character device) so aqueles que enviam ou recebem uma seqncia de caracteres sem estar estruturada no formato de um bloco. Desse modo, a seqncia de caracteres no enderevel, inexistindo a possibilidade de operaes de acesso ao dado aps a transmisso. Dispositivos como terminais, impressoras e interfaces de rede so caracterizados como no-estruturados. 7. DISCOS MAGNTICOS Entre os diversos dispositivos de entrada/sada, os discos magnticos merecem ateno especial, por serem o depositrio de dados da grande maioria das aplicaes comerciais. Como o fator tempo crucial no acesso a esses dados, aspectos como desempenho e segurana devem ser considerados.

Sistemas Operacionais

Gerncia de Dispositivos
82

_______________________________________________________________________________________________________________________________________________________

Na realidade, um disco magntico constitudo por vrios discos sobrepostos, unidos por um mesmo eixo vertical, girando a uma velocidade constante. Cada disco compe-se de trilhas concntricas, que por sua vez so divididas em setores. As trilhas dos diferentes discos que ocupam a mesma posio vertical formam um cilindro. Para cada superfcie de um disco existe uma cabea de leitura/gravao. O conjunto de cabeas preso a um brao que se movimenta entre os vrios cilindros dos discos no sentido radial. O tempo necessrio para ler/gravar um bloco de dados de/para o disco funo de trs fatores: tempo de seek, latncia e transferncia. O tempo de seek (procura) o tempo gasto para mover o brao at o cilindro onde o bloco se encontra. O tempo de latncia o tempo de espera at que o setor desejado se posicione sob a cabea de leitura/gravao. O tempo de transferncia corresponde ao tempo necessrio para ler/gravar o bloco do/para o setor. Uma forma de eliminar parcialmente os tempos de seek e latncia copiar parte dos dados do disco para a memria principal. Esse tipo especial de disco conhecido como disco virtual ou disco RAM. Alguns sistemas gerenciadores de banco de dados (SGBD) implementam essa tcnica com vistas a aumentar o desempenho no acesso a grandes bases de dados. Existem duas tcnicas que permitem aumentar o desempenho e a segurana no armazenamento de dados em discos: espelhamento e striping. O espelhamento (shadowing ou mirroring) simplesmente a duplicao dos dados de um disco em um ou mais discos. Essa tcnica tem como objetivo diminuir o tempo de acesso aos dados e aumentar a segurana em caso de problemas fsicos nos discos(crash). Quando se l um dado, no tem importncia em qual dos discos a operao ser realizada, ficando o sistema responsvel pela escolha. Apesar de haver ganhos em operaes de leitura, toda gravao de dados exigir que ambos os discos sejam atualizados pelo sistema.

Sistemas Operacionais

Gerncia de Dispositivos
83

_______________________________________________________________________________________________________________________________________________________

O striping permite que dados sejam divididos e gravados em diversos discos, de modo a diminuir o tempo de acesso. Para poder implementar o striping preciso formar um conjunto de discos chamado de stripe set. Quando o stripe set criado, divide-se cada disco em pedaos (stripes), e sempre que um arquivo gravado, seus dados so divididos em pedaos iguais e espalhados simultaneamente pelos stripes dos diversos discos.

SISTEMA DE ARQUIVOS
1. Introduo Os arquivos so gerenciados pelo sistema operacional de modo a facilitar o acesso dos usurios ao seu contedo. A parte do sistema responsvel por essa gerncia denominada sistema de arquivos. O sistema de arquivos a parte mais visvel de um sistema operacional, pois a manipulao de arquivos uma atividade freqentemente realizada pelos usurios, devendo sempre ocorrer de maneira uniforme, independentemente dos diferentes dispositivos de armazenamento. 2. Arquivos Um arquivo constitudo de informaes logicamente relacionadas, podendo representar programas e dados. Exemplos: arquivo executvel, arquivo de dados na forma de texto, arquivo de dados na forma de um banco de dados. Dispositivos Fsicos de Armazenamento: fitas magnticas, discos magnticos e discos pticos. Deve existir uma independncia entre os arquivos a serem manipulados e o meio de armazenamento. Identificao: por meio de um nome, formado por uma seqncia de caracteres. Podem existir distines entre caracteres alfabticos maisculos e minsculos, assim como extenso mxima do nome e caracteres vlidos. Em alguns sistemas operacionais, a identificao de um arquivo composta por duas partes separadas com um ponto. A parte aps o ponto denominada extenso do arquivo e tem como finalidade identificar seu contedo.

Sistemas Operacionais

Sistema de Arquivos 63

_______________________________________________________________________________________________________________________________________________________

Extenso ARQUIVO.BAS ARQUIVO.COB ARQUIVO.EXE ARQUIVO.OBJ ARQUIVO.PAS ARQUIVO.TXT

Descrio Arquivo fonte em BASIC Arquivo fonte em COBOL Arquivo executvel Arquivo objeto Arquivo fonte em Pascal Arquivo texto

Tabela 1 Extenso de arquivos 2.1 ORGANIZAO DE ARQUIVOS A organizao de arquivos consiste no modo como os seus dado esto internamente armazenados. A estrutura dos dados pode variar em funo do tipo de informao contida no arquivo. No momento da criao de um arquivo, possvel definir que organizao ser adotada. Esta organizao pode ser uma estrutura suportada pelo sistema operacional ou definida pela prpria aplicao. Formas de organizao de arquivos: Seqncia no-estruturada de bytes; Seqncia estruturada de bytes. No ltimo caso, podemos visualizar um arquivo como um conjunto de registros. Quando definidos sempre com o mesmo tamanho, tais registros so ditos registros de tamanho fixo, e, caso contrrio, so chamados registros de tamanho varivel.

Sistemas Operacionais

Sistema de Arquivos 64

_______________________________________________________________________________________________________________________________________________________

2.2 MTODOS DE ACESSO Em funo de como o arquivo est organizado, o sistema de arquivos pode recuperar registros de diferentes maneiras. Inicialmente, os primeiros sistemas operacionais s armazenavam arquivos em fitas magnticas. Com isso, o acesso era restrito leitura dos registros na ordem em que eram gravados, sendo a gravao de novos registros possvel apenas no final do arquivo. Esse tipo de acesso, chamado de seqencial, era prprio da fita magntica, que como meio de armazenamento possua tal limitao. Com o advento dos discos magnticos, foram introduzidos mtodos de acesso mais eficientes. O primeiro a surgir foi o acesso direto, que permite a leitura/gravao de um registro diretamente na sua posio. Esse mtodo realizado atravs do nmero do registro, que a sua posio relativa ao inicio do arquivo. O acesso direto somente possvel quando o arquivo definido com registros de tamanho fixo. O acesso direto pode ser combinado com o acesso seqencial. Com isso possvel acessar diretamente um registro qualquer de um arquivo e, a partir deste, acessar seqencialmente os demais. Um mtodo de acesso mais sofisticado, que tem como base o acesso direto, o chamado acesso indexado ou acesso por chave. Para este acesso, o arquivo deve possuir uma rea de ndice onde existam ponteiros para os diversos registros. Sempre que a aplicao desejar acessar um registro, dever ser especificada uma chave atravs da qual o sistema pesquisar na rea de ndice, o ponteiro correspondente. A partir desta informao, realiza-se um acesso direto ao registro desejado. 2.3 OPERAES DE ENTRADA/SADA O sistema de arquivos oferece um conjunto de chamadas do sistema (system calls) que permite s aplicaes realizar operaes de E/S, como traduo de nomes em endereos, leitura e gravao de dados e criao/eliminao de arquivos. Na realidade, as system calls de E/S tm como funo oferecer uma interface simples e uniforme entre a aplicao e os diversos dispositivos.

Sistemas Operacionais

Sistema de Arquivos 65

_______________________________________________________________________________________________________________________________________________________

Comando CREATE OPEN READ WRITE CLOSE RENAME DELETE

Descrio Criao de um arquivo. Abertura de um arquivo. Leitura de dados de um arquivo. Gravao de dados em um arquivo. Fechamento de um arquivo. Alterao do nome de um arquivo. Eliminao de um arquivo.

Tabela 2 Operaes de entrada/sada 2.4 ATRIBUTOS Cada arquivo possui informaes de controle denominadas atributos. Dependendo do sistema de arquivos, os atributos variam, porm alguns, como tamanho do arquivo, proteo, identificao do criador e data de criao, esto presentes em quase todos os sistemas.

Atributos Tamanho Proteo Dono Criao Backup Organizao Senha

Descrio Especifica o tamanho do arquivo. Cdigo de proteo de acesso. Identifica o criador do arquivo. Data e hora de criao do arquivo. Data e hora do ltimo backup realizado. Indica a organizao lgica dos registros. Senha necessria para acessar o arquivo. Tabela 3 Atributos de arquivos

Sistemas Operacionais

Sistema de Arquivos 66

_______________________________________________________________________________________________________________________________________________________

3. DIRETRIOS A estrutura de diretrios o modo como o sistema organiza logicamente os diversos arquivos contidos em um disco. O diretrio uma estrutura de dados que contm entradas associadas aos arquivos, onde so armazenadas informaes como localizao fsica, nome, organizao e demais atributos. Quando um arquivo aberto, o sistema operacional procura a sua entrada na estrutura de diretrios, armazenando as informaes sobre atributos e localizao do arquivo em uma tabela mantida na memria principal. Esta tabela contm todos os arquivos abertos, sendo fundamental para aumentar o desempenho das operaes com arquivos. importante que ao trmino do uso de arquivos, este seja fechado, ou seja, que se libere o espao na tabela de arquivos abertos. Implementao: Nvel nico (single-level directory). Modelo bastante limitado (no permite que usurios criem arquivos com o mesmo nome); User File Directory (UFD) (two-level directory). Com esta implementao, cada usurio poderia criar arquivos com qualquer nome, sem a preocupao de conhecer os demais arquivos do disco. Existe um nvel de diretrio adicional denominado Master File Directory (MFD), indexado pelo nome do usurio. Referncia feita usando path (caminho). Ex.: /CARLOS/DOCUMENTO.TXT; A extenso do modelo de dois nveis para um de mltiplos nveis permitiu que os arquivos fossem logicamente mais bem organizados. Este novo modelo, chamado estrutura de diretrios em rvore (tree-structured directory), atualmente adotado pela maioria dos sistemas operacionais. Exemplo de path: /PAULO/PROGRAMAS/SOMA.EXE. Na maioria dos sistemas, os diretrios tambm so tratados como arquivos, possuindo identificao e atributos, como proteo, identificao do criador e data de criao.

Sistemas Operacionais

Sistema de Arquivos 67

_______________________________________________________________________________________________________________________________________________________

4. ALOCAO DE ESPAO EM DISCO A criao de arquivos em disco exige que o sistema operacional tenha o controle de quais reas ou blocos no disco esto livres. Este controle realizado atravs de uma estrutura de dados que armazena informaes que possibilitam ao sistema de arquivos gerenciar o espao livre do disco. Nesta estrutura, geralmente uma lista ou tabela, possvel identificar blocos livres que podero ser alocados para um novo arquivo. Neste caso, o espao removido da estrutura para que no seja reutilizado. No momento em que um arquivo eliminado, todos os seus blocos so liberados para a estrutura de espaos livres. Implementao: Estrutura de espaos livres atravs de uma tabela denominada mapa de bits (bit map). Cada entrada da tabela associada a um bloco do disco representado por um bit que pode assumir valor igual a 0 (indicando bloco livre) ou 1 (indicando bloco alocado). Principal problema: um excessivo gasto de memria, j que para cada bloco do disco deve existir uma entrada na tabela. Controle por meio da ligao encadeada de todos os blocos livres do disco. Para que isto seja possvel, cada bloco possui uma rea reservada para armazenamento do endereo do prximo bloco. Este esquema apresenta algumas restries se considerarmos que, alm do espao utilizado no bloco com informao de controle, o algoritmo de busca de espao livre sempre deve realizar uma pesquisa seqencial na lista. Uma outra soluo leva em conta que blocos contguos so geralmente alocados ou liberados simultaneamente. Podemos desta forma enxergar o disco como um conjunto de segmentos de blocos livres. Com base neste conceito, possvel manter uma tabela com o endereo do primeiro bloco de cada segmento e o nmero de blocos livres contguos que se seguem.

Sistemas Operacionais

Sistema de Arquivos 68

_______________________________________________________________________________________________________________________________________________________

4.1 ALOCAO CONTGUA A alocao contgua consiste em armazenar um arquivo em blocos seqencialmente dispostos no disco. Neste tipo de alocao, o sistema localiza um arquivo atravs do endereo do primeiro bloco e da sua extenso em blocos.

Estratgias de Alocao: First-fit -Neste caso, o primeiro segmento livre com tamanho suficiente para alocar o arquivo selecionado. A busca na lista seqencial, sendo interrompida to logo se localize um segmento de tamanho adequado. Best-fit - A alocao best-fit seleciona o menor segmento livre disponvel com tamanho suficiente para armazenar o arquivo. A busca em toda a lista se faz necessria para a seleo do segmento, a no ser que a lista esteja ordenada por tamanho. Worst-fit - Neste caso, o maior segmento alocado. Mais uma vez a busca em toda a lista se faz necessria, a menos que exista uma ordenao por tamanho. Independentemente da estratgia utilizada, a alocao contgua apresenta um problema chamado fragmentao dos espaos livres. O problema da fragmentao pode ser contornado atravs de rotinas que reorganizem todos os arquivos no disco de maneira que s exista um nico segmento de blocos livres. Este procedimento, denominado defragmentao, geralmente utiliza uma rea de trabalho no prprio disco ou em fita magntica.

Sistemas Operacionais

Sistema de Arquivos 69

_______________________________________________________________________________________________________________________________________________________

Problemas: determinao do espao em disco necessrio a um arquivo; posteriormente existir a possibilidade de extenso do arquivo; a pr-alocao de espao para resolver o problema da extenso, pode ocasionar que parte do espao alocado permanea ocioso. 4.2 ALOCAO ENCADEADA Na alocao encadeada, um arquivo pode ser organizado como um conjunto de blocos ligados logicamente no disco, independentemente da sua localizao fsica. Cada bloco deve possuir um ponteiro para o bloco seguinte do arquivo e assim sucessivamente. A fragmentao dos espaos livres, apresentada no mtodo anterior, no ocasiona nenhum problema na alocao encadeada, pois os blocos livres alocados para um arquivo no precisam necessariamente estar contguos. O que ocorre neste mtodo a fragmentao de arquivos, que a quebra do arquivo em diversos pedaos denominados extents. A fragmentao resulta no aumento do tempo de acesso aos arquivos, pois o mecanismo de leitura/gravao do disco deve se deslocar diversas vezes sob sua superfcie para acessar cada extent (excessivo tempo de seek). Para otimizar o tempo das operaes de E/S nesse tipo de sistema, importante que o disco seja periodicamente defragmentado. Apesar de ter propsitos diferentes, o procedimento de defragmentao idntico ao j apresentado na alocao contgua. Problemas: s permite que se realize acesso seqencial aos blocos dos arquivos; essa tcnica desperdia espao nos blocos com o armazenamento de ponteiros.

Sistemas Operacionais

Sistema de Arquivos 70

_______________________________________________________________________________________________________________________________________________________

4.3 ALOCAO NDEXADA A alocao indexada soluciona uma das principais limitaes da alocao encadeada, que a impossibilidade do acesso direto aos blocos dos arquivos. O princpio dessa tcnica manter os ponteiros de todos os blocos do arquivo em uma nica estrutura denominada bloco de ndice. A alocao indexada, alm de permitir o acesso direto aos blocos do arquivo, no utiliza informaes de controle nos blocos de dados como existente na alocao encadeada.

5. PROTEO DE ACESSO Considerando que os meios de armazenamento so compartilhados entre diversos usurios, de fundamental importncia que mecanismos de proteo sejam implementados para garantir a proteo individual de arquivos e diretrios. Qualquer sistema de arquivos deve possuir mecanismos prprios para proteger o acesso s informaes gravadas em discos e fitas, alm de possibilitar o compartilhamento de arquivos entre usurios, quando desejado. Acesso Leitura (read) Descrio Est relacionado a qualquer tipo de operao em que o arquivo possa ser visualizado, como a exibio do seu contedo, edio atravs de um editor de textos ou at mesmo a cpia para a criao de um novo arquivo. Gravao Est relacionado alterao no contedo do arquivo, como (write) incluso ou alterao de registros. Execuo S tem sentido quando associado a arquivos executveis ou (execute) arquivos de comandos, indicando o direito de execuo do arquivo. Eliminao Expressa a permisso para se eliminar um arquivo. (delete)

Sistemas Operacionais

Sistema de Arquivos 71

_______________________________________________________________________________________________________________________________________________________

O controle de acesso s operaes realizadas com diretrios possui diferenas em relao s operaes com arquivos. Controle da criao/eliminao de arquivos nos diretrios, visualizao do seu contedo e eliminao do prprio diretrio so operaes que tambm devem ser protegidas.

5.1 SENHA DE ACESSO A associao de uma senha de acesso a um arquivo um princpio bastante simples. O controle de acesso se resume ao usurio ter o conhecimento da senha e, consequentemente, ter a liberao do acesso ao arquivo concedida pelo sistema. Como cada arquivo possui apenas uma senha, o acesso liberado ou no na sua totalidade. Isso significa que no possvel determinar quais tipos de operao podem ou no ser concedidas. Outra desvantagem desse mtodo a dificuldade de compartilhamento de arquivos, pois alm do dono do arquivo todos os demais usurios teriam que conhecer a senha de acesso. 5.2 GRUPOS DE USURIOS A proteo baseada em grupos de usurios implementada por diversos sistemas operacionais. Esse tipo de proteo tem como princpio a associao de cada usurio do sistema a um grupo. Os grupos de usurios so organizados logicamente com o objetivo de compartilhar arquivos e diretrios, sendo que os usurios que desejam compartilhar arquivos entre si devem pertencer a um mesmo grupo. Esse mecanismo implementa trs nveis de proteo ao arquivo: owner (dono), group (grupo) e all (todos). Nessa especificao necessrio associar o tipo de acesso (leitura, escrita, execuo e eliminao) aos trs nveis de proteo.

Sistemas Operacionais

Sistema de Arquivos 72

_______________________________________________________________________________________________________________________________________________________

NVEL DE PROTEO Owner

TIPO DE ACESSO Leitura Escrita Execuo Elininao Leitura --

Group All

Proteo por grupo de usurios.

5.3 LISTA DE CONTROLE DE ACESSO A Lista de Controle de Acesso (Access Control List - ACL) consiste em uma lista associada a cada arquivo, onde so especificados quais os usurios e os tipos de acesso permitidos. Neste caso, quando um usurio tenta acessar um arquivo, o sistema operacional verifica se a lista de controle autoriza a operao desejada. O tamanho dessa estrutura de dados pode ser bastante extenso se considerarmos que um arquivo pode ter seu acesso compartilhado por diversos usurios. Alm deste fato, existe um overhead adicional, se comparado com o mecanismo de proteo por grupos de usurios, devido pesquisa seqencial que o sistema dever realizar na lista sempre que um acesso for solicitado. Em determinados sistemas de arquivos possvel encontrar tanto o mecanismo de proteo por campos de usurios quanto o de lista de controle de acesso, oferecendo, desta forma, uma maior flexibilidade ao mecanismo de proteo de arquivos e diretrios.

Sistemas Operacionais

Sistema de Arquivos 73

_______________________________________________________________________________________________________________________________________________________

6. IMPLEMENTAO DE CACHES O acesso a disco bastante lento se comparado ao acesso memria principal, devido arquitetura dos discos magnticos. Este o principal fator para as operaes de E/S com discos serem um problema para o desempenho do sistema. Com o objetivo de minimizar este problema, a maioria dos sistemas de arquivos implementa uma tcnica denominada buffer cache. Neste esquema, o sistema operacional reserva uma rea da memria para que se tornem disponveis caches utilizados em operaes de acesso ao disco. Quando uma operao realizada, seja leitura ou gravao, o sistema verifica se a informao desejada se encontra no buffer cache. Em caso positivo, no necessrio o acesso ao disco. Caso o bloco requisitado no se encontre no cache, a operao de E/S realizada e o cache atualizado. Como existe uma limitao no tamanho do cache, cada sistema adota polticas para substituio de blocos, como a FIFO (First in First out) ou a LRU (Least Recently Used). Apesar de esta implementao melhorar o desempenho do sistema, aspectos de segurana devem ser levados em considerao. No caso de blocos de dados permanecerem por um longo perodo de tempo na memria principal, a ocorrncia de problemas de energia pode ocasionar a perda de tarefas j realizadas e consideradas j salvas em disco. Existem duas solues: o sistema operacional possui uma rotina que executa periodicamente em um intervalo de tempo, atualizando em disco todos os blocos modificados do cache; toda vez que um bloco do cache for modificado, realizar imediatamente uma atualizao no disco (write-through caches).

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