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

AUTARQUIA EDUCACIONAL DO VALE DO SO FRANCISCO AEVSF FACULDADE DE CINCIAS APLICADAS E SOCIAIS DE PETROLINA FACAPE CINCIAS DA COMPUTAO

APOSTILA DE SISTEMAS OPERACIONAIS


VERSO 13.0

bel. lea. Roberto Tenorio Figueiredo

PETROLINA, 2009

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

SUMRIO
PREFCIO ........................................................................................................................................ 4 MODULO 1 INTRODUO AO ESTUDO DOS SOS ............................................................ 5 CONCEITOS FUNDAMENTAIS .................................................................................................. 6 SOFTWARES DO COMPUTADOR .............................................................................................. 7 HISTRICO DOS SISTEMAS OPERACIONAIS ........................................................................ 8 Primeira Gerao (1945 1955): ................................................................................................ 8 Segunda Gerao (1955 1965): ................................................................................................ 8 Terceira Gerao (1965 1980): ................................................................................................. 9 Quarta Gerao (1981 2000): ................................................................................................. 10 Quinta Gerao (a partir de 2000): ............................................................................................ 11 CONCEITOS BSICOS PARA O ESTUDO DOS S.Os............................................................ 12 Ambientes de Computao: ....................................................................................................... 12 Componentes Centrais do Kernel (ncleo) dos Sistemas Operacionais: ................................... 12 Metas do Sistema Operacional: ................................................................................................. 12 Chamadas ao Sistema (System Calls): ...................................................................................... 13 Interpretador de Comandos (Shell): .......................................................................................... 13 ESTRUTURAS DO S.OS ............................................................................................................ 14 1. Monolticos: ........................................................................................................................... 14 2. Em Camadas: ......................................................................................................................... 15 3. Mquina Virtual:.................................................................................................................... 16 4. Micro-Ncleo: ....................................................................................................................... 16 5. Cliente-Servidor (Distribuda): .............................................................................................. 17 TIPO DE S.OS ............................................................................................................................. 18 MULTIPROCESSAMENTO ........................................................................................................ 20 MODULO 2 PROCESSOS .......................................................................................................... 23 DETALHAMENTO ...................................................................................................................... 23 PROGRAMA............................................................................................................................. 23 PROCESSO ............................................................................................................................... 24 THREADS ................................................................................................................................. 26 INTERRUPO ........................................................................................................................... 27 ESTADOS DO PROCESSO ......................................................................................................... 28 COMUNICAO INTER-PROCESSOS .................................................................................... 30 Principais Problemas a Serem Evitados pelo IPC ..................................................................... 32 Problemas Clssicos de IPC ...................................................................................................... 36 Implementao da Excluso Mtua ........................................................................................... 38

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

MODULO 3 ESCALONAMENTO ............................................................................................ 49 CARACTERSTICAS DO ESCALONADOR ............................................................................. 49 ESTRATGIAS DO ESCALONADOR ....................................................................................... 50 CLASSES DO ESCALONADOR................................................................................................. 50 CARACTERSTICAS DOS PROCESSOS ESCALONADOS .................................................... 51 POLTICAS DE ESCALONAMENTO ........................................................................................ 51 HIERARQUIA DE PROCESSO PARA O ESCALONADOR .................................................... 54 AVALIAO DAS POLTICAS DE ESCALONAMENTO ...................................................... 55 CLCULO DO TEMPO MDIO ................................................................................................. 56 MODULO 4 GERNCIA DE MEMRIA ................................................................................ 59 HISTRICO .................................................................................................................................. 59 CONCEITOS FUNDAMENTAIS ................................................................................................ 60 HIERARQUIA DE MEMRIA .................................................................................................... 62 GERENCIAMENTO DE ESPAO/TEMPO ............................................................................... 62 CONCEITOS BSICOS NO ESTUDO DO GERENCIAMENTO DE MEMRIA .................. 63 PROBLEMAS DO GERENCIAMENTO DE MEMRIA .......................................................... 65 SWAPPING ................................................................................................................................... 66 TRADUO DE ENDEREOS .................................................................................................. 67 ORGANIZAO DE MEMRIA ............................................................................................... 69 1. Particionamento ..................................................................................................................... 69 2. Paginao ............................................................................................................................... 71 3. Segmentao .......................................................................................................................... 74 4. Segmentao Paginada .......................................................................................................... 75 ESTRATGIAS DE ALOCAO ............................................................................................... 77 ESTRATGIAS DE GERENCIAMENTO................................................................................... 78 ALGORITMOS DE SUBSTITUIO DE PGINAS ................................................................ 81 PROJETO DE SISTEMAS PAGINADOS ................................................................................... 84 MODULO 5 GERNCIA DE ARQUIVOS ............................................................................... 86 CONCEITOS BSICOS SOBRE ARQUIVOS ........................................................................... 86 SISTEMA DE ARQUIVOS .......................................................................................................... 88 Componentes do Sistema de Arquivos ...................................................................................... 89 MDULO 6 GERNCIA DE ENTRADA/SADA ................................................................. 100 HARDWARE DE E/S ................................................................................................................. 100 SOFTWARE DE E/S................................................................................................................... 104 DISCOS ....................................................................................................................................... 105 CLOCKS ..................................................................................................................................... 109 TERMINAIS ............................................................................................................................... 109 REFERNCIAS BIBLIOGRFICAS ........................................................................................ 111

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

PREFCIO
O texto existente nesta apostila no de minha autoria. Na verdade, trata-se de uma sntese de vrios autores renomados na rea de sistemas operacionais, como Tannenbaum, Deitel, Silberschatz, entre outros. Entretanto, alguns exemplos e analogias foram adicionados aos textos originais para facilitar a compreenso do assunto. Este material tambm no se prope a substituir a riqueza presente nos livros publicados pelos autores mencionados, mas sim, servir como apoio s aulas da disciplina de Sistemas Operacionais do Curso de Cincia da Computao da Facape. Dada a grande quantidade de trechos extrados praticamente na ntegra de alguns livros, fica impraticvel referenciar todos eles. Em compensao, os livros citados na bibliografia, ao final desta apostila, constituem as fontes principais do texto que a partir daqui se inicia. Espero que realmente este grande resumo possa ser til para que os alunos da disciplina compreendam os aspectos mais importantes dos Sistemas Operacionais.

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

MODULO 1 INTRODUO AO ESTUDO DOS SOS


Podemos dizer sem receio que um computador sem software no passa de peso para papel. Mas afinal, se importante para as pessoas a existncia de bons softwares que ajudem nos seus trabalhos, como pode o sistema operacional influenciar na qualidade e na disponibilidade de tais softwares? Para responder esta pergunta, precisamos primeiro definir o que um sistema operacional. Para chegarmos a este conceito, vamos por partes: Sistemas: Um sistema um conjunto de unidades funcionais distintas que interagem entre si, tais como: Elementos biolgicos, humanos, de mquina, de informaes e naturais, integrados com um ambiente para alcanar um objetivo comum pela manipulao e controle de materiais, informaes, energia e vida. Sistemas de Computao: um conjunto formado por hardwares, softwares e peoplewares (usurios) a fim de resolver os problemas do usurio. Sistema Operacional: um conjunto de funes que interagem entre si, para facilitar a vida do usurio e gerenciar todos os recursos do computador. Ele nada mais do que um programa de computador, que aps o processo de inicializao (boot) da mquina, o primeiro a ser carregado, e que possui duas tarefas bsicas: Gerenciar os recursos de hardware de forma que sejam utilizados da melhor forma possvel, ou seja, tirar o mximo proveito da mquina fazendo com que seus componentes estejam a maior parte do tempo ocupados com tarefas existentes; Prover funes bsicas para que programas de computador possam ser escritos com maior facilidade, de modo que os programas no precisem conhecer detalhes da mquina para poderem funcionar.

A importncia de cada um destes itens vai depender do ponto de vista. Em relao ao hardware, o primeiro item o mais importante, pois essa parte do S.O que ir interagir com a mquina, porm, para o peopleware, o segundo item o que vai contar na hora de escolher um S.O, pois essa facilidade de uso que ser vista por ele e no seu funcionamento interno.

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

CONCEITOS FUNDAMENTAIS
- Mquina virtual: um simulador do hardware, ou seja, uma mquina abstrata de alto nvel (interface grfica amigvel), que facilita o uso das funes do S.O e do hardware. verdadeiramente um tradutor entre o usurio e o hardware. - Microcdigo: um conjunto de funes e instrues, bastante simplificadas, presente apenas nas mquinas CISC, que controla os dispositivos eletrnicos, geralmente gravados em memria read only (no altervel pelo usurio). Obs.: Mquinas CISC e RISC sero estudadas na disciplina de Arquitetura de Computadores, por isso, no entraremos em maiores detalhes em nossa disciplina. - Linguagem de Mquina: uma linguagem de programao que trabalha diretamente no hardware e pode ser facilitada com a presena do Microcdigo, pois algumas funes do hardware j estaro implementadas nele. Exemplo: Assembly. - Registradores: Pequenas pores de memria que esto na placa me e auxilia na inicializao do S.O. Com estes conceitos podemos chegar concluso que o S.O pode ser visto de duas formas: 1. Como uma Mquina Estendida ou Mquina Virtual: Onde o S.O equivalente ao hardware, porm muito mais fcil de programar. Essa a parte onde est a maioria dos megabytes de um S.O e chamada de Modo Usurio. 2. Como um Gerente de Recursos: Onde sua tarefa principal gerenciar os muitos usurios de cada um dos recursos da mquina, contabilizando o tempo de uso de cada um e garantindo o acesso ordenado de usurios a recursos atravs da mediao dos conflitos entre as requisies dos diversos processos usurios do sistema, ou seja, conjunto de elementos de gerenciamento que controlam o uso das facilidades de computao. Os recursos da mquina esto agrupados em cinco grandes grupos: Processos, Processador, Memria, Arquivos e Dispositivos de E/S. Essa parte do S.O possui poucos megabytes em relao ao todo e chamada de Modo Kernel. O S.O um software que roda, parte no Modo Kernel ou Modo Supervisor, onde o usurio no pode atuar (para integridade do sistema) e outra parte no modo usurio, onde o usurio modifica as coisas a sua maneira. Com tudo isso, podemos resumir que um sistema operacional uma Mquina Virtual e um Gerente de Recursos.

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

SOFTWARES DO COMPUTADOR
Agora podemos dividir os softwares do computador em trs categorias: Hardware: Somente o S.O pode controlar (modo Kernel); Programas bsicos (do Sistema): So programas que o usurio pode modificar e que so extremamente teis para ele. Tambm so chamados de utilitrios e so instalados pelo S.O em sua instalao (modo usurio); Programas de Aplicao ou Programas Produto: So programas especficos para cada usurio (modo usurio).

Podemos visualizar atravs de um diagrama a integrao entre hardware, software bsico, e softwares aplicativos, como mostra a figura 1.1.

Figura 1.1 Integrao entre hardware, software bsico e software aplicativo. O Hardware indica o modo kernel (protegido) que abrange os dispositivos fsicos, o microcdigo (apenas em mquinas CISC), a linguagem de mquina e os gerenciadores de recursos do S.O. Os demais esto no modo usurio.

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

HISTRICO DOS SISTEMAS OPERACIONAIS


O primeiro computador analgico: Mquina de Babbage (1792-1817). Seu objetivo era construir uma MQUINA ANALTICA. Nunca conseguiu, pois a tecnologia da poca no permitia produzir as engrenagens de alta preciso de que a mquina precisava para funcionar. Depois desse fato a computao s cresceu. No meio dessa histria surgem os sistemas operacionais e sua evoluo se d na medida da evoluo da tecnologia. A histria dos sistemas operacionais dividida em cinco geraes. So elas:

Primeira Gerao (1945 1955):


Nessa poca, os computadores eram constitudos de vlvulas e rels. Cada computador era nico em termos de estrutura e funo. No havia necessidade de um S.O padronizado, portanto, no havia S.O. A princpio o programador tambm operava o computador e dava manuteno. Com o tempo passou a existir a figura do operador, que recebia do programador os jobs (programas) junto com os dados de entrada (cartes perfurados). Depois da execuo o programador recebia uma listagem com as sadas do programa. Perdia-se muito tempo para reparar a mquina e prepar-la para outra execuo.

Segunda Gerao (1955 1965):


Surge o esquema batch (lotes de jobs com necessidades semelhantes), onde os Jobs eram executados em seqncia. Surgem tambm os primeiros monitores residentes com a funo de automatizar a transio entre as execues dos programas. Esses monitores eram programas que ficavam residentes na memria responsveis por carregar e iniciar automaticamente a execuo do prximo programa da fila. Os programadores traziam programas para serem lidos no computador. O computador l os programas e grava todo o lote em uma fita. O operador colocava a fita em uma unidade de fita de outro computador. O computador realiza o processamento de cada um dos Jobs do lote. O operador levava a fita de volta ao primeiro computador e este imprimia a sada de cada um dos jobs.

Figura 1.2 Seqncia de passos para execuo de um programa na segunda gerao.

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

Nesta gerao j existe separao bem definida entre a figura do construtor da mquina, do programador, do operador e do reparador. Os computadores passam a ser constitudos de transistores. Com isso surgiram os primeiros sistemas operacionais primitivos. Esses sistemas realizavam as suas funes em sistema Batch, ou seja, faz tudo de s vez, sem interao. Esses sistemas eram monotarefa. Com isso, os computadores passam a serem vendidos para grandes empresas e universidades.

Terceira Gerao (1965 1980):


Nessa poca surge o conceito de multiprogramao: execuo dos programas de maneira alternada. A idia foi permitir que mais de um programa ficasse carregado na memria. Assim, enquanto um programa esperava pelo resultado de alguma operao de E/S, por exemplo, outro programa podia ser iniciado para aproveitar o tempo ocioso do processador, melhorando o desempenho da mquina. Conseqentemente, os perifricos tambm eram mais bem utilizados, pois existia um nmero maior de solicitaes.

Figura 1.3 Grfico do tempo de uso da CPU antes e depois da multiprogramao. Duas inovaes de hardware permitiram o desenvolvimento da multiprogramao: interrupes (tcnicas de polling) e discos magnticos (acesso direto). Assim, era preciso desenvolver tcnicas para gerenciar a organizao da memria (memria dividida entre vrios jobs) e do disco para que a informao fosse rapidamente localizada, tentando nunca deixar a CPU ociosa. Nessa poca surgiu o MULTICS (MULTiplexed Information on Computing Service). Sistema operacional, que funciona como uma espcie de servidor, feito por projetistas que apostavam no alto custo do hardware, por isso fracassou. Porm, Ken Thompson estudou esse projeto e em 1969, apresenta o sistema UNIX, implementado totalmente em Assembly e em 1970, implementado em C. Conceitos implantados nos sistemas surgidos nessa poca: - Time Sharing (multiusurio): um sistema de compartilhamento de tempo. Pode ser visto como uma variao dos sistemas multiprogramados, onde cada usurio tinha um terminal on-line sua disposio. Alm da diviso do tempo de processamento, cada usurio possui seu terminal em um ambiente timesharing. Assim, o programador pode acompanhar a execuo do seu programa atravs de seu terminal. Ao detectar um erro ele pode corrigir e j iniciar uma nova execuo. - SPOOL (Simultaneous Peripheral Operation On-Line): uma rea em disco que guarda os processos para esperar o atual terminar. O S.O carrega o job do spool na memria depois que termina o processamento do atual. Todo S.O moderno implementa o Spool.
9

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

- Circuitos Integrados (CIs): Um circuito integrado, tambm conhecido por chip, um dispositivo microeletrnico que consiste de muitos transstores e outros componentes interligados capazes de desempenhar muitas funes. Suas dimenses so extremamente reduzidas, os componentes so formados em pastilhas de material semicondutor; - Microcomputadores e suas famlias: Com a reduo dos computadores e a venda para uma quantidade maior de pessoas (pequenas empresas e programadores domsticos), surgiu preocupao com a compatibilidade entre os terminais. Com isso um novo computador que surgia, trazia compatibilidade com a verso anterior, com isso temos as famlias de computadores. A primeira famlia foi a dos PDPs da DEC, que inicialmente custavam U$120.000,00.

Quarta Gerao (1981 2000):


Nesta gerao surgem os S.Os grficos, de rede, que utilizam banco de dados e produzidos para mquinas de baixo custo. Com o surgimento da internet, os computadores passam a trabalhar em conjunto com outros terminais sendo gerenciados por um S.O Servidor. Com o aumento significativo do uso dos microcomputadores com simples S.Os. A IBM projetou o IBM PC e buscou um software para ser executado nele. Atravs de Bill Gates foi fechado um acordo com um pacote DOS/Basic. A IBM sugeriu algumas modificaes e Gates acabou contratando um dos desenvolvedores do DOS (funcionrio da Seatle Computer Products exproprietrio do DOS), efetuou algumas modificaes e batizou o sistema de MS-DOS (Microsoft Disk Operating System). Antes disso, Gates sugeriu IBM que procurasse a Digital Research (maior desenvolvedora de S.Os da poca). A pior deciso de negcios da histria foi a Digital no ter aceitado assinar um acordo com a IBM. Um dos maiores problemas dessa poca para os usurios era a interface nada amigvel baseada em linhas de comandos (DOS, UNIX). Vendo esta dificuldade dos usurios, as pesquisas voltam-se a uma interface que facilite o uso da mquina, com isso, surgi, nos S.Os, uma interface grfica entre as funes do S.O e o operador. Essa interface, aliada a reduo significativa nos custos de produo, faz com que os computadores sejam utilizados por pessoas de todos os nveis, inclusive usurios domsticos, para atividades simples do dia-a-dia.

Figura 1.4 Verses do Windows

10

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

Na figura 1.4 podemos ver as telas das primeiras verses do S.O grfico mais popular da histria, o Windows. A verso 1.0, lanada em 20/11/1985, que rodava em processador 80386 e memria RAM de 2 MB. A verso 2.0 que foi lanada em 01/11/1987 e a verso 3.0, lanada em 22/05/1990. Conceitos implantados nos sistemas surgidos nessa poca: - Interface Icnica: baseada em cones representativos; - Sistemas operacionais DE REDE: Em rede, os computadores esto interconectados a um conjunto de mquinas e dispositivos, onde um terminal pode usar recursos que esto em outro terminal. Cada mquina tem seu prprio S.O e seu prprio usurio se comunicando com os demais; - Sistemas Operacionais DISTRIBUDOS: So sistemas que permitem que programas rodem em mquinas diferentes ao mesmo tempo e os dados esto espalhados pela rede. Precisam de S.Os bem elaborados e que posam ser divididos, pois, neste caso, cada mquina pode possuir apenas o pedao do S.O e apenas com as mquinas interligadas ativas que temos o conjunto completo de funes do S.O e seu correto funcionamento;

Quinta Gerao (a partir de 2000):


Surgem os primeiros S.O 3D. So sistemas operacionais com estrutura tridimensional. Essa estrutura permite que usurios interajam com as aplicaes em uma rea que mais do que um espao real. Empurrar objetos para o lado, peg-los de volta e colocar mais para trs, distribuir tudo da maneira que achar melhor e ainda contar com mltiplas camadas essas so algumas das possibilidades desse tipo de sistema. Alm de uma arquitetura em 3D, os sistemas operacionais passam a contar com servios da internet 2.0, que aumenta e muito o alcance de um sistema operacional domstico. Conceitos implantados nos sistemas surgidos nessa poca: - Middleware: um programa que faz a mediao entre outros softwares. utilizado para mover informaes entre programas ocultando do programador diferenas de protocolos de comunicao, plataformas e dependncias do sistema operacional. Seu objetivo mascarar a heterogeneidade e fornecer um modelo de programao mais produtivo para os programadores de aplicativos; - Hot Plugging: a possibilidade de se conectar perifricos no computador (HD, pen drive, mquinas digitais, impressoras, etc), com o sistema operacional ativo, sem precisar reinicia-lo;

11

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

CONCEITOS BSICOS PARA O ESTUDO DOS S.OS Ambientes de Computao:


Ambientes centralizados: compostos por computadores auto-contidos; Ambientes de redes: constitudos por computadores interconectados por um subsistema de comunicao; Ambientes Servidor: onde o S.O ir controlar vrios sistemas interconectados, controlar fluxo de dados entre eles e manter o restante do sistema sempre ativo e disponvel; Ambientes distribudos onde as funes do S.O e/ou facilidades de computao (o hardware, software e os dados) se encontram de forma geograficamente distribuda. Tambm distribudo o controle sobre os elementos componentes dos sistemas distribudos e as suas interaes; Ambientes embarcados: so compostos de componentes dedicados a um pequeno conjunto de tarefas e os S.O devem auxiliar somente essas tarefas especficas;

Componentes Centrais do Kernel (ncleo) dos Sistemas Operacionais:


IPC Gerenciador de Comunicao Inter-processos: permite aos processos se comunicarem uns com os outros; Escalonador de Processos: determina quando e quanto tempo (com a ajuda do clock) um processo executado em um processador; Gerenciador de Memria: determina quando e como a memria alocada aos processos e o que fazer quando a memria real estiver cheia; Gerenciador de Sistema de Arquivos: organiza colees nomeadas de dados em dispositivos de armazenamento e fornece uma interface para acessar os dados nesses dispositivos; Gerenciador de E/S: atende as solicitaes de entrada e sada de e para os dispositivos de hardware.

Metas do Sistema Operacional:


Eficincia: o baixo tempo de uso da CPU pelo S.O, dando respostas rpidas as solicitaes dos processos; Robustez: tolerante a falhas e confivel; Escalabilidade: capacidade de usar o mximo dos recursos medida que forem sendo instalados; Extensabilidade: adapta-se bem as novas tecnologias; Portabilidade: pode operar em muitas configuraes de hardware; Seguro: impede o acesso a recursos e servios que o usurio no tenha acesso; Interatividade: d respostas rpidas as aes dos usurios ou de eventos; Usabilidade: atende a necessidade da maioria dos usurios ou de seu pblico-alvo;

12

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

Chamadas ao Sistema (System Calls):


a forma como os programas solicitam servios ao S.O e, por isso, conhecida como a interface entre os programas que esto rodando na camada de aplicao e o sistema operacional. Toda chamada de sistema transfere a execuo para o sistema operacional mudando o modo de execuo de usurio (desprotegido) para modo kernel (protegido), por meio de uma instruo de trap (uma trap uma interrupo de software causada por um pedido de cdigo utilizador de um servio do sistema operacional. Designa uma instruo de desvio). Com isso, o programa, atravs de um conjunto de parmetros, informa o que ele realmente quer do S.O. Depois de finalizada a execuo da chamada de sistema, o controle devolvido para o programa do usurio (muda-se do modo kernel para usurio) na instruo seguinte da chamada ao sistema. Com isso, o programa continua normalmente a execuo de suas instrues. Existem vrios tipos de chamadas ao sistema, cada uma com um propsito diferente. Por exemplo, uma diviso por zero no programa pode levar a uma situao de erro e, neste caso, se o problema no for tratado no prprio cdigo da aplicao, o sistema operacional assume o controle e decide o que fazer. Cada sistema operacional implementa um conjunto distinto de chamadas ao sistema relacionado as seguintes atividades: 1. Chamadas de sistema para gerenciamento de processos: fork, waitpid, execve, exit, etc. 2. Chamadas de sistema para gerenciamento de arquivos: open, close, read, write, seek, etc. 3. Chamadas de sistema para gerenciamento do sistema de diretrios: mkdir, rmdir, link, mount, umount, etc. 4. Chamadas de sistema diversas: chmod, kill, time, etc. 5. Etc.

Figura 1.5 Diagrama das Chamadas ao Sistema

Interpretador de Comandos (Shell):


a interface entre o usurio (terminal) e o S.O. Atravs de comandos simples, o usurio pode ter acesso a diversas funes e rotinas especficas do sistema. Quando o usurio digita um comando, este interpretado pelo shell, que, ao reconhecer a linha de comando, verifica sua sintaxe, envia mensagens de aviso ou erro e faz as chamadas a rotinas do sistema, no caso de no houver erros. Pode ser representado por um Prompt de comandos (smbolo especial $) que informa ao usurio que est apto a receber solicitaes ou por uma interface grfica (em ingls GUI Graphics User Interface), como a utilizada no Windows. Raramente, em uma interface grfica bem elaborada, o usurio precisa digitar comandos para o computador. A maneira mais comum de executar programas, copiar e mover arquivos, entre outras atividades, atravs do uso do mouse.
13

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

Nos tempos do MS-DOS, o teclado era o dispositivo de entrada dominante, por onde o usurio entrava todos os comandos que queria para realizar suas tarefas do dia a dia. So exemplos de servios solicitados atravs do Shell: login/logout, manipulao de arquivos, execuo de programas, etc. Apesar de ser um dos programas bsicos do sistema, como os editores de texto, compiladores, montadores, ligadores, etc., o Shell no faz parte do S.O, ele apenas um programa que utiliza servios do sistema operacional, mas com a finalidade de permitir que os usurios realizem suas tarefas mais freqentes. O conjunto de comandos disponveis pelo interpretador conhecido como linguagem de controle. Algumas linguagens so poderosas a ponto de oferecer a possibilidade de criar programas com estruturas de deciso e iterao. Esses programas nada mais so que uma seqncia de comandos armazenados em um arquivo texto, denominados arquivos de comandos ou scripts, que podem ser executados sempre que necessrio.

ESTRUTURAS DO S.OS
O Sistema Operacional formado por um conjunto de rotinas que oferecem servios aos usurios, s suas aplicaes, e tambm ao prprio sistema. Esse conjunto de rotinas denominado ncleo do sistema operacional, ou Kernel do sistema operacional. Essas rotinas precisam estar organizadas de maneira a facilitar seu uso. forma com que essas rotinas so organizadas dar-se o nome de Estruturas dos S.Os ou Arquiteturas dos S.Os. Cada S.O possui uma nica arquitetura definida na sua concepo pelo programador do sistema. Existem cinco estratgias que o programador pode usar para implementar a estrutura de seu S.O. So elas:

1. Monolticos:
Pode ser comparada com uma aplicao formada por vrios mdulos que so compilados separadamente e depois totalmente linkados, formando um grande e nico programa executvel, ou seja, o S.O definido como um nico bloco, possuindo todas as suas funes conectadas entre si. Cada parte do sistema monoltico uma funo do S.O. No sistema monoltico as mudanas so extremamente difceis pela complexidade e quantidade de ligaes, pois, a cada nova funo, deve ser constitudo um link desta funo para todas as demais. A aplicao no modo usurio faz uma System Calls que envia ao modo kernel suas solicitaes. Este calcula rapidamente (pois todas as funes esto interligadas) e devolve os resultados ao modo usurio. Os primeiros Sistemas Operacionais foram desenvolvidos com base neste modelo, o que tornava seu desenvolvimento e, principalmente, sua manuteno bastante difceis. Devido a sua simplicidade e bom desempenho (alta velocidade), foi adotada no projeto do MS-DOS e nos primeiros sistemas UNIX.

14

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

Figura 1.6 Diagrama dos Sistemas Monolticos

2. Em Camadas:
Com o aumento da complexidade e tamanho do cdigo dos sistemas operacionais, tcnicas de programao estruturada e modular foram incorporadas ao seu projeto. Na arquitetura de camadas, o sistema dividido em nveis sobrepostos. Cada camada oferece um conjunto de funes que podem ser utilizadas apenas pelas camadas superiores, ou seja, a organizao do S.O feita como uma hierarquia de nveis, cada um, constitudo sobre o nvel imediatamente abaixo. A vantagem da estruturao em camadas isolar as funes do Sistema Operacional, facilitando sua manuteno e depurao, alm de criar uma hierarquia de nveis de modos de acesso, protegendo as camadas mais internas. Uma desvantagem o desempenho. Cada nova camada implica uma mudana no modo de acesso. Por exemplo, no caso do OpenVMS, para se ter acesso aos servios oferecidos pelo kernel preciso passar por trs camadas ou trs mudanas no modo de acesso. Atualmente, a maioria dos sistemas comerciais utiliza o modelo de duas camadas, onde existem os modos usurio (no privilegiado) e kernel (privilegiado). A maioria das verses do Unix e dos Windows est baseada nesse modelo.

Figura 1.7 Diagrama dos Sistemas Em Camadas


15

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

