Você está na página 1de 75

Sistemas Operacionais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Plo Universitrio de Rio das Ostras PURO

_________________________________________________________________

Bibliografia
Livros-Texto: TANENBAUM, A. S. Sistemas Operacionais Modernos. So Paulo : Prentice-Hall, 2004. SILBERSCHATZ, A., GAGNE, G., GALVIN, P. B. Sistemas Operacionais com Java: conceitos e aplicaes. Rio de Janeiro : Campus, 2004.

Livros de Referncia: DEITEL, H. M., DEITEL, P.J., CHOFINES, D.R. Sistemas Operacionais. So Paulo : Pearson Prenticce-Hall, 2005. OLIVEIRA, R. S., CARISSIMI, A. S., TOSCANI, S. S. Sistemas Operacionais. Porto Alegre : Instituto de Informtica da UFRGS: Editora Sagra Luzzatto, 2004. TANENBAUM, A. S., WOODHULL. Sistemas Operacionais: projeto e implementao. 2a. ed.. Porto Alegre : Bookman, 2000.

_________________________________________________________________

Captulo 1 Introduo aos Sistemas Operacionais

Um sistema operacional um programa que atua como uma interface entre o hardware do computador e o usurio do sistema. Seu propsito fornecer um ambiente no qual se possa executar programas. Suas metas so tornar o sistema do computador conveniente ao uso e que a utilizao do hardware seja feita de modo eficiente. Neste captulo so apresentados uma definio do que um sistema operacional, seus objetivos e diviso por reas de aplicao. A seguir, feito um breve histrico do desenvolvimento dos sistemas operacionais.

_________________________________________________________________

1. Introduo aos Sistemas Operacionais 1.1 . Definio de Sistemas Computacionais


Um sistema computacional um conjunto de recursos computacionais, sendo uma parte implementada em hardware e outra parte em software, dependendo do projeto, para interagirem cooperativamente. Em torno de um sistema computacional, existem usurios com problemas distintos para serem resolvidos, por exemplo, um usurio precisa editar texto, enquanto outro precisa fazer a contabilidade da empresa. Deste modo, o problema de cada usurio deve ser atendido por um programa, ou aplicativo, especfico que, neste caso, seriam, respectivamente, um editor de textos e um programa de contabilidade. Alm disso, o sistema computacional deve possuir o hardware necessrio, ou seja, os dispositivos fsicos ou recursos fsicos, para a execuo desses programas. De um modo geral, programas possuem muito em comum, por exemplo, tanto editor de texto como o sistema de contabilidade precisam acessar o disco, e a forma de acesso aos perifricos a mesma para todos os programas. Alm disso, para um melhor aproveitamento dos recursos computacionais, os sistemas computacionais so projetados para que vrios usurios possam compartilhar os recursos simultaneamente. Neste caso, os aplicativos podem apresentar necessidades conflitantes, pois muitas vezes disputam os mesmos recursos. Por exemplo, o editor de texto e o sistema de contabilidade podem solicitar, ao mesmo tempo, a nica impressora do sistema computacional. Assim, qualquer pessoa que utilize um sistema computacional deve saber que existe um software chamado sistema operacional (ao longo do curso, ser referenciado muitas vezes apenas como S.O.), que de alguma forma controla os recursos do sistema computacional, qualquer que seja o seu tipo ou porte. Sistemas operacionais so necessrios nos mais simples microcomputadores domsticos ou nos mais sofisticados supercomputadores de institutos de pesquisa ou de grandes corporaes.

1.2. Objetivos da Disciplina


O correto entendimento dos mecanismos presentes nos S.O. permite ao profissional de informtica uma melhor compreenso do seu ambiente de trabalho, resultando no desenvolvimento de solues com maior qualidade e eficincia. Assim, os objetivos da disciplina so permitir ao profissional de informtica a atuar nas reas de suporte, seleo e recomendao de S.O., a obter viso bsica do desenvolvimento e implementao de um S.O. e, principalmente, fornecer subsdios necessrios para a compreenso do funcionamento de S.O.

_________________________________________________________________

1.3. Definio do Sistema Operacional


O sistema operacional um programa que controla e coordena o uso do hardware do computador entre os vrios programas de aplicao para os vrios usurios. Assim, podemos dizer que o sistema operacional um conjunto de mdulos de software que regem os recursos do sistema, resolvem seus conflitos, simplificam o uso da mquina e otimizam seu desempenho global. Um sistema computacional constitudo de vrios elementos, que atuam em diferentes nveis, como exemplificado na figura 1.1. Observe que o sistema operacional, juntamente com aplicaes que constituem o software do sistema, pertence a uma mesma camada, cujo objetivo fundamental atender s solicitaes dos programas de aplicao do usurio por funcionalidades desempenhadas pelo hardware do sistema.

Figura 1.1. Estrutura simplificada de um sistema computacional

Um sistema operacional deve ter o completo domnio sobre os recursos da mquina. O escalonamento de recursos, o controle de entrada e sada (E/S), a gerncia da memria, a gerncia do processador, o escalonamento de processos e a segurana so funes que o sistema operacional deve exercer. No projeto de um sistema operacional deve ter em mente dois objetivos principais: Apresentar ao usurio do computador uma forma amena de utilizar a mquina. Criar uma mquina virtual, de fcil compreenso para o usurio, com caractersticas diferentes da mquina fsica; Realizar o melhor uso possvel do hardware disponvel, aumentando o desempenho do sistema e diminuindo o custo. Finalmente, o sistema operacional pode ser visto como uma mquina estendida (ou mquina virtual), ocultando detalhes complexos do funcionamento do hardware que constitui o sistema computacional, e como um gerenciador de recursos, que podem ser compartilhados no tempo (diferentes programas ou usurios aguardam sua vez de uslos) ou no espao (vrios programas ou usurios utilizam simultaneamente uma parte do recurso), por exemplos, vrias aplicaes ocupam partes da memria do sistema.

_________________________________________________________________

Como sistemas computacionais so empregados em ambientes de tarefas bastante heterogneos, razovel assumir que existam diferentes sistemas operacionais (ou diferentes verses de um mesmo), que sejam mais adequadas para a realizao de um conjunto de tarefas especfico. possvel dividir as reas de aplicao de um sistema operacional em sistemas de tempo real e sistemas de processamento de tarefas, definidos a seguir.

1.4. Classificao de Sistemas de Computao em Relao ao Funcionamento


Os diversos tipos de sistemas computacionais diferem entre si, principalmente nas tarefas de administrao dos processos e capacidade de atendimento aos processos, por exemplo, alguns sistemas computacionais tratam um s processo de usurio por vez, ou seja, mantm apenas um processo de usurio na memria, enquanto outros sistemas computacionais j suportam mltiplos processos de simultaneamente em memria. Entretanto, o simples fato de existir mais de um processo em memria, no garante que todos, ou alguns, sero atendidos ao mesmo tempo, ou seja, paralelamente. A estrutura de funcionamento de um sistema computacional depende dos recursos de hardware presentes, bem como da capacidade do sistema operacional em atender as solicitaes dos processos, em disponibilizar os recursos aos processos e ao escalonamento de uso do(s) processador(es). A seguir veremos uma classificao de sistemas computacionais, considerando a estrutura de funcionamento dos mesmos, porm lembramos que devemos complementar esse estudo em outros textos, pois existem diferenas de classificao entre diferentes autores. Assim, o que apresentamos a seguir so conceitos bsicos, sem seguir especificamente um nico autor. a) Sistemas monoprogramados: So os mais simples e foram largamente utilizados. Permitiam que somente um programa por vez fosse processado, ou seja, somente um programa tinha posse de todos os recursos do sistema computacional, indiferente da sua necessidade de uso, consequentemente, a utilizao dos recursos no ser otimizada. Alm disso, o programa em execuo dever administrar todo o sistema computacional. Se este tipo de controle for utilizado em equipamentos caros, a relao custo x benefcio tende a ser desvantajosa. b) Sistemas multiprogramados: Com o objetivo de melhorar a relao custo x benefcio e visando a otimizao do uso dos recursos, surge, no incio dos anos 70, o conceito e a primeira implementao de multiprogramao. A idia era otimizar a utilizao de recursos destinando determinadas tarefas a componentes especficos do sistema computacional, por exemplo, quando executa-se uma rotina de entrada e sada (E/S ou I/O), pode-se atribuir o procedimento de E/S a um hardware/software dedicado funo. Assim, o processador ficaria ocioso, podendo ser utilizado por outro processo.

_________________________________________________________________

Para tanto, deve ser mantido em memria, simultaneamente, uma quantidade n de processos, capazes de ocupar o processador durante todo o tempo. Uma variao um pouco mais sofisticada dos sistemas multiprogramados, so os sistemas que fazem multitarefa cooperativa, que seguem o mesmo conceito com algumas melhorias. c) Sistemas de tempo compartilhado: Os sistemas de tempo compartilhado (time sharing ou time shared), da mesma forma que os sistemas multiprogramados, possibilitavam que, em um instante de tempo vrios processos fossem alocados na memria, entretanto, a execuo se daria em intervalos cclicos de tempo, determinando uma fatia de tempo (time slice) para cada processo. O tempo compartilhado largamente utilizado nos equipamentos de grande porte e permitiu a implementao de sistemas multiusurios, onde vrios usurios, de forma simultnea e online, concorrem pelo tempo de execuo. Como exemplo de sistemas de tempo compartilhado, podemos citar os sistemas de multitarefa preemptiva. d) Sistemas multiexecutados: Outra evoluo natural dos sistemas monoprogramados so os sistemas multiexecutados, pois a prpria evoluo do hardware permitiu a execuo de vrias tarefas concorrentemente, atravs de tempo compartilhado, sendo que essas tarefas so comandadas por um nico usurio (monousurio). Ou seja, os sistemas multiexecutados so similares aos de tempo compartilhado, porm no permitem multiusurios. e) Sistemas multiprocessados: Os sistemas multiprocessados permitem que durante um determinado instante de tempo, vrios processos estejam alocados na memria, sendo executados simultaneamente (processamento paralelo), no de forma concorrente, como em outros sistemas multitarefas (por exemplo, sistemas exclusivamente multiprogramado ou exclusivamente por tempo compartilhado). Os sistemas computacionais que suportam multiprocessamento possuem mais do que um elemento processador. A execuo de dos programas nos diversos processadores no impede a utilizao dos perifricos em outras tarefas independente dos processadores (assim como, nos sistemas de tempo compartilhado, multiprogramados e multi-executados) de forma a otimizar o uso destes. Sistemas multiprocessados so ambientes com sistemas operacionais complexos e sofisticados destinados a sistemas computacionais de alto desempenho.

1.5. Conceitos Bsicos de Sistemas Operacionais


Um sistema computacional composto por um ou mais processadores, uma certa quantidade de memria, terminais, discos magnticos, interfaces de rede e dispositivos de E/S, etc., ou seja, estamos lidando com um sistema extremamente

_________________________________________________________________

complexo, e desenvolver software que gerencie e integre esses componentes, fazendo-os trabalhar corretamente e de forma otimizada, no tarefa fcil. O sistema operacional uma camada de software colocada entre os recursos de hardware e os programas que executam tarefas para os usurios, sendo que uma de suas principais responsabilidades permitir e promover o acesso aos perifricos, sempre que um programa solicitar uma operao de E/S. Atravs dessa interveno do sistema operacional, o programador no precisa conhecer detalhes do hardware, por exemplo, informaes de como enviar um caractere para a impressora, so internas ao sistema operacional. Alm disso, como todos os acessos aos perifricos so feitos atravs do sistema operacional, fica mais fcil controlar a disponibilizao dos recursos, buscando uma distribuio justa, eficiente e conveniente, no s dos recursos de E/S, mas de todo o sistema computacional. Uma utilizao mais eficiente do sistema computacional obtida a partir da distribuio de seus recursos entre os programas, por exemplo, a distribuio do espao em disco, da memria principal, do tempo do processador, do acesso a disco, etc. J a utilizao mais conveniente obtida a partir da disponibilizao dos recursos do sistema computacional, sem que os usurios conheam os detalhes dos recursos. Como exemplo, vamos imaginar um usurio especializado, um programador, que ao desenvolver um programa precisa colocar um caractere na tela. Para tanto, em geral, necessria toda uma sequncia de acessos interface do vdeo, diversos registradores devem ser lidos ou escritos e, alm disso, podem existir diferentes tipos de interfaces que exigiro diferentes sequncias de acesso. Porm, atravs do sistema operacional, o programador apenas informa, no programa, qual caractere deve ser colocado na tela e todo o trabalho de acesso ao perifrico feito pelo sistema operacional. Ao esconder detalhes dos perifricos, muitas vezes so criados recursos de mais alto nvel, ou seja, as abstraes. Por exemplo, os programas utilizam o espao em disco atravs do conceito de arquivo. Arquivos no existem no hardware, mas formam um recurso criado a partir do que o hardware oferece. Para o programador muito mais confortvel trabalhar com arquivos do que receber uma rea de espao em disco que ele prprio teria que organizar. Como exemplo de abstrao, considere uma instruo de E/S, por exemplo, READ ou WRITE em um IBM PC, que deve ser acompanhada de 13 parmetros, especificando o endereo do bloco a ser lido, o nmero de setores por trilha, o modo de gravao no meio fsico, o espaamento entre setores, etc., sem contar com as tarefas de ordem fsica/mecnica, por exemplo, verificar se o motor do drive j est acionado. A grande maioria dos programadores no se envolve com tais detalhes, pois lida com uma abstrao de alto nvel e, portanto mais simples. No exemplo em questo, a abstrao feita nos discos visualiz-los como uma coleo de arquivos identificados por nomes, onde os eventos, a manipulao dos arquivos, no consideram maiores detalhes e restringem-se a simplesmente abrir, ler/escrever e fechar.

_________________________________________________________________

1.6. Arquitetura de Sistemas Operacionais


A arquitetura de um sistema operacional a estrutura bsica sobre a qual projetado o sistema operacional, de como as abstraes so realmente implementadas, como o sistema computacional deve ser solicitado e atender aos aplicativos, como interagem as partes do sistema operacional entre si e como o sistema operacional responde s solicitaes dos aplicativos. 1.6.1. Arquitetura monoltica: a arquitetura mais antiga e mais comum. Cada componente do sistema operacional contido no ncleo (kernel) e pode comunicar-se com qualquer outro componente diretamente. Essa intercomunicao direta permite rapidez na resposta de sistema operacional monolticos, entretanto como ncleos monolticos agrupam os componentes todos juntos, difcil identificar a origem de um determinado problema ou erro. Alm disso, todo o cdigo do sistema operacional executado com acesso irrestrito ao sistema, o que pode facilitar a ocorrncia de danos provocados intencionalmente, ou no, por outros aplicativos. 1.6.2. Arquitetura em camadas: medida que os sistemas operacionais tornaram-se mais complexos e maiores, projetos puramente monolticos tornaram-se inviveis e, ento a arquitetura em camada, ou modular, tornou-se uma boa opo, agrupando camadas de componentes, ou seja, conjunto de procedimentos, que realizam tarefas similares. Cada camada comunica-se somente com as suas camadas imediatamente inferior e superior. Uma camada inferior sempre presta um servio sua camada superior, sendo que a camada superior no sabe como o servio feito, apenas o solicita. A implementao de uma camada pode ser modificada sem exigir modificao em outra camada, pois possuem componentes autocontidos. Em uma abordagem em camadas, a solicitao de um servio pode precisar passar por muitas camadas antes de ser atendida, assim o desempenho se degrada em comparao ao de ncleos monolticos. 1.6.3. Arquitetura de microncleo: A arquitetura de microncleo (microkernel) tambm uma forma de arquitetura modular ou em camadas. Na tentativa de reduzir os procedimentos mais fundamentais, somente um pequeno nmero de servio tais como parte do gerenciamento de memria, a sincronizao entre processos e a comunicao entre processos, ter acesso direto ao HW, como representado na figura 1.2. Por sua vez, o servio de comunicao entre processo, que est dentro do microncleo, o responsvel por habilitar os servios de, p.ex., redes, sistemas de arquivos, gerenciamento de dispositivos, etc., que normalmente, podem ser implementados no ncleo do sistema operacional, no no microncleo, ou at como procedimentos (aplicativos) externos ao ncleo.

_________________________________________________________________

10

Alguns sistemas operacionais permitem que as aplicaes acessem diretamente os servios oferecidos pelo microncleo. Por tambm ser uma arquitetura modular, a arquitetura em microncleo possui, em geral, as mesmas vantagens e desvantagens da arquitetura em camadas.
Aplicaes Kernel Servios do microkernel Microkernel HW Chamadas ao sistema

1.2. Representao da organizao de um SO com arquitetura de microkernel.

1.7. A Funo do Sistema Operacional