3. Mquina Virtual:
Um sistema computacional formado por nveis, onde a camada de nvel mais baixo o hardware. Acima desta camada encontramos o Sistema Operacional, que oferece suporte para as aplicaes. O modelo de mquina virtual cria um nvel intermedirio entre o hardware e o Sistema Operacional, denominado gerncia de mquinas virtuais. Este nvel cria diversas mquinas virtuais independentes, onde cada uma oferece uma cpia virtual do hardware, incluindo os modos de acesso, interrupes, dispositivos de E/S etc. Alm de permitir a convivncia de Sistemas Operacionais diferentes no mesmo computador, este modelo cria o isolamento total entre cada Mquina Virtual, oferecendo grande segurana para cada uma delas. A desvantagem dessa arquitetura sua grande complexidade. Outro exemplo de utilizao dessa arquitetura ocorre na linguagem Java. Para se executar um programa em Java necessrio uma mquina virtual Java (JVM). Qualquer sistema operacional pode suportar uma aplicao Java, desde que exista uma JVM desenvolvida para ele. Desta forma, a aplicao no precisa ser recompilada para cada sistema, tornando-se independente do hardware e Sistema Operacional utilizados. A desvantagem seu menor desempenho (baixa velocidade) se comparado a uma aplicao compilada e executada diretamente em uma arquitetura especfica.

Aplicao S.O 1 M.V. 1

Aplicao S.O 2 M.V. 2

... ... ...

Aplicao S.O n M.V. n

Gerenciador de Mquinas Virtuais Hardware Figura 1.8 Diagrama dos Sistemas Mquina Virtual.

4. Micro-Ncleo:
Na tentativa de manter o ncleo pequeno e simples, seus servios so reduzidos ao mximo. S as principais funes como o gerenciamento de memria e comunicao / sincronizao entre processos so mantidos no ncleo. O gerenciamento de processos, dispositivos, rede e sistema de arquivos vo para fora do ncleo e rodam com privilgio mais baixo. Como um componente no depende do outro, a falha em um deles menos perceptvel ao S.O e aos aplicativos. Essa arquitetura de microncleo (viso auto-contida) exibe um alto grau de modularidade, o que a torna portvel, extensvel e escalvel. uma arquitetura pouco implementada na prtica.

16

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

Figura 1.9 Diagramas dos Sistemas Micro-Ncleo.

5. Cliente-Servidor (Distribuda):
Em um sistema operacional distribudo, as funes do S.O esto espalhadas pela rede, ou seja, no h um S.O completo instalado em uma mquina, mas sim, em um conjunto de mquinas que compe a rede. Logicamente, existem mais de um terminal com as mesmas funes do S.O a fim de aumentar a segurana. Um sistema operacional distribudo gerencia recursos em mais de um sistema de computador ao invs de simplesmente cooperar com outros computadores em rede, como ocorre nos sistemas operacionais de rede. Os sistemas distribudos, atravs de seu S.O, controlam vrios computadores de uma rede, passando a iluso de que vrios computadores compem um nico computador de grande poder. Um processo poder acessar recursos em outros computadores pela rede, independente da sua localizao fsica. Requerem algoritmos complicados para permitir comunicao e compartilhamento transparentes. a arquitetura mais estudada atualmente.

Figura 1.10 Diagramas dos Sistemas Distribudos.

17

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

TIPO DE S.OS
Essa classificao de tipos refere-se quantidade de aplicativos que so executados em um determinado instante. So eles: 1. Sistemas Monoprogramveis/Monotarefa: Os primeiros Sistemas Operacionais eram tipicamente voltados para a execuo de um nico programa. Qualquer outra aplicao, para ser executada, deveria aguardar o trmino do programa corrente. Os sistemas monoprogramveis se caracterizam por permitir que o processador, a memria e os perifricos permaneam exclusivamente dedicados execuo de um nico programa. Neste tipo de sistema, enquanto um programa aguarda por um evento, como a digitao de um dado, o processador permanece ocioso, sem realizar qualquer tipo de processamento. A memria subutilizada caso o programa no a preencha totalmente, e os perifricos, como discos e impressoras, esto dedicados a um nico usurio, nem sempre utilizados de forma integral. Comparados a outros sistemas, os sistemas monoprogramveis ou monotarefas so de simples implementao, no existindo muita preocupao com problemas decorrentes do compartilhamento de recursos. 2. Sistemas Multiprogramveis/Multitarefas: Neste tipo de sistema, os recursos computacionais so compartilhados entre os diversos usurios e aplicaes de maneira alternada. Neste caso, enquanto um programa espera por uma operao de leitura ou gravao em disco, outros programas podem estar sendo processados neste mesmo intervalo de tempo. Nesse caso, podemos observar o compartilhamento da memria e do processador. O Sistema Operacional se preocupa em gerenciar o acesso concorrente aos seus diversos recursos. As vantagens do uso de tais sistemas so a reduo do tempo de resposta das aplicaes processadas no ambiente e de custos, a partir do compartilhamento dos diversos recursos do sistema entre as diferentes aplicaes. A partir do nmero de usurios que interagem com o sistema, podemos classificar os sistemas multiprogramveis como monousurio ou multiusurio. Os sistemas multiprogramveis podem tambm ser classificados pela forma com que suas aplicaes so gerenciadas, podendo ser divididos em sistemas batch (caracterstica de no exigir a interao do usurio com a aplicao. Todas as entradas e sadas de dados so implementadas por algum tipo de memria secundria, geralmente arquivos em disco), de tempo compartilhado (tambm conhecidos como time-sharing, permitem que diversos programas sejam executados a partir da diviso do tempo do processador em pequenos intervalos, denominados fatia de tempo (time-slice ou quantum). Caso a fatia de tempo no seja suficiente para a concluso do programa, esse interrompido pelo Sistema Operacional e submetido por um outro, enquanto fica aguardando por uma nova fatia de tempo) ou de tempo real (real-time, diferem dos de tempo compartilhado no tempo exigido no processamento das aplicaes, que segue padres rigorosos). Um Sistema Operacional pode suportar um ou mais desses tipos de processamento, dependendo de sua implementao. 3. Sistemas com Mltiplos Processadores: Um sistema com mltiplos processadores possui duas ou mais CPUs interligadas trabalhando em conjunto. A vantagem desse tipo de sistema permitir que vrios programas sejam executados ao mesmo tempo (simultaneamente) ou que um mesmo programa seja subdividido em partes para serem executadas simultaneamente em mais de um processador. Os conceitos aplicados ao projeto de sistemas com mltiplos processadores incorporam os mesmos princpios bsicos e benefcios apresentados na multiprogramao, alm
18

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

de outras vantagens especficas como escalabilidade (fcil incluso e remoo de processadores), disponibilidade (reorganizao do sistema em caso de falhas) e balanceamento de carga (nenhuma CPU trabalha mais que as outras). Esses sistemas podem ser classificados quanto forma de comunicao entre as CPUs e quanto ao grau de compartilhamento da memria e dos dispositivos de E/S. Assim, podemos classificlos como: 3.1. Sistemas Fortemente Acoplados Em um sistema fortemente acoplado, dois ou mais processadores compartilham uma nica memria, esto ligados atravs de barramentos e so controlados por um nico sistema operacional. Um sistema fortemente acoplado utilizado geralmente em aplicaes que fazem uso intensivo da CPU e cujo processamento dedicado soluo de um nico problema. Os sistemas fortemente acoplados podem ser divididos em simtricos ou assimtricos. 3.1.1. Simtricos: Os simtricos caracterizam-se pelo tempo uniforme de acesso memria principal pelos diversos processadores, sendo que todos os processadores tm a mesma importncia para o S.O. Inicialmente, tais sistemas estavam limitados aos sistemas de grande porte, restritos ao ambiente universitrio e s grandes corporaes. Com a evoluo dos computadores pessoais e das estaes de trabalho, os sistemas multitarefa evoluram para permitir a existncia de vrios processadores no modelo simtrico. Atualmente, a grande maioria dos Sistemas Operacionais, como o Unix e o Windows, implementam esta funcionalidade. 3.1.2. Assimtricos: Neste sistema, existe um processador, denominado Mestre, que gerencia os demais. Ele dedicado a essa tarefa e o S.O deve estar apto a utiliz-lo da maneira mais otimizada possvel. Se o processador mestre cair, todo o sistema cai junto com ele.

3.2. Sistemas Fracamente Acoplados Em um sistema fracamente acoplado dois ou mais sistemas de computao so conectados atravs do uso de linhas de comunicao (cabeamento). Nesses sistemas, ocorre o processamento distribudo entre os diversos computadores. Cada sistema funciona de forma independente, possuindo seu(s) prprio(s) processador(es). Em funo destas caractersticas, tambm so conhecidos como multicomputadores. Com a evoluo dos computadores pessoais e das estaes de trabalho, juntamente com o avano das telecomunicaes e da tecnologia de redes, surgiu um novo modelo de computao, chamado modelo de rede de computadores. Em uma rede existem dois ou mais sistemas independentes (hosts), interligados atravs de linhas de comunicao, que oferecem algum tipo de servio aos demais. Neste modelo, a informao deixa de ser centralizada em poucos sistemas de grande porte e passa ser distribuda pelos diversos sistemas da rede. Com base no grau de integrao dos hosts da rede, podemos dividir os sistemas fracamente acoplados em Sistemas Operacionais de Rede e Sistemas Distribudos. A grande diferena entre os dois modelos a capacidade do Sistema Operacional em criar uma imagem nica dos servios disponibilizados pela rede.

19

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

3.2.1 Sistemas Operacionais de Rede: permitem que um host compartilhe seus recursos, como impressora ou diretrio, com os demais hosts da rede. Um exemplo deste tipo de sistema so as redes locais, onde uma estao pode oferecer servios de arquivos e impresso para as demais estaes da rede, dentre outros servios. 3.2.2. Sistemas Distribudos: Enquanto nos Sistemas Operacionais de Rede os usurios tm conhecimento dos hosts e seus servios, nos Sistemas Distribudos o Sistema Operacional esconde os detalhes dos hosts individuais e passa a trat-los como um conjunto nico, como se fosse um sistema fortemente acoplado. Os sistemas distribudos permitem, por exemplo, que uma aplicao seja dividida em partes e que cada parte seja executada por hosts diferentes da rede de computadores. Para o usurio e suas aplicaes como se no existisse a rede de computadores, mas sim um nico sistema centralizado.

Figura 1.11 Resumo dos Tipos de Sistemas Operacionais.

MULTIPROCESSAMENTO
1. O multiprocessamento diz respeito forma como os processos so executados (fluxo de dados e de instrues) em um ambiente de mltiplos processadores. Esse processamento pode ser: 1.1. SISD (Simples instrues, simples dados): Essa arquitetura a mais antiga e simples, como proposta por Von Newmann. Um nico fluxo de instrues operando sobre um nico dado por vez. 1.2. SIMD (Simples instrues, mltiplos dados): Nessa arquitetura, tambm conhecida como computao vetorial ou array, uma nica instruo passada ao mesmo tempo para os vrios processadores, que executam a mesma instruo em um dado diferente. Um exemplo simples o conjunto de instrues MMX. Alis, diga-se de passagem, a Intel abriu o mercado de processadores para servidores com o lanamento do Pentium Pr com instrues MMX, em 1995.
20

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

1.3. MISD (Mltiplas instrues, simples dados): Essa arquitetura conhecida como pipeline ou linha de produo. Fazendo analogia com uma linha de montagem de automveis, 1 carro demora seis horas para ser montado, com a tarefa sendo dividida em doze equipes, cada uma gastando meia hora. O que temos so doze equipes trabalhando simultaneamente, o que faz com que cada carro seja montado em meia hora, pois a primeira equipe no precisa esperar que o carro passe pela ltima para comear a montar o prximo carro. 1.4. MIMD (Mltiplas instrues, Mltiplos dados): Essa a arquitetura mais complexa, tambm conhecida como computao paralela. necessrio que os processadores comuniquem-se entre si para fazer a sincronizao e trocar informaes. Alm disso, necessrio ter uma memria global onde todos os processadores possam disponibilizar os resultados intermedirios para os demais. Para evitar uma quantidade excessiva de acessos a essa memria, os processadores possuem a chamada memria local, onde est a maioria das suas instrues e dados que devem ser operados.

2. Em sistemas multiprogramados importante conhecer o usurio do processo. Para isto existem trs tipos de identificaes: 2.1. UID User Identification: Identificao de cada usurio; 2.2. PID Process Identification: Identificao do processo pelo processador; 2.3. GID Group Identification: Identifica um grupo de trabalho;

3. Em sistemas multiprogramados, outro fator importante, a organizao funcional dos barramentos, que podem ser: 1. Barramento nico: Todos os dispositivos de E/S, Memrias e CPUs esto ligados entre si por um nico barramento, como mostrado na figura 1.12.

Figura 1.12 Barramento nico.

21

MODULO 1 INTRODUO AO ESTUDO DOS SOS_________________________________Prof. TENORIO

2. Barramento Cruzado: Neste caso, cada Memria possui um barramento dedicado e os processadores e perifricos esto ligados a estes barramentos, como mostrado na figura 1.13.

Figura 1.13 Barramento Cruzado.

3. Barramento Multiport: No Multiport, existe um barramento dedicado para cada processador e um para cada perifrico e estes barramentos esto ligados a todas as memrias. Cuidado: A memria Multiport usada por vrios processadores ao mesmo tempo, pois isso pode ocasionar um erro. O erro pode acontecer se dois ou mais processadores quiserem acessar (modificar) o mesmo endereo de memria ao mesmo tempo. Deve-se prevenir este erro. Essa preveno ser vista no mdulo quatro desta apostila.

Figura 1.14 Barramento Multiport.

22

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

MODULO 2 PROCESSOS
A evoluo dos sistemas operacionais acompanhou a evoluo do hardware e das aplicaes por ele suportadas. Muitos termos inicialmente introduzidos para definir conceitos e tcnicas foram substitudos por outros. Isto fica muito claro quando tratamos da unidade de execuo do processador. Inicialmente, eram utilizados os termos programas ou job, depois surgiu o conceito de processo, e agora, o conceito de thread. Inicialmente vale ressaltar a diferena entre eles e os detalhes de cada um. Programa: uma entidade esttica e permanente, composto apenas por uma seqncia de instrues. Exemplo: No MS-DOS, um programa em execuo no processo, pois o MS-DOS um S.O monousurio e todos os recursos esto disponveis apenas para um programa. Processo: uma entidade dinmica, que altera seu estado medida que avana sua execuo. Assim, o processo pode ser encarado como uma abstrao que representa um programa em execuo. Um processo contm um nico fluxo de controle e composto por programa, dados e contexto (valores). Resumindo: Um processo um programa em execuo, somado ao seu contexto. Threads: um processo com mltiplos fluxos de controle.

DETALHAMENTO PROGRAMA
Um programa de computador composto apenas por uma seqncia de instrues, que interpretada e executada por um processador dedicado, munido de recursos tambm dedicados. Em um programa correto e funcional, essa sequncia segue padres especficos que resultam em um comportamento desejado. Um programa pode ser executado por qualquer dispositivo capaz de interpretar e executar as instrues de que formado. Em sistemas que executam os programas, esses, so executados de maneira sequencial, utilizando apenas cerca de 10% do potencial total da mquina, o restante fica ocioso. Obviamente isso um problema a ser resolvido. Um arquivo que representa um programa formado por: 1. 2. 3. 4. 5. Tabela de Smbolos: uma tabela que enderea as variveis de um programa na memria; Dados Inicializados: Constantes, nomes de rotinas e elementos estticos em geral; Texto: o algoritmo do programa; Cabealho: Informaes que identificam o programa, facilitando o S.O e os usurios; Nmero Mgico: o nome interno do programa, atribudo pelo S.O uma nica vez e este vale enquanto o arquivo existir.

23

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

PROCESSO
Com o surgimento da multiprogramao, onde os aplicativos so executados de maneira alternada (e no simultneos, pois existe apenas um processador), a CPU passa a ficar quase 100% ocupada e surge o conceito de processo. Como j foi dito, um processo um programa em execuo, somado ao contexto. A parte programa em execuo de um processo formada pelos cinco elementos que compe um programa mais: 1. Pilha do Processo no Kernel: Tambm chamada de Pilha de execuo ou Pilha de Chamada, uma estrutura de dados pilha que armazena informaes sobre as subrotinas ativas num processo. Seu principal uso registrar o ponto em que cada subrotina ativa deve retornar o controle de execuo quando termina de executar; 2. Argv: Argumentos da linha de invocao; 3. Envp: Variveis de ambiente; 4. Pilha do usurio: formada por variveis locais, parmetros de funes, endereos de retorno das sub-rotinas, etc.; 5. Heap: memria que alocada pelos servios. O heap usa os mesmos endereos de memria usados pela pilha de usurio; 6. Dados Globais No Inicializados: preenchido com zeros (o tamanho est no cabealho); 7. Dados Globais Inicializados: lidos diretamente do arquivo; 8. Segmento de texto: linhas de cdigo; Esses novos elementos que compem um processo so as partes que so colocadas e mapeadas na memria real do sistema, como um programa colocado todo na memria, no necessitava desses elementos para sua execuo. Hierarquia de processos: Todo processo precisa ser criado e destrudo, com isso podemos definir uma hierarquia de processos, tomando como base quem o criou: Processos de Sistema (daemons): So criados pelo S.O e apenas o S.O poder destrulos; Processos de Usurio: So criados pelo usurio e podem ser destrudos tanto pelo S.O como pelo usurio; Processos Filhos: So criados por outros processos (definidos como Pai), e podem ser destrudos tanto pelo processo que os criou, pelo usurio ou pelo S.O;

Com essa hierarquia, possvel construir a rvore genealgica (hierrquica) de processos. Os processos denominados filhos esto subordinados aos seus pais. Basicamente, os processos de usurio e filhos apresentam dois ciclos de operao: 1. Ciclo de processador: tempo que ocupa a CPU executando algum programa; 2. Ciclo de entrada e sada: tempo em espera pela concluso de um evento (E/S); O primeiro ciclo sempre de processador, pois para entrar em um ciclo de E/S necessariamente preciso executar pelo menos uma instruo. As trocas de ciclos podem acontecer atravs:
24

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

1. Chamada de sistema (CPU E/S); 2. Interrupo (CPU E/S ou E/S CPU); 3. Ocorrncia de evento (E/S CPU); Os processos podem ser classificados de acordo com taxa de utilizao da CPU ou E/S em: 1. CPU bound: Ciclo de processador >> ciclo de E/S. Exemplo: processo que faz multiplicao de matrizes. 2. I/O bound: Ciclo de E/S >> ciclo de processador. Exemplo: processo que faz cpia de arquivos ou um processo de BD. A parte contexto de um processo, ou seja, sua implementao, varia de S.O para S.O, porm alguns elementos so comuns a todos eles. O contexto bsico de um processo formado por: 1. PID (Process Identification Number): O mesmo que nmero mgico; 2. Estado do processo: a posio do processo em relao a CPU. Veremos o detalhamento disso mais adiante; 3. Contador de instrues (de programa): valor que determina qual instruo o processo deve executar em seguida, ou seja, guarda a indicao da prxima linha de cdigo que ser executada pelo processo. Essa informao armazenada no registrador PC; 4. Apontador para Pilha de Execuo: guarda a indicao de onde est localizado o topo da pilha de execuo do processo no kernel. Essa informao armazenada no registrador SP; 5. Alocao de Memria: Guarda os endereos de memria reais e virtuais alocados para o processo; 6. Arquivos: guarda a indicao de todos os arquivos abertos pelo processo e a indicao da localizao do cursor em cada um desses arquivos; 7. Dispositivos: guarda a indicao de todos os perifricos em uso pelo processo e a indicao da localizao do cursor em cada um desses perifricos; 8. Contabilidade: guarda as tarefas executadas pelo processo no sistema, ou seja, guarda o histrico de sua execuo; 9. Escalonador: guarda a posio do processo na fila formada para entrar na CPU e os parmetros do escalonamento. Veremos o detalhamento disso no mdulo 3; 10. Credenciais: guarda as permisses que o processo tem dentro do sistema; 11. Processo-Pai: guarda a indicao de quem criou o processo; 12. Processo-Filho: guarda a indicao de todos os processos criados pelo processo e sua ordem de execuo; 13. Demais Registradores: guardam os valores dos demais registradores utilizados pelo processo (este informao depende da arquitetura do computador); Esse contexto do processo guardado pelo S.O no Registro Descritor, tambm conhecido como Bloco de Controle de Processos BCP (em ingls, PCB). O BCP de cada processo colocado na Tabela de Processos. Essa tabela reside na memria RAM em uma rea de acesso exclusivo ao S.O.

25

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

THREADS
Em sistemas tradicionais, cada processo tem seu espao de endereamento individual e apenas um fluxo de controle (thread). No entanto, algumas vezes desejamos ter vrios fluxos de controle (threads) no mesmo espao de endereamento simulando uma execuo em paralelo, como se cada fluxo fosse visto realmente como um processo distinto (exceto pelo fato de compartilharem um nico espao de endereamento). Muitos threads podem existir dentro de um nico contexto de processo, cooperando entre si a fim de realizar um dado clculo e compartilhando o espao de endereamento e o restante do contexto desse processo. Cada thread mantm com contexto reduzido, com um contador de programa para dizer qual a prxima instruo a ser executada, registradores que contm suas variveis atuais de trabalho, pilha com o histrico das instrues executadas, endereo dos threads filhos e seu estado. Para que um thread possa ser executado, ele deve pertencer a algum processo, ou seja, um processo deve ser criado anteriormente. Dessa forma, podemos dizer que os processos so usados para reservar e alocar recursos (espao de endereamento com o cdigo do programa, os dados do programa e outros recursos) enquanto os threads so as entidades escalonadas pela CPU para a execuo de tarefas. importante observar que um processo, como visto anteriormente, composto de apenas um thread, ou seja, o propsito do desenvolvimento dos threads permitir que mltiplas execues concorrentes ocorram no mesmo ambiente do processo com um grande grau de independncia uma da outra, utilizando menos recursos do que seriam gastos com dois processos distintos. utilizado o termo multithread para descrever a possibilidade de existir mltiplos threads no mesmo processo. A execuo dos threads em um ambiente monoprocessado semelhante execuo dos processos, ou seja, cada thread deve esperar a sua vez para executar. Ao alternar rapidamente a execuo entre uma e outra thread cria-se a iluso do paralelismo de execuo (assim como no caso dos processos). Como todos os threads tm exatamente o mesmo espao de endereamento, eles tambm compartilham as mesmas variveis globais. Assim, como cada thread pode acessar qualquer posio de memria dentro do espao de endereamento do processo, possvel a um thread ler, escrever ou at apagar informaes usadas por outro thread. No existe um meio de proteo para isso, fica sob responsabilidade do programador este cuidado j que normalmente criamos threads para cooperar e no para competir.

Figura 2.1 Processos com um e com mltiplos threads.

26

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

INTERRUPO
Em ambiente multitarefa, mltiplos processos so executados alternadamente, sendo que a CPU atende cada processo por um pequeno espao de tempo, um a um em seqncia. Esse pequeno espao de tempo chamado de quantum. Os quantuns dedicados para cada processo so pequenos o suficiente para que os usurios consigam interagir com cada programa sem que percebam a existncia de outros processos rodando. Quando muitos processos esto sendo executados, a impresso que o usurio tem de que o computador est lento, pois a CPU tem mais processos para atender, e portanto aumenta o tempo entre os sucessivos atendimentos para um determinado processo. Quando o quantum de um processo acaba, ele retorna para a fila e outro processo entra na CPU (chaveamento de processos troca dos processos na CPU), ou seja, ao final do quantum o processo sofre uma interrupo para que o chaveamento possa ser realizado. Pode-se dizer que as interrupes e traps (que veremos com mais detalhes adiante) movimentam e dirigem os sistemas operacionais, pois um sistema operacional s recebe o controle da execuo quando ocorre alguma interrupo ou trap. Uma interrupo um sinal de hardware, que faz com que o processador sinalizado interrompa a execuo do programa que vinha executando (guardando informaes para poder continuar, mais tarde, a execuo desse programa) e passe a executar uma rotina especfica que trata da interrupo. Interrupes podem ser originadas pelos vrios dispositivos perifricos (terminais, discos, impressoras, etc.), pelo operador (atravs das teclas do console de operao) ou pelo relgio do sistema, chamado de clock (que veremos com detalhes no mdulo 6). Uma interrupo no afeta a instruo que est sendo executada pela CPU no momento em que ela ocorre: a CPU detecta interrupes apenas aps o trmino da execuo de uma instruo (e antes do incio da execuo da instruo seguinte). Os computadores possuem instrues para mascarar (desabilitar, inibir) o sistema de interrupes. Enquanto as interrupes esto mascaradas (isso acontece somente em algumas situaes) elas podem ocorrer, mas no so sentidas pelo processador. Neste caso, as interrupes ficam pendentes, enfileiradas no vetor de interrupes (que contm o endereo da rotina de servio da interrupo), e s sero sentidas quando uma instruo que desmascara as mesmas executada. Sempre que acaba o quantum, o sistema gera uma interrupo e o S.O faz o chaveamento de processos. Para que essa operao possa ser realizada corretamente, o S.O deve seguir alguns passos. So eles: 1. Salvar o contexto do processo (trabalho executado via hardware), exceto os demais registradores, pois estes no devem ser salvos via hardware, para que o S.O tenha controle sobre a interrupo; 2. Carregar no contador de programa, registrador PC, o valor contido no endereo especificado pelo vetor de interrupo, ou seja, o endereo da linha de cdigo do S.O que ser executada. Esse trabalho tambm feito via hardware;

27

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

3. O S.O salva os demais registradores e retira as informaes do contexto do processo corrente das memrias do sistema. Este procedimento feito em instrues de baixo nvel; 4. O S.O cria uma nova pilha temporria para a execuo de seus servios e aponta para o topo dessa pilha. Este procedimento tambm feito em instrues de baixo nvel; 5. O S.O executa o servio solicitado pela interrupo e outros servios importantes de seu interesse. Essas instrues so de alto nvel; 6. O escalonador decide qual o prximo processo a executar; 7. O S.O repassa o controle da CPU para suas instrues de baixo nvel; 8. O S.O carrega os valores, do processo escolhido para rodar, nos registradores e na memria, entregando assim o controle da CPU;

Obs.: No confundir o quantum do processo com o seu tempo de vida. O tempo de vida do processo o intervalo de tempo entre o incio e o trmino de toda sua execuo, enquanto que o quantum o intervalo de tempo entre a entrada do processo na CPU e seu retorno a fila de processos que querem entrar na CPU. Obs.2: No confundir Interrupo com Excees. As excees so geradas quando ocorre algum erro de hardware ou software e tambm paralisam o processo corrente, podendo at encerr-lo.

ESTADOS DO PROCESSO
O estado do processo a posio do processo em relao a CPU, ou seja, quando um processo inicializado e est pronto para executar na CPU, ele deve entrar na fila de execuo e aguardar sua vez, pois diversos processos esto querendo executar e a CPU nica para todos. Quando chega o momento do processo entrar na CPU, dizemos que o mesmo est mudando de estado, ou seja, saindo da espera para a execuo propriamente dita. A quantidade de estados do processo varia de S.O para S.O, porm, todos os S.Os tm os trs estados bsicos. So eles:

1. Pronto: quando o processo est preparado para entrar na CPU e aguarda sua vez; 2. Em Execuo: quando o processo est efetivamente na CPU. Se existir apenas uma
CPU, apenas um processo pode estar neste estado; 3. Bloqueado: quando o processo est aguardando algo que no a CPU, como por exemplo, dispositivos perifricos; Uma mudana de estado chamada de transio. Na figura 2.2 podemos ver os estados bsicos e as possveis transies entre eles.

28

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

Figura 2.2: Principais estados de um processo e suas transies;

1 2 3

O escalonador escolhe um processo da fila de prontos e este entra na CPU. O ato de designar um processador ao primeiro processo da fila chamado de despacho; Com o fim do quantum o processo retorna para a fila de prontos e aguarda novo despacho; O processo solicita um recurso ao S.O, atravs de uma trap, e ir aguardar que o S.O disponibilize o referido recurso fora da CPU e da fila de prontos, pois ele no poder executar enquanto o recurso solicitado no estiver disponvel; O S.O disponibiliza o recurso solicitado pelo processo e este recolocado na fila de prontos para utilizar o recurso quando ocorrer seu despacho. Vale ressaltar que, em nenhum momento, o processo que est no estado de bloqueado poder ir diretamente ao estado de Em Execuo, isto se deve ao fato de que, quando um processo est bloqueado e o recurso liberado, outro processo est na CPU, com quantum ainda por terminar e a nica forma de entrar na CPU ser escolhido pelo escalonador. O processo bloqueado poder receber uma informao da controladora sem atuao da CPU.