O sistema operacional um programa que controla e coordena o uso do hardware do computador entre os vrios programas de aplicao para os vrios usurios. Assim, podemos dizer que o sistema operacional um conjunto de mdulos de software que regem os recursos do sistema, resolvem seus conflitos, simplificam o uso da mquina e otimizam seu desempenho global. Um sistema operacional deve ter o completo domnio sobre os recursos da mquina. O escalonamento de recursos, o controle de entrada e sada (E/S), a gerncia da memria, a gerncia do processador, o escalonamento de processos e a segurana so funes que o sistema operacional deve exercer. No projeto de um sistema operacional deve-se ter em mente dois objetivos principais: Apresentar ao usurio do computador uma forma amena de utilizar a mquina. Criar uma mquina virtual, de fcil compreenso para o usurio, com caractersticas diferentes da mquina fsica; Realizar o melhor uso possvel do hardware disponvel, aumentando o desempenho do sistema e diminuindo o custo. possvel dividir as reas de aplicao de um sistema operacional em sistemas de tempo real e sistemas de processamento de tarefas, que esto definidos a seguir.

17.1. Sistemas de Tempo Real Os sistemas de tempo real so aqueles que devem fornecer uma resposta a estmulos externos num perodo de tempo extremamente pequeno. Podem-se citar os seguintes exemplos: controle de processos: Os computadores so utilizados para controlar processos industriais, tais como o refino de petrleo bruto, controle de temperatura em alto fornos entre outros. Em comum, tais aplicaes tm a necessidade de receber uma resposta rpida aps a emisso de um sinal de controle.

_________________________________________________________________

11

consulta a base de dados: O computador aqui, utilizado para obter informaes armazenadas em grandes bancos de dados. Geralmente, o usurio deste tipo de aplicao desconhece como se processam as operaes do sistema, e espera um tempo de resposta pequeno para obter suas informaes. Um exemplo de tal aplicao seria uma consulta a informaes sobre censo. processamento de transaes: Neste caso, o computador utilizado para realizar acessos a bancos de dados que esto frequentemente sendo atualizados, talvez vrias vezes em um segundo. Aplicaes tpicas so reservas de passagens e consultas bancrias. 1.7.2. Sistemas de Processamento de Tarefas Os sistemas de processamento de tarefas so projetados para manipular um fluxo contnuo de programas que sero executados pelo computador. Tendo em vista a grande variedade de programas que podem ser processados, tal sistema precisa suportar um grande nmero de utilitrios. Esses utilitrios podem ser compiladores para diversas linguagens, montadores (assemblers), linkers, editores de texto entre outros. necessrio tambm dar suporte a um sistema de arquivos para gerenciar o armazenamento de informaes. Podemos classificar os sistemas de processamento de tarefas em dois grupos:

Batch: A principal caracterstica desse grupo o fato de que o usurio perde o controle do programa a partir do momento em que ele o submete ao sistema. Interativo: A caracterstica marcante desse grupo permitir a monitorao e o controle do programa, atravs de um terminal, enquanto durar o processamento.

1.8. A Evoluo dos Sistemas Operacionais


Antigamente existia somente o hardware do computador. O operador e programador da mquina eram uma s pessoa. Todo o controle do sistema era feito atravs de botes e displays no console. O operador/programador monitorava a execuo de um programa interativamente. A ativao (setup) do computador era muito lenta e a depurao era extremamente trabalhosa1. Assim, era necessrio buscar solues que tornassem mais fcil e mais eficiente utilizao do computador. Os sistemas operacionais foram ento criados com estas finalidades. Os sistemas operacionais, assim como os dispositivos eletrnicos, vm sofrendo mudanas ao longo das ltimas dcadas. Podem ser identificadas vrias geraes, que esto descritas a seguir. Primeira Gerao (Anos 50) Em 1953 surgiu o primeiro sistema operacional. Desenvolvido pela GM Laboratories, ele foi desenvolvido para um computador IBM modelo 701. Os primeiros
Procure saber mais a respeito do funcionamento do ENIAC, o primeiro computador digital eletrnico, e ainda, sobre o Altair 8800, um dos primeiros computadores pessoais
1

_________________________________________________________________

12

sistemas eram voltados para o processamento em batchs (lotes). O sistema operacional era responsvel pela entrada de um programa e sada de outro, isto , o sequenciamento de jobs. Uma vez que houvesse um processo rodando, ele tinha completo controle sobre a mquina. Ao trmino (normal ou anormal) do processo, o controle retornava ao sistema operacional que preparava a maquina para receber o prximo programa. Ainda assim, o tempo de ativao (setup) do computador era enorme.

Segunda Gerao (Anos 60) Nesta poca, vrias empresas j fabricavam sistemas operacionais. O principal objetivo era terminar o maior nmero de processos por unidade de tempo, aumentando o desempenho de um sistema de computador. Foram desenvolvidos tambm nesta poca os primeiros sistemas com as seguintes caractersticas: Multiprogramao: A multiprogramao permite que vrios processos sejam executados simultaneamente. Multiprocessamento: No multiprocessamento, vrios programas so processados ao mesmo tempo em processadores diferentes. Time-sharing: So ditos de tempo compartilhado. Usurios interagem com a mquina de uma maneira conversacional atravs de terminais. Tempo real: Dentre eles se destaca o SABRE para reservas de passagens da American Airlines. Apareceu tambm nesta gerao, o conceito de dispositivo independente. Nos sistemas da primeira gerao, o usurio que precisasse escrever dados em uma fita, deveria referenciar, no seu programa, especificamente qual fita ele desejava Na segunda gerao, o usurio deveria apenas referenciar a necessidade de uma fita. O sistema, ento, ficaria responsvel por reservar uma fita disponvel para ele. Em abril de 1964, a IBM lanou a srie de computadores System/360 que eram compatveis em termos de arquitetura e tinham o mesmo sistema operacional OS/360. Esse sistema era adequado tanto para aplicaes cientficas quanto para aplicaes comerciais. Antes disso, cada vez que fosse necessrio um sistema computacional mais potente, eram oferecidos sistemas totalmente diferentes, o que implicava em uma converso de hardware e de software lenta e muito cara. Com a srie 360 era possvel passar anos e anos sem precisar de converses. Foi um verdadeiro sucesso.

Terceira Gerao (meados dos anos 60 a meados dos anos 70) A terceira gerao comeou efetivamente com a introduo da famlia 360. Os computadores dessa gerao foram desenvolvidos para serem sistemas de propsito geral. Eram sistemas que suportavam simultaneamente o processamento batch, sime-sharing, tempo-real e multiprocessado. Eram sistemas grandes e caros. Este conceito vendeu muitos computadores, mas existia um overhead muito alto relativo ao tempo em que a mquina gastava executando rotinas do sistema operacional. Alm disso, determinadas aplicaes no necessitavam de todos os modos de processamento.

_________________________________________________________________

13

Unia exceo deste conceito foi o sistema operacional UNIX, que foi construdo nesta poca. No final dos anos 60, Ken Thompson e Dennis Ritchie, entre outros membros da equipe do Bell Laboratories desenvolveram e implementaram um ambiente interativo, o UNIX. Usando esse sistema, desenvolveram tambm a linguagem C. Uma grande parte do sistema operacional foi escrita em C, o que contribuiu para a popularidade de ambos. Os sistemas comearam a ser escritos em linguagens de alto nvel e surgiram as linguagens de controle que permitem controlar a execuo de processos. Outro marco importante foi o surgimento da engenharia de software. Essa viria a ditar regras para a construo de sistemas. Os sistemas operacionais que eram um aglomerado de programas escritos por pessoas com muito mais noo de hardware do que software passaram a ser escritos de uma maneira mais disciplinada.

Quarta Gerao (Meio dos anos 70 ao final dos anos 80) Nesta fase apareceram os sistemas operacionais para redes de computadores, onde o usurio ganha acesso a redes locais ou geograficamente dispersas. O ponto importante era transferir informao entre computadores interconectados. Correio eletrnico, transferncia de arquivo e aplicaes de acesso a banco de dados proliferaram nesta poca. O modelo cliente/servidor tornou-se difundido. Os clientes so os processos dos usurios que necessitam de vrios servios e os servidores so os componentes de hardware/software da rede que realizam estes servios. Os servidores so geralmente dedicados a um tipo de tarefa tais como impresso, acesso a banco de dados entre outros. O conceito de processamento distribudo tornou-se largamente difundido. Quando necessrios, dados eram trazidos para serem processados em alguma instalao de computador central de larga escala. Com o advento do microprocessador, surgem os computadores pessoais, um dos mais importantes desenvolvimentos com consequncias sociais das ltimas dcadas. Um computador poderia ser adquirido por um preo acessvel a muitos usurios que passariam a ter o seu prprio computador. A quantidade de pessoas com acesso a um computador tornou-se consideravelmente maior e o termo user friendly comeou a ser muito utilizado. Ele significa que o sistema apresenta, para usurios leigos, um ambiente de acesso fcil ao computador. O conceito de mquina virtual tornou-se largamente utilizado. Os usurios no precisavam mais se preocupar com detalhes fsicos do sistema do computador que est sendo usado, ao invs disso, o usurio via uma mquina virtual criada pelo sistema operacional. O campo da engenharia de software continuou a ter uma importncia significativa.

_________________________________________________________________ Quinta Gerao (Final dos anos 80 ao presente)

14

Nos anos 90 entramos na verdadeira era da computao distribuda. As computaes so divididas em subcomputaes. Essas so executadas em diferentes processadores, que podem ser computadores multiprocessadores ou redes de computadores. As subcomputaes podem ser distribudas de tal maneira que se possa obter vantagens utilizando computadores de propsito especial atravs das redes. As redes podem ser configuradas dinamicamente. Elas continuam operando ainda que novos dispositivos e softwares sejam adicionados ou removidos. Quando cada novo servidor for adicionado, ele dar a rede, atravs de um procedimento de registro, informaes sobre suas capacidades, polticas de ligao, acesso entre outras. Os clientes podem ento usar os servidores, quando necessrio, de acordo com os termos descritos durante o registro. Para atingir flexibilidade real, clientes no teriam conhecimento dos detalhes da rede. Este tipo de conectividade facilitada por padres de sistemas abertos e protocolos. Esses padres esto sendo desenvolvidos por alguns grupos internacionais como International Organization for Standardization (ISO), Open Software Foundation, X/Open, entre outros. Eles pretendem chegar a um acordo sobre um ambiente internacionalmente aceito para padres de comunicao e de computao. A tendncia a computao tornar-se muito poderosa e porttil. Nos anos recentes, foram introduzidos os computadores laptop, que possibilitam s pessoas transportarem seus computadores por toda parte. Com o desenvolvimento de protocolos de comunicao os computadores laptop podem ser ligados em redes de comunicao e transmitir dados com alta confiabilidade.

1.9. Resumo
Os sistemas operacionais foram desenvolvidos ao longo das ltimas dcadas com dois propsitos principais. Primeiro, fornecer um ambiente conveniente ao desenvolvimento e a execuo de programas. Segundo, controlar as atividades computacionais (recursos do hardware) para garantir um bom desempenho do sistema do computador. Existem vrias definies para os sistemas operacionais. Dentre elas, uma define os sistemas operacionais como um programa que atua como uma interface entre o hardware da mquina e o usurio do sistema. Inicialmente os computadores eram manipulados atravs de consoles. No havia nenhum mecanismo que facilitasse a sua utilizao. Em uma fase posterior, foram desenvolvidos os montadores, carregadores, compiladores que melhoraram a tarefa da programao do sistema. Porm, o tempo de setup era grande, o que levou ento ao desenvolvimento de sistemas em batch. Depois desta poca que comearam a surgir os sistemas mais elaborados como os sistemas multiprogramados, multiprocessados, de tempo compartilhado e de tempo real. Um dos grandes destaques foi o conceito desenvolvido nos sistemas da IBM, a

_________________________________________________________________

15

srie 360. Com essa srie era possvel mudar de um sistema para outro sem precisar de mudanas radicais. Um outro destaque foi o desenvolvimento do sistema operacional UNIX, escrito em sua maior parte com uma linguagem de alto nvel, o C. Mais recentemente surgiram os sistemas operacionais para rede de computadores. O conceito de processamento distribudo tornou-se difundido. Computadores pessoais tornaram-se acessveis e possuem softwares amigveis. Atualmente, as redes de computadores tm obtido uma importncia real. A computao distribuda vem sendo submetida a computadores multiprocessadores e a redes. O modelo cliente/servidor vem sendo desenvolvido, buscando portabilidade e melhor desempenho. Um outro tipo de computador que surgiu denominado laptop. Os laptops so pequenos e podem ser transportados com facilidade2.

Existe alguma diferena entre notebooks e laptops? Faa uma pesquisa a respeito.

_________________________________________________________________

16

Capitulo 2 Servios do Sistema Operacional

Uma viso bastante comum do sistema operacional aquela que encara este software como uma extenso da mquina, fornecendo mais servios para os aplicativos e outros programas bsicos. Alm disso, o sistema operacional pode ser considerado tambm um administrador e fornecedor de recursos (incluindo servios). Ele cuida de todos os recursos que esto disponveis no computador, permitindo ao usurio utilizar a mquina (hardware + SO) de maneira amigvel. Isso fundamental em qualquer mquina, tornando-se mais crtico naquelas que permitem mais de um usurio ao mesmo tempo. Neste captulo so apresentados os servios que so oferecidos pelo sistema operacional e mostradas a viso do usurio e a viso do sistema operacional, em relao mquina.

_________________________________________________________________

17

2.1. Tipos de Servios


O sistema operacional fornece um ambiente para a execuo de programas atravs de servios para os programas e para os usurios desses programas. Alguns servios no tm como preocupao apenas tornar a mquina mais confortvel para o usurio, mas tambm para que o prprio sistema seja mais eficiente e seguro. Esse o caso dos servios oferecidos nos sistemas que permitem vrios usurios compartilhando todos os recursos da mquina. Apesar da forma como esses servios so oferecidos variar de sistema para sistema existem algumas classes de servios que so comuns a todos os sistemas operacionais. Estes compem a sua prpria definio. Como exemplo, temos: Execuo de programas: O sistema operacional o responsvel por carregar um programa na memria principal da mquina e execut-lo. O programa o responsvel pelo trmino da sua prpria execuo; Operaes de entrada/sada: Durante a sua execuo, um programa pode ter necessidade de se comunicar com o meio externo mquina. Esta operao recebe o nome de entrada/sada (E/S) e pode envolver qualquer dispositivo de E/S (disco, impressora). Como um programa no pode executar estas operaes diretamente, o sistema operacional o responsvel por fornecer meios adequados para isso; Manipulao de sistema de arquivos: Os usurios de uma mquina tm necessidade de realizar acessos aos arquivos pelo nome para saber se eles existem, para apag-los ou at para renome-los. Um programa em execuo pode querer ler ou escrever num arquivo qualquer. O sistema operacional o responsvel por gerenciar o sistema de arquivos da mquina. Este gerenciamento inclui a alocao de espao no dispositivo de armazenamento secundrio, a busca otimizada a um determinado arquivo e o armazenamento de todas as informaes necessrias sobre cada arquivo. Deteco de erros: O sistema operacional o responsvel por detectar erros possveis que podem comprometer a execuo de qualquer programa e a segurana da mquina. Estes erros podem envolver o prprio processador a memria principal (acesso a uma rea proibida), os dispositivos de entrada/sada (falta de papel na impressora), ou at mesmo o programa do usurio (uma diviso por zero). Para cada tipo de erro, o sistema operacional tem uma ao apropriada para garantir a corretude e a consistncia da computao. Alocao de recursos: O sistema operacional o responsvel pela alocao dos diversos recursos em sistemas com um ou mais usurios. Estes recursos incluem a memria principal, a prpria UCP, arquivos e os dispositivos de E/S A alocao deve ser feita da forma mais eficiente possvel para no prejudicar o desempenho do sistema. Proteo: O sistema operacional o responsvel pela proteo a todo o sistema computacional. Essa proteo se torna necessria tanto em sistemas monousurios quanto em sistemas multiusurios. A nica diferena a sua complexidade. Quando vrios usurios esto usando o sistema, a execuo de um programa no pode interferir na execuo de outro. Alm disso, o prprio sistema operacional deve ser protegido de erros cometidos pelos usurios.

_________________________________________________________________

18

2.2. Usurios x Sistema Operacional


A seguir sero apresentadas as duas formas de o sistema operacional fornecer servios aos usurios: chamadas ao sistema e programas utilitrios. Chamadas ao Sistema O nvel mais fundamental de servios fornecido pelo sistema operacional realizado atravs de chamadas ao sistema (system calls) As chamadas fornecem uma interface entre um programa em execuo e o sistema operacional. Esto, geralmente, disponveis como instrues nas linguagens de baixo nvel ou at mesmo em linguagens de alto nvel, como C. As chamadas ao sistema podem ser classificadas, em duas categorias principais: Controle de processos. Nessa categoria existem chamadas ao sistema para a criao e a finalizao de processos, a manipulao de tempo para manter a sincronizao entre processos concorrentes, o carregamento e a execuo de programas, a obteno e a ativao de atributos dos processos, entre outras. Gerenciamento de arquivos e de dispositivos de E/S. Nesta categoria existem chamadas ao sistema para criar, apagar, abrir e fechar um arquivo, ler e escrever em arquivos, e ainda obter e modificar os atributos de um arquivo, entre outras. Os atributos de um arquivo incluem, por exemplo, o seu nome, tipo, cdigos de proteo e tamanho. Em geral, a nica informao necessria para o sistema realizar um acesso a um arquivo o seu nome. No caso de dispositivos de E/S, existem ainda as chamadas para requisitar e liberar um dispositivo. Na figura 2.1 mostrado um esquema de atendimento do sistema operacional s chamadas ao sistema. Inicialmente (1), o processo escreve nos registradores da mquina o cdigo da chamada e os seus parmetros. A seguir (2), o processo executa uma instruo trap e o sistema operacional interpreta a chamada (3), executa o servio solicitado (4) e devolve o controle para o processo (5).