Estes so os estados bsicos de um processo, porm, como j foi dito, a quantidade de estados pode variar de S.O para S.O, ou seja, alguns S.Os tm outros estados alm dos estados bsicos. Vejamos alguns exemplos: Suspenso: O processo suspenso retirado indefinidamente da disputa por tempo em um processador, sem destru-lo. Esse procedimento utilizado em casos onde se suspeita que o processo esteja executando de maneira incorreta ou maliciosa (executando instrues no autorizadas). O processo tambm pode ser suspenso caso esteja h muito tempo impedido de executar devido a demora de algum perifrico, por exemplo. Em alguns sistema esse estado se sub-divide dependendo de que estado o processo se encontrava na hora em que foi suspenso. Essas sub-divises so: o Suspenso-pronto: quando o processo encontrava-se no estado de Em Execuo (auto-suspenso) ou no estado de Pronto quando foi suspenso; o Suspenso-bloqueado: quando o processo encontrava-se no estado de bloqueado quando foi suspenso; Criao: estado onde o processo se encontra no momento em que ele inicializado, at o momento em que ele entra na fila de processos prontos;
29

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

Destruio: estado onde o processo se encontra do momento em que ele finalizado, at o momento em que o contexto do processo excludo da tabela de processos. Submisso: estado onde o processo se encontra quando aguarda uma data especfica para ser executado; Zumbi: estado onde o processo se encontra quando filho de outro processo e finalizado. Neste caso, fica apenas aguardando uma instruo do pai para ser destrudo.

Figura 2.3: Diagrama estendido de estados de um processo e suas transies, incluindo os estados no-bsicos (as transies dos estados bsicos ento com seta contnua).

COMUNICAO INTER-PROCESSOS
Em ambientes de multiprogramao e de rede, comum que processos se comuniquem uns com os outros. Muitas vezes, esses processos podem trabalhar juntos na soluo de um problema e, portanto, utilizarem um mesmo recurso, ou seja, um recurso compartilhado entre eles. Muitos sistemas operacionais fornecem mecanismos para comunicaes inter-processos (Inter Process Comunication IPC), essenciais para permitir acesso concorrente a um recurso compartilhado. Como exemplo da importncia do IPC para o sistema operacional, vejamos o exemplo de um spool de impresso. Suponha dois processos assncronos e concorrentes, tentando acessar ao mesmo instante, o spool de uma impressora compartilhada.

30

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

Figura 2.4: situao de concorrncia em um spool de impresso. No diagrama da figura 2.4 vemos a seguinte situao: os processos P1 e P2 possuem inteno de utilizar o recurso, sendo que P1 o solicitou primeiro. O ponteiro IN indica um espao livre no fim da fila e deve ser atualizado sempre que um processo entra no spool e o ponteiro OUT indica qual o primeiro processo da fila. O grande problema que pode ocorrer neste spool, que P1 pode colocar seu arquivo no spool e ser interrompido, ou seja, perder a CPU, antes do ponteiro IN ser atualizado. Neste caso, quando P2 entrar no spool ele ir sobrepor P1 e atualizar o IN, impedindo a impresso do processo P1. Nesse exemplo, os processos querem a impresso e o servidor deve gerenciar essa competio, isto chamado de Condio de Corrida. Vejamos outro exemplo. Suponha dois processos que compartilham uma rea transitria de memria (buffer) comum, de tamanho fixo. Um dos dois processos, o produtor, coloca dados no fim da fila do buffer, enquanto que o outro, o consumidor, retira dados do incio desse buffer. No possvel tecer hipteses sobre a velocidade do trabalho desses processos, ou seja, possvel que o produtor tanto demore eternidades para produzir novos elementos quanto os produza instantaneamente. Idem para o consumidor, que pode passar perodos arbitrrios entre retiradas de elementos da fila. Esse o clssico problema chamado de Problema do Produtor/Consumidor (tambm conhecido como o problema do Bounded Buffer) ilustrado na figura 2.5. Os problemas aparecem quando o produtor deseja adicionar um elemento ao buffer, e este j se encontra lotado. Nesta situao desejamos que o produtor fique algum tempo sem processar, esperando que aparea algum lugar livre no buffer. Similarmente, se o consumidor quer retirar um item da fila e a encontra vazia, ele deve aguardar at que o produtor enfileire algum elemento. Alm disso, o buffer pode ser descrito de maneira circular, por questes de otimizao, neste caso, o nmero de buffers de dados preenchidos pelo produtor no pode exceder n, o nmero de buffers esvaziados pelo consumidor, esse controle no to trivial quanto parece.

Figura 2.5: ilustrao do clssico problema do Produtor-Consumidor.


31

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

Antes de prosseguir nossos estudos, vejamos alguns conceitos importantes: Regio Crtica: Tambm chamada de Seo Crtica. a parte do sistema que permite acesso concorrente entre os processos. Exemplo: spool de impresso, buffer de memria, etc.; Excluso Mtua: uma tcnica usada em programao concorrente para evitar que dois ou mais processos ou threads tenham acesso simultaneamente a um recurso compartilhado do sistema, ou seja, a uma regio crtica; Sinais: So interrupes de software que notificam ao processo que um evento ocorreu. Os sinais no permitem que processos especifiquem dados para trocar com outros processos. So utilizados para sincronizao entre processos e S.O, ou seja, os sinais s ocorrem entre processos ou entre um processo e o S.O. Trap: o sinal que o processo envia para o S.O solicitando um servio protegido do mesmo (como por exemplo sua entrada em uma regio crtica). Um trap bloqueia o processo at que o servio requerido pelo mesmo, ao sistema operacional, seja realizado. Pode-se dizer que o trap uma interrupo prevista, programada no sistema pelo prprio programador. Uma interrupo propriamente dita, por outro lado, completamente imprevisvel, ocorrendo em pontos que no podem ser pr-determinados. O trap uma chamada ao sistema (System Call) que passa o controle da CPU do processo corrente ao S.O, para que o mesmo possa atender ao servio solicitado. O trap possui um parmetro, que indica o servio solicitado pelo processo;

Principais Problemas a Serem Evitados pelo IPC


Processos podem solicitar recursos, mesmo que estejam de posse de recursos obtidos anteriormente. Caso estes recursos j estejam alocados a outros processos, o processo solicitante deve aguardar pela liberao do mesmo. Essa a condio natural do sistema de alocao de recursos, porm, alguns problemas naturalmente podem ocorrer. Vejamos agora os problemas a serem resolvidos ou evitados pelo IPC, na implementao da excluso mtua em uma regio crtica. 1. Condio de Corrida: Tambm chamada de Corriza de Hazards, uma das conseqncias da sincronizao incorreta, gerando a disputa de recursos do sistema por mltiplos processos, ou threads, causando o corrompimento dos dados, onde parte dos dados so modificados por um processo/thread e parte por outro, ou seja, acontece quando dois ou mais processos entram simultaneamente na regio crtica. Neste caso, ao tentar resolver esse problema, algumas consideraes devem ser consideradas: i) Dois ou mais processos no podem estar simultaneamente dentro de suas regies crticas; ii) Nenhuma considerao pode ser feita a respeito da velocidade relativa dos processos, ou a respeito do nmero de processadores do sistema;
32

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

iii) Nenhum processo que esteja rodando fora de sua regio crtica pode bloquear a execuo de outro processo que deseje entrar nessa regio crtica; iv) Nenhum processo pode ser obrigado a esperar indefinidamente para entrar em sua regio crtica.

2. Starvation: Tambm chamado de Livelock, acontece quando processos/threads esto em execuo, mas nada acontece, isso ocorre geralmente quando dois ou mais processos/threads ento trabalhando com intenes contrarias, o que feito por um processo/thread desfeito pela outro. Tambm ocorre quando um processo/thread tenta o acesso a um recurso que est sendo utilizado por outro processo/thread, o S.O pede para que o mesmo aguarde sua liberao, porm o processo/thread no est preparado para o aguardo, ou seja, ele vai continuar solicitando o recurso indefinidamente, mesmo que o recurso seja liberado, pois o processo/thread no foi programado para uma rejeio.

3. Deadlock: o problema mais terrvel e mais estudado em sistemas operacionais. uma situao em que dois ou mais processos/threads esto em estado simultneo de espera, cada um aguardando que um dos demais libere um bloqueio para ele poder prosseguir, ou seja, um conjunto de N processos est em deadlock quando cada um dos N processos est bloqueado espera de um recursos que somente pode ser liberado por um processo desse conjunto. Para um melhor entendimento do conceito de deadlock, observar a figura 2.6, que mostra uma situao de deadlock no trnsito. Nesta situao os veculos no podem andar de r e precisam seguir em linha reta em suas avenidas.

Figura 2.6: situao de um deadlock no trnsito.

Perceba o que acontece na figura 2.6. Da forma com que os carros se encontram, nenhum deles poder seguir viagem, visto que eles esto se esperando mutuamente.

33

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

Quanto ao deadlock importante salientar: O deadlock pode ocorrer mesmo que haja somente um processo no S.O, considerando que este processo utilize mltiplos threads e que tais threads requisitem os recursos alocados a outros threads no mesmo processo; O deadlock independe da quantidade de recursos disponveis no sistema;

Em nosso sistema computacional existe um nmero finito de recursos que sero distribudos entre os processos existentes que concorrem pelo uso destes. Assim, sempre que um processo deseja utilizar algum dos recursos do sistema ele deve primeiro solicit-lo atravs de uma requisio ao sistema operacional. Conseqentemente, aps utilizar o recurso o processo deve liber-lo para outros processos. Em um modo de operao normal, a seguinte seqncia deve ser estabelecida pelo processo: 1. Pedido: o processo cria um trap para solicitar um recurso. Se o processo no tiver seu pedido atendido, pois o recurso no est livre, ele bloqueado e ficar esperando at ganhar a posse do recurso. 2. Uso: tendo posse do recurso ele poder utiliz-lo. 3. Liberao: desalocar o recurso adquirido pelo processo o liberando para outro processo. O gerenciamento desses recursos feito pelo sistema operacional atravs de uma tabela, que registra se cada recurso est livre ou ocupado. Caso o recurso esteja ocupado, tambm especificado o processo que tem a posse do recurso. Como exemplo de deadlock, podemos citar a requisio de um arquivo. Se for permitido aos programas requisitar e bloquear arquivos durante sua execuo pode ocorrer o seguinte: a. b. c. d. P1 requisita e obtm arquivo F2; P2 requisita e obtm arquivo F1; P1 requisita F1 mas est bloqueado; P2 requisita F2 mas est bloqueado;

Condies necessrias para a ocorrncia de deadlock O deadlock ocorre naturalmente em alguns sistemas. No entanto, necessrio ressaltar que tais sistemas precisam obedecer a algumas condies para que uma situao de deadlock se manifeste. Essas condies esto listadas abaixo: Condio de no-preempo: recursos j alocados a processos no podem ser tomados a fora. Eles precisam ser liberados explicitamente pelo processo que detm a sua posse; Condio de excluso mtua: cada recurso ou est alocado a exatamente um processo ou est disponvel; Condio de espera circular: deve existir uma cadeia circular de dois ou mais processos, cada um dos quais esperando por um recurso que est com o prximo membro da cadeia e onde cada um destes membros monopoliza o recurso de tal forma que s o libera com o progresso de sua execuo, sem nunca ceder sua vez a outros processos;

34

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

Representao de deadlock em grafos O deadlock tambm pode ser representado na forma de grafos dirigidos, onde o processo representado por um crculo e o recurso, por um quadrado. Quando um processo solicita um recurso, uma seta dirigida do crculo ao quadrado. Quando um recurso alocado a um processo, uma seta dirigida do quadrado ao crculo. Na figura 2.7, podem-se ver dois processos diferentes (A e B), cada um com um recurso diferente alocado (R1 e R2). Nesse exemplo clssico de deadlock, facilmente visvel a condio de espera circular em que os processos se encontram, onde cada um solicita o recurso que est alocado ao outro processo.

Figura 2.7: Exemplo de representao de deadlock em grafos de alocao de recursos, com dois processos A e B, e dois recursos R1 e R2.

Tratamento de deadlock As situaes de deadlock podem ser tratadas ou no em um sistema, e cabe aos desenvolvedores avaliar o custo/benefcio que essas implementaes podem trazer. Normalmente, as estratgias usadas para detectar e tratar as situaes de deadlocks geram grande sobrecarga, podendo at causar um dano maior que a prpria ocorrncia do deadlock, sendo, s vezes, melhor ignorar a situao. Existem trs estratgias para tratamento de deadlocks: 1. Ignorar a situao; 2. Detectar o deadlock e recuperar o sistema; 3. Evitar o deadlock; Vejamos o detalhamento dessas estratgias: 1. Algoritmo do Avestruz (Ignorar a situao): A estratgia mais simples para tratamento (ou no) do deadlock, ignor-lo, pois muitos defendem que a freqncia de ocorrncia deste tipo de evento baixa demais para que seja necessrio sobrecarregar a CPU com cdigos extras de tratamento, e que, ocasionalmente, tolervel reiniciar (leia-se resetar) o sistema como uma ao corretiva. 2. Detectar o deadlock e recuperar o sistema: Nessa estratgia, o sistema permite que ocorra o deadlock e s ento executa o procedimento de recuperao, que resume-se na deteco da ocorrncia e na recuperao posterior do sistema. na execuo desse procedimento que ocorre
35

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

a sobrecarga, pois existem dois grandes problemas: primeiramente, como/quando detectar o deadlock e depois, como corrigi-lo. Para detectar o deadlock, o sistema deve implementar uma estrutura de dados que armazene as informaes sobre os processos e os recursos alocados a eles. Essas estruturas devero ser atualizadas dinamicamente, de modo que reflitam realmente a situao de cada processo/recurso no sistema. S o mero procedimento de atualizao dessas estruturas j gera uma sobrecarga no sistema, pois toda vez que um processo aloca, libera ou requisita um recurso, as estuturas precisam ser atualizadas. Alm disso, o S.O precisa verificar a ocorrncia da condio de espera circular nessas estruturas para a efetiva deteco do deadlock. Esse procedimento, por sua vez, gera outra sobrecarga, que pode ser mais intensa se no for definido um evento em particular para ser executado, como a liberao de um recurso, por exemplo. Assim, ou o S.O verifica periodicamente as estruturas (o que no aconselhvel, pois pode aumentar consideravelmente o tempo de espera dos processos no-bloqueados), ou pode-se implementar uma poltica, onde o S.O verifica as estruturas quando o mesmo realizar algum procedimento de manuteno do sistema, por exemplo. Finalmente, s aps detectar a presena do deadlock no sistema, o S.O precisa corrigi-lo, executando um procedimento de recuperao, que pode ser apenas fechar um processo, ou zerar a fila de alocao a um recurso que tenha causado o deadlock. Como o algoritmo de deteco bastante complexo, no entraremos em detalhes nesta apostila. Sugiro a leitura atenta das referncias bibliogrficas e do Modelo de Holt para uma melhor compreenso sobre o assunto. 3. Evitar o deadlock: Para evitar o deadlock necessrio a implementao do algoritmo de excluso mtua, que veremos mais adiante.

Problemas Clssicos de IPC


Para sintetizar os trs grandes problemas a serem resolvidos pelo IPC (Condio de Corrida, Starvation e Deadlock) em um nico problema, tornado assim a soluo mais dirigida, foram criados alguns problemas figurativos que representam essa sntese. Vejamos agora os mais conhecidos. Lembrando que a soluo desses problemas ser explicada na seo seguinte desta apostila. Para conhecer a soluo desses problemas, implementadas em algoritmos reais, sugiro a consulta atenta s referncias bibliogrficas descritas no final desta apostila. 1. Problema dos Filsofos Glutes (Jantar dos Filsofos): Esse o mais conhecido e mais completo problema figurativo do IPC. Ele rene claramente a Condio de Corrida, o Starvation e o Deadlock, em um contexto bem simples. Caso o IPC esteja apto a resolver todas as situaes do problema dos filsofos glutes, automaticamente ele estar resolvendo todos os grandes problemas a qual ele proposto. Este problema consiste em cinco filsofos que esto ao redor de uma mesa redonda (circular) e querem comer o macarro. Cada filsofo possui um prato de macarro a sua frente, porm, para cada filsofo comer, so necessrios dois garfos (um em cada mo) e a mesa dispem apenas de cinco garfos, cada um entre dois pratos de macarro. O filsofo que no come, pensa na vida. E agora? A figura 2.8 ilustra essa situao.

36

MODULO 2 PROCESSOS___________ PROCESSOS________________________________________________________P ___________Prof. TENORIO

Figura 2. ilustrao do problema dos filsofos glutes 2.8: A Condio de Corrida vista no momento em que dois filsofos seguram o mesmo garfo e o tentam puxam para si, onde nenhum deles consegue vencer a fora do outro. O Starvation visto na situao onde cada filsofo segura um garfo, verifica a disponibilidade do outro e caso no disponibilidade esteja ele devolve o garfo mesa. O deadlock por sua vez, visto quando cada filsofo segura um garfo e espera que o filsofo seguinte o devolva a mesa. 2. Problema do Barbeiro Dorminhoco Uma barbearia tem um dado nmero de barb Dorminhoco: barbeiros e um dado nmero de cadeiras. Sempre h um nmero maior de cadeiras do que de barbeiros para que os clientes possam esperar os barbeiros sentados. Sempre que um barbeiro no tem clientes ele aproveita para dormir. Quando um cliente chega barbearia, ele deve acordar o barbeiro para lhe cortar o cabelo, caso haja algum barbeiro dormindo. Caso contrrio o cliente deve esperar em alguma cadeira vaga. Se no houver cadeiras vagas o cliente deve ir embora embora.

Figura 2.9 ilustrao do problema do barbeiro dorminhoco 9: 3. Problema dos Leitores e Escritores uma generalizao do problema do Escritores: Produtor/Consumidor. O problema dos Leitores e Escritores representa um padro habitual de comportamento de processos concorrentes, que acessam simultaneament uma bases de dados simultaneamente compartilhada. Os processos leitores, que apenas consultam esta base de dados podem acessar dados, simultaneamente a base. Os processos escritores, que modificam o contedo da base, exigem . acesso exclusivo. Durante uma operao de escrita o acesso tabela deve ser restrito a um nico processo escritor. E agora, como resolver este impasse?
37

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

Implementao da Excluso Mtua


Nesta seo vamos examinar vrias propostas para obteno da excluso mtua, ou seja, da sincronizao de processos, de forma que quando um processo estiver acessando uma regio crtica, nenhum outro processo poder entrar nela. Existem dois princpios bsicos (idias) que norteiam os algoritmos de implementao da excluso mtua. Vejamos agora quais so os princpios e os algoritmos que implementam tais princpios.

Princpio da Excluso Mtua com Espera Ocupada (busy waiting): O princpio da excluso mtua com espera ocupada (ociosa) baseia-se no teste contnuo do valor de varivel(is), aguardando que esta assuma determinado valor para a liberao da regio crtica. Segue os algoritmos que implementam este princpio: 1 Inibio das Interrupes: a soluo mais simples. Se o grande problema da regio crtica o fim do quantum, ento, cada processo deve inibir as interrupes logo aps entrar em uma regio crtica, habilitando-as imediatamente antes de sair dela. Dessa forma evitamos as interrupes de relgio e conseqentemente os problemas gerados pelo chaveamento de processos. Qual o problema desta abordagem? Dar aos processos usurios o poder de desabilitar interrupes. Um processo poder simplesmente no reabilitar as interrupes ao sair da regio crtica monopolizando eternamente a CPU. Alm disso, em sistemas com mltiplos processadores a inibio de um processador, por um processo, pode afetar negativamente os demais processadores. 2 Variveis de Travamento ou Impedimentos (lock variables): Nesta estratgia existe um bit compartilhado, denominado de varivel de travamento (lock ou flag), cujo valor inicial 0 (zero). Ao desejar entrar em uma regio crtica, o processo primeiro deve verificar o valor da varivel de travamento. Se lock = 0, o processo altera seu valor para 1 e entra na regio crtica. Por outro lado, se a varivel lock = 1, a regio crtica est ocupada, o processo est impedido de entrar e, portanto, deve esperar at que lock volte para 0, liberando o acesso. Durante essa espera, o processo fica em loop, utilizando seu quantum para verificar constantemente o valor dessa varivel lock. Qual o problema dessa estratgia? Pode acontecer de um processo P1 ler o valor de lock e ela est igual a 0 e a seguir ele interrompido (fim do quantum), antes de alterar o valor de lock para 1. Dai outro processo P2 l o valor de lock = 0 e muda para 1, podendo entrar em sua Regio Crtica. interrompido e a execuo volta para P1, que no seu contexto guardou lock = 0, coloca lock = 1 e entra na sua regio crtica. Nesse instante, temos P1 e P2 na dentro da regio crtica, ou seja, o grande problema o processo da vez, ser interrompido entre a checagem o lock e a modificao do valor desse lock para 1.

38

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

3. Estrita Alternada (Alternncia Obrigatria): Ao invs de colocar um bit na entrada da regio crtica coloca-se uma varivel que codifica o processo na entrada. Se a varivel for 1, a vez do processo P1, se for 2, a vez do processo P2 e assim por diante, obedecendo fila de solicitao. Quando o processo P1 sai da regio crtica ele alterna o varivel para 2, quando P2 sai, alterna para 3 e assim por diante. Enquanto um processo est na regio crtica, os demais ficam verificando continuamente a varivel at que essa seja alternada, permitindo a entrada do processo. Qual o problema dessa estratgia? Um processo pode ser impedido de entrar na regio crtica por um processo que est fora dessa regio crtica. Vejamos as situaes onde isso pode ocorrer. Situao 1: um processo da fila pode desistir da regio crtica no momento de sua execuo, indo executar em regio no-crtica, deixando os demais processos impedidos de entrar, devido codificao da varivel que no foi alternada, pois a mesma s alternada na sada do processo da regio crtica. Situao 2: suponha execuo de dois processos. P1 est na regio crtica e P2 aguarda execuo. P1 sai da regio crtica e alterna a varivel para 2, porm P1 pretende retornar a regio crtica antes do fim de seu quantum. Neste caso, P2, que est fora da regio crtica estar impedindo P1 de acessar, deixando-o acabar seu quantum em loop desnecessrio. 4. Algoritmo de Dekker: O Algoritmo de Dekker resolve o problema da excluso mtua para a espera ocupada. uma soluo via software explicitado na rvore de deciso descrita na figura 2.10. Trata-se da declarao de trs variveis: Qualproc (inteira): que indica qual o processo que tem a permisso de entrar na regio crtica; Ocupado1 (booleana): que indica a inteno do processo 1 de entrar na regio crtica; Ocupado2 (booleana): que indica a inteno do processo 2 de entrar na regio crtica; O processo que deseja entrar na regio crtica coloca sua inteno em sua varivel Ocupado e verifica o valor de qualproc. Se o valor de qualproc for o seu nmero mgico, ele entra na regio crtica. Caso no seja, ele fica em loop while aguardando seu nmero mgico, para entrar nessa regio crtica. A soluo de Dekker mostrou que possvel resolver o problema inteiramente por software, isto , sem exigir instrues mquina especiais, porm esse algoritmo tem uma desvantagem crucial: no permite uma expanso de escala, em termos do nmero de processos participantes no algoritmo, sem que se faa uma modificao significativa no programa que realiza o algoritmo, ou seja, ele s funciona para dois processos. Esta falta de modularidade no aceitvel em sistemas onde haja criao dinmica de processos. Precisamos de outras solues, nas quais a entrada de um novo processo no sistema no implique a reescrita total do cdigo de todos os outros processos na fila.

39

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

Figura 2.10: rvore de deciso do algoritmo de Dekker.

5. Algoritmo de Dijkstra (pronncia: dikstra): Edsger Wybe Dijkstra (Roterd, 11/05/1930 Nuenen, 06/08/2002) foi um cientista da computao conhecido por suas contribuies nas reas de desenvolvimento de algoritmos e programas, de linguagens de programao (pelo qual recebeu o Turing Award de 1972 por suas contribuies fundamentais), sistemas operacionais e processamento distribudo. Entre suas contribuies para a cincia da computao est includo o algoritmo para o problema do caminho mnimo, o sistema operacional THE e a construo de semforos para coordenar mltiplos processadores e programas, alm do melhoramento no algoritmo de Dekker. Outro
40

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

conceito desenvolvido pelo cientista foi a auto-estabilizao na rea de sistemas distribudos, uma forma alternativa de garantir a confiana de um sistema. O algorito de Dijkstra (1965) mais precisamente o algoritmo de Dekker para mltiplos processos (i processos). explicitado na rvore de deciso da figura 2.11. Ao invs da declarao de duas variveis booleanas, declara-se um vetor de variveis booleanas chamado de Estado, onde o ndice do vetor explicita o processo, por exemplo, na posio 5 do vetor encontra-se o processo P5. O algoritmo funciona bem, porm, os processos agora ficam em loop while chegando no uma, mas um vetor de variveis, o que o torna bastante oneroso em termos de processamento do sistema.

Figura 2.11: rvore de deciso do algoritmo de Dijkstra.

6. Soluo de Peterson Antes de falar da soluo de Peterson, precisamos conhecer o conceito de Primitiva. A primitiva uma instruo que no pode ser interrompida pelo fim do quantum, ou seja, se o quantum acabar no meio da execuo de uma primitiva, o processo permanece na CPU at o final da primitiva, sendo interrompido logo aps o trmino dessa primitiva. Em linguagem de mquina as primitivas so chamadas de Instruo TSL (Test and Set Lockup).

41

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

A soluo de Peterson pode ser implementada tanto em alto nvel, quanto em baixo nvel, e consiste em implementar o algoritmo de Variveis de Travamento em uma primitiva, ou seja, o problema do processo ser interrompido entre a checagem do flag e sua alterao para 1 deixa de existir, quando esses dois passos so colocados dentro de uma nica primitiva. As primitivas propostas por Peterson so: enter_region (que indica um enteresse na regio crtica) e leave_region (que indica a sada da regio crtica);

Essas primitivas comandam totalmente a entrada e a sada da regio crtica, implementando perfeitamente a excluso mtua com espera ocupada. Nas figuras 2.12 e 2.13 podemos observar a soluo de Peterson, tanto em alto nvel (linguagem C), quanto em baixo nvel (assembler) respectivamente.

Figura 2.12: soluo de Peterson em alto nvel.

enter_region;

Jump

tsl register,flag; cmp register,#0; mov flag,#1; jnz enter_region; ret;

// // // // //

Copia o valor de flag no registrador. O flag 0? Guarda um 1 em flag. Executa o espera ocupada (Se flag <> 0) Retorna a quem chamou e efetua entrada na Regio Crtica.

leave_region; mov flag,#0; ret; // Guarda um 0 em flag. // Retorna a quem chamou.

Figura 2.13: soluo de Peterson em baixo nvel, instrues TSL.

42

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

A soluo de Peterson resolve perfeitamente a excluso mtua com espera ocupada de maneira gil, porm, uma soluo deste tipo s aceitvel se houver um nmero de CPUs igual (ou superior) ao nmero de processos que queiram executar no sistema. Isto porque, nesse caso, podemo-nos dar 'ao luxo' de gastar ciclos de CPU, com execues que no fazem mais nada seno aguardar at que seu processo possa entrar na regio crtica. Como esta situao rara na prtica, onde, em geral, h mais processos do que CPUs disponveis e onde inclusive, a maioria dos computadores possui apenas uma nica CPU, essa soluo torna-se invivel, ou seja, a soluo boa para o princpio da espera ocupada, porm o princpio pobre, pois est baseado no gasto de CPU, algo inaceitvel para nossos sistemas atuais. Para resolver essa questo, vamos conhecer o segundo princpio para implementao da excluso mtua.

Princpio da Excluso Mtua com Espera Bloqueada (blocked waiting): O princpio da excluso mtua com espera bloqueada baseia-se em um princpio bsico dos estados de um processo. O processo fica no estado de Bloqueado, ou seja, parado, aguardando a liberao a Regio Crtica. Para que seja possvel esse tipo de implementao, necessrio fazer uso das Primitivas de Comunicao, as mais comuns so: Sleep/Wakeup, Semforos, Contadores de Eventos, Monitores, Troca de Mensagens, entre outros. A seguir vejamos os algoritmos que implementam este princpio. 1 Uso das Primitivas SLEEP/WAKEUP: Neste algoritmo temos o uso de suas primitivas. So elas: SLEEP: uma chamada ao sistema que bloqueia o processo que solicitou a regio crtica. Suspende a execuo do processo at que outro processo o acorde. WAKEUP: uma chamada ao sistema que acorda um processo no estado de bloqueado. Utiliza como parmetro, o id do processo a ser acordado.

Qual o problema dessa estratgia? Problema: Imagine que um processo P1 deseja entrar na regio crtica e verifica se ela est ocupada. O S.O responde que est livre. Nesse momento P1 sofre uma interrupo e vai para a fila de prontos, ou seja ele foi interrompido antes de entrar na regio crtica e um processo fora no pode bloquear a entrada de outro processo. Neste momento P2 solicita a mesma regio crtica, que est livre, recebe a permisso do S.O e entra. Dentro da regio crtica, P2 sofre uma interrupo e P1 volta a CPU, neste retorno P1 trs, guardado em seu contexto, a permisso que o S.O haver lhe dado antes da interrupo, com a permisso do S.O o processo entra na regio crtica. Resultado: dois processos ao mesmo tempo na regio crtica.