Figura 2.1. Exemplo de chamada ao sistema

_________________________________________________________________

19

Uma instruo trap muda o estado do processador do modo usurio para o modo supervisor (ou sistema). No primeiro modo, as instrues que afetam o hardware no podem ser executadas e, no segundo, todas as instrues podem ser executadas A distino entre o modo usurio e o supervisor ou sistema existe para proteo do sistema operacional e para proteo entre usurios. Na implementao de uma chamada ao sistema so necessrias mais informaes do que simplesmente identificar a chamada desejada. A quantidade e o tipo exato de informaes variam de acordo com a chamada e o sistema operacional em particular. Em geral, existem dois mtodos usados para passar parmetros ao sistema operacional. A abordagem mais simples pass-los em registradores. Entretanto, em alguns casos, pode haver mais parmetros do que registradores. Nestes casos os parmetros so geralmente armazenados em blocos ou tabelas na memria principal e o endereo do bloco ou tabela passado como um parmetro em um registrador. Para exemplificar o uso das chamadas ao sistema podemos considerar um programa em execuo que leia informaes de um arquivo e escreva em outro. As primeiras informaes de que o programa necessita so os nomes dos arquivos que sero manipulados. Esses nomes podem ser pr-definidos dentro do prprio programa em execuo ou passados pelo usurio durante a execuo (isso exige uma outra sequncia de chamadas ao sistema). Uma vez que os nomes dos arquivos tenham sido obtidos, o programa deve abrir o arquivo de entrada, que vai ser lido (open) e criar o arquivo de sada (create). Algum tipo de tratamento de erro pode ser previsto, como por exemplo, se o arquivo de entrada ainda no foi criado, se ele possui algum tipo de proteo ou se j existe algum arquivo com nome igual ao do arquivo de sada. Cada uma dessas operaes requer uma chamada ao sistema. Depois que os dois arquivos j foram abertos, o prximo passo ler do arquivo de entrada (read) e escrever no arquivo de sada Neste ponto, tanto na leitura como na escrita, outras situaes tambm podem ser previstas, como a chegada ao final do arquivo, erro no dispositivo de armazenamento secundrio, falta de espao no disco para o arquivo de sada. Finalmente, depois que o arquivo de entrada foi totalmente copiado para o arquivo de sada, o programa em execuo deve fechar os dois arquivos (close) e terminar normalmente (end).

Programas Utilitrios Outros tipos de servios oferecidos pelo sistema operacional so os chamados programas utilitrios (systems programs). Esses servios so de mais alto nvel e fornecem uma interface entre o usurio e o sistema operacional. Como foi visto no exemplo anterior, um programador pode escrever um programa que copie o contedo de um arquivo de entrada para um arquivo de sada, e utiliz-lo sempre que necessrio. Embora possvel esta no seja a forma mais confortvel, pois obriga o usurio a conhecer detalhes complexos da mquina, e a ter conhecimento de tcnicas de programao. Alm disso, vrios usurios tm necessidade deste tipo de operao e seria bastante interessante que existisse alguma padronizao.

_________________________________________________________________

20

Dessa forma ento, a maioria dos sistemas operacionais oferece um conjunto de programas utilitrios que tornam o ambiente mais conveniente para o desenvolvimento e execuo de programas. Podem-se agrupar os programas utilitrios da seguinte forma: Manipulao de arquivos: Inclui apagar, copiar, ver o contedo, renomear e imprimir um arquivo e ainda verificar a existncia do arquivo; Informaes sobre o sistema: Inclui obter e modificar data e hora da mquina, conhecer a quantidade de memria secundria disponvel e outras informaes de estado. Suporte para linguagens de programao: Junto com o sistema operacional podem sem fornecidos, ou vendidos separadamente, programas como compiladores, montadores, interpretadores para as linguagens de programao mais comuns como Pascal, Fortran ou C; Carregamento e execuo de programas: Uma vez compilado, montado e livre de erros, um programa deve ser carregado na memria principal e executado. O sistema pode oferecer instrumentos para que essas duas operaes sejam efetuadas mais eficientemente (carregadores absolutos ou realocveis, linkage editors e depuradores). Existe ainda um programa utilitrio muito importante que recebe o nome de interpretador de comandos. Esse programa comea a executar quando o sistema iniciado e fica esperando que um usurio digite um comando para interpret-lo. Existem duas alternativas possveis na implementao do interpretador de comandos. O interpretador pode conter o cdigo que executa o comando pedido (ativa os parmetros e invoca as chamadas ao sistema necessrias) ou ento cada comando implementado por um programa independente. Cada programa possui um nome prprio, e a funo do interpretador carreg-lo na memria principal e execut-lo. No primeiro caso, o tamanho do interpretador de comandos depende da quantidade de comandos existentes, j que uma parte do seu cdigo contm o cdigo do prprio comando. No segundo caso, o interpretador apenas ativa o programa que contm o comando. Alm disso, outros comandos podem ser adicionados ao sistema atravs da criao de arquivos novos e o tamanho do interpretador pode ser relativamente pequeno. A viso que os usurios tm do sistema operacional definida mais pelos programas utilitrios que pelas chamadas ao sistema, particularmente pelo interpretador de comandos. A viso que um projetista do sistema operacional tem do sistema como um todo bastante diferente. Ele v os recursos fsicos (disco, impressora, teclado, vdeo) e deve convert-los em facilidades lgicas fornecidas aos usurios.

2.3. Comportamento do Sistema Operacional


Os sistemas operacionais tm uma caracterstica bastante interessante: se no existir nenhum programa a executar, nenhum dispositivo de entrada/sada a ser atendido e nenhum usurio aguardando uma resposta, o sistema operacional fica esperando a ocorrncia de algum evento. Eventos so, em geral, representados por interrupes.

_________________________________________________________________

21

Quando uma interrupo ocorre, o hardware transfere o controle para o sistema operacional. Nesse momento, o sistema operacional salva o estado da mquina (registradores e contador de programa) e determina qual foi o tipo de interrupo que ocorreu, j que existem diferentes tipos de interrupo. Por exemplo, uma chamada ao sistema (create), uma interrupo de um dispositivo de E/S (impressora), uma interrupo de erro (tentativa de executar uma instruo privilegiada). Para cada tipo de interrupo um tratamento diferente tem de ser dado. Na viso do sistema operacional, as chamadas ao sistema so agrupadas de acordo com o seu tipo. Para cada chamada um segmento de cdigo executado. Apesar de o sistema tratar muitas chamadas, a maioria dos eventos que ocorrem pertencem classe de interrupes dos dispositivos de E/S. Uma operao de E/S resultante de uma chamada ao sistema requisitando tal servio. Uma situao prtica seria um programa abrir um arquivo e escrever alguma informao nele. Neste caso, o dispositivo de E/S usado poderia ser um disco e vrias operaes de E/S e uma sequncia de chamadas ao sistema seriam realizadas. Uma vez que uma operao de entrada/sada tem incio, dois cenrios podem ocorrer. O primeiro quando o controle s retorna para o programa do usurio, que gerou a chamada ao sistema, quando a operao tiver sido terminada. No segundo, o controle retorna ao programa do usurio sem esperar que a operao de entrada/sada tenha sido terminada. Ambas as situaes tm vantagens e desvantagens. O primeiro caso mais simples, pois apenas uma operao de entrada/sada fica pendente a cada momento. Em compensao, limita a quantidade de operaes simultneas que podem ser feitas. O segundo caso mais, complexo, pois, vrias operaes de entrada/sada podem ficar pendentes ao mesmo tempo e o sistema operacional precisa identific-las para poder trat-las. Outro tipo de interrupes que merecem uma ateno especial so as interrupes de erro. Elas so geradas quando o programa que est sendo executado tenta realizar algo no permitido pelo sistema operacional Por exemplo, realizar o acesso uma posio de memria protegida. Sempre que uma interrupo de erro ocorre e o sistema operacional deve terminar o programa em execuo de forma anormal. Uma mensagem de erro enviada e a rea de memria utilizada pode ser copiada num arquivo (dump) para que o usurio possa tentar descobrir a causa do erro. A figura 2.2 a seguir ilustra o fluxo geral do comportamento de um sistema operacional.

_________________________________________________________________

22

Interrupo

Salva Registradores

Que tipo?

Fim ou Erro

Pedido de E/S

Fim de E/S

Inicia

Retorna ao Usurio

Figura 2.2. Fluxo geral do sistema operacional

2.4. Resumo
O sistema operacional oferece diversos servios aos usurios. Num nvel mais baixo, existem as chamadas ao sistema, que fornecem as funes bsicas e permitem a um programa em execuo fazer pedidos diretamente ao sistema operacional. Num nvel mais alto, existem os programas utilitrios. Entre eles se destaca o interpretador de comandos. O interpretador fornece ao usurio um meio mais amigvel de requisitar servios ao sistema. Neste nvel um pedido satisfeito pelo interpretador de comandos ou por algum utilitrio traduzido numa sequncia de chamadas ao sistema. Leitura Obrigatria: Captulo 1 do livro Sistemas Operacionais Modernos, 2 edio, TANEMBAUM, A.

_________________________________________________________________

23

Capitulo 3 Sistema de Arquivos

atravs do sistema de arquivos que o usurio mais nota a presena do sistema operacional. Os dados e programas so armazenados em arquivos. O armazenamento de informaes possibilita a recuperao, reutilizao e modificao nos dados e nos programas. Os computadores podem armazenar informaes em vrios dispositivos fsicos diferentes, tais como fitas magnticas, discos magnticos e pticos. Neste captulo, apresentamos o conceito de arquivos e suas formas de armazenamento. Discutiremos os mtodos de acesso e de armazenamento de arquivos no dispositivo fsico. E ainda, abordaremos as estruturas de diretrios que mantm uma organizao no acesso, e as formas de proteo a arquivos.

_________________________________________________________________

24

3.1. Conceito de Arquivos


Arquivos (files) podem ser definidos como uma unidade lgica de armazenamento de informao destinada a abstrair as propriedades fsicas dos meios de armazenamento Ou ainda, uma sequncia de registros cujo significado definido pelo seu criador. Um arquivo referenciado por seu nome e tem propriedades tais como tipo, tempo de criao, tamanho, nome do proprietrio entre outras. Essas informaes ficam armazenadas em um diretrio, que uma tabela de smbolos que permite identificar tais informaes. As estruturas de diretrios sero vistas com mais detalhes adiante Diferentes tipos de informao podem ser armazenados em um arquivo (programas fonte e objeto, dados). Arquivos podem ser numricos, alfabticos ou alfanumricos. Um arquivo tem certa estrutura definida de acordo com seu uso. Por exemplo, um arquivo texto e uma sequncia de caracteres organizada em linhas e possivelmente em pginas. Se o sistema operacional reconhece a estrutura de um arquivo, ele pode ento oper-lo de maneira satisfatria. A desvantagem neste caso que o sistema operacional pode se tornar muito grande, pois haver a necessidade de um trecho de cdigo para cada tipo de estrutura diferente. No outro extremo, o sistema operacional no fornece nenhum suporte aos tipos de arquivo. Essa abordagem foi adotada no sistema operacional UNIX. Um arquivo um tipo abstrato de dados. Para defini-lo propriamente, necessrio considerar, tambm, as operaes que podem ser realizadas sobre os mesmos. Essas operaes so realizadas atravs de chamadas ao sistema operacional (ver captulo 2) e so: Criao: So necessrios dois passos para se criar um arquivo: encontrar um espao para ele no dispositivo de armazenamento e colocar a entrada do arquivo no diretrio informando seu nome e sua localizao no dispositivo. Escrita: A escrita feita atravs de uma chamada ao sistema especificando o nome do arquivo e a informao a ser escrita. Leitura: A leitura realizada por unia chamada ao sistema especificando o nome do arquivo e a localizao onde o bloco lido ser colocado. Reposicionamento para o incio: buscada no diretrio a entrada associada ao arquivo e a sua posio corrente simplesmente colocada no incio do arquivo. Apagar: O diretrio pesquisado e quando a entrada associada ao arquivo encontrada, liberado todo o espao destinado ao arquivo e invalidada sua entrada no diretrio.

_________________________________________________________________

25

3.2. Armazenamento
As formas fsicas mais comuns que os sistemas de computadores utilizam para armazenar informaes so meios magnticos (discos, fitas, etc) e pticos (CD, DVDs, Blu-rays, etc.). Cada um desses dispositivos tem suas prprias caractersticas e organizao fsica. A vantagem da utilizao de meios magnticos a simplicidade, porm algumas vezes ineficiente. No caso da fita, por exemplo, quando h arquivos muito grandes pode ser necessrio o armazenamento em vrias fitas. A fita possui um diretrio para determinar quais so os arquivos contidos nela e a localizao de cada um deles. Podem ser guardadas, tambm, outras Informaes adicionais, tal como o tamanho do arquivo. O diretrio normalmente colocado no inicio da fita para aumentar a velocidade de acesso. Pela natureza fsica das fitas magnticas pode-se perder muito tempo quando arquivos armazenados distantes um do outro so realizados acessos alternados, pois a fita possui acesso sequencial. Fisicamente os discos so relativamente simples, como ilustrado na Figura 3 1. Eles possuem duas superfcies recobertas com um material magntico, similar ao das fitas magnticas. Os discos so divididos em trilhas que variam de tamanho segundo o disk driver Cada trilha dividida em setores. Um setor a menor unidade de informao que pode ser lida ou escrita em um disco. Um acesso ao disco ento deve especificar superfcie trilha e setor. Os discos como as fitas, tambm possuem um diretrio com informaes sobre cada arquivo armazenado.

Figura 3.1 Caractersticas fsicas de um disco

3.3. Gerenciamento de Espao em Disco


O sistema de arquivos deve ser capaz de controlar a rea de espao livre nos discos, utilizar mtodos de acesso s informaes armazenadas e mtodos de alocao que sejam convenientes e eficientes. Uma vez que os discos possuem uma quantidade limitada de espao, necessrio reutilizar os espaos liberados pelos arquivos que foram apagados Para manter informaes sobre os espaos livres em disco, o sistema operacional tem uma lista de espaos livres.

_________________________________________________________________

26

As informaes armazenadas em arquivos devem ser buscadas e colocadas dentro da memria do computador para serem utilizadas. Os mtodos de acesso s informaes de um arquivo podem ser feitos de modo sequencial ou direto. Alguns sistemas fornecem somente um dos mtodos, outros oferecem os dois. Esta escolha uma deciso de projeto. Por permitir acesso direto aos arquivos, os discos possibilitam flexibilidade na implementao de arquivos. Muitos arquivos podem ser armazenados em um disco. Os trs principais mtodos de alocao de espao em disco que so utilizados so o contguo, o encadeado (linked) e o indexado.

3.3.1. Lista de Espaos Livres A lista de espaos livres (free space list) registra o endereo de todos os blocos que esto livres no disco. Para criar um arquivo, faz-se uma busca a essa lista para procurar a quantidade de blocos necessria e aloc-la ao novo arquivo. O endereo desses blocos ento retirado da lista de espaos livres. Quando um arquivo apagado, seu espao adicionado lista. Frequentemente, a lista de espaos livres implementada como um vetor de bits. Cada bloco representado por um bit. Se o bit estiver desativado (0) o bloco est livre. Por exemplo, na sequncia: 00111011... Os blocos 0, 1 e 5 esto livres. As vantagens desta implementao so a simplicidade e a eficincia para encontrar n blocos livres e consecutivos no disco. A desvantagem um overhead em termos de ocupao de espao de disco extra para armazenar o mapa de bits. Uma outra maneira de implementao da lista encadear todos os blocos livres, mantendo o ponteiro do primeiro bloco livre na lista. Este bloco contm um ponteiro para o prximo bloco e assim por diante. Para atravessar a lista devemos ler cada bloco. Isso torna este esquema pouco eficiente, pois requer um tempo substancial de E/S. Podemos ainda, armazenar o endereo dos n blocos livres no primeiro bloco livre, e colocar o ponteiro deste primeiro bloco na lista. Se houver mais blocos livres do que o nmero que pode ser armazenado em um bloco, a ltima posio do bloco o endereo de um outro bloco contendo os ponteiros para outros n blocos livres. Nesta implementao podemos encontrar blocos livres mais rapidamente. Existe outro esquema que pode tirar vantagem do fato de que, geralmente diversos blocos contguos podem ser alocados e liberados simultaneamente. Dessa forma pode-se manter uma lista de endereos livres, guardando o endereo do primeiro bloco livre e o nmero n de blocos contguos livres. Cada entrada, na lista ento consiste de um endereo e um contador. Os discos permitem acesso direto aos arquivos. Assim, necessitamos de mtodos para alocar os arquivos nos discos que utilizem de modo apropriado o espao do disco e permitam acesso rpido aos arquivos.

_________________________________________________________________ 3.3.2. Mtodos de Acesso

27

Os acessos aos arquivos tanto podem ser sequenciais quanto diretos. A seguir descreveremos estes dois mtodos de acesso. Acesso Sequencial O acesso sequencial o modo de acesso de arquivos mais comum. A informao buscada em ordem, uma posio aps a outra. Aps um registro avana-se o ponteiro para o prximo registro no arquivo. O grande volume de operaes em um arquivo so leituras e escritas. Tal arquivo pode ser reposicionado, e em alguns sistemas um programa pode ser capaz de deslocar n registros para frente ou para trs, por algum valor de n inteiro como mostra a figura 3.2 a seguir.

Figura 3.2 Arquivo de acesso sequencial.

Acesso Direto No acesso direto o arquivo visto como uma sequncia numerada de blocos. Um bloco geralmente uma quantidade de informao de tamanho fixo, definida pelo sistema operacional. O acesso direto no tem restries na ordem de acesso a cada bloco. Dessa forma, qualquer bloco pode ser lido ou escrito aleatoriamente. O mtodo de acesso direto bastante utilizado para acesso imediato a grandes quantidades de informao.

3.3.3. Mtodos de Alocao Alocao Contgua O mtodo de alocao contgua (contiguos allocation) requer que cada arquivo ocupe um conjunto de endereos contguos no disco. A alocao contgua definida pelo endereo de disco do primeiro bloco e o tamanho do arquivo. Se um arquivo possui tamanho n e comea na localizao b, ento ele ocupa os blocos b, b+1, b+2, ... b + n-1. Essas informaes so armazenadas no diretrio. A figura 3.3 a seguir ilustra esta forma de alocao.

_________________________________________________________________

28

Figura 3.3. Alocao contgua.

Os acessos aos arquivos so razoavelmente fceis e podem ser feitos sequencialmente ou diretamente. No acesso sequencial, o sistema de arquivo conhece o ltimo endereo de acesso e quando necessrio, l o prximo bloco. No acesso direto a um bloco i de um arquivo que comea num bloco b, podemos imediatamente realizar o acesso ao bloco b + i. Uma das dificuldades com alocao contgua encontrar espao livre para um novo arquivo. Essa deciso depende da implementao da lista de espaos livres. Outra dificuldade saber o tamanho do arquivo na hora de ser criado. trivial em uma cpia, mas difcil de estimar num arquivo novo que esteja sendo gerado. Uma vez que a lista de espaos livres definida podemos decidir como encontrar espao para um arquivo alocado contiguamente. Para um arquivo a ser criado de comprimento de n setores, devemos buscar na lista por n setores livres que sejam contguos. Se a lista de espaos livres for implementada como um vetor de bits, devemos encontrar n bits 0s em uma linha. Para uma lista de espaos livres implementada com endereos e contadores, devemos encontrar um contador com pelo menos n. Este problema pode ser visto como uma instncia particular do problema geral de alocao de memria dinmica. O problema de alocao de memria dinmica trata de satisfazer o pedido de tamanho n de uma lista de espaos livres. As solues padro so first-fit, best-fit e worst-fit. A soluo first-fit encontra o primeiro espao livre que suficiente para atender ao pedido. A soluo best-fit encontra o menor espao livre que seja grande o suficiente para atender ao pedido. Worst-fit utiliza o maior espao livre disponvel. Estudos com relao eficincia destes algoritmos mostram que o algoritmo first-fit mais rpido que o best-fit, pois o algoritmo best-fit necessita realizar uma

_________________________________________________________________

29

busca pela lista inteira. A desvantagem do algoritmo first-fit a fragmentao que pode ser maior que no algoritmo best-fit. A alocao contgua provoca fragmentao externa. A fragmentao existe quando h espao total de disco suficiente para satisfazer um pedido, mas este espao no contguo, isto , a memria do dispositivo est fragmentada em um grande nmero de espaos pequenos. Para solucionar o problema da fragmentao externa pode ser utilizada a tcnica de compactao. Ela consiste basicamente em copiar o sistema de arquivos inteiro para outro disco ou fita e depois copi-lo de volta ao disco, deixando novamente um espao contguo maior. O custo desta compactao o tempo, que pode ser relevante.

Alocao Encadeada O mtodo de alocao encadeada (linked allocation) soluciona o problema da necessidade de estimar o tamanho de um arquivo no armazenamento contguo. Neste mtodo, cada arquivo uma lista encadeada de blocos de disco. Os blocos do disco podem estar espalhados em qualquer lugar. O diretrio contm um ponteiro para o primeiro e o ltimo bloco do arquivo. E ainda, cada bloco possui um ponteiro para o prximo bloco. A figura 3.4 a seguir mostra este mtodo de alocao.

Figura 3.4 Alocao encadeada.

A criao de um arquivo fcil, basta somente criar uma nova entrada no diretrio do dispositivo. O ponteiro do incio do arquivo deve ser iniciado com valor nulo, para significar arquivo vazio. Na medida em que o arquivo vai sendo escrito, o endereo do primeiro bloco retirado da lista de espaos livres e colocado no diretrio. Os ponteiros dos blocos seguintes vo sendo retirados da lista de espaos livres e encadeados ao final do arquivo. Para ler um arquivo, lemos os blocos seguindo os

_________________________________________________________________

30

ponteiros. Com o mtodo de alocao encadeada no necessrio saber o tamanho do arquivo. Alm disso, este mtodo no provoca fragmentao externa. Uma desvantagem na alocao encadeada somente permitir o acesso sequencial em cada arquivo. Para encontrar o bloco i de um arquivo, devemos comear no inicio daquele arquivo e seguir os ponteiros at o i-simo bloco. Outras desvantagens so: a perda do espao ocupado pelos ponteiros e a confiabilidade. Se perdermos um ponteiro todo o restante do arquivo aps o ponteiro ficar perdido.

Alocao Indexada O mtodo de alocao indexada (indexed allocation) soluciona os problemas de declarao do tamanho do arquivo e de fragmentao externa, relativos a alocao contgua, e do acesso sequencial e dos ponteiros espalhados pelo disco, relativos a alocao encadeada. A alocao indexada resolve este problema colocando todos os ponteiros juntos em um local chamado bloco de ndices (index block). Cada arquivo tem o seu prprio bloco de ndices, que um de endereos de blocos de disco. A i-sima entrada no bloco de ndices aponta para o i-simo bloco do arquivo. No diretrio armazenado o endereo do bloco de ndices, como pode ser visto na figura 3.5 a seguir.

Figura 3.5 Alocao indexada.

Quando um arquivo criado, todos os ponteiros, no bloco de ndices so iniciados com valor nulo. Quando o i-simo bloco escrito, removido um bloco da lista de espaos livres e seu endereo colocado na i-sima entrada do bloco de ndices. A alocao indexada suporta o acesso direto sem sofrer de fragmentao externa. Qualquer bloco livre em qualquer lugar do disco pode satisfazer um pedido por mais memria. Porm, este mtodo de alocao sofre de perda de espao. Geralmente,

_________________________________________________________________

31

o overhead no armazenamento dos ponteiros no bloco de ndices maior do que na alocao encadeada. Muitos arquivos so pequenos, Dependendo do tamanho do bloco de ndices a perda de espao pode ser um problema. Neste ponto a questo quo grande deveria ser um bloco de ndices. Ele deveria ser o menor possvel, porm se for muito pequeno no ser suficiente para armazenar os ponteiros para um arquivo maior. Um bloco de ndices normalmente do tamanho de um setor de disco. Para arquivos grandes que necessitam de mais de um setor, os blocos de ndice usam ou uma alocao encadeada dos blocos de ndices ou blocos de ndices que apontam para outros blocos de ndices. Para que o sistema operacional seja capaz de recuperar dados rapidamente de um sistema de memria de armazenamento secundrio, necessria a utilizao de um sistema de endereamento, denominado genericamente de formatao. A formatao organiza trilhas e setores do disco em regies onde os dados so, de fato, gravados; o tamanho destas regies varia segundo o processo de formatao utilizado. Um sistema operacional possui uma parte chamada de sistema de arquivos, que implementa diversas funcionalidades da gerncia de arquivos. Dentre estas funes, mantida uma tabela na memria, Na prtica, os mtodos mais empregados para a referncia a arquivos so: o uso de tabelas de alocao de arquivos (FAT), para alocao por lista encadeada e o uso de i-nodes, que so estruturas indexadas.

Tabela de alocao de arquivos A FAT uma tabela que permanece carregada na memria principal contendo as referncias aos clusters utilizados para armazenar os dados do incio de cada arquivo. Embora ainda seja necessrio seguir o encadeamento para encontrar um dado deslocamento dentro do arquivo, o encadeamento permanece inteiramente na memria, podendo ser seguido sem fazer qualquer referncia ao disco Toda a rea de arquivos divida em clusters. Arquivos so alocados nessa rea um cluster de cada vez, mas no necessariamente em clusters adjacentes. Utilizamos uma tabela de alocao de arquivos (FAT- file allocation table) para encadear todos os clusters de um arquivo. Para cada cluster na rea de arquivos existe uma entrada na FAT, contendo um ponteiro, que nada mais do que um endereo de cluster. Desta forma, um arquivo representado por uma cadeia de entradas na FAT, cada entrada apontando para a prxima entrada na cadeia. No exemplo ilustrado na figura 3.6, o arquivo identificado como arquivo.txt tem seu incio no cluster 0003, conforme entrada na FAT, e ao acessar este cluster, alm dos dados armazenados em seus setores correspondentes, encontrada uma referncia ao prximo cluster que armazena a ltima parte do arquivo. Uma referncia especial reservada para o EOF (End of File), que no exemplo a string FFFF, e os clusters livres esto representados a seguir pela string 0000.

_________________________________________________________________
Cluster inicial

32

ARQUIVO

TXT

0003

0000 2

0006 3

0000 4

BAD 5

0007 6

FFFF 0000 7 8 9

Figura 3.6. Exemplo de FAT

I-nodes A cada arquivo associado uma estrutura de dados chamada i-node, que relaciona os atributos e os endereos em disco dos blocos de arquivo. Dado o i-node, possvel encontrar todos os blocos do arquivo, como ilustrado na figura 3.7. A grande vantagem deste mtodo que o i-node carregado na memria somente quando o arquivo correspondente se encontrar aberto. Para resolver a limitao dos i-nodes de um arquivo ser maior do que o nmero de endereos disponveis no i-node seria reservar o ltimo endereo no para um bloco de dados, mas para o endereo de um bloco contendo mais endereos de blocos de disco.

Figura 3.7. Exemplo da estrutura de um i-node

_________________________________________________________________

33

3.4. Sistema de Diretrio


Os arquivos so representados por entradas no diretrio do dispositivo. O diretrio armazena informaes tais como nome, localizao, tamanho, tipo, para todos os arquivos daquele dispositivo. Quando existe um aumento expressivo da quantidade de memria e do nmero de usurios no sistema do computador, necessrio impor uma estrutura de diretrio no sistema de arquivos. A estrutura de diretrio um meio de organizar os muitos arquivos presentes no sistema. No diretrio so armazenados dois tipos de informao. A primeira est relacionada com o dispositivo fsico (a localizao do arquivo seu tamanho e modo de alocao). A segunda, por sua vez, est relacionada organizao lgica dos arquivos (nome, tipo, proprietrio, cdigos de proteo), As informaes mantidas para cada arquivo nos diretrios variam de um sistema operacional para outro sistema operacional, Algumas das informaes que podem existir so listadas a seguir. Nome do arquivo: O nome simblico de um arquivo. Tipo do arquivo: Para aqueles sistemas que suportam tipos diferentes de arquivos. Localizao: Localizao do arquivo no dispositivo. Tamanho: o tamanho corrente do arquivo e o tamanho mximo. Posio corrente: Um ponteiro para a posio corrente de leitura ou escrita no arquivo. Proteo: Informao de controle de acesso para leitura, escrita, execuo. Contabilidade de uso: Indica o nmero de processos que esto correntemente usando o arquivo. Tempo, data e identificao do processo: Estas informaes podem ser mantidas para criao, ltima modificao e ltimo uso. Podem ser teis para proteo e monitorao de uso. Muitas estruturas de diretrio diferentes tm sido utilizadas. O diretrio essencialmente uma tabela de smbolos. O sistema operacional utiliza o nome do arquivo simblico para achar o arquivo. Quando considerarmos uma estrutura de diretrio em particular, devemos ler em mente as operaes que podem ser realizadas no diretrio. Essas operaes so: busca, criao, apagar, listar seu contedo e fazer cpias para backup.

Diretrio de um nico Nvel A estrutura de diretrio de um nico nvel a mais simples. Todos os arquivos esto contidos no mesmo diretrio. fcil de dar suporte e entender. Este tipo de diretrio tem a limitao de que todos os arquivos devem ter nomes distintos. A figura 3.8 ilustra esta estrutura.

_________________________________________________________________

34

Figura 3.8. Diretrio de um nico nvel.

A desvantagem desta estrutura a possibilidade de confuso entre os nomes de arquivos de usurios diferentes, pois todos os usurios compartilham o diretrio.

Diretrio em Dois Nveis Uma soluo possvel para o problema do diretrio de um nico nvel criar um diretrio para cada usurio. Este diretrio lgico, uma vez que todos os arquivos esto fisicamente no mesmo dispositivo. Na estrutura de diretrio de dois nveis, cada usurio tem seu prprio diretrio de arquivo de usurio (user file directory UDF). Cada diretrio de usurio tem uma estrutura similar. Quando um usurio entra no sistema, o diretrio de arquivo mestre (master file directory - MFD) do sistema pesquisado. O MFD indexado pelo nome do usurio ou um nmero de contabilidade, Cada entrada aponta para o diretrio de um usurio. Quando um usurio se refere a um arquivo em particular, somente o seu diretrio pesquisado. A figura 3.9 ilustra esta estrutura.

Figura 3.9 Diretrio em dois nveis.

_________________________________________________________________

35

Esta estrutura isola um usurio de outro. A desvantagem da estrutura em dois nveis existe quando um usurio quer utilizar arquivos de outros usurios. Alguns sistemas no permitem este acesso. Se o acesso permitido, ele feito atravs do nome do usurio e do nome do arquivo, que definem o nome do caminho (path name). Todo arquivo no sistema tem um nico path name; por exemplo, se o usurio 1 deseja realizar um acesso ao seu prprio arquivo cat basta referenci-lo. Para se referenciar ao arquivo cat do usurio 2 ele deve indicar o caminho como /user2/cat.

Diretrio Estruturado em rvore O diretrio de dois nveis pode ser visto como uma rvore com profundidade dois. natural estender esta estrutura para uma rvore arbitrria, que so os diretrios estruturados em rvore. Nesta estrutura existe um diretrio raiz da rvore. Os ns intermedirios da rvore so os diretrios dos usurios, que podem ainda criar seus prprios subdiretrios e organizar seus arquivos. Esta estrutura pode ser vista na figura 3.10.

Figura 3.10. Diretrio em rvore.

Todo o arquivo no sistema tem um nico nome considerando o seu path name. O path name o caminho da raiz atravs de todos os subdiretrios ao arquivo especificado. A sequncia de diretrios pesquisada quando um arquivo buscado chamada de caminho de busca (search path). O path name pode ser apresentado de duas maneiras diferentes: Completo: Define um caminho da raiz ao arquivo. Relativo: Define um caminho do diretrio corrente ao arquivo.

Os arquivos podem ser facilmente compartilhados, por exemplo, um usurio pode criar um subdiretrio contendo os arquivos que sero compartilhados com outros usurios. Um destes usurios pode fazer o acesso aos arquivos compartilhados especificando o path name dos arquivos.

_________________________________________________________________

36

A maneira de se apagar um diretrio estruturado em rvore uma poltica de deciso interessante. Se um diretrio est vazio ele pode ser apagado. Se ele no estiver vazio podemos decidir entre duas abordagens. A primeira s apagar o diretrio se estiver vazio. Isso implica em apagar todos os arquivos e subdiretrios contidos nele primeiro. A segunda abordagem assumir que quando pedido para se apagar um diretrio, deva-se apagar tambm todos os seus arquivos e subdiretrios. A escolha da forma de implementao uma deciso de projeto e ambas so utilizadas nos sistemas.

Diretrio em Grafo Acclico Um diretrio em grafo acclico permite que subdiretrios e arquivos sejam compartilhados, ao contrrio da estrutura em rvore que no permite o compartilhamento explcito. Um grafo acclico uma generalizao do esquema de diretrio estruturado em rvore e no contm ciclos. A figura 3.11 ilustra esta estrutura.

Figura 3.11 Diretrio em grafo acclico

O compartilhamento de arquivos ou diretrios pode ser implementado de diversas formas. A maneira mais comum criar uma entrada de diretrio nova chamada link. Um link um ponteiro para outro subdiretrio ou arquivo. Uma outra implementao duplicar as informaes em ambos os diretrios. O problema nesta abordagem manter a consistncia nas informaes se o arquivo for modificado. Uma estrutura de diretrio de grafo acclico mais flexvel que uma estrutura em rvore simples, mas tambm mais complexa. Os problemas como buscar um determinado arquivo ou apag-lo devem ser cuidadosamente considerados. Um arquivo pode ter vrios nomes completos. Dessa forma, nomes com caminhos diferentes podem se referenciar ao mesmo arquivo. Como cada arquivo tem mais de uma trajetria de busca, a eliminao de um arquivo pode ser feita de vrias maneiras. Quando so utilizados links, apagar um arquivo implica na retirada do link, no afetando o arquivo. Esse s removido quando forem retirados todos os links.