43

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

Outra situao. Imagine que a regio crtica est ocupada por P1 e P2 a solicita. O S.O prepara o Sleep para P2, porm o processo interrompido antes de receber esse Sleep e vai para a fila de prontos. P1 conclui a regio crtica e sai, neste momento o S.O encaminha um Wakeup(P2), prximo processo na fila da regio crtica, para o estado de bloqueado, porm o processo no est l, o Wakeup perdido. Quando P2 retorna a CPU, volta no exato momento que parou, ou seja, recebe o Sleep e vai dormir. Como o S.O est aguardando a sada de P2 da regio crtica, outros processos que a solicitarem a regio crtica recebero Sleep para dormir, mas como o processo P2 est dormindo e nunca ser acordado, pois seu Wakeup se perdeu, todos os processos que solicitarem a regio crtica ficaro em deadlock. Para afixarmos melhor o problema desta estratgia, vamos ver agora a soluo aplicada a o problema clssico do Produtor/Consumidor. Supor o buffer vazio. O processo consumidor leu o count (varivel que guarda a quantidade de buffers preenchidos), viu que era zero e sofreu uma interrupo. O processo produtor ento comea a rodar. Colocam dados no buffer e sabendo que count era zero antes dele entrar no buffer, ele envia um wakeup para o consumidor bloqueado, mas o consumidor no est bloqueado e sim pronto, depois da interrupo. O sinal wakeup ser perdido. Quando o Consumidor voltar a CPU, ele ter o count = 0 (antes da interrupo) e ser posto para dormir. O produtor quando retornar a CPU vai encher o buffer e vai ser posto para dormir. Ambos (produtor e consumidor) dormiro eternamente (deadlock). Resumindo, o problema essa estratgia a interrupo do processo entre a checagem da regio crtica e o recebimento da primitiva Sleep, que o far dormir. 2 Semforos Se o grande problema as primitivas Sleep/Wakeup a interrupo do processo entre a checagem da regio crtica e o seu envio para o estado de bloqueado, ento a soluo simples. Colocar a checagem e o envio dentro de uma nica primitiva, o que impediria tal interrupo e resolveria todos os problema daquela implementao. neste contexto que se entra o Semforo. Um semforo, idealizado por Dijkstra (1965), uma varivel inteira, no-negativa, que s pode ser manipulada por duas primitivas (instrues atmicas): UP e DOWN. DOWN: verifica se o valor do semforo maior que 0, se for decrementa o valor do semforo e prossegue. Caso semforo = 0 o processo ir dormir sem terminar de executar o DOWN (por enquanto). As operaes: verificar valor do semforo e alterar seu contedo so tarefas executadas como uma primitiva (ao atmica e indivisvel). Com isso, evitamos o problema de uma interrupo entre essas duas atividades. UP: esta operao incrementa o valor do semforo em uma unidade e acorda um dos processos que esto dormindo associado ao semforo em questo. Assim, um processo escolhido pelo sistema e dado a permisso de terminar a execuo da operao DOWN que ele havia comeado anteriormente. Para terminar, o processo acordado agora ir decrementar o valor do semforo, fazendo com que ele permanea em 0 (zero). No entanto, existir um processo a menos dormindo no semforo.

44

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

Como, por definio, valores negativos no podem ser atribudos a um semforo, a instruo DOWN executada em um semforo com valor 0, faz com que o processo entre no estado de bloqueado. Em geral, essas instrues so implementadas no processador, que deve garantir todas essas condies. Na figura 2.14 podemos ver a implementao dessas primitivas em linguagem de alto nvel.
Down (s): Se s > 0 ento s = s - 1 seno suspende o processo;

Up (s):

Se um processo estiver suspenso devido a Down (s), Reative-o Seno s = s + 1;

Figura 2.14: implementao das primitivas DOWN e UP dos semforos. Os semforos podem ser classificados como binrios ou contadores. Os binrios, tambm chamados de mutexes (mutual exclusion semaphores), s podem assumir os valores 0 e 1, enquanto os contadores podem assumir qualquer valor inteiro positivo, alm do 0. Semforos contadores so bastante teis quando aplicados em problemas de sincronizao condicional onde existem processos concorrentes alocando recursos do mesmo tipo (pool de recursos). O semforo inicializado com o nmero total de recursos do pool e, sempre que um processo deseja alocar um recurso, executa um DOWN, subtraindo 1 do nmero de recursos disponveis. Da mesma forma, sempre que o processo libera um recurso para o pool, executa um UP. Se o semforo contador ficar com o valor igual a 0, isso significa que no existem mais recursos a serem utilizados, e o processo que solicita um recurso permanece em estado de Bloqueado, at que outro processo libere algum recurso para o pool. A excluso mtua pode ser implementada atravs de um semforo binrio associado ao recurso compartilhado. As instrues DOWN e UP funcionam como protocolos de entrada e sada, respectivamente, para que um processo possa entrar e sair de sua regio crtica. O semforo fica associado a um recurso compartilhado, indicando quando o recurso est sendo acessado por um dos processos concorrentes. O valor do semforo igual a 1 indica que nenhum processo est utilizando o recurso, enquanto o valor 0 indica que o recurso est em uso. Sempre que deseja entrar na sua regio crtica, um processo executa uma instruo DOWN. Se o semforo for igual a 1, este valor decrementado, e o processo que solicitou a operao pode executar as instrues da sua regio crtica. De outra forma, se uma instruo DOWN executada em um semforo com valor igual a 0, o processo fica impedido do acesso, permanecendo em estado de bloqueado e, conseqentemente, no gerando overhead (sobrecarga) no processador. O processo que est acessando o recurso, ao sair de sua regio crtica, executa uma instruo UP, incrementando o valor do semforo e liberando o acesso ao recurso. Se um ou mais processos estiverem esperando pelo uso do recurso, o sistema selecionar um processo na fila de espera associada ao recurso e alterar o seu estado para pronto.
45

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

3 Contadores de Eventos A soluo dos Semforos baseia-se na excluso mtua para evitar os grandes problemas da regio crtica, porm, possvel programar uma soluo que no necessite da exclusa mtua e sim de uma varivel especial. Um contador de eventos uma varivel especial sobre a qual trs tipos de operaes primitivas so definidas: Read (E): retorna o valor corrente de E. Advance (E): incrementa E, atomicamente. Await (E, v): espera at que E tenha um valor de v ou mais.

Contadores de eventos sempre so inicializados com zero e somente so incrementados. Seus valores nunca diminuem. A operao READ no empregada na soluo do problema do produtor consumidor, porm, utilizada na soluo de outros problemas envolvendo a questo de sincronismo de processos. Tanto a tcnica de semforos, como os contadores de eventos so excelentes tcnicas para sincronismo de processos, porm, so algoritmos bastante simplrios, ou seja, dificlimo expressar solues para problemas de concorrncia mais complexos com eles. Vai depender muito do programador o sucesso ou fracasso de tais implementaes. Qualquer erro pode ser fatal. Para tornar mais fcil a escrita de programas corretos, Hoare (1974) e Brinch Hansen (1975) propuseram uma primitiva de sincronizao de alto nvel que veremos a seguir.

4 Monitores Proposto por Hoare e Brinch Hansen, os monitores so estruturas de alto nvel, para a soluo do problema do sincronismo entre os processos. Um monitor uma coleo de procedimentos, variveis, e estruturas de dados que so todos agrupados em um tipo especial de mdulo ou pacote. Processos podem chamar os procedimentos em um monitor sempre que o desejarem, mas eles no podem diretamente acessar as estruturas de dados internas do monitor atravs de procedimentos declarados fora do monitor. Ao fazer a excluso mtua de regies crticas automticas, monitores fazem com que a programao paralela seja muito menos sujeita a erros do que com semforos. Entretanto, monitores possuem suas desvantagens. Monitores um conceito da linguagem de programao, ou seja, o compilador deve reconhec-los e arranjar a excluso mtua de acordo. C, Pascal e outras linguagens no possuem monitores, portanto no se pode esperar que os compiladores dessas linguagens dem algum suporte a excluso mtua. Estas mesmas linguagens tambm no possuem semforos, mas adicion-los a elas fcil: basta escrever algumas rotinas e adicionar estas rotinas s bibliotecas de funes. Para utilizar monitores, necessria uma linguagem que os tenha por natureza. Poucas linguagens, como Concurrent Euclid e o JAVA os possuem, porm, pelo fato de o compilador e no o programador estar envolvido com a excluso mtua, pouco provvel que algo venha a dar errado.

46

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

Relacionado sincronizao dos processos e excluso mtua, os monitores oferecem uma propriedade importante: apenas um processo pode estar ativo dentro do monitor em um determinado instante. Todas as verificaes so efetuadas pelo compilador, portanto, para o programador, basta colocar a regio crtica dentro do monitor que no haver a possibilidade de existir 2 ou mais processos executando a regio crtica ao mesmo tempo. Funcionamento: quando um processo realiza uma chamada a algum procedimento do monitor este verifica se existe se algum outro processo est ativo dentro dele. Caso exista, o processo que est tentando entrar no monitor bloqueado at que o outro processo libere este monitor. Se no existir nenhum processo ativo dentro do monitor, o processo que est solicitando o acesso poder entrar e executar o procedimento chamado. Apesar dos monitores tambm garantirem a excluso mtua necessrio cuidarmos dos casos onde devemos bloquear os processos quando no houver mais condies para que os mesmos continuem executando (ex. Buffer vazio ou cheio). Para resolver este problema propuseram o uso de variveis de condio, com as seguintes operaes sobre elas: WAIT e SIGNAL. Essas operaes so primitivas. As semnticas dessas operaes so: bloqueio (semelhante ao sleep) e desbloqueio (semelhante ao wakeup) respectivamente, com uso de filas. A soluo do problema do produtor/consumidor, utilizando monitores, pode ser vista na figura 2.15. Brinch Hansen props que ao executar a operao SIGNAL o processo seria obrigado a deixar o monitor imediatamente em seguida. Se um SIGNAL executado sobre uma varivel de condio, somente um processo associado fila de espera desta varivel poder ser reativado pelo escalonador de processos.

Figura 2.15: soluo do problema produtor/consumidor usando monitores.

47

MODULO 2 PROCESSOS________________________________________________________Prof. TENORIO

5 Troca de Mensagens o nico mecanismo de comunicao e sincronizao entre processos que permite a troca de informaes entre mquinas diferentes. O Sistema Operacional possui um subsistema de mensagem que suporta esse mecanismo sem que haja necessidade do uso de variveis compartilhadas. Para que haja a comunicao entre os processos, deve existir um canal de comunicao, podendo esse meio ser um buffer ou um link de uma rede de computadores. Os processos cooperativos podem fazer uso de um buffer para trocar mensagens atravs de duas rotinas primitivas: SEND (receptor, mensagem); RECEIVE (transmissor, mensagem);

A rotina SEND permite o envio de uma mensagem para um processo receptor, enquanto a rotina RECEIVE possibilita o recebimento de mensagem enviada por um processo transmissor. Na troca de mensagem o receptor fica bloqueado at que a mensagem chegue. Essa soluo uma alternativa para os S.Os distribudos, que precisam ter suas funes completamente distribudas pela rede, porm, muitos problemas so encontrados nesta implementao com o uso de uma rede, como por exemplo: A mensagem pode se perder na rede; Deve-se tomar cuidado para que o Receive e o Send no se misturem; Existe a possibilidade de mensagens serem feitas por impostores; Em locais remotos possvel que existam mquinas com nomes iguais, o que pode confundir as mensagens; Se o produtor e o consumidor estiverem na mesma mquina existir gasto da CPU desnecessrio produzindo a mensagem.

Com isso percebemos que ainda existe muito a se pensar em termo de S.O distribudo, porm a computao se desenvolve a cada dia.

Equivalncia Entre os Algoritmos Alm dos algoritmos apresentados, muitos outros modelos j foram propostos para a implementao da excluso mtua, como por exemplo, os Seqenciadores (Reed e Kanodia 1979), as Expresses de Caminho (Campbel e Habermann 1974), Serializadores (Atkinson e Hewitt - 1979), etc., porm, vale observar que muitos desses algoritmos so semanticamente equivalentes, pelo menos quando usamos um nico processador, ou seja, com a utilizao de qualquer um deles possvel construir todos os demais: Semforos, Contadores de Eventos, Monitores e Troca de Mensagens. Lembra do problema do buffer circular, descrito na pgina 30 desta apostila? Pois bem, a melhor estrutura para resolver esse problema a utilizao de semforos na modalidade de Contadores, onde os semforos contam a quantidade de buffers e travam os processos quando no possvel execuo por algum motivo (encheu, esvaziou, etc.).

48

MODULO 3 ESCALONAMENTO__________________________________________________Prof. TENORIO

MODULO 3 ESCALONAMENTO
Conforme comentamos, em alguns momentos podemos ter dois ou mais processos/threads aptos a utilizar o processador, porm como temos mais processos/threads do que CPUs ser necessrio organizar uma fila de espera. Essa fila contm todos os processos/threads que esto no estado de pronto, ou seja, todos os processos/threads que esto prontos para serem executados. Quando ocorre uma interrupo no processo corrente, o sistema operacional deve decidir qual dos processos/threads aptos, ser escolhido para rodar primeiro. Essa tarefa e a tomada de deciso so feitas pelo Escalonador de Processos (parte do kernel do sistema operacional, tambm chamado de Schedule ou despachante), atravs da implementao de alguns algoritmos de seleo, denominados algoritmos de escalonamento, portanto, escalonamento a ao de escolher um processo/threads para entrar em execuo, ou seja, o conjunto de polticas e mecanismos de um S.O que determina a ordem de execuo de tarefas. Uma poltica (ou disciplina) de escalonamento o critrio utilizado pelo escalonador para tomar sua deciso, enquanto que mecanismo o algoritmo que implementa essa poltica.

CARACTERSTICAS DO ESCALONADOR
Ao implementar um escalonador, o programador deve faz-lo de maneira que o mesmo atenda a algumas caractersticas importantes. O atendimento dessas caractersticas garante a qualidade desse escalonador e so seus objetivos. As principais caractersticas que todo escalonador deve ter so: Justia: Garantir que todos os processos do sistema tero chances iguais de uso do processador, isto significa que o mesmo critrio deve ser aplicado a todos os processos, mesmo que esses critrios no paream justos, priorizando alguns processos em detrimento dos demais. A justia garante que cada S.O ter um nico escalonador de processos implementado; Eficincia: Manter o processador 100% do tempo ocupado, ou seja, o sistema no pode perder tempo, assim que um processo deixa de processar dados, seja pelo fim do quantum, ou devido a uma requisio externa, o escalonador deve estar pronto para atuar, escolhendo o prximo processo da fila; Tempo de Resposta: Minimizar o tempo de resposta (overhead) a processos interativos. Isto significa que deve ser mantido o tempo real dos processos de usurio, para que o mesmo no perceba a realizao do chaveamento de processos. Um bom exemplo disso um vdeo, que deve ter seu fluxo contnuo inaltervel; Previsibilidade: A execuo de um processo com caractersticas similares devem durar aproximadamente o mesmo perodo de tempo; Turnaround: Minimizar o tempo que os processos devem esperar pela sada, ou seja, minimizar o tempo de espera na fila de escalonamento. Turnaround bom turnaround pequeno;
49

MODULO 3 ESCALONAMENTO__________________________________________________Prof. TENORIO

Throughput: Maximizar o nmero de jobs processados na unidade de tempo, ou seja, em um determinado espao de tempo, a quantidade de processos que passam pela CPU deve ser o mximo possvel;

ESTRATGIAS DO ESCALONADOR
O escalonador deve possuir uma nica estratgia dentre as conhecidas. So elas: No Preemptiva: Neste caso, uma vez que o sistema tenha designado um processo/thread a um processador, o S.O no poder retir-lo, isto significa que o sistema no permite a suspenso temporria de um processo e ele executa at o fim de seu algoritmo, sem a interferncia do quantum; Preemptiva: Neste caso, o processo executa com suspenses temporrias, ou seja, usa o quantum (time slice) e o tempo de CPU dividido alternadamente entre os processos;

CLASSES DO ESCALONADOR
As Classes de Escalonamento, tambm chamado de Nveis de Escalonamento, indicam onde o escalonador est atuando dentro do sistema. As classes de escalonamento so: Escalonamento de Curto-Prazo: tambm chamado de Escalonamento de Baixo Nvel, determina qual dos processos/threads ativos no sistema, entrar na CPU na prxima vez em que esta seja liberada; Escalonamento de Mdio-Prazo: tambm chamado de Escalonamento de Nvel Intermedirio, determina quais processos/threads tero a permisso de competir pela CPU, isso se deve ao tamanho das memrias reais (RAM) do sistema que no cabem todos os processos prontos, e para um processo executar na CPU necessrio que o mesmo esteja na memria real. Neste caso, o escalonador de mdio-prazo que decide quais processos seguiro para a memria real e quais ficaro na memria virtual; Escalonamento de Longo-Prazo: tambm chamado de Escalonamento de Alto Nvel, determina quais processos/threads podem disputar ativamente os recursos do sistema, ou seja, no sero admitidos na fila de prontos os processos/threads que aguardam uma requisio externa ao sistema. Esses processos devem ficar no estado de bloqueado, aguardando o retorno de sua requisio, sem pesar a fila de escalonamento;

Os escalonadores de nvel intermedirio e de alto-nvel possuem as seguintes preocupaes: Quanto tempo se passou desde que o processo foi colocado no disco ou na memria principal? Quanto tempo de processador o processo usou recentemente? Qual o tamanho do processo? Qual a prioridade do processo? O escalonador de baixo nvel segue rigorosamente a poltica na qual o mesmo foi implementado, sem qualquer preocupao com tempo, tamanho do processo, prioridade, etc.
50

MODULO 3 ESCALONAMENTO__________________________________________________Prof. TENORIO

CARACTERSTICAS DOS PROCESSOS ESCALONADOS


Alguns escalonadores levam em considerao, na organizao da fila de escalonamento, a prioridade dos processos. Essa prioridade calculada de acordo com as tarefas que o processo executa no sistema. Essas prioridades so divididas em nveis e sub-nveis de prioridade. Os subnveis so apenas para diferenciar processos com tarefas semelhantes. Abaixo seguem os nveis de prioridade dos processos escalonados pelo sistema, organizados da prioridade mais alta, at a mais baixa: Real Time: So processos que exigem resposta imediata do sistema e a manuteno do tempo real em suas execues; Processos de S.O: Processos executados pelo Sistema Operacional; Interativos: Processos que esto sempre pedindo respostas ao usurio; I/O Bound: Processos que quase no ficam na CPU, fazem muita requisio de E/S e executam, boa parte de seu quantum, na controladora; Batch: Processos que no fazem requisies ao usurio, nem aos perifricos, geralmente monopolizam o sistema e so executados em segundo plano; CPU Bound: Processos que ficam muito tempo na CPU e fazem muitas requisies a ULA (Unidade de Lgica e Aritmtica);

Importante: A questo de atribuir uma prioridade ao processo pode ser implementada de maneira esttica, onde a prioridade atribuda no incio da execuo do processo e no pode mais ser alterada ou dinmica, onde a prioridade pode variar, dependendo das tarefas desenvolvidas pelo processo durante sua execuo.

POLTICAS DE ESCALONAMENTO
Seguem os critrios que o programador tem para escolher, na hora de implementar seu sistema operacional. 1. FIFO: organiza a fila por ordem cronolgica de requisio a CPU, ou seja, o primeiro que solicitou ser o primeiro a ser atendido. Estratgia: No-Preemptiva; Prs: simples entendimento e de fcil implementao. Boa para processos I/O Bound; Contras: Baixo desempenho e fcil degradao (processos curtos podem demorar muito tempo na fila);

2. ROUND ROBIN (RR): tambm chamado de alternncia circular, assim como o FIFO, organiza a fila por ordem cronolgica de requisio a CPU, porm, no RR, atribudo a cada processo que entra na CPU um quantum. Quando o quantum acaba, esse processo retirado e outro escolhido para entrar na CPU. o chamado FIFO Preemptivo. Estratgia: Preemptiva; Prs: indicado para processos curtos e interativos, alm de ser simples e de fcil implementao; Contras: Gasta tempo fazendo o chaveamento de processos. No recomendado para processos de tamanho equivalente, pois processos pequenos tero seu tempo de execuo aumentado devido a vrias interrupes do fim do quantum, alm de no ser fcil
51

MODULO 3 ESCALONAMENTO__________________________________________________Prof. TENORIO

estabelecer o valor do quantum. Se o quantum for pequeno demais, o tempo do chaveamento ser percebido pelo usurio, se ele for grande demais, o processo monopoliza os recursos do sistema; 3. SPN STCF (Shortest Process Next - Shortest Time to Completion First): Tambm conhecido como Processo Mais Curto Primeiro (em ingls Shortest Process First SPF) ou Menor Job Primeiro (em ingls, Shortest Job First SJF). Organiza a fila por ordem do tamanho do tempo de uso da CPU, ou seja, para cada processo, estimado o tempo de toda sua execuo soma de todos os possveis quantuns, e os menores processos ficam na frente da fila. Essa estimativa realizada pelo escalonador com base em diversos parmetros, como tamanho do processo, histrico de execuo, quantidade de espao ocupado em memria real e virtual, etc. Estratgia: No Preemptiva; Prs: Menor tempo de resposta dos processos curtos, obtendo assim uma fila de escalonamento mais curta; Contras: impossvel estimar com preciso o tempo de todos os processos, essas estimativas podem gastar tempo de CPU e ter uma margem de erro muito grande;

4. SPN SRTCF (Shortest Process Next Shortest Remaining Time to Completion First): Tambm conhecida como Menor Tempo de Execuo Restante (em ingls Shortest-Remaining Time). Assim como a poltica anterior, tambm organiza a fila por ordem do tamanho do tempo de uso da CPU, porm, usa o quantum. Estratgia: Preemptiva; Prs: Menor tempo de resposta entre os processos. Quem gasta mais tempo de CPU, vir mais vezes para frente da fila; Contras: impossvel estimar com preciso o tempo de todos os processos, essas estimativas podem gastar tempo de CPU e ter uma margem de erro muito grande; 5. HRRN (Highest Response Ratio Next): Tambm conhecida como Prxima Taxa de Resposta Mais Alta. Organiza a fila por ordem do tamanho do tempo de uso da CPU, levando em considerao tambm, o tempo de espera na fila. O valor que vai definir a ordem dos processos na fila de escalonamento dado por: (Tamanho do Tempo + Tempo de Espera na Fila) / Tamanho do Tempo. Estratgia: No Preemptiva; Prs: Equilibra o tempo de resposta entre os processos curtos e longos e impede que o escalonador adie processos indefinidamente; Contras: impossvel estimar com preciso o tempo de todos os processos, essas estimativas podem gastar tempo de CPU e ter uma margem de erro muito grande; 6. COM PRIORIDADE: atribudo a cada processo um nmero chamado de Prioridade (ver o tpico: Caractersticas dos Processos Escalonados) e quem estiver pronto e tiver recebido a maior prioridade, entra na CPU. Para processos com a mesma prioridade e sub-prioridade usada a Poltica Round Robin (RR).

52

MODULO 3 ESCALONAMENTO__________________________________________________Prof. TENORIO

Estratgia: Preemptiva; Prs: Considera fatores externos, importantes para definio da ordem de execuo pelos processos de usurio; Contras: Processos de prioridade baixa podem ficar esperando indefinidamente. Para reduzir esse fator contra, em prioridades dinmicas, o escalonador poder reduzir a prioridade de processos com alta prioridade para dar lugar a processos de baixa prioridade na CPU. Essa reduo de prioridade deve ser calculada a cada interrupo do sistema.

7. MLTIPLAS FILAS: Tambm conhecido como Filas Multinveis de Retorno (em ingls, Multilevel FeedBack Queues). Essa estratgia foi pensada para: Favorecer processos pequenos; Favorecer processos limitados por E/S para atingir uma boa utilizao dos dispositivos de E/S; Determinar a natureza de um processo to rpido quanto possvel e escalonar o processo de acordo.

Nesta poltica, cada processo associado a uma fila, de acordo com a sua prioridade, ou seja, ao invs de uma nica fila para todos os processos, temos vrias filas menores de acordo com os nveis de prioridade. O processo de uma fila s executado quando todas as filas mais altas esto vazias. Cada fila feita baseada nas caractersticas dos processos (CPU Bound, I/O Bound, Batch, etc.) e poder ter seu prprio escalonador. Quando a prioridade for dinmica, os processos podem mudar de fila, caso mudem seu comportamento inicial (um processo I/O Bound pode passar a ser CPU Bound, por exemplo), aumentando assim a desempenho do sistema. Essa mudana de fila no acontece no caso da prioridade ser esttica. Estratgia: Preemptiva; Prs: Considera fatores externos, importantes para definio da ordem de execuo pelos processos de usurio. Favorece processos pequenos e limitados por E/S, alm de agilizar a determinao da caracterstica de um processo escalonado; Contras: Processos em filas de baixa prioridade podem ficar esperando indefinidamente,

8. ESCALONAMENTO GARANTIDO: Organiza a fila por ordem do tamanho do tempo de uso da CPU, assim como o SPN-SRTCF, porm o quantum que atribudo aos processos igual para todos, ou seja, os processos ficaram o mesmo tempo na CPU. Para o clculo do quantum de cada processo dividido o tempo total calculado para os processos pela quantidade de processos, o resultado dessa diviso ser o quantum de cada um dos processos. Sempre que um novo processo chega fila de escalonamento ou um processo conclui sua execuo, esse clculo refeito e os quantuns dos processos so atualizados. Estratgia: Preemptiva; Prs: Facilita e agiliza o clculo do quantum. Permite que o sistema saiba exatamente quando um processo ir entrar na CPU. Contras: difcil estimar com preciso o tempo de todos os processos;
53

MODULO 3 ESCALONAMENTO__________________________________________________Prof. TENORIO

9. ESCALONAMENTO POR FRAO JUSTA (Fair Share Scheduling FSS): Organiza a fila por ordem de prioridade, e faz o clculo do quantum da mesma forma que o Escalonamento Garantido. Porm, o resultado da diviso atribudo, no a um processo, mais a um grupo de processos. Esses grupos so definidos devido a sua afinidade na execuo, mas principalmente a identificao do usurio que o criou. Por exemplo, imagine uma rede de computadores onde os usurios dos terminais fazem vrias requisies ao servidor, atravs de vrios processos. O S.O do servidor criar um grupo para conter cada requisio de um mesmo usurio e atender esses grupos em um tempo que ser igual a todos. Dentro de um grupo o atendimento ser por ordem de prioridade. Estratgia: Preemptiva; Prs: Facilita e agiliza o clculo do quantum. Permite que o sistema saiba exatamente quando um processo ir entrar na CPU. Usurios de mesma prioridade tero tempos iguais de uso do sistema; Contras: difcil estimar com preciso o tempo de todos os processos;

HIERARQUIA DE PROCESSO PARA O ESCALONADOR


s vezes necessrio que um processo pai oriente a seqncia de execuo de seus filhos, e isto no possvel para os escalonadores sozinhos. Para que isto acontea necessrio que o escalonador seja parametrizado e os parmetros passados pelo processo Pai. O comportamento da poltica no muda com esses parmetros, porm, o mecanismo pode ser adaptado (autoadaptao) para essa nova realidade. Outra preocupao do escalonador ocorre em processos que precisam terminar em prazos especficos, o chamado Escalonamento por Prazo. Neste caso, o escalonador deve manter o prazo do processo sem degradar (causar espera excessiva) os demais processos da fila. Quem define o prazo de termino do processo pode ser o usurio, o S.O ou o processo pai. Por fim, alguns processos precisam ser executados em tempo real, ou seja, devem manter o processamento na velocidade do usurio. o chamado Escalonamento em Tempo Real. Sistemas crticos como o controlador de temperatura do reator de uma usina nuclear ou o painel de localizao de avies em um espao areo devem ser atualizados em frao de milsimos de segundos e para isso, no podem ficar na fila o tempo que o far perder esse tempo real, pois as conseqncias podem ser a perda de vidas humanas, por exemplo.

54

MODULO 3 ESCALONAMENTO__________________________________________________Prof. TENORIO

AVALIAO DAS POLTICAS DE ESCALONAMENTO


A escolha de uma poltica tem uma forte influncia no desempenho global do sistema, por isso, na hora de escolher qual poltica ser implementada, o programador de S.O deve verificar para que tipo de processos esse S.O ser utilizado e utilizar mtricas de desempenho, para adaptar melhor seu S.O a realidade de seu uso. Existem trs tipos diferentes de estratgias para o clculo de mtricas/desempenho das polticas de escalonamento. Vejamos quais so elas: 1. Anlise: Seria um estudo terico da poltica, ou seja, uma formulao matemtica da poltica utilizando modelos conhecidos como, por exemplo: 1.1. Redes de Filas; 1.2. Modelo de transies de processos; 1.3. Aproximao da realidade; 1.4. Diagramas de Estados Finitos (Autmato); 1.5. Mquinas de Turing; 1.6. Redes Neurais; 1.7. Clculo do Tempo mdio; Dever ser feita uma avaliao do modelo a ser utilizado. Essa tcnica tem um baixo custo, pois utiliza apenas caneta e papel e/ou algum software de clculos simples, porm a preciso desse mtodo tambm baixa, deixando uma margem de erro elevada. 2. Simulao: Atravs de uma coleo de dados supostos reais feitos uma simulao com simuladores de Sistemas Operacionais especficos, a exemplo do SOSim. Para supor estes dados feita uma coleta de dados estatsticos com base em escolhas: 2.1. Produo de grande volume de dados; 2.2. Consumo do tempo de processamento; Essa estratgia possui um custo mediano, devido ao tempo de criao do simulador, ou compra do mesmo, porm, possui uma preciso tambm mediana, no to ruim quando a anlise, nem to boa quanto estratgia a seguir. 3. Experimentao: colocar a poltica realmente para funcionar. Deve-se fazer uma construo do sistema a ser testado e a implementao de todas as polticas em baixo nvel, onde cada poltica colocada no sistema e posta pra rodar na prtica, o sistema calcular o desempenho em situaes reais de uso. Este mtodo o mais caro, pois requer implementao de baixo nvel, porm o mtodo mais seguro, pois o que produz os resultados baseados em experincias reais de uso. Como no temos tempo para fazer a Simulao e/ou a Experimentao, vamos conhecer agora, na prtica, uma tcnica de avaliao das polticas usando a estratgia de Anlise e o modelo usado ser o Clculo do Tempo Mdio. A escolha desse modelo vem de sua simplicidade, pois no requer conhecimentos alm das quatro operaes bsicas da matemtica.

55

MODULO 3 ESCALONAMENTO__________________________________________________Prof. TENORIO

CLCULO DO TEMPO MDIO


Neste caso necessrio definir algumas informaes sobre os processos que sero testados nessa Anlise. A frmula do tempo mdio dada a seguir.

Tempo Mdio =
Onde:

N = quantidade de processos escalonados; i = uma varivel que vai de 1 at N; Tcpu = tempo total de uso da CPU; Tc = taxa de chaveamento de processos, 0, para polticas no preemptivas; 1, para polticas preemptivas; A melhor poltica aquela que ter o menor tempo mdio calculado. Vejamos um exemplo. Supor que os processos possuem os dados da tabela abaixo.
Processos em ordem cronolgica de requisio a CPU P1 P2 P3 P4 P5 P6 Tamanho do Tempo de Uso da CPU 20 30 40 50 20 10 Prioridade 5.8 4.1 2.2 6.7 2.2 1.3 Turnaround 30 10 30 20 40 20

Vamos calcular o tempo mdio de todas as polticas de escalonamento com os dados da tabela dada. Lembrando que o valor que ser colocado nas equaes ser sempre o valor do Tamanho do Tempo de Uso da CPU. FIFO:
TmFifo = P1 + (P1+P2) + (P1+P2+P3) + (P1+P2+P3+P4) + (P1+P2+P3+P4+P5)+ (P1+P2+P3+P4+P5+P6) + Tc N TmFifo = 20 + (20+30) + (20+30+40) + (20+30+40+50) + (20+30+40+50+20) +(20+30+40+50+20+10) + 0 6 TmFifo = 20 + 50 + 90 + 140 + 160 + 170 + 0 6 TmFifo = 630 6 TmFifo = 105

ROUND ROBIN:
TmRR = P1 + (P1+P2) + (P1+P2+P3) + (P1+P2+P3+P4) + (P1+P2+P3+P4+P5)+ (P1+P2+P3+P4+P5+P6) + Tc N

56

MODULO 3 ESCALONAMENTO__________________________________________________Prof. TENORIO

TmRR = 20 + (20+30) + (20+30+40) + (20+30+40+50) + (20+30+40+50+20) +(20+30+40+50+20+10) + 1 6 TmRR = 20 + 50 + 90 + 140 + 160 + 170 + 1 6 TmRR = 631 6 TmRR = 105,16

SPN - STCF:
TmSTCF = P6 + (P6+P1) + (P6+ P1+P5) + (P6+P1+P5+P2) + (P6+P1+P5+P2+P3) + (P6+ P1+P5+P2+P3+P4) + Tc N TmSTCF = 10 + (10+20) + (10+20+20) + (10+20+20+30) + (10+20+20+30+40) + (10+20+20+30+40+50) + 0 6 TmSTCF = 10 + 30 + 50 + 80 + 120 + 170 + 0 6 TmSTCF = 460 6 TmSTCF = 76,66

SPN - SRTCF:
TmSTRCF = P6 + (P6+P1) + (P6+ P1+P5) + (P6+P1+P5+P2) + (P6+P1+P5+P2+P3) + (P6+ P1+P5+P2+P3+P4) + Tc N TmSRCF = 10 + (10+20) + (10+20+20) + (10+20+20+30) + (10+20+20+30+40) + (10+20+20+30+40+50) + 1 6 TmSTCF = 10 + 30 + 50 + 80 + 120 + 170 + 1 6 TmSTCF = 461 6 TmSTCF = 76,83

HRRN: Para se calcular o tempo mdio dessa poltica necessrio achar o valor de ordenao da fila, para que se possa ordenar essa fila, por esta poltica. Lembrando da frmula do valor de ordenao: (Tamanho do Tempo + Tempo de Espera na Fila) Tamanho do Tempo. ValorP1 = (20 + 30)/20 = 2,5 ValorP3 = (40 + 30)/40 = 1,75 ValorP5 = (20 + 40)/20 = 3 ValorP2 = (30 + 10)/30 = 1,33 ValorP4 = (50 + 20)/50 = 1,4 ValorP6 = (10 + 20)/10 = 3

Portanto a ordem da fila dada por: P2, P4, P3, P1, P5, P6 (do menor valor de ordenao para o maior). Agora podemos calcular o tempo mdio.
TmHRRN = P2 + (P2+P4) + (P2+P4+P3) + (P2+P4+P3+P1) + (P2+P4+P3+P1+P5) (P2+P4+P3+P1+P5+P6) + Tc N TmHRRN = 30 + (30+50) + (30+50+40) + (30+50+40+20) + (30+50+40+20+20) + (30+50+40+20+20+10) + 0 6 TmHRRN = 30 + 80 + 120 + 140 + 160 + 170 + 0 6 TmHRRN = 700 6 TmHRRN = 116,66

57

MODULO 3 ESCALONAMENTO__________________________________________________Prof. TENORIO

COM PRIORIDADE:
TmComPrioridade = P6 + (P6+P3) + (P6+P3+P5) + (P6+P3+P5+P2) + (P6+P3+P5+P2+P1) + (P6+P3+P5+P2+P1+P4) + Tc N TmComPrioridade = 10 + (10+40) + (10+40+20) + (10+40+20+30) + (10+40+20+30+20) + (10+40+20+30+20+50) + 1 6 TmComPrioridade = 10 + 50 + 70 + 100 + 120 + 170 + 1 TmComPrioridade = 521 TmComPrioridade = 86,83 6 6

MLTIPLAS FILAS:
TmMultiplasFilas = P6 + (P6+P3) + (P6+P3+P5) + (P6+P3+P5+P2) + (P6+P3+P5+P2+P1) + (P6+P3+P5+P2+P1+P4) + Tc N TmMultiplasFilas = 10 + (10+40) + (10+40+20) + (10+40+20+30) + (10+40+20+30+20) + (10+40+20+30+20+50) + 1 6 TmMultiplasFilas = 10 + 50 + 70 + 100 + 120 + 170 + 1 TmMultiplasFilas = 521 6 6 TmMultiplasFilas = 86,83

GARANTIDO:
TmGarantido = P6 + (P6+P1) + (P6+ P1+P5) + (P6+P1+P5+P2) + (P6+P1+P5+P2+P3) + (P6+ P1+P5+P2+P3+P4) + Tc N Tm TmGarantido = 10 + (10+20) + (10+20+20) + (10+20+20+30) + (10+20+20+30+40) + (10+20+20+30+40+50) + 1 6 TmGarantido = 10 + 30 + 50 + 80 + 120 + 170 + 1 6 TmGarantido = 461 6 TmGarantido = 76,83

POR FRAO JUSTA:


TmFJusta = P6 + (P6+P3) + (P6+P3+P5) + (P6+P3+P5+P2) + (P6+P3+P5+P2+P1) + (P6+P3+P5+P2+P1+P4) + Tc N TmFJusta = 10 + (10+40) + (10+40+20) + (10+40+20+30) + (10+40+20+30+20) + (10+40+20+30+20+50) + 1 6 TmFJusta = 10 + 50 + 70 + 100 + 120 + 170 + 1 TmFJusta = 521 6 6 TmFJusta = 86,83

Avaliando os resultados, verificamos que a melhor poltica, neste caso, a SPN-STCF, pois tem o menor tempo mdio calculado.

58

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

MODULO 4 GERNCIA DE MEMRIA


Historicamente, a memria sempre foi vista como um recurso escasso e caro. Uma das maiores preocupaes dos projetistas foi desenvolver Sistemas Operacionais que no ocupassem muito espao de memria e, ao mesmo tempo, otimizassem a utilizao dos recursos computacionais. Mesmo com a reduo do custo e conseqente aumento da capacidade, seu gerenciamento um dos fatores mais importantes no projeto de Sistemas Operacionais. Ao sistema operacional destinado a funo de coordenar e gerenciar a utilizao de todas as memrias do computador de forma eficiente. Este servio implementado pelo sistema operacional atravs do Gerenciador de Memria. O Gerente de Memria a parte do S.O que faz o Gerenciamento de Memria, ou seja, controla quais partes da memria esto sendo utilizadas e quais no esto. Alm disso, ele aloca nova rea de memria aos processos que necessitam e tambm libera espao de memria quando os processos terminam. Outra funcionalidade do Gerenciador de Memria controlar o processo de swapping (troca de processos entre a memria e o disco e vice-versa), que estudaremos a fundo mais adiante. Sintetizando, temos que as funes bsicas do Gerente de Memria: Controlar as partes da memria que esto em uso ou no; Alocar memria entre os processos; Realizar o Swapping;

HISTRICO
1 Gerao: No existia S.O. A programao era externa e dependia do programador. As memrias (em cartes perfurados ou fitas magnticas) apenas armazenavam dados e no existia gerenciamento da memria. 2 Gerao: O programa armazenado (dados e instrues) na memria real em tempo de execuo. Existe um sistema batch para controlar o programa armazenado. Apenas um processo e o S.O eram colocados na memria em um instante de tempo. Monoprogramao.

SO

Espao de Memria

Processo nico

O que sobra do SO

Memria Principal
59

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Figura 4.1: Memria Monotarefa 3 Gerao: Aqui comea a multiprogramao, portanto a memria passa a ser compartilhada entre o S.O e vrios processos simultaneamente. Somente nesta gerao que aparece o Gerenciamento de Memria.

Figura 4.2: Memria Multitarefa.

CONCEITOS FUNDAMENTAIS

Memria Real: Memria contnua suprida pelo hardware. Ela realmente existe e pode ser usada. A memria real conhecida por vrios termos: Memria principal, fsica, primria, RAM, etc. Memria Virtual: Memria contnua vista pelos processos. Ela armazenada no disco. Para ser usada preciso usar o swapping.

Para que um processo seja executado, este deve estar na memria real. Se fosse possvel executar processos a partir da memria virtual, a execuo seria muito lenta e invivel nos dias de hoje. A memria um grande vetor de palavras ou bytes (o tamanho de uma palavra depende de cada mquina), cada qual com seu prprio endereo. A CPU busca instrues do programa em memria de acordo com o valor do registrador contador de programas (PC Program Counter, que no caso dos microprocessadores Intel x86, chamado de IP Instruction Pointer, ou seja, Ponteiro de Instrues). Estas instrues podem causar a busca ou o armazenamento de dados para endereos especficos de memria. Tipicamente, um ciclo de execuo de uma instruo de processador primeiramente carregar uma instruo da memria para o processador. A instruo ser decodificada e pode fazer com que operandos sejam carregados da memria. Aps a execuo da instruo sobre os operandos (por exemplo, uma soma), resultados eventualmente podem ser armazenados de volta na memria. Vale observar que a unidade de memria da mquina apenas enxerga uma seqncia de endereos de memria; ela no sabe como esses endereos so gerados (se o contador de instrues, se uma referncia a operandos, etc.), ou o qu so seus contedos (se so instrues ou dados). Assim, nossa preocupao no saber como um programa determina quais endereos

60

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

de memria ele precisa acessar, mas sim, em saber qual a seqncia de endereos que o programa executando deseja acessar. Se para executar um processo ele precisa estar na memria real, ento, por que utilizar memria virtual? o Facilidade: Com a memria virtual, os detalhes de implementao da memria real ficam a cargo do S.O deixando os programas mais simples de serem implementados. Imagine que, ao invs de declarar variveis, fosse necessrio enderear variveis na memria. Para o endereamento, o programador dever conhecer o barramento de memria, os endereos disponveis, preocupar-se com os outros processos em execuo, alm de detalhes que deixariam a programao muito mais demorada e complexa; o Custo: O preo por bit da memria real muito maior do que um bit da memria virtual. Quanto custa um bit de memria real e de HD no comrcio hoje? E h dois anos? o Tamanho: A memria real hoje muito pequena em relao demanda de memria dos processos, visto que os usurios querem executar diversas aplicaes simultaneamente, alm das funes que o S.O necessita que fiquem sempre ativas na memria para garantir o bom funcionamento do sistema; Comparando Memria Fsica com Memria Virtual Memria Real Fsica Sem proteo Tamanho Pequeno Compartilhamento Visvel Memria Virtual Abstrata Protegida pelo S.O Tamanho Limitado pela Arquitetura Compartilhamento Transparente

Compartilhamento de Dados Compartilhamento de Dados e Cdigo Figura 4.3: Comparao entre memria Real e Virtual Evoluo do consumo de memria real pelo S.O: Sistema Operacional Data de Requisito Mnimo Requisito Recomendado Lanamento de Memria de Memria Windows 1.0 11/1985 256 Kb 256 Kb Windows 2.03 11/1987 320 Kb 320 Kb Windows 3.0 03/1990 896 Kb 1 Mb Windows 3.1 04/1992 2.6 Mb 4 Mb Windows 95 081995 8 Mb 16 Mb Windows NT 4.0 08/1996 32 Mb 96 Mb Windows 98 06/1998 24 Mb 64 Mb Windows ME 09/2000 32 Mb 128 Mb Windows 2000 Pro 02/2000 64 Mb 128 Mb Windows XP Home 10/2001 64 Mb 128 Mb Windows XP Pro 10/2001 128 Mb 256 Mb Windows Vista 01/2007 1024 Mb 2048 Mb Ultimate Figura 4.4.: Evoluo do consumo de memria real pelo S.O
61

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Velocidade da Memria: Quanto menor a quantidade de memria a ser acessada, mais rpida ela ser, ou seja, mais rpido dividir 1 Mb de memria do que 1 Gb; Custo da Memria: Quanto maior a quantidade de memria, mais barato ser o custo por byte dessa memria;

HIERARQUIA DE MEMRIA
A hierarquia de memria contm nveis caracterizados pela velocidade e custo da memria em cada nvel. Como sabemos, os computadores utilizam uma hierarquia de memria em sua organizao, combinando memrias volteis e no-volteis, tais como: memria cache, memria principal e memria secundria. A tabela mostrada na figura 4.5, mostra os tipos de memria em organizao hierrquica, da mais importante para a menos importante.

Memria Real Memria Virtual

REGISTRADORES: esto na placa me; MEMRIA CACHE: rpida, pequena e cara; MEMRIA PRINCIPAL: programas carregados para execuo RAM; MEMRIA SECUNDRIA: Usada para gravar permanente ROM; MEMRIA TERCIRIA: Fitas magnticas e pticas regravveis, lentas e baratas. Figura 4.5.: Hierarquia de memria

GERENCIAMENTO DE ESPAO/TEMPO

Como j foi dito, para que um programa entre em execuo necessrio que o mesmo esteja na memria real. Porm, no necessrio que o processo esteja inteiramente na memria real, basta que parte dele esteja e a execuo j pode ser realizada. A necessidade de no se colocar o processo inteiro na memria vem da quantidade de memria disponvel. Alguns processos, um pouco maiores, j ocupariam praticamente toda a memria se colocados inteiros e a multitarefa estaria comprometida. Existem trs regras que garantem que um processo possa ser executado colocando-se apenas uma parte dele na memria. So elas: Regra 90-10: Essa regra afirma que 90% de todo o tempo gasto com a execuo de um processo est em apenas 10% de seu cdigo. Os outros 90% do cdigo, so executados de maneira quase que instantnea e levam apenas 10% do tempo total do processo na CPU. Nessa parte do cdigo, que consome praticamente todo o tempo de execuo, esto s estruturas de repetio e as recurses, o restante composto por estruturas rpidas, como atribuies, condies e clculos matemticos, entre outros cdigos simples e rpidos. Essas estruturas mais lentas (10% do cdigo) so as que realmente precisam ficar na memria real;

62

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Seqencialidade: A execuo do algoritmo do processo feita de maneira seqencial, ou seja, a segunda linha ser executada depois da primeira, a terceira depois da segunda e assim por diante, permitindo que sejam colocadas, inicialmente, apenas as primeiras linhas do cdigo, depois essas linhas so retiradas para a entrada das linhas seguintes e assim por diante at o fim da execuo do processo; Princpio da Localidade: Este princpio afirma que uma execuo futura se comporta como uma passada, ou seja, em vrios casos, o que acabou de ser executado ser executado novamente ou as linhas que se seguem. Este princpio se divide em: Localidade Temporal: Sero referenciadas as mesmas localidades que foram referenciadas no passado recente, ou seja, um loop repete os comandos; Localidade Espacial: Sero referenciadas as localidades prximas daquelas referenciadas no passado recente, ou seja, os processos referenciaro as posies de memria vizinhas quela que acabou de ser referenciada;

CONCEITOS BSICOS NO ESTUDO DO GERENCIAMENTO DE MEMRIA

1. Relocao: Acontece quando as partes de um processo so colocadas, na memria real, ora em um endereo, ora em outro, ou seja, o processo pode comear em um endereo X, depois de ser relocado para um endereo Y, e assim por diante. A relocao geralmente feita com uso dos registradores Base e Limite que veremos mais adiante; 2. Compactao de Memria: a reagrupao de pequenos espaos de memria livre em um espao maior. Isto seria muito bom se no gastasse tempo do processador; 3. Hardware de Suporte a Proteo: Dispositivo fsico que faz a traduo dos endereos virtuais em reais. A operao em modo dual; 4. Endereamento: Sistema do S.O de controle do local onde sero alocados os processos. Este sistema pode ser criado das seguintes formas: Absoluto: O processo programado para um nico espao de memria e seus endereos so constantes, ou seja, no podem ser alterados durante a execuo do processo. um tipo inflexvel e em desuso; Relativo: O processo pode ser alocado em qualquer espao de memria disponvel que lhe caiba. Para possibilitar essa flexibilidade de alocao, o S.O faz uso de dois registradores especiais. So eles: Registrador Base: guarda o endereo inicial do espao de memria; Registrador Limite: guarda o tamanho do espao de memria;

63

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

5. Espao de Endereamento: So todos os endereos que podem ser manipulados por um programa, sejam eles reais ou virtuais. Um S.O que gerar endereos de 32 bits poder executar programas de at 232 bytes ou quatro gigabytes. O recurso mnimo de memria de um processo o total de espao que suas variveis globais ocupam e os recomendados so todas as variveis do processo, sejam elas globais, locais ou de DLLs; 6. Overlay: Tcnica de separao do programa em mdulos. O processo dividido em partes e cada parte carregada de acordo com a necessidade do programa, tendo sempre um mdulo ativo. Os mdulos so independentes entre si, ou seja, enquanto um estiver na memria outro no precisa estar. A rea de overlay ento o espao que sobra da memria, descontando a parte do programa que deve estar sempre na memria. A definio da rea de overlay atribuio do programador. A necessidade do Overlay vem quando o programa precisa de mais memria do que est disponvel no sistema para ele;

Figura 4.6.: Exemplo de Overlay

c rea de Overlay Poro mnima do programa do usurio que deve permanecer em memria at o final da execuo Sistema Operacional b b

fase de inicializao

fase de processamento b b

fase de gerao de resultado

Figura 4.7.: Estrutura tpica do Overlay

7. Overhead: a sobrecarga no uso da memria. Acontece quando so inicializados mais programas do que a capacidade total do computador. Neste caso, h um desperdcio de memria na tentativa de executar programas que no sero executados pela falta de capacidade da mquina. 8. Reentrncia: a capacidade de se aproveitar uma rea de cdigo esttica comum (cdigo executvel somente leitura), carregando-a na RAM apenas uma vez e compartilhando-a entre vrios usurios ou programas. A reentrncia implementada pelos programadores dos
64

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

aplicativos e suportada pelo S.O. utilizada para evitar desperdcios de memria RAM quando vrios usurios invocam um mesmo programa, ou um mesmo usurio abre vrias instncias do mesmo programa, o S.O detecta um cdigo comum j carregado e simplesmente faz um novo compartilhamento dessa parte. Mesmo assim, preciso que a cada instncia em execuo esteja associada a uma rea de dados independente, pois normalmente as tarefas em curso so distintas. Cdigos reentrantes podem aparecer em utilitrios do S.O, compiladores e linkers, editores de texto, etc.

PROBLEMAS DO GERENCIAMENTO DE MEMRIA

J conhecemos os objetivos e funes bsicas do gerente de memria. Na tentativa de atingir tais objetivos, alguns problemas surgem e precisam de tratamento. Esses problemas no possuem soluo, por isso, o gerente de memria deve tentar, ao mximo, minimizar o impacto destes problemas no sistema. So eles:

Proteo: Um processo no pode referenciar um espao de memria reservado a outro processo ou ao S.O para haver integridade dos dados e das execues. Quando um processo tenta invadir espao alocado a outro processo, cabe ao S.O simplesmente fechar o processo que tentou realizar tal invaso. Para ajudar a garantir que a proteo ser feita, o S.O faz uso dos registradores Base e Limite; Fragmentao: Acontece quando existe memria livre e um processo no pode utilizla. Existem dois tipos de fragmentao, so eles: Interna: Quando alocado ao processo mais memria do que ele realmente necessita. Como um processo no pode usar espao reservado para outro processo, essa sobra de memria ficar ociosa. Exemplo: Um processo de 60 Kbytes que ocupe um espao de 100 Kbytes, deixar 40 Kbytes inativos e perdidos durante a sua execuo; Externa: Quando existe memria disponvel ao processo e o mesmo no pode utiliz-la, pois a quantidade solicitada pelo processo no est em uma seqncia contgua, ou seja, a parte livre da memria est separada por espaos preenchidos dessa memria. Exemplo: um processo de 100 Kbytes, no poder utilizar-se de dois espaos de memria de 50 Kbytes, se estes estiverem separadas por espaos alocados a outros processos;

Page Fault: Como j sabemos, para um processo executar, necessrio que apenas parte desse processo esteja na memria real. Acontece o Page Fault quando o processo deseja executar uma parte de si mesmo que no est carregada na memria real. Quando isso acontece, o processo deve solicitar ao S.O que carregue a parte que est faltando, para que o processo possa prosseguir com sua execuo corrente. Quando o S.O recebe uma solicitao dessas, ele busca a parte solicitada na memria virtual e escolhe um espao para carregamento. Se memria no disponvel, ento ele escolhe a memria que ser liberada, e depois carrega a parte nova no disco. Em seguida, devolve o controle do processador ao processo;
65

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

SWAPPING
a troca de processos entre a memria real e virtual. Sempre que um processo inicializado ele vai integralmente para a memria virtual. Quando so escolhidos para executar, parte deles entra a memria real, ou seja, fazem um swapping da memria virtual para a memria real. O swap a extenso da memria real no disco, ou seja, memria virtual. No Windows, o arquivo de swap um arquivo de uso exclusivo do S.O criado na partio do sistema, j no Linux, o arquivo de swap criado numa partio separada do HD, exclusiva para essa funo, na instalao do S.O. Na memria virtual, existe um espao reservado para a realizao de swapping, que chamado de Espao de Troca. Esse espao similar a uma varivel auxiliar, utilizada na troca de valores entre duas variveis em um algoritmo qualquer. Existem dois tipos de swapping: Swapping IN: Quando os processos entram na memria real; Swapping OUT: Quando os processos retornam a memria virtual;

Swapping IN Memria Virtual Swapping OUT Figura 4.8.: tipos de Swapping Memria Real

Quando os processos esto na memria virtual e precisam fazer o swapping IN, eles no so movidos da memria virtual para a real, e sim, feita uma cpia do processo na memria real. Caso o processo precise sair da memria real para liberao de espao e suas informaes no tiverem sido modificadas, nenhum procedimento realizado, pois o processo j se encontra na memria virtual e seus cdigos da memria real sero simplesmente sobrepostos. Caso o processo tenha sido modificado na memria, feita uma atualizao dele na memria virtual. Essa atualizao o que chamamos de swapping OUT. Para o S.O ter conhecimento de que partes do processo foram alteradas na memria real, existe um arquivo de swapping, chamado Swapping File, que registra o endereo de todas as partes do processo que foram modificadas durante sua execuo na memria real. Para que a tcnica de swapping funcione, necessrio um loader (carregador) que implemente relocao dinmica, pois o processo pode voltar para uma espao de memria diferente da anterior. A tcnica de swapping permite que quando o S.O ou um processo entra em estado de trashing (muitos page faults e altas taxas de paginao), algumas pginas ou segmentos sejam descarregados (swapping out) e, mais tarde, quando for conveniente, sejam trazidos de volta (swapping in).

66

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

TRADUO DE ENDEREOS
Inicialmente, os processos ao serem inicializados, vo integralmente para a memria virtual. Quando so escolhidos para executar, parte deles entra a memria real. Todas as vezes que uma parte de um processo que est na memria virtual entra na memria real necessrio realizar o procedimento de traduo de endereos. Essa traduo visa transformar os endereos virtuais das partes do processo que vo entrar na memria real em endereos reais. Nos sistemas de computao, a operao de traduo de endereos virtuais em reais pode ser feita via software (sem suporte do hardware) ou via hardware. O hardware responsvel pela traduo de endereos chamado de MMU (Memory Management Unit). A complexidade da MMU varivel de acordo com a funcionalidade oferecida (mecanismos de suporte para proteo, carga de programas, traduo de endereos lgicos a endereos fsicos, etc.). Na traduo, a CPU envia o endereo virtual a MMU e este lhe devolve o endereo real, como mostra a figura 4.9.

Figura 4.9.: Esquema de traduo de endereos. A MMU aparece com uma caixa preta

Na traduo, utilizada a Tabela de Diviso de Memria (o nome da tabela depende da forma de organizao da memria, que veremos mais adiante). Essa tabela contm todos os endereos virtuais e reais disponveis no sistema para o S.O e para os processos. Tambm so utilizados os registradores Base e Limite. Para agilizar o processo de traduo de endereos, adicionada ao sistema, uma memria cache especial que ir manter as entradas da Tabela de Diviso de Memria mais recentemente utilizadas, ou seja, antes de fazer uma consulta onerosa Tabela de Diviso de Memria, o sistema procura a traduo na cache, caso no encontre, ele far a consulta a tabela. Essa cache chamada de TLB (Translation Lookaside Buffer). A TLB simplesmente uma tabela pequena, de poucas entradas, que possui alguns endereos reais e seus respectivos endereos virtuais. Ela nica, compartilhada e est no hardware. S tem acesso a TLB o processo que est no estado Em Execuo. Quando um processo interrompido a TLB salva em seu registro descritor. A TLB uma memria associativa e muito utilizada, pois a traduo um processo crtico. O esquema de traduo de endereos, com a TLB visto na figura 4.10.

67

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Figura 4.10.: Esquema de traduo de endereos com a TLB. A traduo de endereos fundamental para os sistemas de computao. Vimos como esse processo se encaixa no sistema, mas faltou algo muito importante. O que acontece dentro da MMU? Como feita essa traduo dentro da MMU? O esquema o seguinte. A MMU recebe o endereo virtual, atualiza o registrador Base pela TLB ou pela Tabela de Diviso de Memria e soma o contedo do registrador Base atualizado com o endereo virtual recebido. Se o resultado da soma for superior ao valor do registrador limite, ocorre um erro de proteo e o processo fechado pelo S.O. Caso o resultado da soma seja igual ou inferior ao valor do registrador Limite, ento esse resultado j o endereo real traduzido. O esquema deste algoritmo visto na figura 4.11.