_________________________________________________________________

37

Uma outra possibilidade preservar o arquivo at que todas as referncias a ele tenham sido apagadas. Poderia haver uma lista de referncias ao arquivo (entradas no diretrio ou links simblicos). Quando uma referncia fosse feita, ela seria adicionada lista. Quando um link ou entrada fosse apagado, a referncia seria retirada da lista. O arquivo s seria apagado quando a lista estivesse vazia. O tamanho da lista pode crescer e tornar-se um problema, mas na verdade, somente necessrio manter um contador de referncias. Quando este tiver valor zero, o arquivo pode ser apagado.

3.5. Proteo de Arquivos


Num sistema de computador importante manter a proteo das informaes contra danos fsicos (confiabilidade) e contra acessos imprprios (proteo). A confiabilidade geralmente obtida realizando uma cpia dos arquivos em intervalos regulares. A proteo de arquivos um resultado direto da habilidade de realizar acessos a eles. Sistemas que no permitem a um usurio referenciar os arquivos de outro usurio, no precisam de proteo. Um extremo seria fornecer proteo completa, proibindo o acesso. O outro extremo fornecer livre acesso sem nenhuma proteo. Essas abordagens so multo radicais. Na verdade, o que necessrio um controle de acesso. Uma maneira associar uma senha (password) a cada arquivo. S podem ser feitos acessos este arquivo o usurio que conhecer a senha. Outros mecanismos de proteo fornecem acesso controlado, limitando os tipos de acesso que podem ser feitos ao arquivo. Existem diversas operaes que podem ser controladas como leitura, escrita, execuo, cpia, edio, entre outras. O controle de acesso feito com a identidade do usurio. Vrios usurios podem ter necessidade de acessos de tipos diferentes a arquivos e a diretrios. Uma lista de acesso (access list) associada com cada arquivo e com cada diretrio, especificando o nome do usurio e os tipos de acesso permitidos. Quando feito um pedido, o sistema operacional verifica a lista de acesso, permitindo-o ou no. Uma desvantagem com este mecanismo o tamanho da lista de acesso. Uma soluo para reduzir o tamanho da lista de acesso tentar classificar os usurios em trs grupos: Proprietrio: O usurio que criou o arquivo. Grupo: Um conjunto de usurios que compartilham o arquivo e necessitam de acesso similar. Universo: Todos os usurios do sistema. Com esta classificao, somente trs campos so necessrios para garantir a proteo. Cada campo uma coleo de bits que permitem ou previnem a operao associada com cada bit Por exemplo, no sistema operacional UNIX existem trs campos (proprietrio, grupo, universo) de trs bits cada: rwx. O bit r controla o acesso de leitura, o bit w controla o acesso de escrita e o bit x controla a execuo. Neste esquema nove bits por arquivos so necessrios para registrar a proteo da informao.

_________________________________________________________________

38

3.6. Resumo
Um arquivo um tipo abstrato de dados definido e implementado pelo sistema operacional. O sistema operacional pode dar suporte a vrios tipos de arquivos ou pode deixar para o programa de aplicao resolver este problema. As informaes podem ficar armazenadas em dispositivos fsicos como fitas magnticas ou discos. Neste captulo abordamos as formas de armazenamento em discos magnticos. So necessrios mecanismos para controlar a forma de armazenamento e o acesso s informaes. O acesso s informaes pode ser de modo sequencial ou direto Os arquivos podem ser armazenados nos discos de trs modos diferentes: contguo, encadeado e indexado. Os diretrios so estruturas criadas para armazenar todas as informaes relativas aos arquivos e para manter uma organizao sobre eles. Apresentamos as seguintes estruturas de diretrio: em um nico nvel, em dois nveis, em rvore, em grafo acclico e em grafo geral. Geralmente, necessitamos proteger as informaes de danos fsicos ou de acessos imprprios. Isso resolvido atravs de mecanismos de proteo.

Leitura Obrigatria: Captulo 6 do livro Sistemas Operacionais Modernos, 2 edio, TANEMBAUM, A.

_________________________________________________________________

39

Capitulo 4 Processos

O escalonamento da Unidade Central de Processamento (UCP ou CPU - Central Processing Unit) o conceito mais relevante de sistemas operacionais multiprogramados. atravs do chaveamento do processador entre os vrios processos, que o sistema operacional pode tornar a mquina mais eficiente e produtiva. Neste captulo sero introduzidos os conceitos bsicos de processos, apresentados alguns problemas e algumas solues propostas na literatura relacionadas ao escalonamento de processos.

_________________________________________________________________

40

4.1. Conceito de Multiprogramao


Sem dvida, o conceito de multiprogramao um dos mais importantes nos sistemas operacionais modernos. Se existirem vrios programas carregados na memria ao mesmo tempo, a UCP pode ser compartilhada entre eles, aumentando a eficincia da mquina e produzindo mais resultados em menos tempo. A idia por trs da multiprogramao bastante simples. Quando um programa libera a UCP, seja para realizar alguma operao de E/S ou por outro motivo, ela fica parada. Enquanto espera que o programa volte para executar, a UCP no realiza nenhum trabalho til. Para acabar com a ociosidade deste tempo vrios programas so mantidos ao mesmo tempo na memria e o sistema operacional se encarrega de escolher um deles para executar. Assim, sempre que um programa interrompido, outro escolhido para ser executado em seu lugar. Com isso, a UCP estar durante grande parte do tempo ocupada processando instrues de programas. Os benefcios da multiprogramao so vrios: aumento da utilizao da UCP e da taxa de sada do sistema computacional, isto , dia quantidade de trabalho realizada dentro de um intervalo de tempo (throughput). Para exemplificar a utilidade da multiprogramao, imaginemos um sistema onde trs programas esto carregados na memria para serem executados, como na figura 4.1. Na primeira parte da figura, mostrada a execuo sequencial dos trs processos.

Figura 4.1 Execuo sequencial e concorrente de trs processos

Se o sistema for multiprogramado, como sugerido na segunda parte da figura 4.1, menos tempo ser gasto na execuo dos trs programas. Assim, a UCP no ficaria ociosa em nenhum momento e sua taxa de utilizao aumenta para 100%. Este exemplo um caso extremo e dificilmente acontece na prtica, mas ilustra bem a idia de multiprogramao.

4.2. Conceito de Processo


Informalmente, um processo um programa em execuo. Um programa uma sequncia de instrues executveis, e pode conter diferentes fluxos de execuo, frutos

_________________________________________________________________

41

da existncia de comandos condicionais e interativos. Ele pode ser visto como uma entidade passiva. Um processo pode ser visto ainda como uma entidade ativa que descreve a execuo de um dos possveis fluxos, do programa. A execuo de um processo se d de maneira sequencial, ou seja, em qualquer instante de tempo no mximo uma instruo est sendo executada. Como discutido anteriormente, a definio de processo como um programa em execuo, apesar de adequada sob uma viso mais simplista do funcionamento de sistemas operacionais, ter de ser expandida, a fim de nos permitir considerar outros aspectos importantes do uso prtico, como o funcionamento de threads. Em sistemas multiprogramados, diferentes programas so formados por conjuntos de instrues, que no momento que o programa tem o direito de uso da unidade processadora, so armazenados em registradores do processador. Estes processos concorrem entre si pelo uso da UCP, e muitas vezes o conjunto de instrues que devem ser executadas ao longo de sua execuo no so todas realizadas em um mesmo intervalo de tempo. Um processo pode ter que parar sua execuo, dando a vez a outro processo, que executar outro conjunto de instrues que o compe, que por sua vez pode dar a vez a outro (que pode inclusive ser o primeiro que estava sendo executado), e assim sucessivamente, at que as instrues que compem um processo sejam, finalmente, concludas. Para que seja possvel funcionar corretamente em um ambiente com outros processos em execuo, cada processo deve possuir informaes que no so somente relacionadas a si, mas tambm ao ambiente onde est sendo executado. Neste sentido, as informaes que formam um processo podem ser classificadas em: Contexto de software: So especificados limites e caractersticas dos recursos que podem ser alocados pelo processo, como o nmero mximo de arquivos que podem ser abertos simultaneamente, a prioridade de execuo e o tamanho de buffers para operaes de E/S. As informaes do contexto de software so separadas nos grupos identificao, quotas e privilgios. Contexto de hardware: armazena o contedo dos registradores gerais da UCP, alm de registradores de uso especfico, como o program counter (PC), stack point (SP) e registrador de status. Sua funo salvar o contedo dos registradores em uma operao de troca de contexto, para que posteriormente possa ser restaurado o mesmo conjunto de informaes que o processo utilizava no momento que parou sua execuo. Espao de endereamento: consiste na rea de memria destinada ao processo durante sua execuo, aonde dados e instrues sero armazenados para serem executados. Cada processo possui sua rea de endereamento, que o S.O. deve proteger do acesso a demais processos. Outra idia associada definio de processo est na necessidade de descrever a existncia de vrias atividades que ocorrem em paralelo dentro do sistema computacional. Num ambiente multiprogramado vrios usurios podem estar executando seus programas simultaneamente, dificultando a gerncia de mltiplas atividades paralelas. Dessa forma o modelo de processos uma maneira de se

_________________________________________________________________

42

decompor este problema em componentes mais simples. Todo o software no computador organizado em processos sequenciais ou apenas processos. Com a multiprogramao, cada usurio tem a sensao de ler uma mquina (processador) s para si, o que na prtica no acontece. Na verdade, o processador central se reveza entre os vrios usurios e uma das tarefas do sistema operacional tornar isto o mais transparente possvel. Quando o processador muda de um processo para outro, necessrio que o sistema salve todas as informaes necessrias para a retomada do processo interrompido. Dentre essas informaes pode-se destacar: a identificao do processo, o seu estado, o valor do Program Counter, o valor dos registradores que estavam sendo usados (acumulador, de uso geral), as informaes para gerncia da memria (registradores de limite, endereo do incio da tabela de pginas), as informaes para escalonamento (prioridade, ponteiros para as filas de escalonamento), entre outras. Assim, pode-se dizer que ao conceito de processo esto associadas informaes que caracterizam o seu contexto de execuo. Estas informaes so armazenadas numa estrutura que recebe o nome de Bloco de Controle do Processo (Process Control Block - PCB) e que deve estar armazenada na rea de memria destinada ao sistema operacional, para evitar que o usurio possa realizar o acesso a ele. Os PCB's representam os processos para o sistema operacional e a sua quantidade varia com o tempo medida que processos so e terminam dinamicamente. A figura 4.2 ilustra algumas informaes armazenadas num BCP.

Figura 4.2 Bloco de controle.

Em sistemas multiprogramados, quando ocorre a parada da execuo de um programa por qualquer razo prevista (parada para a ocorrncia de uma operao de E/S, trmino da fatia de tempo atribuda ao processo, etc.) dito que aconteceu uma troca de contexto, ou seja, as informaes referentes ao processo em execuo devem ser salvas, para que o processo retome sua execuo futuramente do mesmo ponto que parou, e que as informaes referentes ao novo processo que ter o direito de uso da UCP retomem de um ponto anterior (caso j tivesse utilizado a UCP anteriormente). A troca de contexto uma operao que apresenta um custo computacional que no pode ser ignorado. Entre a operao de salvar o contexto atual de um processo em seu PCB, e carregar o contexto de outro processo a ser executado, existe um intervalo de ociosidade, que no pode ser eliminado, como ilustrado na figura 4.3.

_________________________________________________________________

43

Figura 4.3. Operao de troca de contexto entre processos.

4.3. Threads
Threads so um mecanismo que aumenta a eficincia do sistema operacional reduzindo o overhead causado pela troca de contexto dos processos. Elas podem ser vistas como a menor unidade de execuo do sistema e compartilham todos os recursos com o processo que as criou. Cada thread possui seu prprio contexto de hardware, mas compartilha o mesmo contexto de software e espao de endereamento com os demais threads do processo. Em sistemas com threads, um processo com exatamente uma thread equivalente a um processo clssico. Cada thread pertence a exatamente um nico processo. Sob o ponto de vista de threads, processos so estticos e apenas as threads so escalonadas para execuo. Cada thread representa um fluxo de controle separado com sua pilha e seu estado da mquina. Como todos os recursos, exceto o processador so controlados pelo processo que cria a thread, o chaveamento da UCP entre threads mais rpido e eficiente. Entretanto, o chaveamento entre threads de processos diferentes gastam um tempo maior, pois envolve todo o processo de troca de contexto. Threads so eficientes para a explorao de concorrncia dentro de uma aplicao e podem se comunicar usando a memria comumente compartilhada. Deve ser tomado muito cuidado no que diz respeito sincronizao a regies crticas. O conceito e funcionamento de threads ser discutido com mais detalhes em outro captulo.

4.4. Criao de Processos


Nos sistemas mais antigos apenas o sistema operacional podia criar novos processos. Atualmente, a maioria dos sistemas permite que os usurios criem e

_________________________________________________________________

44

destruam seus prprios processos. Um grande nmero de programas podem se beneficiar disto, como programas de simulao, ordenao e computao cientfica. Para um programa poder criar novos processos o sistema operacional deve fornecer primitivas especficas (chamadas ao sistema) para tal finalidade. Quando um novo processo criado, inicialmente o seu BCP preparado com as informaes bsicas. Em seguida feita uma chamada ao sistema operacional para a sua criao. Algumas linguagens de programao oferecem suporte para o controle de processos.

4.5. Estados de um Processo


A execuo de um processo comea por um ciclo de execuo na UCP (CPUBurst). Este ciclo seguido por um ciclo de E/S do qual a UCP participa no incio e no final. Novamente h um ciclo de UCP e outro de E/S at que o processo termine a sua execuo. O tamanho dos ciclos de UCP e de E/S varia de processo para processo. Sendo assim, podemos identificar dois tipos de processos: Os que requisitam mais operaes de E/S e tm ciclos de UCP muito pequenos; Os que gastam mais tempo executando instrues e tm ciclos de E/S pequenos. Um programa associado a um processo do primeiro tipo classificado como I/O-bound (apresenta vrios bursts de UCP curtos) e um programa associado a um processo do segundo tipo classificado como CPU-bound (poucos bursts de UCP, mas de longa durao). Programas cientficos so geralmente CPU-bound enquanto que programas comerciais so I/O-bound. A figura 4.4. ilustra uma sequncia de bursts tpica da execuo de um programa.

Figura 4.4. Sequncia de bursts da execuo de um programa.

_________________________________________________________________

45

Durante a execuo de um programa o processo pode se encontrar em um dos estados a seguir: Executando: Diz-se que um processo est executando se ele est usando o processador. Em sistemas com uma nica UCP, no mximo um processo pode estar neste estado em qualquer instante de tempo. Pronto: Um processo est no estado pronto quando espera que a UCP seja liberada pelo processo que a est usando. Este estado pode ser considerado como a entrada para que um processo novo possa competir pelo processador com outros processos, que tambm estejam neste estado. Bloqueado: Um processo est bloqueado quando no pode ser executado porque espera que alguma condio externa acontea. Por exemplo, o fim de uma operao de E/S. Assim que a condio satisfeita, o processo volta para o estado pronto. Terminado: Um processo est terminado quando a ltima instruo do programa foi executada. A maneira como um processo passa de um estado para o outro mostrada na figura 4.5 e na tabela 4.1, a seguir.

bloqueado

executando

fim

pronto

Figura 4.5. Estados de um processo.

Evento tempo despacho bloqueio despertar

Transio executando pronto pronto executando executando bloqueado bloqueado pronto

Significado fatia de tempo do processo executando expirou. sistema operacional entrega o processador a um processo no estado pronto. processo solicitou operao de E/S. evento esperado acontece.

Tabela 4.1. Transio dos estados de um processo.

4.6. O Conceito de Escalonamento


A viso que o sistema operacional tem dos processos e seus respectivos estados pode ser representada por filas formadas pelos BCP's. Assim, um processo que esteja no estado pronto mantido numa fila de processos prontos (ready queue). A forma como os processos so colocados e retirados dessa fila ser discutida a seguir e um dos pontos mais importantes na implementao de um sistema operacional.

_________________________________________________________________

46

Quando um processo sai do estado executando e vai para o estado bloqueado porque alguma interrupo ocorreu e alguma condio externa deve ser satisfeita. Ele colocado na fila associada ao dispositivo que ser usado durante a operao de E/S. Por exemplo, se o acesso for ao disco, o processo dever ser colocado na fila desse dispositivo, caso ele esteja, sendo usado por algum outro processo. A figura 4.6. representa bem a viso que o sistema operacional tem dos processos.

Figura 4.6. Representao das filas de processos, no sistema operacional.