Endereo Virtual
Limite

Tabela de Diviso de Memria

+ >

Base

TLB

Erro

Endereo Real

Figura 4.11.: Algoritmo de Traduo de Endereos Virtuais em Reais


68

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

ORGANIZAO DE MEMRIA
A organizao de memria diz respeito s formas com que o S.O divide a memria real e a memria virtual. O S.O pode dividir a memria de quatro formas, sendo que o programador do S.O s poder escolher uma destas formas para implementar, ou seja, a memria, dividida de uma maneira, no poder mais ser dividida de outra maneira pelo S.O. As formas que o programador do S.O tem para escolher na hora da implementao so descritas a seguir.

1. Particionamento
No particionamento a memria dividida em parties de tamanhos aleatrios. Pode ser feito de trs maneiras: Partio nica: Este tipo de alocao foi implementado nos primeiros S.Os monousurio/monotarefa e, hoje em dia, j no mais utilizado. Partindo-se da premissa que s existe um processo em execuo num dado instante, a RAM s poder ser dividida em duas parties: a partio dedicada ao S.O e a outra para esse programa nico. Neste caso, o programador dever se preocupar em desenvolver um sistema que no seja maior que a partio dedicada aos programas, mas estes podero ter acesso a qualquer regio da sua partio de memria. Para proteo do S.O, utilizado o registrador Limite, estabelecendo-se a regio da memria RAM a ser protegida do S.O. Esse tipo de alocao de fcil implementao, porm no faz um bom aproveitamento da RAM e dos outros recursos da mquina. Nesta forma de alocao, o uso de overlay seria uma forma de ultrapassar o limite de memria imposto pelo dispositivo fsico.

Figura 4.12.: Particionamento nico


69

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Partio Esttica: Tambm conhecida como alocao por partio fixa. Nos primeiros S.Os multitarefa, a memria era dividida em parties de tamanhos fixos, aleatrios, estabelecidos durante a inicializao do sistema. Esses tamanhos no poderiam mais ser alterados, exceto pela completa reinicializao do S.O. Em cada partio se encaixa um processo. Nesse novo esquema, o S.O usa uma tabela de controle para gerir os espaos alocados, seus respectivos tamanhos e processos associados, assim como, os espaos no alocados. Os primeiros programas, s trabalhavam com endereamento absoluto, isto , as referncias RAM eram baseadas em posies fsicas, forando sua execuo em uma partio especfica alocao particionada esttica absoluta. Os programas posteriores, j conseguiam trabalhar com endereamento relativo, isto , as referncias RAM eram alocadas apenas ao incio do cdigo, liberando sua execuo em qualquer partio livre alocao particionada esttica relocvel. Este mtodo tem um alto ndice de fragmentao interna e externa.

Figura 4.13.: Particionamento Esttico Particionamento Dinmico: Tambm conhecida como alocao por partio varivel. Na tentativa de eliminar os desperdcios dos esquemas anteriores, foi proposto um novo esquema que deixa de particionar a memria RAM em blocos, apenas separa o bloco relativo ao S.O e deixa o restante livre. Os processos solicitam memria ao S.O, recebem somente o tamanho solicitado e so carregados seqencialmente eliminando-se os espaos livres dos blocos at o preenchimento completo da RAM. Embora este novo esquema tenha suas vantagens, ele trs um novo problema: conforme os processos vo encerrando, eles vo criando lacunas (espaos livres entre blocos). Entretanto, a alocao particionada dinmica pode encaixar um novo processo em qualquer lacuna, mas nem sempre elas tm tamanho necessrio e surge novamente espao livre no final de uma lacuna, voltando ao problema da fragmentao externa. Existem dois modos de minimizar o problema das lacunas: Relocao: que gera uma enorme sobrecarga no sistema; Fuso de lacunas livres adjacentes, que gera menos sobrecarga no sistema;

70

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Figura 4.14.: Particionamento Dinmico

2. Paginao
A memria virtual dividida em blocos de mesmo tamanho, chamados de pginas. A memria real dividida em molduras (frames) no mesmo tamanho das pginas. As molduras iro receber as pginas durante a execuo do processo. O mapeamento entre um endereo virtual e real realizado por uma tabela de pgina exclusiva a cada processo, que fica residente na memria real, atravs de uma ETP (entrada na tabela de pginas). Na paginao, um endereo virtual formado por um NVP (nmero de pgina virtual) e um deslocamento dentro da pgina (offset). Alm de informaes sobre a localizao fsica da pgina virtual, a ETP contm outras informaes importantes como: Bit de validade (indica se est carregada na RAM); Bit de modificao (indica se foi modificada); Bit de referncia (indica se foi usada); Bit de proteo (indica o tipo de acesso permitido);

Na paginao de memria, as pginas de um processo podem ser alocadas em quaisquer espaos livres, mesmo que no sejam contguos (vizinhos), isso elimina a fragmentao externa. a nica forma de diviso que permite essa alocao no seqenciada de um processo na memria. Nesse mtodo de diviso de memria, acontece fragmentao interna e alto ndice de Page Fault. O page fault verificado pela tabela de pginas. Essa tabela deve ter um nmero mnimo dependente do processo e um nmero mximo que depende da quantidade de bits da arquitetura.

71

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Figura 4.15.: Paginao de Memria A Pgina O tamanho das pginas fixo e nico, definido pelo programador do S.O. Geralmente, os programadores optam por tamanhos de pgina entre 512 bytes e 64 Kbytes, sendo que um valor muito utilizado o de 4 Kbytes. Os espaos de endereamento lgico (tamanho da memria virtual) podem variar de 64 Kbytes (sistemas antigos) at muitos Gbytes (mquinas atuais). J os espaos de endereamento fsico so limitados pelo hardware de memria instalado na placa me. Dentro de cada pgina existe um espao reservado para o endereamento dessa pgina. Em arquiteturas de 32 bits, esse espao mede exatos 32 bits, conforme figura 4.16.

Figura 4.16.: Composio do endereo de pgina

72

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Na figura 4.16 verificamos que, dos 32 bits de endereamento da pgina, 20 indicam o endereo da pgina na memria (registrador Base) e 12 o tamanho do endereo (registrador Limite). O endereo virtual da pgina deve ser no mximo o comprimento da tabela de pgina. Se ele referenciar um valor maior porque ele est invadindo o espao de outro processo. Podem-se fazer nveis diferentes para as tabelas com o intuito de no carregar a tabela de pginas, ou seja, para que a tabela de pginas no fique muito grande (um milho de pginas, por exemplo).

Figura 4.17.: Pginas virtuais


Endereo Virtual - Entrada (Exemplo: 8.196) 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0

Tabela Virtual = 2 Parmetros usado como ndice para a tabela de pginas. 0 010 1 1 001 1 2 110 1 3 000 1 4 100 1 110 5 011 1 6 000 0 7 000 0 8 101 1 9 000 0 10 111 1 11 000 0 12 000 0 13 000 0 14 000 0 15 000 0 Tabela de pginas

Os 12 bits de deslocamento so copiados diretamente da entrada para a sada.

Endereo Fsico ou Real - Sada (Exemplo: 24.580)

1 1

0 0

0 0 0

0 0

0 0 0

1 0

Figura 4.18.: Exemplo de traduo de endereos na paginao. Operao interna de uma MMU de 16 pginas com 4Kb cada uma.

73

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

A Tabela de Pginas Todas as formas de diviso de memria guardam as informaes de suas partes em tabelas. Na paginao existe a Tabela de Pginas. Essa tabela composta por: 1. Nmero da pgina virtual (NPV): identifica uma nica pgina virtual equivalente entrada; de acordo com o tamanho de pgina utilizado, o endereo na memria virtual pode ser calculado; 2. Bit de presena: indica se a pgina est ou no carregada na memria principal; 3. Endereo do bloco: se a pgina estiver carregada na memria real, este campo informa o endereo real em que est alocada; 4. Bits de proteo: definem as permisses de acesso pgina, normalmente atravs de 2 ou 3 bits (leitura, gravao e eventualmente execuo); 5. Bit de modificao: indica se a pgina carregada na memria teve ou no seu contedo alterado; se teve, o contedo dever ser atualizado na memria secundria antes de a pgina deixar a memria principal;

3. Segmentao
Na segmentao, as memrias so divididas em segmentos, de acordo com a necessidade do processo. Um segmento uma regio lgica de memria contgua. Inicialmente, o sistema divide um segmento para o S.O e deixa o restante livre, aguardando requisies de processos.

Figura 4.19: Segmentos de memria Para os desenvolvedores, mais lgico enxergar o programa em blocos que representam um procedimento, uma funo, um vetor, uma pilha de dados etc., de tamanhos variados. Normalmente, o S.O limita o nmero mximo de segmentos de um processo e o tamanho mximo dos segmentos, mas o tamanho do segmento pode variar durante a execuo do processo, facilitando a implementao de estruturas de dados dinmicas. O mecanismo de mapeamento muito semelhante ao de paginao, os segmentos so mapeados atravs de TMS (tabela de mapeamento de segmentos) e os endereos so compostos por NSV (nmero do segmento virtual) e um deslocamento. Cada segmento possui uma ETS (entrada na tabela de segmentos) e, agora, tambm necessrio armazenar os tamanhos de cada segmento, pois eles so variveis. Na segmentao, s existe fragmentao externa, pois pode haver a formao de lacunas na memria real que no so preenchidos por processos maiores que essas lacunas. No existe fragmentao interna, j o tamanho do segmento definido pelo processo. Na segmentao existe a tabela se segmentos, que composta pelos cinco itens que compe a tabela de pginas, e os valores individuais dos registradores base e limite de cada segmento.

74

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Figura 4.20.: Segmentao de memria

4. Segmentao Paginada
Na segmentao paginada, a memria virtual dividida em segmentos, de acordo com a necessidade do processo e a memria real dividida em pginas de tamanhos fixos. O objetivo desta tcnica tentar tirar partido das vantagens das tcnicas e paginao e segmentao ao mesmo tempo, ou seja, da simplicidade arquitetnica da paginao e as facilidades de controle de acesso da segmentao. Na viso do programador, o processo continua sendo mapeado em segmentos de tamanhos diferentes em funo das subrotinas e estruturas de dados definidas no programa, no entanto, o S.O trata cada segmento como um conjunto de pginas de tamanho igual, mapeadas por uma tabela de pginas associada ao segmento e, com isso, os segmentos no precisam estar contguos na memria. Neste modo de gerenciamento, o mapeamento de endereos feito em duas etapas. O endereo virtual formado por um NSV (nmero do segmento virtual) mapeado a uma ETS (entrada na tabela de segmentos), cujo resultado mapeado a uma ETP (entrada na tabela de pginas), para se determinar o frame correspondente. Como so utilizadas duas tabelas (pgina e segmentos), elas ao organizadas em estruturas de rvores, com o intuito de agilizar a consulta. Os principais S.Os modernos implementam esta tcnica de gerenciamento de memria.

75

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Figura 4.21.: Segmentao Paginada de memria

Comparao entre as formas de organizao da memria Particionamento Paginao Iguais Complexa Simples Complexo Segmentao Necessidade do processo Simples Simples Simples Segmentao Paginada Virtual: Segmentao Real: Paginao Mediana Simples Complexo

Tamanho dos blocos de memria Proteo Compartilhamento Estruturas de Dados Dinmicas

Aleatrio Simples Complexo Ausente

Fragmentao Interna Pode Existir Pode Existir No existe Pode Existir Fragmentao Externa Pode Existir No Existe Pode Existir Pode Existir Programao Modular Dispensvel Dispensvel Indispensvel Dispensvel Alterao no Cdigo Simples Complexo Simples Complexo Velocidade Rpida Mediana Mediana Lenta Alocao Complexa Simples Complexa Simples Tamanho do Endereo Pequeno Grande Pequeno Grande Figura 4.22.: Comparao entre as formas de organizao de memria

76

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

ESTRATGIAS DE ALOCAO
Os Sistemas Operacionais implementam algumas estratgias para determinar em qual rea livre um programa ser carregado para execuo. Essas estratgias visam evitar ou diminuir o problema da fragmentao externa. A melhor estratgia a ser adotada por um sistema depende de uma srie de fatores, sendo o mais importante o tamanho dos programas acessados no ambiente. Independentemente do algoritmo utilizado, o sistema deve possuir formas de saber quais reas esto livres e quais no esto. Existem duas estratgias principais: Mapa de Bits e Lista Ligada. Mapa de Bits: esta estratgia divide a memria em pequenas unidades de alocao e a cada uma delas associado um bit no mapa de bits. Convenciona-se que um 0 no mapa indica que a unidade correspondente da memria est livre e 1 informa que est ocupada. A principal dificuldade em se utilizar o mapa de bits ocorre quando for necessrio, por exemplo, trazer para a memria um processo que ocupa k unidades de alocao. O Gerente de Memria deve, ento, procurar por k bits 0 consecutivos no mapa. Esta procura lenta, de forma que, na prtica, os mapas de bits raramente so usados, ainda que eles sejam muito simples de serem implementados. O mapa fica residente na memria real.

Figura 4.23.: Estratgia de alocao/liberao de memria que utiliza mapa de bits Listas Ligadas: esta estratgia utiliza uma lista encadeada para controlar a alocao/liberao de memria, onde tal lista contm as partes livres e ocupadas dessa memria. Uma parte pode ser um processo ou uma lacuna, conforme mostrado na Figura 4.24.

Figura 4.24.: Estratgia de alocao/liberao de memria que utiliza lista ligada

77

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Na lista ligada cada registro composto por quatro informaes como podemos ver na figura 4.25. P se processo; H se lacuna; Endereo na memria Tamanho da memria Ponteiro para o prximo registro

Figura 4.25.: Registro da lista ligada A lista pode estar ordenada por endereos de memria, assim como no mapa de bits, qualquer alterao nas posies de memria deve gerar uma alterao no mapeamento promovido pela lista ligada. Se a lista estiver ordenada por endereo uma atualizao mais rpida permitida sempre que um processo terminar de executar suas instrues ou for retirado da memria. A utilizao de uma lista duplamente encadeada facilita no processo de atualizao da mesma.

ESTRATGIAS DE GERENCIAMENTO
Um grande problema da gerncia de memria como manter na memria real os processos de forma a otimizar a velocidade de computao. As estratgias de gerenciamento de memria so projetadas para tirar o melhor proveito da RAM, tentando manter, na memria real, as partes do processo que sero utilizadas nas prximas execues. O objetivo dessas estratgias, na verdade, retardar o Page Fault, um problema que deixa o sistema bastante lento. As estratgias de gerenciamento so classificadas em: Estratgias de busca: determinam quando transferir um processo ou partes de um processo para a RAM. Existem duas estratgias de busca. So elas: Por Demanda: carrega a parte do processo no momento da solicitao, ou seja, do Page Fault. S carrega o que o processo pedir, na hora que ele pedir. Este mecanismo conveniente, na medida em que leva para a memria principal apenas as partes do processo realmente necessrias execuo do programa, deixando a memria mais livre a outros processos. Desse modo, possvel que partes no executadas do programa, como rotinas de tratamento de erros, nunca sejam carregadas para a memria. Em contra partida, aumenta o nmero de Page Faults no sistema; Por Antecipao: o sistema carrega para a memria principal, alm da parte referenciada, outras partes que podem ou no ser necessrias ao processo ao longo do processamento. Se imaginarmos que o programa est armazenado seqencialmente no disco, existe uma grande economia de tempo em levar um conjunto de partes do processo da memria virtual, ao contrrio de carregar uma de cada vez, com isso tem-se uma boa reduo na quantidade de Page Faults. Por outro lado, caso o processo no precise das pginas carregadas antecipadamente, o sistema ter perdido tempo e ocupado memria real desnecessariamente.

78

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Estratgias de posicionamento: determinam o local da RAM onde novos processos ou partes de um processo sero alocados. No caso da paginao, no existe a necessidade do processo estar em endereos seqenciados de memria, por isso, qualquer lugar livre pode ser utilizado para carregamento, sem nenhum problema. O problema surge na segmentao, quando o processo s poder ser carregado se houver um espao livre do tamanho de sua necessidade. As estratgias de gerenciamento de posicionamento para segmentao so classificadas em: Melhor ajuste (Best fit): Este algoritmo busca na lista inteira a melhor posio para armazenar o processo que est precisando de espao. Ele busca a lacuna cujo tamanho seja o mais prximo possvel do tamanho do processo. Desvantagem: Este algoritmo lento, pois precisa pesquisar toda lista cada vez que for chamado. Ele tambm resulta em grande desperdcio de memria, pois ele tende a dividir a memria em lacunas muito pequenas, que se tornam difceis de serem utilizados. Para facilitao bom ter a lista de segmentos em ordem crescente de tamanho; Pior ajuste (Worst fit): aquele que sempre aloca ao processo a maior lacuna disponvel, de forma que tal lacuna, quando dividida, resulta em uma nova lacuna suficientemente grande para abrigar outro processo. Desvantagem: Este algoritmo no apresenta bons resultados prticos, alm de ser lento, pois tambm precisa pesquisar toda lista cada vez que for chamado, para encontrar a maior lacuna disponvel. Para facilitao bom ter a lista de segmentos em ordem crescente de tamanho; Primeiro ajuste (First Fit): O Gerente de Memria procura ao longo da lista de segmentos at encontrar uma lacuna que seja suficientemente grande para abrigar o processo. A lacuna ento quebrada em dois pedaos, um para o processo e outro para o espao no-utilizado, exceto no caso, altamente improvvel, do tamanho da lacuna corresponder exatamente ao do processo. Vantagem: Este algoritmo extremamente rpido, pois procura no mnimo de tempo possvel. Para facilitao bom ter a lista de segmentos em ordem crescente de endereos; Prximo Ajuste (Next Fit): uma pequena variao do algoritmo do primeiro ajuste. Funciona exatamente igual ao algoritmo anterior, exceto pelo fato de guardar a posio onde ele encontra uma lacuna conveniente. Da prxima vez que o algoritmo for chamado, ele inicia sua busca deste ponto, em vez de comear de novo no incio da lista. Desvantagem: Este algoritmo tem uma performance um pouco pior do que o algoritmo do primeiro ajuste. Rpido Ajuste (Fast Fit): Este algoritmo mantm listas separadas para alguns dos tamanhos de lacunas mais requisitados. Por exemplo, poder ser criada uma tabela com n entradas, na qual a primeira entrada um ponteiro para o incio de uma lista de lacunas de 4Kb, a segunda para uma lista de lacunas de 8Kb, a terceira para lacunas de 12Kb e assim por diante. Com o Rpido Ajuste, a busca de uma lacuna de determinado tamanho muito rpida. Desvantagem: sua complexidade maior, uma vez que devem ser gerenciadas vrias listas de lacunas;

79

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

Estratgias de substituio: determinam quais processos ou que partes de um processo devero ser substitudos, ou seja, sair da memria real, no caso dela estar cheia, a fim de dar lugar aos processos ou partes de processos, que esto tentando entrar nessa memria. Essa escolha deve ser feita com cautela, pois ela est ligada diretamente a quantidade de Page Faults do sistema. A idia que seja escolhido o processo ou parte desse processo que demorar mais tempo para ser utilizado, dentre as partes que compe a memria real, com o intuito de retardar, o mximo possvel, o Page Fault. O problema que no h como saber quais so as partes do processo que o mesmo ir utilizar em sua prxima execuo, portanto devemos apenas estimar qual parte no ser utilizada nas prximas execues e retir-la da memria, carregando as partes solicitadas. Na busca da parte do processo que ir demorar mais tempo para ser utilizada, o S.O segue as seguintes premissas (Obs.: as premissas podem variar de S.O para S.O): 1 Pginas de processos concludos; 2 Pginas de processos bloqueados; 3 Pginas de processo prontos, que no so acessadas h muito tempo; 4 Pginas que no foram modificadas desde que foram carregadas, a fim de evitar o swapping out; No caso de todas as pginas/segmentos/parties carregadas na memria real no se encaixem nessas premissas, ou seja, no h processos concludos nem suspensos, os processos esto prontos, utilizando muito suas pginas e todas elas foram modificadas, o S.O apela para os Algoritmos de Substituio de Pginas. Cada S.O possui apenas um nico algoritmo de substituio, sendo este escolhido pelo programador do S.O. As opes que o programador tem para implementar em seu S.O sero vistas no tpico seguinte. Para entender melhor em que momento o S.O utilizar o algoritmo de substituio de paginas, observar a figura 4.26.

Figura 4.26: Fluxograma da solicitao de acesso s paginas


80

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

ALGORITMOS DE SUBSTITUIO DE PGINAS


1 Substituio tima: (MIN ou OPT): Seleciona a moldura que ser referenciada no futuro mais distante. a melhor poltica, pois sintetiza exatamente o objetivo dos algoritmos de substituio de pginas e apresenta a menor taxa de page faults, alm de ser de fcil descrio. O problema que, como j foi dito, no h como saber a pgina que ir demorar mais tempo para ser acessada. O algoritmo opera da seguinte maneira: no momento que ocorre um Page Fault, um certo conjunto de pginas est na memria. Uma dessas pginas ser referenciada em muitas das prximas instrues. Outras pginas no sero referenciadas antes de 10, 100 ou talvez 1000 instrues. Cada pgina pode ser rotulada com o nmero de instrues que sero executadas antes que a pgina seja inicialmente referenciada. O algoritmo timo simplesmente diz que a pgina com o maior rtulo deve ser removida, adiando-se o mximo possvel o prximo Page Fault. O nico problema com este algoritmo que ele no realizvel. No momento da falta de pgina, o sistema operacional no tem como saber quando cada uma das pginas ser referenciada de novo. Se esse algoritmo no pode ser implementado, por que ele existe? Bem, em um simulador, possvel executar esse algoritmo, com processos conhecidos, uma vez, para coletar os tempos de referncia e uma segunda vez, para calcular a taxa de Page Fault. Como ele possui o menor Page Fault, o valor calculado poder ser utilizado como comparativo para os demais algoritmos, ou seja, quanto mais prxima da taxa de Page Fault do algoritmo timo, melhor ser o algoritmo testado, para uma determinada situao.

2 Substituio Randmica (aleatria): Conhecido com RAND (Random Page Replacement), uma estratgia rpida e de fcil implementao. O algoritmo escolhe aleatoriamente a pgina que ser substituda. um mtodo pobre, pois as pginas retiradas podem estar freqentemente em uso gerando alta taxa de Page Faults. a popular lei de Murphy. 3 Substituio FIFO (First In, First Out): Seleciona a pgina que foi carregada a mais tempo na memria. O sistema operacional mantm uma fila de todas as pginas que esto na memria, por ordem cronolgica de carregamento. Na ocorrncia de um Page Fault, a pgina do incio deve ser removida, sendo a nova pgina, adicionada ao fim desta fila. O problema do FIFO que nada impede que as pginas mais antigas sejam as mais utilizadas, gerando muitos Page Faults no sistema. razovel pensar que quanto mais pginas alocadas ao processo, menor ser o Page Fault do mesmo, porm, Belady, Nelson e Shedler constataram que, quando aplicado o algoritmo FIFO, certos padres de referncia de pgina, causam, na verdade, um aumento na quantidade de Page Faults quando a quantidade de pginas alocadas ao processo aumentada. Esse fenmeno chamado de Anomalia de Belady.

81

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

4 No Usada Recentemente (NRU Not Recently Used): Seleciona a pgina que no foi referenciada em um passado recente. Para permitir que o sistema operacional colete estatsticas sobre quais pginas esto sendo usadas e quais no esto, muitos computadores com memria virtual possuem dois bits associados a cada pgina. Um bit, R ou bit de referncia, ativado pelo hardware sempre que a pgina a ele associada for referenciada. O outro bit, M ou bit de modificao, ativado pelo hardware quando uma pgina escrita. importante que estes bits sejam atualizados em qualquer referncia de memria, assim, essencial que eles sejam ativados pelo hardware. Uma vez que um bit for ativado, ele permanece ativado at que o sistema operacional o desative (por software). Os bits R e M podem ser usados para construir um algoritmo de paginao simples como se segue. Quando um processo iniciado, ambos os bits de pgina para todas estas pginas so declarados 0 pelo sistema operacional. A cada interrupo, o bit R zerado, para distinguir pginas que no foram referenciadas recentemente daquelas que tenham sido. Quando ocorre um Page Fault, o sistema operacional examina todas as pginas e as classifica em quatro categorias baseado nos valores correntes de seus bits R e M: Classe 0: no referenciada, no modificada; Classe 1: no referenciada, modificada; Classe 2: referenciada, no modificada; Classe 3: referenciada, modificada; Ainda que as pginas na classe 1 paream, primeira vista, impossveis de existir, elas ocorrem quando as pginas da classe 3 tm seu bit R zerado pela interrupo de tempo. O algoritmo NRU remove uma pgina carregada a mais tempo, da classe de numerao mais baixa no vazia. Implcito neste algoritmo que melhor remover uma pgina modificada que no foi referenciada pelo menos nos ltimo pulso de clock, que uma pgina no modificada, mas muito usada. As caractersticas principais do NRU que ele fcil de entender, eficiente de se implementar, e gera um desempenho que, embora no timo, geralmente tido como adequado. 5 Menos Usada Recentemente (LRU Least Recently Used): Seleciona a pgina que passou mais tempo na memria sem ser referenciada. uma boa aproximao da substituio tima e baseada em uma observao comum que as pginas muito usadas nas ltimas instrues, provavelmente o sero nas prximas instrues. Da mesma forma, pginas que no tm sido usadas por um longo tempo provavelmente continuaro sem uso. Esta observao sugere um algoritmo realizvel, porm de alto custo computacional. Para implementao completa do LRU, necessrio manter uma lista ligada de todas as pginas em memria, com a pgina mais recentemente usada no incio e a menos recentemente usada no final. A dificuldade que a lista deve ser atualizada em toda referncia de memria. Encontrar a pgina na lista, remov-la de sua posio corrente, e mov-la para o incio representa um esforo de CPU no desprezvel. O nico caminho a utilizao de um hardware especial, que far essa tarefa de maneira rpida, porm, aumentando o custo financeiro do sistema como um todo.

82

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

6 Mais Usada Recentemente (MRU Most Recently Used): Substitui a pgina que foi acessada h menos tempo pelos processos. Parte do princpio equivocado de que, se uma pgina foi muito referenciada, provavelmente j concluiu sua funo e no ser mais referenciada em um futuro recente. Essa deduo no faz sentido. Esse o algoritmo com o maior Page Fault calculado. Obs.: alguns autores no trazem este algoritmo e chamam o LRU (Least Recently Used) de MRU, devido traduo de Least para Menos. Favor, no confundir. 7 Segunda Chance Cclica: Este algoritmo uma variao do FIFO, a nica diferena que existe um bit R associado a cada pgina. Esse bit o bit de referncia de vai indicar se a pgina foi ou no utilizada em um passado recente. Se a pgina carregada h mais tempo (na frente da fila) tiver seu bit igual a zero, ela ser a escolhida. Caso seja igual a um, a pgina colocada no fim da fila de escolhas e seu bit zerado. A pgina que ficou na frente da fila passar pelo mesmo processo, at que se encontre uma pgina com bit igual a zero. Contudo, se todas as pginas tiverem sido recentemente referenciadas (todos os bits iguais a um), este algoritmo ir se comportar exatamente como o FIFO. 8 Relgio de Pginas: O algoritmo da segunda chance est sempre movendo pginas do incio para o final da lista. Ento, com a finalidade de solucionar este problema, desenvolveu-se o algoritmo do relgio, que possui uma lista ligada circular e um ponteiro que aponta para a pgina mais velha. Quando uma falta de pgina acontece, a pgina que est sendo apontada testada e, caso o seu bit R seja zero, ela deve abandonar a memria, porm se R for 1, R deve ser zerado e o ponteiro avana para o prximo n da lista. Este processo deve se repetir at que seja encontrado um n com R igual a zero. 9 Menos Freqentemente Usada (LFU Least Frequently Used): Substitui a pgina menos freqentemente usada ou menos intensivamente usada em todo seu histrico de acesso. contado o acesso de todas as pginas e quando ocorre uma substituio a menos referenciada sair da memria. Um problema desse algoritmo que pginas recentemente carregadas iniciaro com apenas uma referncia e logo podero ser substitudas, ou seja, necessrio um certo tempo na memria para que se possa verificar a real quantidade de acessos. Uma forma de aliviar o problema , ao invs de contar os acessos de maneira absoluta, contar os acessos por tempo de carregamento. 10 Substituio Longnqua: Nesse algoritmo criado um grafo com as sucesses de acessos, onde cada vrtice uma pgina e cada aresta representa dependncia entre as pginas. O algoritmo marca todos os vrtices como no referenciados (bit de referncia) e vai remarcando a cada acesso. Quando tiver que substituir, o algoritmo escolher a pgina no referenciada que representa o vrtice mais longe da raiz do grafo. Esse algoritmo bastante complexo e possui um tempo de processamento elevado, o que o afasta dos projetos reais de sistemas operacionais. O melhor algoritmo de substituio depende da finalidade do S.O, porm, podemos dizer que aquele que reduz o Page Fault, a freqncia e o tempo de acesso a memria.

83

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

PROJETO DE SISTEMAS PAGINADOS


No ato de escolher qual o melhor algoritmo de substituio de pginas a ser implementado, alm do custo, velocidade e taxa de Page Fault, algumas questes devem ser levadas. So elas: 1 Escopo: A poltica de substituio de pginas pode ser classificada conforme seu escopo, ou seja, dentre os processos residentes na memria principal quais so candidatos a ter pginas realocadas. Em funo deste escopo, pode ser definida como local ou global. Na poltica de substituio local, apenas as pginas do processo que gerou a falta de pgina so candidatas a realocao. Os frames dos demais processos no so avaliados para substituio. Na poltica de substituio global, todas as pginas alocadas na memria principal so candidatas a substituio, independente do processo que gerou o Page Fault.

Na verdade, nem todas as pginas podem ser candidatas a substituio. Algumas pginas, como as do ncleo do sistema, so marcadas como bloqueadas e no podem ser realocadas. 2 Tempo de Resposta: A velocidade de uma poltica pode ser medida pelo seu tempo de resposta, ou seja, pelo tempo que transcorre do momento em que ocorreu o Page Fault, at o completo carregamento da pagina solicitada pelo processo. O tempo de resposta calculado pela frmula abaixo: Tempo de Resposta = TA * TAM + (1 TA) * TATP Onde: TA a Taxa de Acerto, que a quantidade de vezes que o processo encontra a traduo na TLB; TAM o Tempo de Acesso a Memria real do sistema; TATP o Tempo de Acesso a Tabela de Pginas; 3 Trashing (degradao): Sobrecarga da memria. Pginas so retiradas da memria mesmo que elas ainda sejam referenciadas no futuro prximo, resultando em altssimos ndices de Page Faults, deixando o sistema completamente lento. 4 Locality: Base do princpio da localidade, j estudado anteriormente. Durante uma fase de execuo do programa, as referncias so feitas unicamente sobre um pequeno nmero de pginas. 5 Prefetching/Prepaging: base da estratgia de gerenciamento de busca antecipada, onde o carregamento das pginas de um processo feito antes que elas sejam referenciadas por causa de alguns fatores como Working Set.

84

MODULO 4 GERENCIA DE MEMRIA____________________________________________Prof. TENORIO

6 Working Set: Apesar de suas diversas vantagens, o mecanismo de memria virtual introduz um srio problema: caso os processos tenham na memria principal um nmero insuficiente de pginas para a execuo do programa, provvel que diversos frames referenciados ao longo do seu processamento no estejam na memria. Esta situao provoca a ocorrncia de um nmero elevado de Page Faults e, conseqentemente, inmeras interrupes. Neste caso, ocorre o trashing, provocando srias conseqncias ao desempenho do sistema. O conceito de working set surgiu com o objetivo de reduzir o problema do trashing e conseqentemente a taxa de Page Faults e est relacionado ao Locality. A partir da observao do princpio da localidade, Peter Denning (1968), formulou o modelo de working set. Working set definido como sendo o conjunto mnimo das pginas referenciadas por um processo durante determinado intervalo de tempo. O modelo de working set proposto por Denning possibilita prever quais pginas so necessrias execuo de um programa de forma eficiente. Para que isso seja possvel, deve-se estimar as pginas de um processo que esto sendo usadas constantemente. Caso o working set seja corretamente definido, em funo da localidade do programa, o Sistema Operacional dever manter as pginas do working set de cada processo residente na memria principal. Considerando que a localidade de um programa varia ao longo da sua execuo, o tamanho do working set do processo tambm varia (working set dinmico), ou seja, o seu limite mnimo de pginas reais deve acompanhar esta variao. A proposta inicial era de um working set esttico, porm logo se viu a limitao desse modelo. O working set refletir a localidade do programa, reduzindo a taxa de paginao dos processos e evitando, conseqentemente, o trashing. Na prtica, o modelo de working set serve como base para a maioria dos algoritmos de substituio de pginas, visto no tpico anterior. Ao realizar uma substituio de pginas, em prepaging, o working set de um processo deve ser integralmente substitudo, um nmero de pginas inferior ao working set, para um processo, no significa nada e para o sistema, apenas memria ocupada sem uso. Com isso, podemos definir que um processo pronto aquele que tem o seu conjunto de trabalho (workimg set) residindo na memria real do sistema.

85

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

MODULO 5 GERNCIA DE ARQUIVOS


O arquivo uma unidade lgica que rene informaes relacionadas. Seu armazenamento persistente1 e externo ao sistema2. Para que se possa manipular um arquivo necessrio, obrigatoriamente, um processo. Os arquivos devem ser abertos, antes de lidos ou escritos, e fechados logo aps a operao. O S.O deve apresentar, ao programador, um modelo abstrato com arquivos independentes dos dispositivos onde so implementados e gravados. Os arquivos so geralmente organizados em diretrios. Os diretrios so normalmente organizados de maneira hierrquica. O topo dessa hierarquia chamado de Raiz do Diretrio e a posio de cada arquivo nessa hierarquia chamada de Nome do Caminho do Arquivo. Essa hierarquia lgica, pois, fisicamente, os arquivos so fragmentados em blocos e espalhados aleatoriamente no disco. O S.O disponibiliza perifricos como se fossem arquivos. Um arquivo especial para facilitar os programadores e usurios, por isso, o gerente de E/S, que estudaremos no prximo mdulo, est intimamente ligado ao Gerente de Arquivos. Existe ainda um pseudo-arquivo, o PIPE, usado para conectar dois dispositivos ou para troca de mensagens entre processos. Um pipe um canal de comunicao, um redirecionamento de dados entre dois processos.

Figura 5.1.: Representao do Pipe

CONCEITOS BSICOS SOBRE ARQUIVOS

Vises sobre arquivos: Diz respeito forma com que os arquivos so vistos pelo usurio e pelo S.O. No ponto de vista dos usurios os arquivos podem ser vistos como: Cadeias de caracteres; Coleo de Registros; Do ponto de vista do S.O, todos os arquivos so blocos de tamanho fixo.

1 2

As informaes permanecem aps a reinicializao do sistema O sistema composto apenas da placa me, memria, processador e S.O.
86

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

Tipos de Arquivos: uma classificao dos arquivos de acordo com sua caracterstica mais importante. Os arquivos so classificados em: 1. Regulares (bytes ou binrios): Arquivos binrios e de sistema, DLLs, bibliotecas, etc.; 2. Diretrios: Os diretrios so arquivos que organizam logicamente outros arquivos. Possuem apenas ponteiros para os arquivos ou para outros diretrios; 3. Especiais de Caracteres ou Blocos: So arquivos que mapeiam perifricos, ou seja, so arquivos que permitem o acesso a perifricos. Eles so divididos, de acordo com o tipo de perifrico, em: Arquivos Especiais de Bloco: Usados para modelar dispositivos constitudos por um conjunto de blocos fixos endereveis randomicamente, tais como: Discos; Arquivos Especiais de Caractere: Usado para modelar dispositivos que so constitudos de cadeias de caracteres, tais como: Terminais e impressoras; 4. Arquivos Executveis: Possuem um cabealho especfico para execuo de instrues j estudado no mdulo 2. So os processos; 5. Arquivos No-Executveis: So os arquivos que no se enquadram nas classificaes anteriores, em sua maioria, arquivos de usurio. Podem ser formados por cadeias de caracteres ou seqncia de registros.

Atributos dos Arquivos: So informaes complementares dos arquivos, que o caracterizam. Essas informaes so importantes para os usurios, porm, no so essenciais ao S.O. Como exemplo, entre outros, temos: Tamanho do arquivo; Localizao (fsica e lgica); Acessibilidade (Restries de acesso); Tipo do Arquivo; Volatilidade (quantidade de alteraes); Atividade (quantidade de acessos/tempo); Data de Criao, modificao e acesso; Somente leitura (Restries de alterao); Oculto (visibilidade); Criptografia (codificao do contedo);

Operaes sobre Arquivos: So as aes que podem ser feitas com os arquivos, ou seja, tudo que pode ser feito com um arquivo ou com seus dados, como por exemplo: Criar/Destruir; Abrir/Fechar; Recortar/Copiar/Colar; Renomear; Listar contedo; Obteno/Definio de Atributos; Posicionar cursor; Criar/Remover um atalho; Ler/Escrever; Atualizar; Inserir/apagar;

Muitas destas operaes tambm podem ser feitas com diretrios. Lembre-se que o diretrio tambm um arquivo.

87

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

SISTEMA DE ARQUIVOS
O sistema de arquivos, tambm conhecido como gerente de arquivos, o componente do sistema operacional responsvel pelo: Gerenciamento de Arquivos: fornece os mecanismos para que os arquivos sejam armazenados, referidos, compartilhados e seguros; Gerenciamento de Armazenamento Auxiliar: aloca espao para os arquivos em dispositivos de armazenamento secundrio e tercirio; Mecanismo de Integridade do arquivo: garante que as informaes armazenadas em um arquivo, no sejam corrompidas. Quando a integridade do arquivo assegurada, os arquivos contm apenas as informaes que devem conter; Mtodos de Acesso: como os dados armazenados podem ser acessados;

O sistema de arquivos a parte do Sistema Operacional mais visvel para os usurios, por isso o sistema de arquivos deve apresentar uma interface coerente e simples (de altssimo nvel). Geralmente essa interface chamada de Gerenciador de Arquivos. Um bom gerenciador de arquivos pode fazer a diferena no momento em que um usurio vai escolher um S.O. Ao mesmo tempo, arquivos so normalmente implementados a partir de discos magnticos e como um acesso a disco demora cerca de 10.000 vezes mais tempo do que um acesso memria principal, so necessrias estruturas de dados e algoritmos que otimizem os acessos a disco gerados pela manipulao de arquivos. importante observar que sistemas de arquivos implementam um recurso em software que no existe no hardware. O hardware oferece simplesmente espao em disco, na forma de setores que podem ser acessados individualmente, em uma ordem aleatria. O conceito de arquivo, muito mais til que o simples espao em disco, uma abstrao criada pelo Sistema Operacional. Neste caso, temos o Sistema Operacional criando um recurso lgico a partir dos recursos fsicos existentes no sistema computacional. So exemplos de sistemas de Arquivos: MAC OS: Posix; Windows NT: NTFS; GNU/Linux: EXT3, ReiserFS, entre outros; Windows XP: FAT 32 (File Access Table Tabela de Acesso de Arquivos); Unix: I-node;

88

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

Componentes do Sistema de Arquivos


O sistema de arquivos composto por quatro componentes bsicos. So eles: 1. Gerenciamento: Trata da forma com que os arquivos so implementados e armazenados no meio fsico. 2. Identificao: Trata na nomenclatura dos arquivos; 3. Confiabilidade/Durabilidade: Integridade do arquivo independncia de falhas do sistema; 4. Segurana: Faz a manuteno da segurana das informaes; A seguir, a descrio detalhada de cada um desses componentes:

GERENCIAMENTO Estrutura de Arquivos: So as formas com que o arquivo fragmentado para que seja armazenado no disco. So elas: o No estruturados (Unix/DOS): so compostos por uma seqncia de bytes seqenciais; o Estruturado em registros de tamanho fixo (CP/M) espalhados aleatoriamente no disco; o Estruturado em rvore de registros (grandes computadores centrais);

Organizao dos discos: Refere-se maneira como os blocos de um disco so organizados para receber os arquivos, ou seja, so as formas de se organizar o disco lgico e encontrar o incio dos arquivos no disco. So elas: 1. Seqencial: Os blocos so organizados fisicamente na seqncia de seus dados no arquivo e so lidos um a um, at que o incio do arquivo seja encontrado; 2. Direto: Os blocos so organizados em uma ordem adequada a uma aplicao especfica. Seus endereos fsicos ficam armazenados em um dispositivo de armazenamento de acesso direto chamado DASD (Direct Acess Storage Devide) e o inicio do arquivo encontrado aps uma busca na DASD; 3. Seqencial Indexado: Os blocos so organizados em uma seqncia lgica de acordo com uma chave contida em cada registro. O sistema mantm um ndice contendo os endereos fsicos de certos registros principais (incio de arquivo, por exemplo). 4. Particionado: um arquivo (diretrio) que contm sub-arquivos seqenciais chamados de membros. O endereo do incio de cada membro armazenado no diretrio do arquivo;
89

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

Implementao/Alocao de Arquivos: O item anterior mostra as formas de se encontrar o incio do arquivo no disco, mas se o arquivo atualmente fragmentado e gravado no disco de maneira aleatria, como encontrar as demais partes do arquivo? Essa misso tratada pela implementao (alocao) dos arquivos no S.O. Existem vrias formas, so elas: o Alocao contgua (seqencial): Os arquivos so gravados de maneira seqencial no disco, portanto, ao encontrar o incio do arquivo (tpico anterior), o restante do arquivo est nos setores seguintes, conforme mostra a figura 5.2. Esta tcnica simples, mas est em desuso por gerar muita fragmentao externa no disco.

Figura 5.2.: Alocao Contnua

Figura 5.3.: Fragmentao Externa na Alocao Contnua

90

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

o Lista Encadeada: Tambm conhecida como lista encadeada sem ndice. Ao final de cada setor existe um ponteiro para o prximo setor, conforme mostrado na figura 5.4. Quando o setor for o ltimo, o ponteiro registra NIL. Vantagem: bastante simples e no tem fragmentao externa. Desvantagem: Acesso lento, pois para encontrar o n-simo elemento precisa-se passar antes pelos n-1 elementos anteriores, alm de gastar muito disco com endereamento.

Figura 5.4.: Lista Encadeada Sem ndice

o Tabular: Tambm conhecida como Lista Encadeada Com ndice. Ao invs de gravar o endereo no fim de cada setor criada uma tabela de alocao de arquivo com os endereos de cada setor de todos os arquivos, conforme mostra a figura 5.5. Essa tabela est na memria principal e cada partio do disco recebe sua tabela prpria. A desvantagem que essa tabela esttica e limitada. Um exemplo a tabela FAT. Para que essa tabela no fique exageradamente grande ou limitante ao nmero de setores do disco, so criadas sub-tabelas (FAT16, FAT 32, etc.). A FAT 16, por exemplo, capaz de armazenar o endereo de 216 setores de um disco, a FAT 32, 232 setores e assim por diante. Esse modelo utilizado em algumas verses do Windows por exemplo.

91

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

Figura 5.5.: Lista Encadeada Com ndice o Indexada: A estrutura indexada funciona de maneira muito similar a estrutura Tabular, porm, ao invs de se utilizar tabelas, ela faz uso de listas encadeadas, ou seja, cada arquivo possui uma lista encadeada. O registro inicial da lista contm as informaes do arquivo e o endereo dos setores iniciais, no final do registro existe um ponteiro para o registro seguinte. Do segundo registro em diante, o registro s contm endereos para os setores seguintes e o ponteiro para o prximo setor no final, conforme mostra a figura 5.7. Cada registro chamado de inode (ndex nodes ns de ndice). A medida que o arquivo cresce, a lista do arquivo cresce, isso dinamicamente. O Unix, por exemplo, usa essa forma de alocao. 1 I-Node Nome Endereos para blocos Endereos para blocos Endereos para blocos Endereos para blocos Apontador para o prximo I-Node Figura 5.6: inodes 2 I-Node Endereos para blocos Endereos para blocos Endereos para blocos Endereos para blocos Endereos para blocos Apontador para o prximo I-Node ...

92

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

Figura 5.7.: Alocao Indexada. Em qualquer uma das implementaes, seja ela seqencial, encadeada, tabular ou indexada, existe sempre uma estrutura para semelhante para a alocao os espaos livres. Esses espaos livres podem ser controlados pelo S.O da mesma maneira que o S.O faz o controle de espaos livre da memria do sistema. Reveja o tpico Estratgias de Alocao no mdulo 4.

Implementao de Diretrios O diretrio um tipo de arquivo, gerado pelo sistema de arquivos, que contm apenas uma cadeia de caracteres e ponteiros para o incio dos arquivos e/ou para outros diretrios, formando uma estrutura de rvore virtual. Os primeiros diretrios eram do tipo linear (um diretrio para todos os arquivos). Com a evoluo surgem os diretrios hierrquicos, com subdiretrios. O diretrio o incio da busca de um arquivo.

Compartilhamento de Arquivos: a possibilidade de se acessar um arquivo que est em um determinado diretrio, atravs de outros diretrios. Pode ser implementado de duas formas: 1. Ligao Simblica: No diretrio B existe apenas uma referncia ao endereo do arquivo que est no diretrio C, como mostra a figura 5.8. Neste caso, o link3 (conexo entre dois arquivos) aponta para o ponteiro que est no diretrio. Caso o arquivo seja apagado no diretrio de origem, o link perde a referncia do arquivo e sua posio no disco.

Com links, os arquivos passam a ser um grafo acclico dirigido em vez de uma rvore.
93

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

Figura 5.8.: Ligao Simblica 2. Ligao Fsica: Em um diretrio B existe realmente o endereo de um arquivo que est no diretrio C, conforme mostra a figura 5.9. Neste caso, o link aponta diretamente para o arquivo e se o mesmo for apagado no diretrio de origem, o link do diretrio secundrio permanece com a referncia do arquivo, portanto, o arquivo continua naquele diretrio. Isso acontece pelo fato de apagar um arquivo ser somente retirar sua referncia no diretrio e no limpar os setores do arquivo no disco.

Figura 5.9.: Ligao Fsica

Gerenciamento do Disco: O S.O cria um disco lgico para simular virtualmente o disco fsico, facilitando a implementao e proteo do mesmo, deixando essas tarefas transparentes aos processos. possvel dividir o disco em quotas (parties), onde cada partio possui seu sistema de arquivos independente dos demais. No momento de se dividir um disco em blocos deve-se ter a preocupao do tamanho do bloco. Se for muito grande, ocorre desperdcio de espao, se for muito pequeno, um arquivo ir ocupar muitos blocos, tornando o acesso/busca lento. Assim, o tamanho do bloco tem uma grande influncia na eficincia de utilizao do espao em disco e no acesso ao disco (desempenho). Como exemplo de tamanho de bloco, temos: 1. 2. 3. 4. UNIX: 1kb ou 8kb; MS-DOS: 512 bytes a 32 kb (potncias de dois)4; Windows NT: 2 Kb; Linux: 1kb ou 2kb ou 4kb ou 8kb, dependendo da distribuio;

Tamanho do bloco depende do tamanho do disco.


94

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

IDENTIFICAO Quando arquivos so criados, nomes so atribudos a esses arquivos. Todo arquivo tem dois nomes. So eles: 1. O nome interno, que atribudo pelo S.O no ato de sua criao, composto por valores em binrio ou em hexa-decimal. Os arquivos so referenciados pelo S.O por meio de seus nomes internos. 2. O nome externo, que atribudo pelo usurio, composto por cadeia de caracteres (excluindo alguns especiais). Dependendo do S.O, o nome externo pode fazer relevncia dos tipos da caixa (alta ou baixa). Alm disso, o nome externo de um arquivo pode conter uma extenso. Essa extenso, que separada do nome do arquivo por um ponto, associa logicamente um arquivo a um determinado processo. Frisando que essa associao lgica, pois, internamente para o S.O, o nome externo do arquivo e sua extenso no significam nada.

Mapeamento de Diretrios Os diretrios so organizados em estruturas hierrquicas iniciadas a partir do diretrio raiz, como visto na figura 5.10. Isso faz com que o nome de um arquivo no seja composto somente de uma cadeia de caracteres e sua extenso, sendo tambm composto por todo o caminho que se inicia no diretrio raiz e vai at o arquivo com sua extenso. Os caminhos (nome de formao do arquivo) podem ser classificados como: Absoluto: Composto do caminho do diretrio raiz at o arquivo com a extenso; Relativo: utilizado em conjunto com um conceito de diretrio de trabalho ou diretrio corrente. Divide-se em: o Diretrio de Trabalho (working directory): vai do diretrio criado pelo processo at o arquivo com a extenso; o Diretrio Atual (current directory): vai do diretrio atualmente aberto pelo usurio at o arquivo com a extenso; o Diretrio do Usurio (home directory): vai do diretrio criado pelo usurio at o arquivo com a extenso; Para complementar os caminhos relativos existem os diretrios especiais, que retornam na rvore da hierarquia. Esses diretrios podem variar de S.O para S.O, mas como exemplo, temos: . (ponto): retorna um nvel na hierarquia; .. (ponto-ponto): retorna para o diretrio raiz da hierarquia;

95

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

Figura 5.10.: Arquivos e diretrios em estrutura hierrquica

CONFIABILIDADE Danos causados ao sistema de arquivos podem ser desastrosos. Restaurar informaes geralmente um trabalho custoso, difcil e s vezes, impossvel. Sistemas de arquivos so projetados para proteger as informaes de danos lgicos e no fsicos. Garantir a confiabilidade das informaes armazenadas fundamental para qualquer S.O. Existem basicamente trs estruturas para garantir a confiabilidade das informaes salvas no disco. Essa garantia permite ao usurio ter a tranqilidade que as informaes salvas estaro l quando requisitadas. As estruturas so: Manuteno de Blocos Danificados: Desabilita os setores danificados, ou seja, retira do disco lgico os chamados bad blocks; Cpia de Salvaguarda (backup): As cpias de segurana devem ser colocadas em discos distintos e at em lugares fsicos distintos a fim de evitar acidentes. Deve-se fazer um backup de cada arquivo modificado periodicamente com o intuito de evitar muitas perdas de dados. A freqncia do backup e o cuidado com sua guarda vo depender do valor das informaes a serem salvas; Manuteno da Consistncia dos Dados: A consistncia perdida quando sucessivas alteraes so realizadas, mas somente algumas so registradas. Para consertar este problema, alguns S.Os possuem aplicativos que verificam a consistncia dos arquivos armazenados. A consistncia dos arquivos pode ser verificada a partir dos blocos. Cada bloco possui o chamado bit de redundncia ter valor 1 na primeira ou na segunda tabela, caso isto no ocorra, h inconsistncia. Para que o bloco no fique perdido ele simplesmente colocado na lista de blocos livres e o arquivo dado como corrompido;

Desempenho do sistema de Arquivos Sabemos que acessar arquivos localizados em discos uma tarefa que consome um tempo relevante de um sistema computacional. Sendo assim, o projeto de um sistema de arquivos que possua uma boa performance deve procurar reduzir ao mximo possvel o acesso a discos. Dentre as tcnicas mais utilizadas para diminuir o acesso ao disco, podemos destacar:

96

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

o Cache: Antecipa a transferncia de dados e corresponde a um agrupamento de blocos que pertencem logicamente ao disco porm, se encontram armazenados em uma memria de alta velocidade, objetivando, assim, elevar a performance do sistema de arquivos. Os algoritmos de substituio de pginas estudados no mdulo 4 podem ser utilizados para gerenciar a cache. o Leitura antecipada de blocos: A segunda tcnica para melhorar o desempenho do sistema de arquivos tentar transferir os blocos para a cache antes que eles sejam necessrios para aumentar a taxa de acertos. Tal estratgia s funciona para arquivos que estejam sendo lidos seqencialmente. A tcnica do Cache e esta so similares ao carregamento de pginas na memria real Por Demanda e Antecipada respectivamente. o Reduo do movimento do brao do disco: Esta tcnica objetiva gravar os blocos que sero mais acessados o mais perto possvel uns dos outros (mesmo cilindro do disco).

SEGURANA Segurana diferente de proteo. Segurana um termo usado para problemas genricos, que atingem todo o sistema de arquivos e os mecanismos de proteo referenciam as estruturas utilizadas em um nico arquivo, diretrio ou grupos de arquivos especficos. A segurana deve ser implementada principalmente por causa da privacidade dos usurios. O S.O possui rotinas para proteger os dados dos arquivos com relao ao acesso e a sua integridade. O acesso pode ser protegido com a criptografia de arquivos, autenticaes e permisses. A integridade pode ser implementada atravs de Discos em RAID, cpias de backup, sistemas de arquivos log-estruturados (operaes atmicas) que registram as transaes em arquivos de log e, com isso, elas podem ser revertidas se for preciso (roll back) ou terminadas mais tarde quando for conveniente (roll forward) e com o sombreamento de pginas (operaes atmicas) que grava as transaes em um novo bloco e, uma vez validada a informao, libera o bloco antigo como espao livre, mas podendo ser revertida se houver falha. Na implementao do sistema de arquivos de um S.O, o programador deve ter em mente que devem ser criadas estruturas de segurana para proteger os arquivos de trs manipulaes bsicas. So elas:

97

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

1 Referente manipulao segura do sistema de arquivos: a segurana do sistema frente a usurios que possuem as permisses de acesso. A falha humana de quem usa no pode comprometer a integridade das informaes. As perdas de arquivos pela manipulao segura podem ser classificadas como: Externa: As falhas externas (como a destruio do hardware) no so de responsabilidade do sistema de arquivo e podem ser causadas por descuido dos usurios, incndios, guerras, o cachorro mordendo o hardware, etc. Interna: As falhas internas so de responsabilidade do sistema de arquivos e podem ser causadas por erros de hardware e software, como por exemplo, falhas de processamento, erros de comunicao, bugs em programas, discos ou fitas ilegveis, entre outros e erros humanos, como por exemplo a entrada de dados incorreta, montagem errada de fita ou de disco, perda de uma fita ou de um disco, rodar o programa errado, etc.;

2 Referente perda de informaes por manipulaes no autorizadas: a segurana do sistema de arquivos frente a usurios no autorizados, que desejam a informao a todo custo. A perda de informaes no necessariamente a deleo/alterao do contedo de um arquivo, por muitas vezes, a simples leitura de um arquivo pode inutiliz-lo. As perdas de arquivos pela manipulao no autorizada geralmente so feitas com: Aes atravs da Internet. Essas aes podem ser: o Intromisso de usurios no-tcnicos, que so curiosos e/ou quer levar vantagens sobre certas situaes; o Intromisso por parte de usurios qualificados em busca de desafios; o Tentativa de ganhar dinheiro aplicando golpes via rede; o Espionagem militar, comercial ou industrial onde pessoas querem usar indevidamente as idias de outras; Ataques destrutivo: o Vrus: So fragmentos de programas que se auto-inserem em programas completos para produzir resultados no esperados; o Quebra de mecanismos de autenticao (usurios autorizados por senha). Um dos ataques mais famosos o ataque do cavalo de tria, que so cpias perfeitas de aplicativos cuja nica diferena, dependendo do tipo, que esses aplicativos fazem cpias dos arquivos feitos e mandam para pessoas no autorizadas.

98

MODULO 5 GERENCIA DE ARQUIVOS___________________________________________Prof. TENORIO

3 Referente aos mecanismos dos sistemas operacionais capazes de garantir a segurana do sistema de arquivos: a segurana do sistema frente ao prprio S.O, pois ele um software e pode conter bugs, e esses bugs no podem comprometer o sistema de arquivos. Para se proteger, o S.O possui: Sistema para autenticao de usurios: o Senhas (passwords); o Identificao individual (fsica); o Contramedidas (preveno e privilgios dos usurios) Administrador. Mecanismos de proteo: o Domnios de proteo: grupos de usurios para grupos de arquivos, conforme mostra a figura 5.11. Um domnio um par (objeto e direitos). Cada par especifica um objeto e um conjunto de usurios que possuem o direito a acessar o objeto. Um direito no domnio de proteo seria a permisso que um usurio tem de fazer um acesso. O acesso pode ser: Leitura, alterao, remoo, entre outros. Neste caso pode-se fazer uso dos bits de proteo RWX.

Legenda: 0 SO; 1 Utilitrios crticos; 2 Procedimento de avaliao; 3 Procedimentos de alunos.

Figura 5.11.: Domnios de Proteo

99

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

MDULO 6 GERNCIA DE ENTRADA/SADA


Dentre as inmeras funes do S.O, tambm de sua responsabilidade controlar os dispositivos de E/S de um computador, fornecendo uma interface entre esses dispositivos e o restante do sistema operacional, alm do usurio, de forma a facilitar e simplificar a utilizao destes dispositivos. As principais funes do Gerente de E/S de um S.O so: Definir os comandos de controle; Capturar e gerenciar as interrupes; Realizar a transferncia de dados; Fazer o tratamento de erros (excees);