De acordo com as figuras 4.5 e 4.6, um processo entra no sistema e colocado na fila de prontos. Ele espera nesta fila at ser selecionado para executar seu primeiro ciclo de UCP, passando para o estado executando. Num determinado momento uma operao de E/S poder ser requisitada e a execuo do processo ser interrompida. Ele passa ento para o estado bloqueado e colocado na fila do dispositivo que realizar a operao. Quando a operao de E/S terminar, o processo retorna ao estado pronto para mais uma vez disputar o processador com os outros processos. Em alguns sistemas, h ainda a possibilidade de um processo passar do estado executando para o estado pronto, caso haja algum limite mximo de tempo que o processo pode executar na UCP. Isto para evitar que um processo utilize a UCP por um perodo de tempo muito longo, fazendo com que os outros processos que se encontram no estado pronto esperem muito. Isso acarreta o aumento do tempo total de processamento. A escolha do processo que vai ser retirado de uma fila recebe o nome de escalonamento e implementada por um componente do sistema operacional chamado de escalonador. Existem dois tipos de escalonadores: de longo prazo e de curto prazo. O primeiro o responsvel por escolher quais programas vo ser carregados na memria e passar para o estado pronto. Esse escalonador executado em intervalos de tempo

_________________________________________________________________

47

maiores, j que um programa s libera a rea de memria quando termina a sua execuo. O segundo o responsvel por selecionar qual processo vai ser retirado da fila de prontos e ser executado na UCP. A grande importncia dos escalonadores de longo prazo que eles definem o nvel de multiprogramao do sistema, controlando o nmero de programas carregados na memria ao mesmo tempo. Logo, controlando a quantidade de processos que entram na fila de prontos, Usando os conceitos vistos anteriormente de CPU-bound e de I/O-bound importante que o escalonador de longo prazo faa uma boa mistura de programas na memria. O objetivo desta mistura manter o sistema balanceado e impedir que a fila de prontos no fique a maioria do tempo vazia ou muito cheia. Este captulo dar nfase ao segundo tipo de escalonadores e assume que os programas j esto carregados na memria e se encontram no estado pronto. O diagrama mostrado na figura 4.7 mostra como os escalonadores atuam no sistema.

Figura 4.7. Escalonadores do sistema operacional.

Outro componente envolvido no escalonamento da UCP recebe o nome de despachador (dispatcher). Ele o responsvel por passar o controle da UCP para o processo selecionado pelo escalonador de curto prazo. Essa operao envolve o carregamento dos registradores do processador com os dados do processo selecionado e o desvio para o ponto do programa de onde a execuo deve se iniciar (nem sempre do incio, dado que durante a execuo, um processo pode ser suspenso, pois pode ter que esperar por algum evento). Estas informaes esto guardadas no PCB do processo selecionado e o despachador deve ser o mais rpido possvel.

4.7. Escalonamento de Processos


O escalonamento da UCP lida com o problema de decidir qual dos processos que se encontram na fila de prontos ser o escolhido para executar. Existem vrias maneiras de se implementar essa escolha, mas importante saber que ela influencia tia eficincia do sistema operacional. Como os algoritmos possuem propriedades diferentes, h necessidade de alguns critrios para se selecionar qual o melhor algoritmo a ser usado numa situao particular. Esses critrios so apresentados a seguir:

_________________________________________________________________

48

Utilizao da UCP: Como a UCP um recurso caro e influencia diretamente na eficincia da mquina, ela deve ser mantida ocupada o maior tempo possvel. Em sistemas reais, a taxa de ocupao do processador varia de 40% (baixa utilizao) a 90% o (alta utilizao). Throughput (taxa de sada): Uma maneira de se medir o trabalho realizado pelo sistema contabilizar-se a quantidade de processos que terminam num determinado intervalo de tempo. Turnaround time: Do ponto de vista dos processos, um critrio importante a quantidade de tempo que cada um dos processos passa dentro do sistema para executar. O turnaround time contado a partir do momento em que o processo submetido ao sistema at o instante em que a ltima instruo executada. Inclui todos os intervalos gastos esperando na memria, esperando na fila de prontos, executando na UCP e realizando E/S. Tempo de espera: O escalonamento da UCP no afeta a quantidade de tempo que o processo gasta executando no processador nem a quantidade de tempo gasto realizando E/S. Esses tempos dependem do prprio processador e dos dispositivos de E/S. Por outro lado, os algoritmos de escalonamento afetam diretamente o tempo que os processos gastam esperando nas filas. Esse tempo medido atravs do tempo de espera. Tempo de resposta: Em sistemas interativos (on-line) o turnaround time s vezes no o melhor critrio de medida. Para estes sistemas uma boa medida seria o intervalo de tempo entre a submisso de um pedido e a resposta obtida. Esta medida o tempo de resposta. Uma vez selecionado um algoritmo para implementar o escalonamento, desejvel que a taxa de utilizao e a taxa de sada sejam maximizadas, que o turnaround time, os tempos de espera e de resposta sejam minimizados. E ainda que todos os processos recebam o processador em algum momento, para que possam ser executados. Alm disso, muito importante que o sistema operacional atenda a estes objetivos mantendo total transparncia para os usurios. A quantidade mxima de programas executando concorrentemente deve ser tal que no degrade a eficincia do sistema computacional. Os algoritmos de escalonamento podem ser divididos em duas classes: preemptivos e no-preemptivos. No primeiro caso, o processo que est sendo executado pela UCP pode ser interrompido e perder o controle do processador para outro processo mais prioritrio. No segundo caso, o processador no pode ser retirado do processo que est sendo executado, a no ser quando o seu ciclo de UCP terminar. O escalonamento de processos pode ser representado de forma visual atravs de um modelo intitulado diagrama (ou carta) de Gannt, que simplesmente representa a ordem de execuo dos processos e o tempo de execuo de cada parte de um processo. A seguir sero mostrados alguns dos mais importantes algoritmos de escalonamento de cada uma das classes.

_________________________________________________________________ First- Come-First-Served (FCFS)

49

Este o algoritmo de implementao mais simples. O processo que primeiro requisita o processador atendido primeiro. Neste caso, a fila de prontos implementada seguindo o modelo First-In-First-Out onde o primeiro a entrar na fila o primeiro a sair. Quando um processo entra na fila de prontos o seu PCB sempre colocado no final da fila. Quando a UCP fica livre ela entregue ao primeiro processo da fila. Apesar de simples de entender e implementar, a eficincia do algoritmo pode ficar bastante comprometida porque muito dependente dos processos que formam a fila de prontos. Este um algoritmo naturalmente no-preemptivo, j que o critrio de seleo entre os processos est baseado no tempo de chegada fila de prontos. Dessa forma, se um processo j est usando a UCP, o seu tempo de chegada tem de ser menor que qualquer outro processo que chegue depois dele. Na figura 4.8 mostrada a fila de prontos com quatro processos (p1, p2, p3, p4). A fila foi organizada de acordo com a ordem de chegada dos processos, o que significa que o primeiro processo a ser executado o p1, depois o p2 e assim por diante. Neste exemplo, a quantidade de tempo gasta para executar os quatro ciclos de UCP, correspondentes a cada processo, de 24 ut (unidades de tempo) e o tempo total de espera de 41 ut.

Processo p1 p2 p3 p4

T. burst 6 ut 8 ut 7 ut 3 ut

Figura 4.8 Algoritmo First- Come-First-Served

Uma forma muito empregada para medir a eficincia de um algoritmo de escalonamento o tempo mdio de espera, que representa uma mdia do tempo que cada processo teve que aguardar para ter sua execuo iniciada. O exemplo a seguir ilustra como a simples mudana da ordem de chegada dos processos altera significativamente o tempo mdio de espera.

_________________________________________________________________

50

Processo P1 P2 P3

T. burst 24 ut 3 ut 3 ut

Suponha que os processos chegam na seguinte ordem : P1, P2, P3. A carta de Gannt a seguir ilustra a situao:

Tempo de espera para P1 = 0; P2 = 24; P3 = 27 Tempo mdio de espera: (0 + 24 + 27)/3 = 17 Suponha agora que os processos cheguem na ordem: P2, P3, P1. A carta de Gannt para esta situao ser:

Tempo de espera para P1 = 6; P2 = 0; P3 = 3 Tempo mdio de espera: (6 + 0 + 3)/3 = 3 Como podemos observar, a simples mudana na ordem que os processos so submetidos ao sistema ocasiona uma situao melhor que caso anterior

Shortest Job First (SJF) Este algoritmo associa a cada processo o tempo aproximado do seu prximo ciclo de UCP a ser executado. Quando o processador fica disponvel ele entregue ao processo que possui o menor prximo ciclo de UCP que foi estimado. Este algoritmo obtm o menor tempo de espera mdio. Apesar disso, a sua implementao dificultada pelo fato de haver necessidade de se fazer uma previso do tamanho do prximo ciclo de UCP de cada processo que entra para a fila de prontos. A organizao da fila est diretamente relacionada com este tempo. Este algoritmo mais utilizado na implementao de escalonadores de longo prazo. O usurio pode passar para o sistema operacional uma estimativa do tempo de execuo do seu programa. Quando usado na implementao de um escalonador de curto prazo, algumas formulaes matemticas so utilizadas para se prever o tempo associado a cada processo. O problema dessa soluo que o tempo pode ser superestimado ou subestimado.

_________________________________________________________________

51

Este algoritmo pode ser preemptivo ou no-preemptivo. No primeiro caso, se chegar fila de prontos algum processo p1 cujo prximo ciclo de UCP seja menor do que o tempo que falta para o processo p2, que est sendo executado, terminar, ento p1 pode retirar o processador do processo p2 e comear a executar. O processo p2 deve voltar para a fila de prontos. No segundo caso essa interrupo no e permitida. No exemplo a seguir, mostrado na figura 4.9, existem quatro processos na fila de prontos. Cada um deles com o tempo do prximo ciclo de UCP j calculado. De acordo com o algoritmo, a ordem de execuo dos processos p4, p1, p3, p2. O tempo total gasto para executar os ciclos igual a 24 unidades de tempo e o tempo total de espera de 28 ut. Os tempos de espera e o tempo de execuo de cada processo so:

Processo p1 p2 p3 p4

T. espera 3 ut 16 ut 9 ut 0 ut

T. execuo 6 ut 8 ut 7 ut 3 ut

Figura 4.9. Algoritmo Shortest Job First.

Novamente, o tempo mdio de espera ir variar, mas agora devido ao uso ou no de preempo. A seguir so exemplificados os dois mtodos. SJF (no preemptivo): Processo P1 P2 P3 P4 T. chegada 0.0 2.0 4.0 5.0 T. burst 7 ut 4 ut 1 ut 4 ut

Tempo mdio de espera = (0 + 6 + 3 + 7)/4 = 4

_________________________________________________________________ SJF (preemptivo): Processo P1 P2 P3 P4 T. chegada 0.0 2.0 4.0 5.0 T. burst 7 ut 4 ut 1 ut 4 ut

52

Tempo mdio de espera = (9 + 1 + 0 +2)/4 = 3 Como podemos observar, o uso de preempo torna o processo de escalonamento de processos mais eficaz, porm, como determinar com preciso o tempo de durao do prximo burst de UCP? Na verdade, no h como determinar este tempo com exatido, podendo apenas ser estimado, realizando-se uma mdia exponencial dos valores de durao de bursts de UCP prvios. A figura 4.10 mostra uma estimativa realizada pelo sistema de escalonamento na tentativa de adivinhar os tempos de burst futuros.

Figura 4.10. Estimativa do tempo do prximo burst de UCP.

Prioridade A cada processo atribuda uma prioridade, representada por um nmero inteiro (se o maior ou o menor nmero inteiro que representa a maior ou menor prioridade varia de implementao para implementao). A UCP entregue ao processo que tiver maior prioridade. Processos que tiverem prioridades iguais so escalonados usando-se a idia de FCFS. Fazendo uma analogia com os dois algoritmos j apresentados, pode-se considerar que no caso do FCFS prioridade diretamente relacionada com o tempo de

_________________________________________________________________

53

chegada fila de prontos. No caso do SJF, a prioridade inversamente proporcional ao tamanho previsto para o prximo ciclo de UCP do processo, No caso geral, as prioridades podem ser definidas internamente, pelo sistema operacional, ou externamente, pela prpria equipe de usurios, e podem ser atribudas estaticamente ou dinamicamente. Se a atribuio for esttica, a prioridade se mantm constante durante todo o tempo de vida do processo. Se for dinmica, a prioridade pode mudar ao longo da existncia do processo, de acordo com o seu comportamento. Existem duas vantagens principais na poltica de escalonamento baseada em prioridades. Primeiro, possvel diferenciar entre os processos segundo sua prioridade. Segundo, existe uma adaptabilidade em relao ao comportamento do processo (no caso da atribuio ser dinmica). Por outro lado, deve-se cuidar para que todos os processos (com alta ou baixa prioridade) tenham chance de serem executados. O uso deste mtodo pode causar um problema conhecido como starvation, que quando processos de baixa prioridade nunca so executados, porque sempre existem processos mais prioritrios do que eles. A soluo para este caso chamada de aging, que consiste em fazer com que a medida que o tempo passe a prioridade dos processos aumente, at que ocasionalmente estes venham a ser executados. O escalonamento com prioridade pode ser preemptivo ou no-preemptivo. No primeiro caso, quando um processo chega fila de prontos, sua prioridade comparada com a de todos os processos, inclusive com o que est executando. Se sua prioridade for maior, ele retira o processador do processo que o est utilizando e o processo retirado retornado a fila de prontos. No caso de no preempo, o processo espera que o processo que est executando correntemente termine. Mltiplas Filas Em sistemas onde esta poltica de escalonamento usada, a fila de prontos implementada no s por uma nica fila, mas por vrias. Cada fila tem uma prioridade e um algoritmo de escalonamento prprio. Os processos so colocados nas filas atravs de alguma propriedade e, em alguns sistemas, podem migrar de uma fila menos prioritria para outra mais prioritria. Dessa forma, todos os processos sero executados. Estas filas podem ser executadas em foreground (se forem processo interativos) ou background (processos em batch). Nestes casos, utiliza-se o algoritmo de escalonamento Round Robin (a ser visto em seguida) para as que executam em foreground e o First-come-first-served para as de background. No exemplo mostrado na figura 4.11 existem vrias filas, cada uma com a sua prioridade e diversos processos em cada uma delas. Enquanto os processos da fila 1 no tiverem terminado, os das outras filas no podem executar, j que a sua prioridade maior que as das outras. Para a execuo, deve ser realizado um escalonamento entre as filas. Pode ser um escalonamento de prioridades fixas (serve todos da fila foreground, depois da de background). O uso deste mtodo traz a possibilidade de starvation. Para evitar que isto

_________________________________________________________________

54

ocorra, uma fatia de tempo pode ser usada. Cada fila recebe uma certa quantidade de tempo da UCP, que escalonada entre os processos da fila (por exemplo, 80% para foreground em RR, e 20% para background em FCFS)

Figura 4.11. Mltiplas filas.

Round Robin (RR) O algoritmo Round Robin naturalmente preemptivo e especialmente projetado para sistemas de time-sharing. Cada processo pode ocupar a UCP durante uma quantidade de tempo definida pelo sistema. Essa fatia de tempo recebe o nome de time-slice. Ao final desse tempo o processo executando perde o direito de continuar usando a UCP e inserido no final da fila de prontos. Neste caso, o processo passa do estado executando para o estado pronto, sem ter passado pelo estado bloqueado. O primeiro processo da fila recebe o processador e comea a sua execuo. Novos processos que entram na fila de prontos tambm so adicionados ao seu final. A eficincia deste algoritmo depende muito do tamanho da fatia de tempo. Se ela for muito grande (no caso extremo igual a infinito) o algoritmo se comporta como o FCFS e o tempo de resposta dos processos que ficam no final da fila aumentado. Se a fatia de tempo for muito pequena, cada um dos n processos tem a impresso de estar usando o processador a uma velocidade de 1/n e o tempo despedido na troca de contexto torna-se significativo. Essa troca de contexto est relacionada com a operao de salvar as informaes do processo que foi interrompido, e carregar as informaes do processo que recebeu o acesso ao processador. Na figura 4.12 mostrado um exemplo do uso deste algoritmo.

Figura 4.12. Escalonamento Circular (Round Robin).

_________________________________________________________________

55

Inicialmente trs processos (p2, p3, p4) encontram-se na fila de prontos e o processo p1 est sendo executado. Quando a fatia de tempo deste processo terminar, p2 comea a ser executado e p1 volta para o final da fila. Outro exemplo apresentado a seguir, mostrando a execuo de quatro processos com fatia de tempo igual a 20 ut: Processo P1 P2 P3 P4 T. burst 53 ut 17 ut 68 ut 24 ut

4.8. Resumo
Um processo um programa em execuo e representado dentro do sistema operacional como um conjunto de informaes que recebe o nome de Process Control Block (PCB). A multiprogramao permite que vrios processos permaneam carregados simultaneamente na memria principal. Esses processos podem compartilhar a UCP. A idia aumentar o aproveitamento da mquina minimizando os intervalos de tempo em que a UCP fica ociosa. Cada processo pode se encontrar em um determinado estado, de acordo com a sua atividade. Esses estados so tratados pelo sistema operacional como filas, onde cada elemento um (PCB). Uma dessas filas a fila de prontos que contm os processos que esto esperando para serem executados pela UCP. A escolha de um processo recebe o nome de escalonamento, e o processo selecionado recebe o controle do processador. Existem diferentes algoritmos para implementar o escalonamento. O objetivo principal aumentar a taxa de uso do processador e a taxa de sada, e minimizar o tempo total que cada processo gasta para executar, o tempo de espera e o tempo de resposta. Cada um dos algoritmos tem propriedades prprias e apresenta vantagens e desvantagens. Leitura Obrigatria: Captulo 2 do livro Sistemas Operacionais Modernos, 2 edio, TANEMBAUM, A., itens 2.1 e 2.5

_________________________________________________________________

56

Capitulo 5 Gerenciamento de Memria

A memria possui uma importncia fundamental num sistema de computador. na memria principal que ficam armazenados os programas que sero executados e a maior parte dos dados que sero manipulados. A memria interage com a CPU e com o subsistema de entrada e sada. O sistema operacional responsvel pelo controle das atividades da memria, tais como manter informaes sobre a sua ocupao, armazenando e liberando espaos, decidir quais processos sero carregados quando houver espaos livres. Existem diferentes esquemas de gerenciamento de memria. Neste captulo abordaremos varias estratgias de gerenciamento que tm sido utilizadas nos sistemas de computadores. A maior parte das estratgias tem como objetivo manter vrios processos simultaneamente na memria principal para permitir a multiprogramao.

_________________________________________________________________

57

5.1. Introduo
Num sistema computacional tanto a CPU quanto o subsistema de E/S interagem com a memria. Dado que cada contedo (palavra ou byte) armazenado na memria possui seu prprio endereo, a interao feita atravs de uma sequncia de leituras e escritas a endereos de memria especficos. Em um sistema existem tipos de memria com diferentes caractersticas, que formam uma hierarquia, como a ilustrada na figura 5.1, a seguir.

Figura 5.1. Hierarquia de memria.

A hierarquia de memria pode ser analisada segundo suas capacidades de armazenamento, custo por bit e tempo de acesso. Partindo do nvel mais inferior da Figura 5.1, as memrias secundrias so capazes de armazenar uma grande quantidade de informao, seu custo por bit menor e o seu tempo de acesso relativamente maior do que as memrias dos outros nveis. No segundo nvel, est a memria principal. Ela capaz de armazenar uma quantidade menor de informao, seu custo por bit maior e seu tempo de acesso menor do que as memrias secundrias. No nvel superior esto as memrias cache. Essas memrias so as mais rpidas e com o maior custo por bit. Por serem muito caras as memrias cache so pequenas, isto , so as que tm menor capacidade de armazenamento. A abordagem desse captulo so as diversas polticas de gerenciamento para a memria primria ou memria principal. O gerenciamento de memria usa regras, ou polticas de gerenciamento para: Busca: Determina quando um bloco de informao deve ser transferido da memria secundria para a memria principal. Armazenamento: Determina onde o bloco de informao deve ser colocado na memria principal. Substituio: Determina qual bloco de informao deve ser substitudo por um novo bloco.

_________________________________________________________________

58

Existem muitos esquemas diferentes de gerenciamento de memria. A seleo de um esquema, em particular, depende de muitos fatores, mas especialmente depende do suporte de hardware do sistema. Iniciaremos com o hardware menos complexo at atingirmos os esquemas mais sofisticados. Em um sistema monoprogramado a gerncia da memria principal menos complexa que nos sistemas multiprogramados. Nos sistemas monoprogramados uma parte do sistema operacional permanece sempre residente na memria, e a cada instante somente um nico programa do usurio est carregado na memria principal. O compartilhamento da memria entre o sistema operacional e o programa do usurio, necessita que o sistema possua mecanismos de proteo. Esses mecanismos permitem verificar a validade de acessos memria gerados pelo programa do usurio para evitar danos ao sistema operacional. A maioria dos sistemas operacionais atuais multiprogramado. A multiprogramao permite a execuo de vrios processos simultaneamente. Dessa forma, existe a necessidade de que vrios processos estejam armazenados na memria principal ao mesmo tempo. Neste caso tambm, alm da proteo da rea do sistema operacional, necessrio proteger os outros processos residentes na memria, de acessos invlidos gerados por um outro processo. Um outro problema que surge com a multiprogramao diz respeito localizao dos processos na memria (relocao). Em alguns sistemas, pode-se prever as posies exatas de variveis e procedimentos na memria que sero ocupadas em tempo de execuo (alocao esttica). J em outros sistemas, os espaos ocupados pelos processos podem variar entre execues (alocao dinmica). Dessa forma, a gerao de endereos de acesso memria pode ser feita em: Tempo de compilao: Nesse tempo pode ser gerado um cdigo absoluto se for conhecido onde o programa residir na memria. Tempo de carga: Se no for conhecido onde armazenar o programa em tempo de compilao, o compilador deve gerar um cdigo realocvel. Nesse caso, somente no tempo de carga ser conhecido onde o programa residir na memria. tempo de execuo: Se um programa pode ser movido de um segmento de memria para outro, durante sua execuo ento a gerao de endereo deve ser retardada at este tempo.

5.2. Modelos de monoprogramados


5.2.1. Bare Machine

gerenciamento

de

memria

em

ambientes

O esquema de memria mais simples nenhum. Ao usurio fornecido uma mquina bsica e ele tem completo controle sobre a memria. As vantagens desta abordagem so: a flexibilidade mxima para o usurio, j que ele pode utilizar a memria da maneira que desejar, simplicidade e menor custo. No h necessidade de nenhum hardware especial para se gerenciar a memria. Sua maior desvantagem no possuir nenhum tipo de proteo. Este esquema utilizado somente quando h a necessidade de um sistema dedicado.

_________________________________________________________________ 5.2.2. Monitor Residente

59

Este esquema tambm bem simples e divide a memria em duas partes, uma para o usurio e outra para o sistema operacional. Geralmente possvel armazenar o sistema operacional tanto na memria baixa quanto na memria alta. Porm o mais comum armazen-lo na parte baixa. necessrio proteger o sistema operacional de trocas acidentais ou no, provocadas pelo programa do usurio. Esta proteo deve ser fornecida pelo hardware e pode ser implementada de diversas maneiras. A abordagem geral mostrada na figura 6.2. Todo endereo gerado pelo programa do usurio comparado com um endereo limite (fence). Se o endereo gerado um endereo vlido, a referncia memria realizada normalmente. Caso contrrio, se o endereo menor que o limite, o acesso memria negado. A referncia memria interceptada, e gerada uma interrupo ao sistema operacional indicando erro de acesso memria.

Figura 5.2. Monitor Residente.

O endereo de limite pode ser especificado de vrios modos diferentes nos sistemas de computadores. Uma das abordagens ter o endereo de limite construdo hardware como uma constante fixa. A dificuldade com o endereo de limite fixo a seleo correta deste endereo. Se ele for muito pequeno o sistema operacional no ficar completamente protegido. Se ele for muito grande, uma parte da memria no ser utilizada pelo sistema operacional e nem pelo usurio. Para solucionar o problema na variao do tamanho do sistema operacional, pode-se utilizar um registrador de limite. O contedo deste registrador o endereo usado para verificar a correo das referncias memria feita pelo usurio. Este contedo pode ser carregado pelo sistema operacional utilizando uma instruo privilegiada especial. Este esquema permite a troca do contedo do registrador de limite sempre que o sistema operacional necessite.

5.3. Modelos de multiprogramados

gerenciamento

de

memria

em

ambientes

_________________________________________________________________ 5.3.1. Organizao de Memria: Parties Fixas X Parties Variveis

60

A organizao de memria o modo como a memria principal vista pelo sistema. Isto leva a consideraes como: Quantos usurios utilizaro a memria? Se forem vrios usurios, eles ocuparo a memria ao mesmo tempo? Quanto de espao de memria ser dado a cada um deles? Como a memria ser dividida? Em quantas parties? Os processos podero ser executados em qualquer partio? Os processos devero ser colocados na memria de forma contgua ou podero estar espalhados pela memria principal?

Nos esquemas apresentados a seguir, necessrio que todo o espao de endereo lgico de um processo esteja na memria fsica antes que o processo possa ser executado. Dessa forma, o tamanho de um programa fica restrito ao tamanho da memria fsica do sistema. Estas organizaes so ditas organizaes de memria real. importante perceber que o grau de multiprogramao limitado pelo nmero de parties da memria principal e influencia diretamente o desempenho do sistema. 5.3.1.1. Parties Fixas Nesta organizao a memria dividida em nmero fixo de parties ou regies. A cada partio pode ser atribudo um processo para ser executado Quando existe uma partio livre, um processo selecionado de uma fila e carregado naquela partio. Quando ele termina sua execuo, a partio torna-se livre para um outro processo. Em relao fila de processos, esta pode ser nica para cada partio ou nica para as vrias parties. A figura 5.3 a seguir ilustra estas abordagens.

Figura 5.3. Fila de processos separadas e unificada.

Quando existe uma nica fila para cada partio, a estratgia classificar os processos segundo sua quantidade de memria necessria e coloc-lo na fila correspondente. Quando existe uma nica fila para todas as parties, o escalonador de processos seleciona o prximo processo que ser executado e em qual partio ser

_________________________________________________________________

61

carregado. A escolha de um processo para ser armazenado numa partio, depende da poltica de alocao de memria utilizada, A escolha pode ser best-fit-only (menor espao, dentre os disponveis, que seja suficiente) ou best-available-fit (primeiro espao, dentre os disponveis que seja suficiente). Outro fator importante a proteo das reas de memria. Como existem diversos processos residentes na memria simultaneamente, devem haver mecanismos para proteger tanto o sistema operacional quanto os processos. A proteo na relocao esttica e na relocao dinmica implementada de forma diferente. A proteo na relocao esttica realizada em tempo de montagem ou tempo de carga. Para isto, so utilizados os dois registradores de limite inferior e superior como mostra a figura 5.4. Cada endereo lgico gerado deve ser maior ou igual ao contedo armazenado no registrador de limite inferior, e menor ou igual ao contedo armazenado no registrador de limite superior. Se for um acesso vlido o endereo ento enviado memria.

Figura 5.4. Hardware de suporte para os registradores de limite superior e inferior.

A proteo na relocao dinmica feita em tempo de execuo. Nesta proteo, so empregados um registrador base e um registrador limite, como ilustrado na figura 5.5. O registrador base contm o valor do menor endereo fsico. O registrador limite contm a faixa dos endereos lgicos. Com registradores base e limite, cada endereo lgico deve ser menor que o contedo armazenado no registrador limite. Esse endereo, se vlido, ento calculado dinamicamente adicionando-se o valor contido no registrador base. O endereo calculado ento enviado memria,

Figura 5.5. Hardware de suporte para os registradores de base e limite

_________________________________________________________________

62

Um dos problemas no projeto de parties fixas envolve a determinao dos tamanhos das parties. Como encontrar uma boa diviso que atenda as necessidades de memria dos processos? Estudos estatsticos podem indicar que conjunto de parties seria conveniente. Com a diviso da memria em parties fixas podemos ter ainda, o problema da fragmentao da memria. Existe fragmentao interna quando h um processo sendo executado em uma partio e ele no a ocupa por completo. J a fragmentao externa existe quando uma partio no utilizada, por ser pequena demais para qualquer processo que esteja esperando. Tanto a fragmentao interna quanto externa so prejudiciais ao desempenho do sistema. Na organizao de memria em parties fixas pode ocorrer os dois tipos de fragmentao. 5.3.1.2. Parties Variveis O problema principal das parties fixas a determinao do tamanho das parties de modo que, a fragmentao interna e externa seja mnima. A organizao da memria com parties variveis visa solucionar este problema permitindo que os tamanhos das parties variem dinamicamente Para a implementao da organizao com parties variveis o sistema operacional mantm uma tabela indicando quais partes da memria esto disponveis e quais esto ocupadas. A princpio, toda a memria est disponvel e considerada um grande bloco de memria (hole). Quando um processo chega e necessita de memria, realizada uma busca por um espao que seja grande o suficiente para o armazenar. Se existe tal espao, atribudo ao processo somente a quantidade de memria necessria. O restante do espao, que pode haver, deixado disponvel para futuras requisies. Sempre que um processo termina sua execuo ele libera seu espao de memria. Esse espao liberado colocado de volta junto com os espaos de memria disponveis. Neste ponto, procura-se verificar se h reas adjacentes que possam ser recombinadas de modo a formar espaos de tamanhos maiores. A figura 5.6 a seguir mostra um exemplo de alocao de memria e o escalonamento dos processos.

_________________________________________________________________

63

Figura 5.6. Exemplo de alocao de memria e escalonamento de processos.

Neste exemplo, est ilustrada uma memria de 256K, onde existe um monitor residente que ocupa 40K e restam 216K de memria para a execuo dos processos. Supondo que exista uma fila de processos como a da figura 5.6, podemos armazenar imediatamente os trs primeiros processos na memria (figura 5.6(a)). Assim, temos uma fragmentao externa de 26K, Utilizando o algoritmo de escalonamento de CPU Round Robin com um quantum de 1 unidade de tempo, o processo 2 terminar no tempo 14, liberando seu espao de memria (figura 5.6(b)). E feito um novo acesso a fila de processos, e o processo 4 armazenado na memria (figura 5.6(c)). O processo 1 terminar no tempo 28 levando a figura 5.6(d), sendo ento o processo 5 escalonado produzindo a figura 5.6(e). Como pode ser observado no exemplo, em qualquer tempo h um conjunto de espaos livres, de tamanhos variados e espalhados pela memria. Alm disso, existe um conjunto de processos esperando para serem executados. Esta situao pode ser vista como uma aplicao geral do problema de alocao de memria dinmica. O problema como satisfazer um pedido de tamanho n de uma lista de espaos livres. As estratgias mais comuns para selecionar um espao de memria so: First-fit: Aloca o primeiro espao grande o suficiente. No necessita de uma busca por toda a lista. a estratgia mais rpida. Best-fit: Aloca o menor espao que seja grande o suficiente. necessrio percorrer toda a lista, a menos que esta esteja ordenada. Esta estratgia a que provoca menor fragmentao da memria Worst-fit: Aloca o maior bloco. Tambm necessria uma busca pela lista inteira, a menos que ela esteja ordenada por tamanho. Esta estratgia visa deixar espaos de memria maiores livres.

A proteo das reas de memria feita do mesmo modo que nas parties fixas. O hardware idntico. O que diferencia as parties fixas e as parties variveis o software.

_________________________________________________________________

64

Em geral, a utilizao da memria com parties variveis melhor do que com parties fixas. Praticamente no existe fragmentao interna, s fragmentao externa, o que ainda assim, pode ser muito ruim. Suponha tinia memria com vrios espaos livres, mas espalhados pela memria. Suponha ainda que, esses espaos estivessem juntos e formassem um bloco grande o suficiente, onde pudessem ser executados outros processos. Essa fragmentao prejudicial ao desempenho do sistema. Para solucionar a fragmentao externa podemos utilizar a tcnica de compactao. O objetivo dessa tcnica juntar os espaos espalhados pela memria em um nico grande bloco. Essa tcnica s possvel de ser utilizada se houver relocao dinmica. Deve-se levar em considerao tambm, a estratgia a ser escolhida e o custo da compactao.

5.4. Memria Virtual


A tcnica de memria virtual foi criada para permitir a execuo de vrios processos que no necessariamente estejam armazenados por inteiro na memria principal. Uma das vantagens mais importantes que os programas dos usurios podem ser maiores do que a memria fsica. Alm disso, como cada programa de usurio no necessita estar completamente armazenado na memria pode ser executado um maior nmero de programas simultaneamente. Isso leva a uma maior utilizao da CPU e um aumento no throughput. A memria virtual a separao da memria lgica do usurio da memria fsica. Isso torna a tarefa de programao mais fcil na medida em que o programador no precisa se preocupar com a quantidade de memria fsica disponvel. A implementao da memria virtual comumente realizada com paginao sob demanda (demand paging) ou com segmentao sob demanda (demand segmentation). Nas sees seguintes descreveremos as tcnicas de swapping, paginao e segmentao necessrias implementao da memria virtual. 5.4.1. Swapping A tcnica de swapping requer que o sistema possua um backing store. O backing store uma memria secundria, geralmente um disco de rpido acesso (leitura e gravao). Ele deve ser grande o suficiente para armazenar cpias de todos os programas de usurios e fornecer acesso direto a esses programas. O swapping nada mais do que a troca do contedo de um determinado espao de memria. A figura 5.7 a seguir ilustra o swapping de dois programas utilizando um disco como backing store.

_________________________________________________________________

65

Figura 5.7. Swapping de dois programas utilizando um disco.

A fila de prontos (ready queue) consiste de todos os processos que esto no backing store e que esto prontos para serem executados. Um conjunto de variveis do sistema indica quais processos esto correntemente na memria Sempre que o escalonador da CPU decide executar um processo, ele chama o dispatcher. Esse verifica se o processo escolhido est presente na memria. Caso no esteja, ele troca um dos processos correntes na memria pelo processo desejado. O dispatcher responsvel pela troca de contexto dos processos, isto , salva o contedo dos registradores do processo que est sendo retirado, armazena nos registradores os valores correspondentes ao novo processo e transfere o controle para o processo. O processo escolhido para ser retirado da memria e levado ao backing store deve estar completamente ocioso. Nenhum processo com entrada e sada pendente deve ser trocado.