Chama-se Dispositivo Perifrico qualquer dispositivo conectado a um computador de forma a possibilitar sua interao com o mundo externo. Esse conceito pode ser simplificado como qualquer dispositivo fsico que no seja parte integrante do sistema (Placa Me, Memrias, Processador e o S.O). De acordo com o sentido do fluxo de dados entre o computador e o dispositivo, esses podem ser exclusivamente de entrada, exclusivamente de sada ou conjuntamente de entrada e sada. Os dispositivos de entrada so aqueles que levam informaes do mundo exterior ao sistema e os dispositivos de sada so aqueles que levam informaes do sistema ao mundo exterior. Exemplos de entrada: Teclado, mouse, microfone, scanner, etc. Exemplos de sada: Monitor, impressoras, caixa de som, displays, etc. Exemplos de entrada/sada: Placa de rede, monitores touch screen, multifuncionais, drivers de CD, etc.

E o gabinete? Onde se classifica? A gerncia de E/S est intimamente relacionada com o gerente de arquivos do S.O e com aspectos de hardware do computador.

HARDWARE DE E/S
O S.O trata os dispositivos como se fossem arquivos. Os dispositivos de E/S podem ser divididos em duas categorias: Dispositivos de Bloco: So dispositivos constitudos por um conjunto de blocos de tamanho fixo endereveis randomicamente, cada um com seu prprio endereo, tais como: Discos. Cada bloco independente dos demais; Dispositivos de Caractere: So dispositivos que aceitam quaisquer cadeias de caracteres sem respeitar nenhuma estrutura de blocos, tais como: Terminais, impressoras de linha e as interfaces de rede.

100

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

Para cada uma dessas categorias existe um arquivo especial que o trata (arquivos especiais de bloco e de caractere). Os dispositivos tambm podem ser classificados de acordo com sua atividade. Neste caso, os dispositivos podem ser dos seguintes tipos: 1. Armazenamento: discos magnticos, discos pticos, fitas, etc. 2. Transmisso: placas de rede, modem, etc. 3. Interface homem-mquina: monitor, teclado, mouse, etc. Basicamente, todo dispositivo se comunica com o sistema computacional enviando sinais via cabo ou atravs do ar. Para isso, os dispositivos utilizam um ponto de conexo chamado porta (serial ou paralela) e um conjunto de condutores metlicos chamados de barramento. A comunicao entre os diversos tipos de barramentos feita pela interface. A interface um componente de hardware responsvel por conectar o perifrico ao computador, ou seja, o conector fsico que une o sistema ao um dispositivo. As unidades de E/S so constitudos por duas partes distintas: uma eletrnica e outra mecnica. Muitas vezes possvel separar fisicamente as duas partes de forma a obter um projeto mais geral e modular. A parte eletrnica chamada de controladora de dispositivo ou adaptadora. A controladora normalmente uma placa de circuito impresso que pode ser inserida na mquina. Trabalha como um processador de uma funo especfica e pode operar uma porta, um barramento ou um dispositivo. A funo bsica de uma controladora implementar um conjunto de operaes genricas do tipo ler dados, escrever dados, reiniciar, ler status ou escrever comandos traduzindo-as para uma seqncia de dispositivos eltrico-eletrnicos, mecnicos, capazes de realizar as operaes solicitadas. Para fazer essas tradues utilizado o Driver, que simplesmente uma tabela que possui os comandos especficos do S.O e os comandos do perifrico correspondestes na mesma linha. Como exemplos de controladora, podemos citar: 1. Controladora grfica: interface entre monitor e barramento do sistema (PCI); 2. Controladora de memria: interface entre memria e barramento do sistema; 3. Controladora de disco IDE: interface entre discos e barramento; 4. Controladora de disco SCSI: interface entre discos SCSI e barramento; Muitas controladoras, especialmente aquelas desenvolvidas para dispositivos de blocos, suportam operaes de acesso direto memria real, ou seja, DMA, que estudaremos mais adiante.

A parte mecnica o dispositivo propriamente dito.

101

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

Utilizao de Memria Este tpico trata da forma de utilizao da memria real pelos dispositivos. Quanto a essa utilizao, os dispositivos so classificados em: OFF-Board: dispositivos dessa classificao possuem hardware de memria dedicados a eles, com as mesmas caractersticas da memria real do sistema; ON-Board: dispositivos dessa classificao no possuem hardware de memria dedicados e concorrem, com os processos, pelo uso da memria real do sistema, ou seja, fazem o chamado DMA (Direct memory Access Acesso Direto a Memria). O DMA baseia-se no emprego de um hardware especial, o controlador de DMA, para realizar a transferncia de dados entre um dispositivo de E/S e a memria.

Tipos de conexo e Transferncia de dados Este tpico trata da porta, que o ponto de conexo entre o dispositivo e o sistema. suprido pela interface e dividido em: Serial: Existe apenas uma linha para transferncia dos dados. O protocolo de transferncia transforma um conjunto de bits em uma seqncia de bits; Paralela: Possui vrias linhas para dados, permitindo assim que vrios bits sejam transferidos simultaneamente entre o dispositivo e a interface.

A Figura 6.1 apresenta as taxas de transferncia de dados de alguns dispositivos. Com o passar do tempo e com a constante evoluo tecnolgica, estes dispositivos tendem a ficarem mais rpidos.

Dispositivo Taxa de Dados Dispositivo Teclado 10 bytes/s Ethernet Rpida Mouse 100 bytes/s Barramento ISA Modem 56kb 7 Kb/s Disco EIDE (ATA-2) Canal Telefnico 8 Kb/s FireWire (IEEE 1394) Linhas ISDN Dual 16 Kb/s Monitor XGA Impressora a Laser 100 Kb/s Rede SONET OC-12 Scanner 400 Kb/s Disco SCSI Ultra 2 Ethernet Clssica 1,25 Mb/s Ethernet Gigabit USB 1,5 Mb/s Dispositivo de Fita Ultrium Cmera de Vdeo Digital 4 Mb/s Barramento PCI Disco IDE 5 Mb/s Barramento da Sun Gigaplane XB CD-ROM 40x 6 Mb/s Figura 6.1.: Taxas de dados de alguns dispositivos

Taxa de Dados 12,5 Mb/s 16,7 Mb/s 16,7 Mb/s 50 Mb/s 60 Mb/s 78 Mb/s 80 Mb/s 125 Mb/s 320 Mb/s 528 Mb/s 20 Gb/s

102

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

Acesso aos dispositivos de E/S Como o processador pode emitir comandos e dados para uma controladora a fim de realizar uma transferncia de E/S? As controladoras possuem registradores internos capazes de armazenar dados e sinais de controle emitidos pela CPU. Tipicamente, so trs registradores: registrador de dado, registrador de status e registrador de comando. Dessa forma, a comunicao se estabelece atravs de operaes de leitura e escrita de bits nesses registradores. Algumas controladoras tambm permitem que seja feita programao de suas funes atravs desses registradores. Alm do DMA, em dispositivos On-board, que no utiliza o processador na transferncia de dados5, existem duas tcnicas diferentes que podem ser utilizadas para transferncia de dados durante a realizao de operaes de E/S, utiliza-se do processador, so elas:

E/S Programada: Nessa tcnica de acesso aos dispositivos de E/S (modo de comunicao), toda interao entre processador e o controlador de responsabilidade do programador. O processador, alm de executar o programa, possui controle total sobre as operaes de E/S. Este controle inclui desde a deteco do estado do dispositivo, o envio de comandos para o mdulo de E/S (leitura ou escrita) e a transferncia de dados. Por isso, toda vez que o programa em execuo realiza alguma operao de I/O, o processador tem que interromper sua execuo para tratar da operao solicitada. Com isso, a execuo do programa fica interrompida at que a operao seja finalizada. Como podemos imaginar, se o processador for mais rpido que o mdulo de E/S ocorrer um desperdcio de processamento, ocasionado pela espera que foi comentada. O ciclo de funcionamento baseado no envio de um comando ao controlador e na resposta de sua realizao. O processador envia um comando de leitura ao controlador e, em seguida, pode ler continuamente o registrador de estado para verificar se o dado solicitado j est disponvel em caso afirmativo, o processador efetua a leitura. O problema desse mtodo que as operaes de entrada e sada so muito lentas se comparadas com as operaes de clculo do processador. Para reduzir o impacto da lentido o S.O pode implementar a verificao peridica, conhecida como Polling. O emprego de polling reduz o desperdcio de tempo do processador, mas introduz outro problema: determinar a freqncia de sua realizao. Se a freqncia muito alta, h desperdcio de tempo, principalmente se o dispositivo realmente lento. Por outro lado, efetuar o polling com uma freqncia baixa pode acarretar esperas desnecessrias por parte do dispositivo de E/S, ou ainda, o que pior, perda de informaes (este problema existe nas interfaces de comunicao que possuem buffers de tamanho limitado para a recepo de dados: a no leitura dos dados recebidos em um certo perodo de tempo pode acarretar perdas por sobre-escrita). O ideal seria que o dispositivo de E/S sinalizasse o processador logo que o dado estivesse disponvel.

E/S Dirigida por Interrupo: Tambm conhecido como Mecanismo de Interrupo. Neste modo de comunicao o processador no fica esperando que a operao de I/O seja finalizada para continuar a execuo do programa. Ao invs disso, ele simplesmente emite um sinal para a
5

O que deixa a transferncia mais lenta


103

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

controladora (mdulo de I/O) com a operao solicitada e continua executando outras instrues do programa. Quando a controladora tiver finalizado a operao solicitada pela CPU ela emite um sinal de interrupo ao processador indicando o trmino da operao. Nesse instante o processador pra momentaneamente o que est fazendo para executar uma rotina especfica: o tratamento de interrupes, que realiza as operaes necessrias ao tratamento do evento inclusive acessando o mdulo de I/O para obter o resultado da operao. O tratador de interrupes (hardware): Identifica a fonte de interrupo de forma a executar, para cada uma delas, um procedimento especfico; Privilegia o atendimento de uma interrupo em relao outra (prioridade); Seleciona qual a interrupo a ser atendida;

O emprego de interrupes para o tratamento de operaes de E/S libera o processador da tarefa de polling para que ele efetue atividades de clculo. O processador responsvel via software apenas por iniciar uma operao de E/S enviando comandos interface (controlador). O processador passa a executar outra tarefa e o controlador, a operao de E/S. Quando a operao de E/S for concluda, a interface (controlador) gerar um pedido de interrupo ao processador, provocando assim a execuo do tratador de interrupes associada a essa interrupo. Devemos ressaltar que tanto na E/S Programada quanto na E/S Dirigida por Interrupo, o processador sempre o responsvel por obter dados da memria principal (operao de sada memria => dispositivo) ou por armazenar dados na memria principal (operao de entrada dispositivo => memria).

SOFTWARE DE E/S
Os softwares do S.O que controlam os dispositivos de E/S possuem cinco objetivos bsicos. So eles: a) Independncia dos dispositivos: programas podem acessar qualquer dispositivo de E/S sem especificar previamente qual (disquete, disco rgido ou CD-ROM). Comandos padres a todos eles; b) Uniformidade de identificao: nome de um arquivo ou dispositivo pode ser uma cadeia de caracteres ou um nmero inteiro que vale para todos os dispositivos, independente do fabricante; c) Manipulao de erros: trata os erros, o mais prximo possvel do hardware; d) Transferncia de dados sncrona e assncrona: alguns perifricos precisam de sincronismo (transferncia bloqueada), como a placa de rede, outros no precisam (dirigida por interrupes), como a impressora; e) Compartilhamento ou exclusividade dos dispositivos: alguns perifricos podem ser compartilhados com outros sistemas simultaneamente, outros no podem, o compartilhamento deve ser feito seqencialmente e outros ainda, no devem ser compartilhados.

104

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

Esses softwares devem ser organizados com uma srie de nveis para facilitar o atendimento desses objetivos. Aps estudos, concluiu-se que uma forma eficiente de organizao estruturando o software de E/S em quatro nveis. So eles: Manipuladores de interrupo: o mais baixo nvel, voltado para esconder do usurio s peculiaridades de cada hardware; Drivers de dispositivos: traduz os comandos padres do S.O para os comandos especficos do perifrico; Software do S.O independente do dispositivo: implementao dos comandos padres do S.O; Software do nvel do usurio: softwares de usurio, que possuem os comandos oriundos de um compilador/interpretador so decodificados em bibliotecas no modo usurio;

DISCOS
Utilizados para armazenamento de dados. Fisicamente, um disco rgido pode ser visto como composto por dois grandes blocos, conforme mostra a figura 6.2.: O primeiro bloco um conjunto de discos metlicos (ao ou alumnio) superpostos e dispostos em alturas diferentes com auxlio de um eixo central. As duas superfcies de cada um desses discos so recobertas por uma pelcula magntica na qual os dados so gravados. No momento de acesso ao disco, essa estrutura mantida em uma rotao constante (36000 rpm, por exemplo). O segundo bloco uma estrutura mecnica que suporta um conjunto de cabeotes, um para cada superfcie de disco. Essa estrutura capaz de realizar movimentos de vai-e-vem de maneira que os cabeotes possam ser deslocados desde a borda do disco at o centro. Graas ao movimento de rotao dos discos e ao movimento retilneo dos cabeotes, toda a superfcie de cada disco pode ser alcanada por seu respectivo cabeote.

Figura 6.2.: Constituio dos Discos


105

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

Do ponto de vista da organizao lgica, cada superfcie de um disco dividida em circunferncias concntricas denominadas trilhas. Cada trilha, por sua vez, subdivida radialmente em unidades chamadas setores. Em geral todos os setores tm o mesmo tamanho, o qual varia entre 512 a 4096 bytes dependendo do S.O. O setor constitui a unidade mnima de leitura e gravao em um disco. O conjunto de trilhas de todas as superfcies do disco que ficam exatamente mesma distncia do eixo central forma o cilindro. A definio de trilhas e de setores em um disco chama-se formatao fsica e um procedimento realizado no fabricante. Outros termos bastante comuns associados a discos rgidos so formatao lgica e parties. Ambos os conceitos esto mais relacionados com o sistema de arquivos do que com o disco propriamente dito. A formatao lgica consiste em gravar informaes no disco de forma que arquivos possam ser escritos, lidos e localizados pelo sistema operacional. na formatao que criado o diretrio raiz. Tempo de acesso: Para realizar um acesso a um disco rgido, necessrio posicionar o cabeote de leitura e escrita sob um determinado setor e trilha onde o dado ser lido ou escrito. Considerando- se a organizao de um disco, esse procedimento de posicionamento implica um certo tempo: o tempo de acesso. O tempo de acesso definido por trs fatores: Tacesso = Tseek + Tlatncia + Ttransferncia Tempo de Seek: tempo de locomoo do brao do disco at o cilindro desejado; Latncia Rotacional: tempo para que o setor desejado passe sob a cabea de leitura; Tempo de Transferncia: tempo de transferncia propriamente dito;

Escalonamento do Brao de Leitura Como j vimos, uma das principais funes do sistema operacional gerenciar os recursos do sistema de forma eficaz. O problema no caso do disco rgido est em como ordenar e atender os pedidos de entrada e sada de forma a maximizar o atendimento e minimizar o tempo em que os processos permanecero bloqueados. O tempo necessrio a uma operao de entrada e sada com discos fortemente influenciado pelo tempo de acesso ao disco, como vimos no item anterior. O objetivo ento minimizar os movimentos da cabea de leitura e maximizar o nmero de bytes transferidos (throughtput) de forma a atender o maior nmero possvel de requisies no menor intervalo de tempo possvel. Para resolver esse problema, existe um conjunto de algoritmos (polticas) para realizar a movimentao do cabeote de leitura do disco (seek), alguns tentando otimizar a movimentao entre as trilhas e outros tentando aproveitar o percurso das cabeas de leitura: a) Primeiro a Entrar, Primeiro a Ser Servido (FCFS First Come First Served): Neste algoritmo, o drive s aceita uma requisio de cada vez. O atendimento s requisies feito considerando-se a ordem de chegada das mesmas. Requisio: 11, 1, 36, 16, 34, 9 e 12 Deslocamento do Brao: 10, 35, 20, 18, 25 e 3 Total Percorrido: 111

106

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

b) Menor Seek Primeiro (SSTF Shortest Seek Time First): Neste algoritmo, a prxima requisio a ser atendida ser aquela que exigir o menor deslocamento do brao do disco. Requisio: 11, 1, 36, 16, 34, 9 e 12 Deslocamento do Brao: 1, 3, 7, 15, 33 e 2 Seqncia de acesso: 11, 12, 9, 16, 1, 34 e 36 Total Percorrido: 61

Obs.: O SSF reduz quase metade do movimento do brao do disco, quando comparado com o FCFS, porm apresenta tendncia em acessar o meio do disco, podendo levar um pedido de acesso postergao indefinida (Deadlock). c) Algoritmo do Elevador (Scan): Como o prprio nome do algoritmo sugere, este faz com que todas as requisies em um determinado sentido sejam atendidas. Depois, as demais requisies em sentido oposto sero atendidas. Requisio: 11, 1, 36, 16, 34, 9 e 12 Deslocamento do Brao: 1, 4, 18, 2, 27 e 8 Seqncia de acesso: 11, 12, 16, 34, 36, 9 e 1 Total Percorrido: 60

d) Algoritmo C-Scan: O algoritmo Scan, imediatamente aps inverter a varredura, inicia o atendimento privilegiando os pedidos correspondentes aos cilindros recm servidos, por conseqncia os pedidos dos cilindros do outro extremo da varredura, feitos anteriormente, devem esperar. O algoritmo C-Scan uma variao do Scan com o objetivo de eliminar esse privilgio. Nesse caso, quando a varredura atinge o ltimo cilindro, o cabeote posicionado no primeiro cilindro onde reinicia a varredura. Em outros termos, os pedidos so atendidos em um s sentido da varredura. Requisio: 11, 1, 36, 16, 34, 9 e 12 Deslocamento do Brao: 1, 4, 18, 2, 35 e 8 Seqncia de acesso: 11, 12, 16, 34, 36, 1 e 9 Total Percorrido: 68

e) FScan (varredura congelada): uma tcnica variante da Scan onde a fila de requisies paralisada no incio da varredura num dado sentido; as requisies que chegam so agrupadas para atendimento somente na prxima varredura de volta. Ao paralisar a fila, a FScan consegue eliminar por completo o adiamento indefinido. A FScan apresenta um alto rendimento, um tempo mdio de espera aceitvel e uma menor varincia nos tempos mdios de espera. f) Scan N-fases: uma tcnica variante da Scan muito parecida com a Fscan; a diferena que ela paralisa somente N solicitaes de cada vez; quando a varredura estiver concluda, as prximas N solicitaes sero paralisadas e atendidas e, assim sucessivamente, at o fim da fila. Ao paralisar a fila, a Scan N-fases tambm consegue eliminar por completo o adiamento indefinido. O valor de N poder ser ajustado; N=1 degenera para FCFS; N muito alto degenera para Scan. A Scan N-fases apresenta um alto rendimento, um tempo mdio de espera aceitvel e uma menor varincia nos tempos mdios de espera. g) Look e C-Look: Look (olhar a frente) uma estratgia semelhante Scan, o que muda que no final do atendimento de cada solicitao verificado se ainda existe alguma solicitao para atender naquela direo, isso elimina os movimentos desnecessrios at os cilindros extremos e melhora o desempenho. O C-Look (look circular) uma estratgia semelhante a C-Scan, o que muda que no final do atendimento de cada solicitao verificado se ainda existe alguma solicitao para atender naquela direo, isso elimina os movimentos desnecessrios at os cilindros extremos e melhora o desempenho.

107

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

No devemos otimizar apenas o tempo de busca, pois, como vimos, ele no o nico que influencia no tempo de acesso. Otimizar o tempo de latncia tambm importante. Com isso tempos as seguintes polticas: a) SLTF (Short Latency Time First): o tempo de latncia mais curto primeiro, tambm chamada de otimizao rotacional. O SLTF organiza as requisies de um mesmo cilindro numa fila, baseado no atraso rotacional, e atende na ordem do mais prximo para o mais distante. J foi demonstrado que esta tcnica a que mais se aproxima da teoricamente tima e ela relativamente fcil de ser implementada. b) SPTF (Short Positioning time First): o tempo de posicionamento mais curto primeiro. Essa estratgia atende primeiro o setor cujo tempo de posicionamento do cabeote menor. O tempo de posicionamento composto pelo tempo de busca mais o tempo de latncia: TPosicionamento = TBusca + TLatncia c) SATF (Shortest Access Time First): o tempo de acesso mais curto primeiro. Essa estratgia atende primeiro o setor cujo tempo de acesso menor. O tempo de acesso composto pelo tempo de posicionamento mais o tempo de transmisso TAcesso = TPosicionamento + TTransferncia Alm desses algoritmos, uma outra forma de otimizao do desempenho e usar a tcnica do RAID, proposto por Patterson, Gobson e Katz. O RAID uma tcnica de gerenciamento de discos que combina diversos discos para melhorar o desempenho e/ou obter redundncia. A idia bsica por trs da melhoria de desempenho o acesso simultneo em vrios discos, por outro lado, quanto maior o nmero de discos, maior a probabilidade de falha no conjunto (MTBF do HD). A idia bsica por trs da redundncia continuar tendo acesso aos dados, mesmo quando um dos discos falhe. O RAID normalmente usado em servidores de misso crtica, isto , onde a disponibilidade do sistema um requisito de negcio, entretanto o RAID no tem objetivo de ser substituto do backup. O RAID espalha os dados a serem gravados por diversos discos, de forma transparente para os usurios e aplicativos. Discos x Memria Real: Os discos possuem algumas vantagens de armazenamento em relao memria real. So elas: a) A capacidade de armazenamento disponvel muito grande; b) O preo por bit armazenado muito menor; c) A informao no se perde quando se desliga a mquina. A principal desvantagem a lentido na busca das informaes, por isso existe a RAM Disk, que um espao na memria real, onde os setores mais acessados do disco ficam armazenados com o intudo de agilizar o processo de leitura dos arquivos. uma espcie de cache do disco. Principais erros encontrados na implementao de dispositivos de E/S: a) Erros de programao. Exemplo: Requisio de um setor inexistente; b) Erro transiente no checksum (causado por poeira na cabea de leitura); c) Erro permanente no checksum (causado por determinado bloco de disco danificado); d) Erro de seek (o brao deveria ir para o cilindro 6 e foi para o 7); e) Erro da controladora. Exemplo: A controladora se recusa a aceitar o comando.
108

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

CLOCKS
O relgio (clock), tambm conhecidos como timer ou temporizador, um dispositivo que decrementa automaticamente o contedo de um registrador ou posio de memria, com uma freqncia constante, e interrompe a CPU quando o valor decrementado atinge zero. O sistema operacional garante que ocorrer pelo menos uma interrupo (e ele voltar a trabalhar) dentro de um intervalo de tempo t, colocando no relgio um valor que demore t unidades de tempo para ser decrementado at zero. Esta atribuio de valor ao relgio feita imediatamente antes do sistema operacional entregar a CPU para um programa de usurio. O clock essencial para o funcionamento de sistemas com compartilhamento de tempo. Ele, alm de outras funcionalidades, mantm um relgio interno na mquina em tempo real e evita que um nico processo monopolize o processador (gerando o quantum). Qualquer funo do sistema envolvendo tempo precisa ser feita via software, pelo drive do clock. Devido a sua importncia e para garantir sua confiabilidade, os sistemas implementam mais de um clock, pois quando um falha, outro assume. Geralmente, existem trs tipos. So eles: Complexo: via hardware. Composto por trs componentes: um oscilador de cristal, um flip-flop contador e flip-flops registradores de armazenamento. O oscilador vibra constantemente, mesmo com o computador desligado, o contador registra essa vibrao e armazena nos registradores de armazenamento, onde o S.O buscar a informao de tempo e a enviar para todo o sistema. Simplex: via hardware. Junto com a voltagem de 110v ou 220v, chega a nossas casas a freqncia da corrente (cerca de 50 Hz e 60 Hz, dependendo do pas). uma freqncia constante e um dispositivo causa uma interrupo a cada descida do ciclo dessa freqncia, deixando o relgio do sistema funcionando normalmente. Software: via software. Neste caso, o clock apenas um programa gerador de interrupes a intervalos determinados. Esse clock deixa de funcionar se o terminal for desligado.

TERMINAIS
Cada computador possui sempre, no mnimo, um terminal (um de entrada e um de sada) usado para a comunicao com os usurios do sistema. Os terminais so apresentados numa imensa variedade de tipos. O drive do terminal tem como principal tarefa esconder estas diferenas do usurio final, de forma que seus programas no precisem ser reescritos para cada tipo de terminal utilizado. Hardware do Terminal: Do ponto de vista do S.O, os terminais podem ser divididos em duas categorias: Interface RS-232: So dispositivos ligados ao sistema por cabeamento. No mnimo, compostos por um teclado e um vdeo que se comunicam usando uma interface serial. Esses terminais usam as UARTs (Universal Asynchronous Receiver Transmitters). As UARTs esto na interface, ligando as placas ao barramento. Servem para fazer a converso caractere (usada pelos terminais) serial (usada pelo barramento) e vice-versa.

109

APOSTILA DE SISTEMAS OPERACIONAIS

Prof. TENORIO

Terminais Mapeados na Memria: So dispositivos ligados ao sistema por barramento. Tornam-se partes integrantes do sistema. Podem possuir memrias dedicadas e at processadores dedicados (placa de vdeo, por exemplo).

Software de Entrada: A tarefa bsica do drive do teclado coletar as entradas e pass-las para programas de usurios quando eles estiverem lendo o terminal. Essa operao pode ser feita de duas maneiras: Modo Cru (Raw): Estratgia orientada a caractere. O trabalho do drive simplesmente aceitar o caractere e pass-lo adiante sem nenhum tratamento. Modo Cozido (Cooked): Estratgia orientada a linha. Nesta, o drive analisa a seqncia digitada e passa ao processo apenas a entrada correta de dados.

Alm da anlise da coleta, o drive tem opes de bufferizao. So elas: Com Buffer: O drive possui um pool central de buffers vazios, cada um deles podendo armazenar 16 ou 32 caracteres. medida que mais caracteres so digitados, mais buffers so adquiridos e colocados na cadeia. Quando a cadeia for passada a um processo, os buffers so removidos e postos de volta no pool. Sem Buffer: A outra forma colocar os caracteres diretamente na prpria estrutura de dados do terminal, sem usar o pool de buffers.

Na construo dos softwares de entrada deve-se ter extremo cuidado com a edio de linha e a manipulao de caracteres especiais.

Software de Sada: Em terminais RS-232 comumente usado um buffer para cada terminal. Os caracteres so simplesmente encaminhados ao terminal atravs da linha. Em terminais mapeados na memria os caracteres so retirados um a um do espao de usurio e colocados diretamente na RAM (do sistema ou dedicada). Os caracteres especiais possuem um tratamento especial de software pelo drive.

No caso do vdeo, o sistema pode optar por fazer ECO, que o processo em que o terminal de vdeo s coloca na tela os caracteres que convm ao software colocar e no todos que o usurio digitar. Os softwares de sada tratam, dentre muitas outras coisas, do movimento do cursor do mouse e da seqncia de escape (fuga do processamento corrente).

110

MODULO 6 GERENCIA DE ENTRADA/SADA______________________________________Prof. TENORIO

REFERNCIAS BIBLIOGRFICAS
Livros: DEITEL H. M., DEITEL P. J. e CHOFFNES D.R. Sistemas Operacionais. Prentice Hall, So Paulo, 2005. MAIA, Luiz Paulo e MACHADO, Francis Berenger. Arquitetura de Sistemas Operacionais. LTC, Rio de Janeiro, 2002. OLIVEIRA, R. S.; CARISSIMI, A. S. e TOSCANI, S. S. Sistemas Operacionais. Sagra Luzzatto, Porto Alegre, 2001. SILBERSCHATZ, A. et al. Sistemas Operacionais: Conceitos e Aplicaes. Campus, 2001. TANENBAUM, A. S. Sistemas Operacionais Modernos. Prentice Hall, 2 Edio, 2003.

Apostilas de professores: FATEC-PB Faculdade de Tecnologia da Paraba Prof. Gustavo Wagner UNICAMP Universidade Estadual de Campinas Prof. Clodoaldo Ap. Moraes Lima UNIFIEO Centro Universitrio FIEO Prof. Msc. Jean M. Laine UNIVALI - Universidade do Vale do Itaja Prof. Celso Kopp Webber URI - Universidade Regional Integrada Campus Erechim Professores da disciplina de Sistemas Operacionais I

111