5.4.2. Paginao A paginao uma organizao de memria que permite que a memria fsica seja vista como se estivesse dividida em blocos de tamanho fixo, chamados frames. A memria lgica tambm dividida em blocos do mesmo tamanho, chamados pginas (pages). Quando um programa vai ser executado, suas pginas so trazidas do backing store e carregadas nos frames disponveis. O disco dividido em blocos de tamanho fixo, cujo tamanho o mesmo dos frames da memria. O hardware de suporte para a paginao mostrado a seguir na figura 6.8. Todo endereo gerado pela CPU dividido em duas partes: o nmero de pgina (page number p) e deslocamento dentro da pgina (page offset - d). O page number utilizado como um ndice para a tabela de pginas. A tabela de pginas contm o endereo base de cada pgina da memria fsica Este endereo base combinado com o page offset para definir o endereo enviado a memria fsica.

_________________________________________________________________

66

Figura 5.8. Hardware para paginao.

O tamanho da pgina (e do frame) definido pelo hardware. Tipicamente varia entre 512 e 2048 palavras, dependendo da arquitetura do computador. A figura 5.9. a seguir, exemplifica a viso do usurio sobre como a memria lgica pode ser mapeada na memria fsica.

Figura 5.9. Exemplo de paginao para uma memria de 32 palavras com 8 pginas.

Nesta figura 5.9 est ilustrada uma memria fsica de 32 palavras dividida em 8 pginas. Cada pgina possui 4 palavras. Suponha um acesso ao endereo lgico 3, que pertence pgina 0. Realizando a indexao na tabela de pginas, encontramos que a

_________________________________________________________________

67

pgina 0 est armazenada no frame 5. Dessa forma, o endereo lgico 3 mapeado ao endereo fsico 23 ( = 5 x 4 + 3). Para a alocao de um processo na memria necessrio expressar seu tamanho em nmero de pginas. Se o processo tiver tamanho n, ele necessitar de no mximo n frames. A cada frame alocado, seu nmero colocado na tabela de pginas, para posterior gerao de endereo fsico. Cada processo possui a sua prpria tabela de pginas. A implementao da tabela de pginas pode ser feita com um conjunto de registradores dedicados ou ser mantida na memria e utilizar um registrador, que armazena um apontador para a tabela de pginas. Este registrador chamado Page Table Base Register (PTBR), e o seu contedo armazenado junto com outros valores de registradores no PCB (Process Control Block). O problema com o uso de uma tabela de pginas o tempo de acesso a uma locao de memria do usurio. So necessrios na realidade dois acessos, um para realizar o acesso tabela de pginas e outro para a posio de memria da palavra desejada. A soluo para diminuir este tempo de acesso utilizar uma memria cache para translao de endereos lgicos em endereos fsicos. O sistema operacional gerencia a memria fsica mantendo informaes de quais frames esto alocados, quais deles esto disponveis, quanto frames existem no total, entre outras, Estas informaes so mantidas, geralmente, em urna estrutura de dados denominada tabela de frames (frame table). A tabela de frames possui uma entrada para cada frame da pgina fsica, indicando se o frame est disponvel ou no, e se alocado, qual pgina de que processo est associada ao frame. Uma das vantagens da paginao e a possibilidade do compartilhamento de cdigo. Todo cdigo reentrante, isto , aquele que no muda durante a execuo, pode ser compartilhado. Basta que, cada processo tenha na sua tabela de pginas o mesmo endereo do cdigo armazenado na memria fsica. Podem ser compartilhados ento compiladores, montadores, Iinkers entre outros. A proteo de memria no ambiente paginado realizada por bits de proteo associados com cada pgina. Esses bits so normalmente mantidos na tabela de pginas e definem permisso de leitura/escrita e acesso vlido/invlido. Com a paginao no h fragmentao externa, porm pode haver alguma fragmentao interna, que ocorre se o ltimo frame alocado no estiver completo. 5.4.3. Segmentao A segmentao um esquema de gerenciamento de memria que pode dar suporte viso que o usurio possui sobre a memria. O usurio pensa na memria como um conjunto de subrotinas, procedimentos, tabelas, variveis e assim por diante, Cada um desses segmentos tem um nome, de tamanho varivel e no possui uma ordenao especfica. Os elementos dentro de cada segmento so identificados por sua posio dentro do segmento, como por exemplo, a primeira entrada numa tabela de smbolos. Dessa forma, um espao de endereo lgico uma coleo de segmentos. Os endereos especificam tanto o nome do segmento quanto a posio dentro do segmento.

_________________________________________________________________

68

O usurio especifica ento cada endereo por estas duas quantidades: um nome de segmento e uma posio. Por simplicidade de implementao, os segmentos so numerados e referenciados por seu nmero. Normalmente, o programa do usurio montado (ou compilado) e o montador (ou compilador) automaticamente constri segmentos refletindo o programa de entrada. Embora o usurio possa referenciar objetos dentro do programa por endereos bidimensionais, a memria fsica uma sequncia unidimensional de palavras. Assim, necessrio definir um mapeamento entre estas duas vises. Este mapeamento efetuado por uma tabela de segmentos. O uso da tabela de segmentos mostrado na figura 6.10.

Figura 5.10. Hardware para segmentao.

O endereo lgico consiste de duas partes: um nmero de segmentos e um offset d, dentro do segmento. O nmero do segmento usado como um ndice para a tabela de segmentos. Cada entrada na tabela possui uma base e um limite do segmento. O offset d do endereo lgico deve estar entre 0 e este limite. Se for um acesso vlido, o offset adicionado base do segmento para produzir um endereo fsico. A tabela de segmentos um array de pares de registradores base/limite. Para exemplificar a segmentao, considere a figura 5.11 mostrada a seguir.

_________________________________________________________________

69

Figura 5.11. Exemplo de segmentao.

Na figura 5.11 so ilustrados cinco segmentos numerados de 0 a 4. Suponha um acesso palavra 53 do segmento 2. Seu endereo fsico dado pela base 4300 mais a posio dentro do segmento 53, gerando ento o endereo fisico 4353 (4300 + 53). Da mesma forma que a tabela de pginas, a tabela de segmentos pode ser armazenada em registradores ou na memria. O registrador que armazena o apontador para a tabela de segmentos, quando essa est armazenada na memria, chamado Segment Table Base Register (STBR). A segmentao tambm permite o compartilhamento de cdigo. Os segmentos so compartilhados quando, entradas nas tabelas de segmento de diferentes processos apontam para as mesmas localizaes fsicas. A proteo na segmentao associada a cada segmento. Cada entrada na tabela de segmentos contm informaes para prevenir acesso ilegal de leitura/escrita ou de acesso fora dos limites do segmento. Como os segmentos so de tamanhos variados e armazenados corno tal, no existe fragmentao interna no gerenciamento de memria com segmentao. Porm, a segmentao pode causar fragmentao externa quando todos os espaos livres de memria so muito pequenos para armazenar um segmento.

5.4.4. Paginao Sob Demanda Como mencionado anteriormente, a memria virtual comumente implementada com paginao sob demanda ou com segmentao sob demanda. Descreveremos a seguir a paginao sob demanda. Raciocnio anlogo pode ser feito na segmentao sob demanda. A paginao sob demanda similar a um sistema paginado com swapping. Os programas residem na memria secundria. Quando se inicia a execuo, os programas so trazidos para a memria principal. Porm, nunca uma pgina trazida para a

_________________________________________________________________

70

memria se ela no for necessria. Com isso, diminumos o tempo de troca e a quantidade de memria fsica necessria. Para controlar o armazenamento das pginas trazidas para a memria, a tabela de pginas possui um bit de vlido/invlido. Esse bit ativado quando a pgina est presente na memria. Se o programa tenta acessar uma pgina que ainda no foi trazida para a memria, ento gerada uma interrupo por falta de pgina (page fault). Neste caso, utilizado o seguinte procedimento para carregar uma pgina: Busca-se um frame na lista de frames livres; Escalona-se uma operao de disco para ter a pgina desejada para o frame alocado; Quando a leitura do disco se completar, a tabela de pginas modificada para indicar que a pgina agora est presente na memria e reinicia-se a instruo que foi interrompida pelo acesso ilegal. Todo este procedimento ilustrado pela figura 5.12.

Figura 5.12. Passos na manipulao de uma falta de pgina.

No procedimento descrito, no abordamos a situao onde a memria estivesse completa, isto , no houvessem mais frames livres para serem alocados. Esta situao pode ser solucionada com a substituio de alguma pgina. A escolha de uma pgina a ser trocada leva a considerar algumas estratgias de substituio de pginas que sero abordadas na seo seguinte. Em resumo, podemos dizer que os dois principais problemas que devem ser solucionados para implementar a paginao sob demanda so a alocao de frames e a substituio de pginas. Se tivermos vrios processos na memria, devemos decidir quantos frames alocar a cada um deles. E quando necessrio substituir uma pgina, devemos selecionar quais frames sero substitudos. 5.4.5. Estratgias de Substituio As estratgias de substituio de pginas visam escolher uma pagina para ser trocada por outra, se no existirem frames livres. Um frame liberado escrevendo seu

_________________________________________________________________

71

contedo num disco e trocando a tabela de pginas para indicar que a pagina no est mais residente na memria. O frame liberado pode ser ento utilizado por outra pgina. Existem diversos algoritmos de substituio diferentes. A escolha de um, em particular leva em considerao a taxa de falta de pginas (page fault rate). Devemos escolher aquele que apresentar a menor taxa. Uma quantidade de trocas de pginas elevada degrada o desempenho do sistema. A seguir descreveremos alguns algoritmos de substituio de pginas. First-In-First-Out (FIFO) O algoritmo First-In-First-Out o mais simples. Ele associa a cada pgina, o tempo em que ela foi trazida para a memria. Quando uma pgina tiver que ser substituda, a pagina mais antiga na memria escolhida. Apesar deste algoritmo ser simples de entender e implementar nem sempre seu desempenho bom. Suponha que temos uma pgina em uso constante e h bastante tempo na memria e uma outra trazida mais recentemente, mas que no ser mais utilizada. Com este algoritmo a escolha recai sobre a pgina em uso. Esta pgina provavelmente provocar uma nova falta de pginas. Isso aumenta a taxa de falta de paginas e torna a execuo do programa mais lenta. A figura 5.13 a seguir ilustra o algoritmo FIFO para um string de referncias arbitrrio. Com esta sequncia de referncias temos 15 faltas de pgina.

Figura 5.13. Substituio FIFO.

Optimal Replacement (OPT) O algoritmo de substituio de pginas timo (OPT) o que apresenta a menor taxa de falta de pginas. Neste algoritmo, substituda a pgina que no ser utilizada pelo maior perodo de tempo. Infelizmente, o algoritmo de substituio timo difcil de implementar, uma vez que ele requer um conhecimento futuro das referncias memria. Por esse motivo, o algoritmo timo utilizado principalmente em estudos comparativos. Como exemplo, utilizamos o mesmo string de referncias da figura 5.13, na figura 5.14, que ilustra o algoritmo timo. Aqui so causadas nove faltas de pgina.

_________________________________________________________________

72

Figura 5.14. Substituio OPT.

Least Recently Used (LRU) O algoritmo de substituio de pginas Least Recently Used uma tentativa de aproximao ao algoritmo timo. O algoritmo timo utiliza na sua concepo o conhecimento futuro das referncias memria. O algoritmo LRU utiliza o conhecimento da histria do passado recente das referncias memria, como uma aproximao do futuro. Este algoritmo associa a cada pgina seu ltimo tempo de uso. Quando houver a necessidade de substituir uma pgina, escolhida aquela que no foi utilizada pelo maior perodo de tempo. Essa estratgia conveniente ao princpio da localidade. Por esse princpio, quando uma pgina referenciada, existe uma grande chance de que ela seja novamente referenciada em breve. A figura 5.15 a seguir ilustra o comportamento deste algoritmo, onde ocorreram 12 faltas de pgina.

Figura 5.15. Substituio LRU.

O algoritmo LRU bastante utilizado e considerado muito bom. O problema com ele est na sua forma de implementao. O sistema necessita manter uma lista das pginas da memria, ordenada por ltimo uso. H duas formas de implementao: contador. A cada entrada na tabela de pginas associado um registrador de tempo de uso. Sempre que uma referncia a pagina feita, o valor do tempo carregado no registrador. A pgina substituda deve ser aquela com o menor valor de tempo. pilha. Nessa abordagem mantida uma estrutura de pilha dos nmeros das pginas. Quando a pagina referenciada, ela removida da pilha e colocada no topo. Dessa forma, o fundo da pilha sempre contm a pgina usada menos recentemente.

_________________________________________________________________

73

Note que as implementaes do LRU necessitam de algum auxlio do hardware. A atualizao dos registradores ou da pilha deve ser feita a cada referncia memria. Se utilizarmos uma interrupo a cada referncia memria, para permitir ao software atualizar as estruturas de dados, o sistema se degrada. Poucos sistemas tolerariam tal nvel de overhead no gerenciamento de memria.

5.5. Outras Consideraes Nmero Mnimo de Frames Devemos ainda pensar sobre como a quantidade de memria livre pode ser alocada aos vrios processos. Existe um nmero mnimo de frames que devem ser alocados Este nmero mnimo definido pelo conjunto de instrues da arquitetura. Devemos em qualquer tempo, ter frames suficientes para manter todas as pginas diferentes que qualquer nica instruo possa referenciar. Por exemplo, considere uma maquina na qual todas as suas instrues de referncia memria possibilitem um nvel de indireo. So necessrios ento pelo menos trs frames, um para a instruo um para o endereo e outro para a informao propriamente dita. Resumindo, o nmero mnimo de frames por processo definido pela arquitetura, enquanto o nmero mximo definido pela quantidade de memria fsica disponvel na maquina. Alocao Local x Global Com vrios processos competindo por frames podemos classificar a substituio de pagina em duas categorias denominadas substituio local e substituio global. A substituio global permite que seja selecionado para substituio um frame do conjunto de todos os frames, ainda que, aquele frame esteja alocado a um outro processo que no seja o processo que est requisitando um frame. Isto , um processo pode utilizar um frame pertencente a outro processo. J a substituio local requer que cada processo selecione para substituio somente os frames pertencentes ao seu proprio conjunto de frames alocados. Thrashing Se a quantidade de frames alocada a um processo cai abaixo do nmero mnimo requerido pela arquitetura do computador, devemos ento suspender a sua execuo. Embora seja possvel tecnicamente reduzir o nmero de frames alocados ao valor mnimo, existe um nmero de pginas que esto em uso ativo. A consequncia deste fato ter uma alta taxa de page faults. Por exemplo, as pginas em uso ativo podem gerar referncias pginas que no estejam presentes na memria, logo elas precisam ser carregadas. Por sua vez, estas pginas recm carregadas geram novas referncias e assim por diante. Esta alta atividade de paginao chamada de thrashing. Dizemos que um processo est em thrashing se ele passa mais tempo paginando do que executando Este estado causa srios problemas de desempenho no sistema.

_________________________________________________________________

74

Modelo de Conjunto de Trabalho O modelo do conjunto de trabalho (working set model) baseado na suposio da localidade. Este modelo utiliza um parmetro , para definir o conjunto de trabalho. A idia examinar as referncias de pgina mais recentes. Este conjunto o working set. Se a pgina est em uso ativo, ela ser includa no conjunto. Caso contrrio, aps n unidades de tempo depois da ltima referncia, ela ser retirada do conjunto de trabalho. Dessa forma, o conjunto de trabalho uma aproximao da localidade do programa. Por exemplo, dada a sequncia de referncias mostrada na figura 5.16, se = 3 referncias de memria, ento o conjunto de trabalho no tempo t1 {1}. No tempo t2, o conjunto trocado para {5,6}

Figura 5.16. Modelo do conjunto de trabalho

_________________________________________________________________ 5.6 Resumo

75

O gerenciamento de memria para sistemas monoprogramados menos complexo do que nos sistemas multiprogramados. O grau de multiprogramao influencia diretamente no desempenho do sistema. Foram discutidas algumas estratgias de gerenciamento de memria como bare machine monitor residente, parties fixas, parties variveis, paginao e segmentao. Um dos fatores determinantes na escolha de uma poltica de gerenciamento, em particular, o hardware do sistema. Tanto com bare machine, monitor residente, parties fixas quanto com parties variveis, necessrio que um processo esteja completamente armazenado na memria para que seja executado. A tcnica de memria virtual permite que processos maiores do que a memria fsica disponvel sejam executados. Essa tcnica implementada com paginao sob demanda ou com segmentao sob demanda. Na paginao sob demanda, uma pgina s trazida para a memria principal quando ela necessria. Uma vez que pode ocorrer que no existam mais frames livres na memria, e necessrio utilizar algum algoritmo que substitua as pginas na memria. Os algoritmos de substituio de pginas descritos foram o OPT, o FIFO e o LRU. Abordamos ainda algumas consideraes como qual a quantidade de frames a ser atribudo a cada processo, o problema do thrashing e o modelo de conjunto de trabalho.

Leitura Obrigatria: Captulo 4 do livro Sistemas Operacionais Modernos, 2 edio, TANEMBAUM, A.

Você também pode gostar