fsOperativosResumo_Livro

download fsOperativosResumo_Livro

of 74

Transcript of fsOperativosResumo_Livro

  • 7/29/2019 fsOperativosResumo_Livro

    1/74

    CAP: 1 INTRODUO1.1. Objectivos dos Sistemas OperativosO objectivo deste texto procurar descrever a estrutura dos SO de forma a que constituam umaferramenta de que se conheam no s o modo de utilizao mas tambm os detalhes deimplementao.Para que servem os SO? Porque se tornaram indispensveis? 2 motivos histricos:- Transformar um conjunto diversificado de circuitos electrnicos, discos e perifricos numa

    mquina simples de utilizar.- Obter o mximo rendimento do hardware atravs da sua utilizao para o processamento de umgrande conjunto de actividades.O SO procura tambm apresentar ao utilizador uma interface coerente que trata, de modouniforme, aces sobre entidades semelhantes.Outro aspecto relevante a garantia de fiabilidade e seguranaO SO pode pois ser considerado como uma camada de software que virtualiza o hardware debase, transformando-o numa outra mquina com primitivas prprias, normalmente muito maisprximas das aces que o utilizador vulgar pretende ver executadas pelo computador.O segundo princpio enunciado, no mais que o clssico princpio da optimizao de custo.Na histria h SO que tentaram ser atingir objectivos to ambiciosos que se tornaram ineficientes.

    Os compromissos desempenho/modularidade/fiabilidade so extremamente complexos,constituindo um dos pontos mais delicados na definio da arquitectura de um SO.

    1.2. Evoluo HistricaOs 1s sistemas informticos (anos 50) no dispunham de SO.1.2.1. Monitor de ControloA primeira aproximao foi o programa utilitrio Monitor, que permitia ao utilizador carregar osseus programas em memria, edit-los e verificar a sua execuo. A gesto era muito simples econsistia em atribuir a cada utilizador quotas de tempo de utilizao da mquina.Um monitor tpico constitudo por rotinas utilitrias que facilitam a interaco (operao) com amquina:- Interpretador de uma linguagem de comendo que permite fazer executar os restantes mdulos

    - Compilador- Tradutor de linguagem simblica (Assembler)- Editor de Ligaes (linker)- Carregador de programas em memria (Loader)- Rotinas Utilitrias para o controlo de perifricos: consola; leitor de cartes; leitor/perfurador defita de papel; bandas magnticas. bvia a ineficincia desta gesto: Durante a maior parte do tempo o processador est inactivo.

    1.2.2. Tratamento em Lotes (Batch)No tipo de gesto atrs descrito, o tempo de execuo de um programa predominantementedeterminado pelas suas E/S.Uma soluo consistiu em efectuar a recolha dos dados num computador auxiliar onde eram lidos,

    para uma banda, os cartes dos diversos trabalhos.Este processo dos anos 50 rapidamente evoluiu: os perifricos comeara a poder executaroperaes autnomas e avisando o processador por meio de interrupts (grande inovao esta denotificao assncrona do processador). Simultaneamente os dispositivos de armazenamentotambm evoluram e passaram de meros sequenciais para acesso aleatrio (tambores, discos).

    O sistema anterior permite a introduo de mecanismos de optimizao na gesto da mquina,escolhendo o prximo programa a ser executado de acordo com um dado critrio de prioridade.Por exemplo se nos cartes houver a indicao de durao mxima, recursos ocupados, etc.,pode implementar-se uma poltica que beneficie os trabalhos mais curtos ou menos exigentes emrecursos.

    Em paralelo com estes desenvolvimentos comeou a fazer sentir-se a necessidade de tornareficiente o funcionamento dos compiladores.

  • 7/29/2019 fsOperativosResumo_Livro

    2/74

    1.2.3. MultiprogramaoOs mecanismos de interrupo permitem multiplexar o processador entre diversas actividade

    executadas concorrentemente pode ser alargado para vrios programas utilizadores em memria,em vez de s um. Isso permite optimizar a utilizao da unidade central.Ex. uma operao de acesso ao disco pode ser executada em paralelo por rotinas do sistema quegerem uma interface de hardware, normalmente designada por controlador de disco. O tempopara a leitura (mecnica lenta) pode ser usado por outro programa --> vrios programas

    simultaneamente activos.Agora, isto s eficaz se os diversos programas residirem na memria central, para mudanarpida de contexto. Mas como memria cara, h hierarquizao de memria que permita, quandonecessrio, carregar novo programa e guardar na memria secundria alguns bloqueados(swapping tem implicaes profundas sobre toda a estrutura dos programas --> o cdigo deveser recolocvel).

    1.2.4. Sistemas InteractivosSistemas transaccionais.Em lugar de ser obrigado a esperar por um programa submetido ao tradicional sistema de lotes, outilizador passou a desfrutar de uma mquina virtual, que lhe permite aceder ao sistema centralsempre sua disposio.A multiplexagem entre vrios utilizadores impe a diviso do tempo disponvel do processadorentre os diferentes utentes.Os sistemas interactivos obrigaram a uma profunda reformulao dos conceitos nos SO,conferindo grande importncia a conceitos at a secundrios, como: sistema de ficheiros, aproteco, a linguagem de interaco com o sistema.

    1.2.5. Memria VirtualLimites levaram a evoluo do hardware de gesto de endereos que permitiu um avanosignificativo que consistiu na possibilidade de trabalhar sobre um espao de endereamentovirtual de dimenses muito superiores e independente da memria fsica existente na mquina. Oprogramador ficava liberto das preocupaes de gesto do espao ocupado pelas suas aplicaes

    e, simultaneamente, o sistema podia gerir mais eficientemente a memria fsica disponvel.A existncia de memria virtual revolucionou os mecanismos de proteco, comunicao egerao de cdigo, constituindo uma das etapas significativas da evoluo dos SO.

    1.2.6. Sistemas DistribudosApareceram na sequncia do desenvolvimento dos mecanismos de interligao de computadores.O aumento de velocidade e elevada fiabilidade das redes locais de computadores permitiramdistribuir e gerir em conjunto os recursos de diversas mquinas. Novas questes de coerncia dainformao e de desempenho surgiram nestes sistemas.

    1.3. Tipos de Sistemas OperativosNa gama mais barata predominam os sistemas mono-utilizadores muito simples (CPM da Digita,

    MS-DOS da Microsoft).Na franja seguinte predomina o sistema UNIX, que se foi impondo como norma nos sistemasmultiprogramados para equipamentos de mdio porte.Os equipamentos mais complexos possuem geralmente SO proprietrios.

    Todos eles pertencem a uma mesma categoria Tempo Virtual, dado que o tempo de execuodos programas no tem relao com o tempo cronolgico exterior mquina (job-shop).Os sistemas onde a noo do tempo relevante so normalmente designados porTempo Real.Tm por objectivo conseguir que o computador produza uma resposta a um acontecimentoexterno ao fim de um intervalo de tempo limitado e previamente especificado. H vriasgradaes. Os transaccionais tambm se pode aqui englobar.

    1.4. Arquitectura do Sistema Operativo

  • 7/29/2019 fsOperativosResumo_Livro

    3/74

    O SO pode ser considerado como um programa de grande complexidade, responsvel pelagesto eficiente de todos os recursos da mquina, o que implica uma abordagem estruturada nasua concepo.Uma tcnica habitualmente usada a da decomposio em camadas funcionais. Cada camadaconstitui um nvel de abstraco que implementa uma mquina virtual com uma interface bemdefinida. Sobre esta mquina pode constituir-se outra que utiliza os servios da camadaprecedente para implementar o prximo nvel de abstraco. cada camada encapsula a

    implementao dos nveis inferiores fazendo que seja possvel modific-los sem afectar ascamadas exteriores.

    Numa descrio resumida, cada um dos nveis implementa as seguinte funes:- Gesto de Processos: multiplexa a mquina fsica entre um conjunto de entidades lgicas quedesignaremos por processos. Cada processo pode ser visto como uma mquina virtual queexecuta um programa. So ainda tratados os mecanismos de baixo nvel que permitem interactuarcom o hardware do processador, nomeadamente as interrupes.- Gesto de Memria: Controla a utilizao da memria fsica. A gesto da memria virtual e todosos algoritmos associados manipulao do espao de endereamento dos processos soexecutados neste nvel.- Comunicao e Entradas/Sadas: Os processos necessitam de comunicar para poderem gerirrecursos comuns ou controlar a execuo das aplicaes. Na comunicao podem tambm serconsideradas as operaes de E/S com o exterior da mquina. Apesar da implementao de E/Sser complexa, dado que interactuam com o hardware dos dispositivos, a sua estrutura interna einterface apresentam numerosas semelhanas com os restantes mecanismos de comunicao.- Sistema de Ficheiros: Podia-se considerar caso particular do anterior mas no assim, pois nossistemas actuais a gesto da informao na memria de massas adquiriu uma importnciafundamental na estrutura da programao e utilizao dos computadores. A gesto de ficheiros responsvel pela implementao eficiente de uma organizao lgica que virtualiza os dispositivosde memria de massa.- Interface Sistema: divide-se em 2 partes:- Funes Sistema: Constituem a interface dos servios providenciados pelas camadas internas.

    So agrupadas em bibliotecas de rotinas, que podem ser ligadas com os programas dosutilizadores para poderem aceder aos mecanismos sistema.- Interpretador de Comandos: na realidade uma aplicao fornecida com os sistema para

    facilitar a sua utilizao. Podem encadear-se comandos, numa autntica linguagem de controlo.

    Este modelo de implementao no faz referncia a alguns aspectos que, por serem gerais nose enquadram em nenhum dos nveis:- Optimizao da Utilizao do Sistema (Scheduling). Embora geralmente se associe gestoeficiente do processador, relaciona-se com todos os nveis, nomeadamente a gesto de memriae E/S.- Mecanismos de Proteco, tambm presentes em todos os nveis: Para no se poder realizaroperaes que ponham em risco o sistema ou interactuem indevidamente com outros processos.

    1.5. Modelo ComputacionalOlhar para o SO na perspectiva do programador, abstraindo dos detalhes de implementao dosmecanismos que o compes.Modelo Computacional o conjunto dos objectos do sistema operativo e as operaes que ospermitem manipular.Pragmaticamente pode ser considerado como o conjunto de funes sistema que o programadordispe para o desenvolvimento das aplicaes e que lhe possibilitam estender a capacidade daslinguagens de programao sequenciais.Quando se entra em aplicaes complexas preciso utilizar as facilidades oferecidas pelos SOpara obter desempenho, interactividade, paralelismo de que numerosas aplicaes necessitam.Por exemplo gesto dos perifricos. outro ex. reservas de bilhetes de avio paralelismo, comcoerncia dos dados --> processos envolvidos consigam comunicar e sincronizar-se.O modelo computacional para o sistema operativo tem na programao concorrente a mesmafuno que o modelo proporcionado pelas linguagens de alto nvel para a programao de

  • 7/29/2019 fsOperativosResumo_Livro

    4/74

    sequencial. Fornece aos utilizadores um quadro de referncia que facilita a concepo, teste etransporte dos programas.

    A necessidade de criar mecanismos para a programao sistema que se tornem independentesdos SO motivou o aparecimento de numerosas propostas de extenso das linguagens deprogramao.

  • 7/29/2019 fsOperativosResumo_Livro

    5/74

    CAP. 2 A GESTO DOS PROCESSOSO modo como se implementa o paralelismo um dos conceitos fundamentais na compreensodos SO.O paralelismo no pode ser entendido restritamente pois as mquinas s tm um processador.Analogia com secretrias. O paralelismo no SO deve ser considerado de um ponto de vistamacroscpico.Os sistemas com mltiplas actividades paralelas so designados, na terminologia dos SO, por

    sistemas concorrentes. A concorrncia advm da existncia de diversos fluxos de actividadeque vo disputar o acesso aos recursos do sistema, evidentemente limitados, como por ex. leitorde bandas magnticas, memria central, disco, processador.A multiplexagem do processador feita internamente com critrios perfeitamente bem definidos.Contudo, a nvel de utilizador este determinismo no visvel. O no determinismo no modo como feita a multiplexagem do processador uma caracterstica fundamental a ter em conta nautilizao do modelo computacional. Execues diferentes do mesmo programa sero semprediferentes.A capacidade que o sistema tem de esconder do utilizador todos os detalhes relativos gesto doprocessador permite a criao do conceito de processo como unidade abstracta, o que deextrema importncia, pois de outra forma o programador teria de considerar todos osacontecimentos existentes no sistema aquando da programao.

    2.2. Processador, Processo, ProgramaProcessador o rgo material donde emana toda a actividade do sistemaProcesso a entidade activa no sistema. Executa um conjunto de aces que so determinadaspor um programa.Programa uma sequncia de instrues sem actividade prpria.Um processo pode, durante a sua vida, executar diversos programas e um programa ou partes deum programa podem ser partilhados por vrios processos.

    Um processo estabelece um ambiente de execuo para o programa mquina virtual. Oprocesso define:

    - Conjunto de operaes- Operaes elementares proporcionados pelo hardware- Operaes de interaco com as outras mquinas virtuais (sincronizao e comunicao

    com outros processos)- Um espao de endereamento

    A restrio do reportrio de instrues e o confinamento dos processos a espaos deendereamento limitados so a base dos mecanismos de proteco que o SO implementa.Em cada instante o processo encontra-se numa determinada etapa de execuo. Na comutaode um processo necessrio garantir que o seu estado de execuo memorizado de modo aque, mais tarde, possa ser retomada a execuo no ponto onde foi interrompida. Associado acada processo existe um vector de estado ou contexto que mantm toda a informao de que o

    SO precisa para o retomar.A semelhana com mquina virtual mantm-se. O contexto o paralelo dos habituais registos deestado que controlam a execuo do processador.No contexto memorizada a informao relacionada com o processador e com o ambiente desoftware no qual o processo se executa. A informao relativa ao processador mantida nocontexto, vulgarmente designado de hardware, que depende da arquitectura da mquina eque ser analisado no prximo captulo. (TF1_2001-I-a) quais as informaes que fazemparte do contexto hardware de um processo.O contexto de software contm informaes que permitem gerir os recursos do sistema econhecer os atribudos a um processo:- Identificao do processo e do utilizador- Prioridade- Estado do processo- Perifricos utilizados- Ficheiros abertos

  • 7/29/2019 fsOperativosResumo_Livro

    6/74

    - Programa em execuo- Directoria actual e por omisso- Cotas de utilizao de recursos- Contabilizao da utilizao de recursos

    2.3. Os Processos no Modelo ComputacionalA criao e a eliminao de processos so funes indispensveis no modelo computacional.

    Geralmente os processos organizam-se com uma hierarquia, a partir de um processo pai, o quese traduz por informaes que so mantidas no contexto dos processos.A forma da hierarquia varia de sistema para sistema. Por ex. em alguns sistemas a terminao deum processo elimina todos os seus filhos, noutros os filhos mantm-se activos.

    A funo de criao de um processo pode ser utilizada para a definio de um conjunto deinformaes que especificam o ambiente de execuo do processo e que so mantidas no seucontexto de software. A estrutura hierrquica facilita a funo de criao, dado que grande partedo ambiente de execuo pode ser herdada do contexto do pai.Os parmetros da funo de criao variam muito de sistema para sistema.Um dos parmetros a especificar pelo utilizador o programa a executar sob forma de um ficheiroque contm o cdigo binrio ou, nos sistemas mais simples, o endereo da posio de memriaonde se encontra a primeira instruo executvel.No nosso modelo computacional didctico:

    IdProcesso := CriarProc (, Prioridade)EliminarProc (IdProcesso)

    So rotinas de sistema.

    2.4. A Funo dos Mecanismos de SincronizaoDeterminadas aplicaes s podem ser eficientemente implementadas quando suportadas pordiversas actividades independentes.

    Existem diversos motivos que justificam a necessidade de sincronizar explicitamente a actividadedos processos:Cooperao para executar aplicao comum. A situao mais simples a de um processo ques pode prosseguir depois de outro ter executado determinada operao. Exemplo da reserva debilhetes: h o processo que dialoga com o utilizador e o processo que gere a estrutura de dados.Os mecanismos de sincronizao devem permitir que um processo se bloqueie espera de umacontecimento que lhe ser assinalado implicitamente quando for desbloqueado.Competio por um recurso ex. perifrico que deve ser usado em exclusividade, ficheiro onde sepretende escrever, Gesto de Memria, visto esta ser finita. Os processo que no disponham derecursos para prosseguir tm de ser bloqueados num mecanismo de sincronizao at que acondio de bloqueio deixe de ser vlida.Excluso Mtua A necessidade de excluso no to bvia como as anteriores tendo origem no

    mecanismo de multiplexagem do processador que suporta a execuo dos processos. Ex. varivelque pode ser acessada por vrios processos, pode gerar inconsistncia num processo pois foialterada do exterior. Na programao concorrente a utilizao de variveis partilhadas implicaprecaues suplementares que obrigam a sincronizar os processos que as pretendem modificar.A excluso mtua pode ser considerado um caso particular da competio por um recurso aestrutura de dados.

    2.5. Excluso MtuaVamos ver com um ex. de algoritmo simples de atribuio de blocos de memria, que suportadopor uma estrutura de dados implementada por uma pilha, composta por registos que indicam oendereo inicial do bloco livre e o tamanho.Para pedir um bloco de memria, um processo executa a rotina PedeMem que tem comoparmetro de sada o descritor do bloco. Para devolver DevolveMem. Pilha implementada porvector de descritores indexado por varivel que referencia primeiro bloco livre. Pilha e Topo so

  • 7/29/2019 fsOperativosResumo_Livro

    7/74

    variveis privadas do programa Distribuidor s quais os processo utilizadores no tm acesso eque so convenientemente inicializadas no arranque do sistema.type

    Descritor = recordInicio : endereo;Tamanho : integer

    end;

    varPilha : array [1..N] of Descritor;Topo : 0..N;

    procedure PedeMem (var Desc : Descritor; var Estado : boolean);begin

    if Topo 0 thenbegin

    Desc := Pilha [Topo];Topo := Topo-1;Estado := true

    endelse Estado := false

    end; {PedeMem}

    procedure DevolveMem (Desc : Descritor);begin

    if Topo < N thenbegin

    Topo := Topo + 1;Pilha [Topo] := Desc

    end

    end; {DevolveMem}

    Aparentemente funciona, mas se um processo inicia a devoluo de memria, mas que devido auma interrupo lhe retirado o processador. Consideremos ainda que o processo que seexecuta em seguida pretende pedir memria. D erro: o endereo do bloco de memria que oprocesso B obtm invlido. O processo A apenas tinha incrementado a varivel topo e no tinaainda actualizado o descritor que ela passou a referenciar. Erro difcil de detectar.O erro advm de a varivel Topo no estar coerente com o estado da tabela Pilha. As duasvariveis representam o estado global do Distribuidor de Memria e a sua modificao no foi feitade forma indivisvel, conduzindo a que o estado da pilha seja incoerente.Conclumos que a manipulao de estruturas de dados partilhadas deve ser realizada de formaatmica. A expresso Seco Crtica usada para designar este conceito.

    2.5.1. Solues AlgortmicasCom apenas 2 processos no sistema poderamos usar uma soluo algortmica baseada numavarivel de controlo que indique a situao da seco crtica (acessvel ou inacessvel). A variveldeve ser posicionada no prembulo da seco crtica e colocada no estado que permita o acessoa outros processos no final.Nota: Vamos usar uma rotina de sistema CriarProc em que dado como parmetro umprocedimento. Os processos assim criados podem aceder s variveis globais declaradas noprograma principal. uma extenso aos SO comerciais que veremos no cap. 15.O algoritmo baseia-se na existncia de uma varivel (Nproc) que permite a entrada de um dosprocessos na seco crtica, ficando o outro em ciclo at que a varivel lhe permita prosseguir.Esta soluo enferma de um defeito bvio, os processos apenas podero aceder alternadamente seco crtica.

    type

  • 7/29/2019 fsOperativosResumo_Livro

    8/74

    O programa pode ser alterado para resolver este problema. A figura seguinte mostra a soluoproposta por Dekker que resolve o problema de forma elegante: o processo comea pormanifestar o seu desejo de aceder seco crtica, testando, em seguida, se o outro processotambm est a tentar aceder. Caso tal no suceda, executar a seco crtica. No caso detentativa simultnea o processo entra num ciclo controlado pela varivel que exprime o desejo deentrada do processo concorrente. A deciso efectuada pela varivel ProcPrioritario que permite

    escolher entre os dois processos que concorrem para entrar na seco.Se o processo rival for o privilegiado, retira o seu pedido (para permitir a entrada do outro) e fica espera da libertao do recurso. A varivel ProcPrioritario alternada, no final do acesso, paragarantir igualdade.

    type

    A generalizao a N processos difcil. Lamport props uma soluo baseada na atribuio acada processo de um nmero de acesso (senha) que permite sequenci-los (Bakery Algorithm sistemas distribudos e centralizados).O algoritmo baseia-se em 2 vectores. O 1 memoriza o nmero da senha atribuda ao processo, osegundo indica se o processo est a pretender que lhe seja atribuda uma senha. Antes de aceder seco, o processo executa a funo Max, que devolve uma senha superior a todas as jdistribudas. Devido concorrncia 2 processo podero receber nmeros idnticos.Depois de atribuda a senha, o processo efectua um ciclo para determinar se o seu n de ordem inferior ao de todos os outros processos. O algoritmo baseia-se no varrimento da tabela de senhastendo o cuidado de evitar comparaes com os processos que esto no processo de atribuio(Escolha = true). A funo Compara resolve o caso de senhas idnticas usando o n de ordem doprocesso.

    2.5.2. Trinco LgicoAs solues apresentadas so complexas para o programador que apenas quer garantir a

    excluso mtua. Acresce que em Pascal instrues do tipo A:=B[i+1] traduzem-se em vriasinstrues mquina interrompveis individualmente.Incorporar no modelo computacional do SO os mecanismos necessrios para implementao daexcluso mtua uma alternativa muito mais simples e eficaz. Uma soluo bvia consideraruma varivel que funcione como trinco lgico da estrutura de dados. O trinco fechado quando seacede estrutura e libertado quando se sai. Qualquer processo que pretenda aceder estruturaprotegida deve testar em primeiro lugar o valor do trinco e apenas prosseguir se o encontrar livre.Se estiver fechado o processo fica em ciclo at o trinco ser libertado.O trinco (lock) manipulado por duas primitivas: Fechar (Lock) e Abrir (Unlock) implementadaspelo SO como se segue. Tem de ser inicializado convenientemente (aberto) no arranque.

    procedure

    Mesmo assim h a possibilidade de a seco crtica no ser respeitada.

    2.6. SemforosAs primitivas Abrir e Fechar comportam elevado grau de ineficincia. Consideremos ahiptese de ser retirado o processador a um processo que entrou na seco crtica. Nestecaso o trinco permanece aferrolhado e qualquer outro processo que pretenda aceder seco vai manter-se a testar a varivel do trinco durante todo o tempo que lhe foi atribudopara utilizao do processador, apesar da libertao do trinco depender de um processoque, nesse momento, no poder obviamente estar a usar o processador. Chama-se a istoespera activa.Para evitar isso o processo que espera a libertao de um recurso deve ser bloqueado(novo estado em que processo pode estar), ficando memorizado no sistema a razo quemotivou o bloqueio.

  • 7/29/2019 fsOperativosResumo_Livro

    9/74

    At agora tnhamos Em Execuo e Executvel (esperando oportunidade de dispor doprocessador). No Bloqueado o processo retirado da lista dos que concorrem peloprocessador. O contexto colocado numa outra lista, espera de um determinadoacontecimento.O conceito semforo implementa um mecanismo de sincronizao sem espera activa,tornando-se assim a ferramenta de base da sincronizao. Exame 2 poca-2000/2001 25/10/2001

    Um semforo constitudo por uma estrutura de dados composta por uma varivel decontrolo (normalmente inteiro: positivo indica que pode continuar execuo, negativo ounulo, o processo fora o bloqueio do processo) e por uma fila de espera destinada a conteros descritores dos processos bloqueados. Exame 2 poca-2000/2001 25/10/2001Bloquear um processo significa retir-lo de execuo, salvaguardar o seu contexto, marcar o seuestado como bloqueado e colocar o contexto na fila de espera (normalmente FIFO, mas tambmpode ser por prioridades) do semforo. Desbloquear tir-lo da fila de espera do semforo,modificar o seu estado para executvel e transferi-lo para a fila dos processos executveis. Oprocesso continua quando o despacho o seleccionar.O semforo manipulado por 2 primitivas (wait e signal / Esperar e Assinalar).O trinco prximo do hardware o semforo do software. necessrio que as variveis do semforo sejam protegidas contra a escrita (excepto asprimitivas, claro). Ento os semforos devem ser objectos de sistema com a necessriaproteco. So, alis, parte integrante do ncleo do SO que multiplexa o processador.Para implementar seco crtica a varivel deve ser inicializada a 1.

    Operaes sobre semforostype

    Semaforo = recordInt : integer;PRT : ApontadDescProc {apontador para descritor de processo}

    end;

    procedure Esperar (var S:Semaforo);begin

    S.Int := S.Int 1;if S.Int < 0 thenbegin

    < Bloquear o Processo e Inclu-lo na Fila dos Processos Bloqueados >end

    end;

    procedure Assinalar (var S: Semaforo);begin

    S.Int := S.Int + 1;if S.Int end

    end;

    Distribuidor de Memria Implementado com Semforos

    procedure PedeMem (var Desc : Descritor; var Estado : boolean);begin

    Esperar (SemExMut);if Topo 0 thenbegin

  • 7/29/2019 fsOperativosResumo_Livro

    10/74

    Desc := Pilha [Topo];Topo := Topo 1;Estado := true;

    endelse Estado := false;Assinalar (SemExMut)

    end; {PedeMem}

    procedure DevolveMem (Desc : Descritor);begin

    Esperar (SemExMut);Topo := Topo + 1;Pilha [Topo] := Desc;Assinalar (SemExMut)

    end; {DevolveMem}

    2.7. Gesto de RecursosA excluso mtua um caso particular de competio para um recurso nico. O Distribuidor dememria fornece-nos outro exemplo de competio que resulta do n de blocos de memria serfinito. Tambm se pode usar semforo, para garantir que quando a pilha se encontre vazia oprocesso seja bloqueado at haver um bloco livre. A inicializao da varivel permite controlar on de vezes que o procedimento Esperar pode ser chamado (sem Assinalar nenhum) semconduzir a bloqueios:

    Distribuidor de Memria Semforo para controlo dos blocos de memria disponveis

    procedure PedeMem (var Desc : Descritor);begin

    Esperar (Memoria);Esperar (SemExMut);

    Desc := Pilha[Topo];Topo := Topo-1;Assinalar (SemExMut)

    end;

    procedure DevolveMem (Desc : Descritor);begin

    Esperar (SemExMut);Topo := Topo+1;Pilha [Topo] := Desc;Assinalar (SemExMut);Assinalar (Memoria);

    end;

    {Inicializao dos Semforos}SemExMut := CriarSemaforo (1);Memoria := Criar (Nmax);

    A varivel, em cada momento indica o n de blocos livre.Memoria = Valor Inicial + N DevolveMem N PedeMem

    importante perceber que a ordem das operaes Esperar (Memria) e Esperar (SemExMut) anica possvel dado que a ordem inversa poderia conduzir a bloqueio permanente. Da o grandecuidado que preciso para programar com semforos independentes. Neste caso o sistema notem maneia de saber que o bloqueio do processo no semforo Memria elimina a necessidade demanter a seco crtica fechada.

  • 7/29/2019 fsOperativosResumo_Livro

    11/74

    2.8. Cooperao Entre ProcessosNa sua forma mais simples consiste em bloquear um processo Pi at que um processo Pj lheassinale que uma determinada aco ou acontecimento se produziu. Para sincronizar os 2processos necessrio dispor de um mecanismo independente da velocidade de execuo quepermita a um processo activo:- Bloquear-se espera de um sinal a ser emitido por outro processo- Activar um processo bloqueado

    2.8.1. Sincronizao DirectaA aco directa sobre o estado de um processo o mecanismo mais simples de sincronizao.Primitivas (Suspender, Acordar). H pois uma nova fila de espera onde o processo pode sercolocado. Na directa h que conhecer o identificador do processo sobre o qual se pretende actuar.Este processo no pode ser geral por duas razes: 1- No se pode dar aos programas doutilizador (sempre suspeitos) a possibilidade de interferir com utilizadores ou mesmo com o SO.Uma restrio habitual s permitir aos processos relacionados hierarquicamente (normalmentedom mesmo utilizador). 2- de ordem lgica. na definio do algoritmo de um processo possvelsaber que este ir interactuar com outro, mas desconhecer a sua identidade que apenas serdefinida durante a execuo. Ex. marcao de bilhetes... pouco flexvel mas por vezes necessrio. Ex. processo sistema para agrupar blocos dememria. S pode ser executada directamente pois no possvel prever onde colocar, no cdigodos processos, os pontos de sincronizao.

    2.8.2. Sincronizao IndirectaTem a vantagem de garantir a igualdade de tratamento a todos os processos com os mesmosprivilgios. Tem 2 categorias:- Acontecimento Memorizado o sinal enviado por um processo memorizado no caso de noexistir um processo bloqueado sua espera.- Acontecimento no memorizado o sinal s tido em conta se existir um processo bloqueado sua espera.H casos em que h interesse ter o sinal memorizado durante apenas algum tempo (sistemas de

    tempo real)

    A sincronizao indirecta exprime-se com base em semforos atravs do conceito de semforoprivado (so normalmente abstraco que o programador deve garantir as propriedades) a umprocesso (se for o nico que executa a primitiva Esperar), podendo os outro notific-lo porAssinalar. Deve ser inicializado a zero. Memoriza o n de vezes que o acontecimento se produziu(Assinalares).

    2.9. Sincronizao no Modelo ComputacionalO modelo computacional tem de ser completado com os mecanismos de sincronizao entreprocessos. Normalmente os sistemas oferecem primitivas para sincronizao directa:Suspender (IdProc)

    Acordar (IdProc)Por vezes pode-se usar temporizao:Adormecer (IntervaloTempo)

    Todos os sistemas dispem de algum mecanismo, mesmo rudimentar, para implementar asincronizao indirecta entre processos. Os mais simples consiste em variveis binrias desincronizao que, no estado falso, bloqueiam os processos que executam Esperar e, quandotomam o valor verdadeiro, autorizam a passagem de todos os processos.

    dado que os semforos do para implementar qualquer modelo de sincronizao vamos us-loscomo mecanismo fundamental de sincronizao no nosso modelo computacional.Primitivas:IdSemaforo := CriarSemaforo (ValorInicial)

    EliminarSemaforo (IdSemaforo)Esperar (IdSemaforo)

  • 7/29/2019 fsOperativosResumo_Livro

    12/74

    Assinalar (IdSemaforo)

    2.10. Exemplos de Programao Concorrente2.10.1. Sistema de Controlo2.10.2. Leitores e Escritores (de uma estrutura de dados)Considera-se que existem dois conjuntos de processos: os que lem e os queescrevem/actualizam uma estrutura de dados partilhada. Quando um processo pretende escrever

    na estrutura de dados tem de aceder em exclusividade. Os processos Leitores que no modificama informao podem aceder concorrentemente. Quando um Escritor termina a sua actividade,todos os Leitores, eventualmente bloqueados, devem ser acordados para poderem prosseguir emparalelo.O ponto mais delicado a necessidade de libertar todos os processos Leitores bloqueadosquando lhe atribuda a possibilidade de acederem estrutura de dados. A programao darotina IniciaLeitura reflecte este problema sendo interessante analisar a utilizao dos semforosnesta rotina. de destacar ainda a necessidade de proteger com uma seco crtica a modificao dasvariveis que definem o estado em que o sistema se encontra. importante realar que a secocrtica tem de ser libertada antes de bloquear o processo no semforo Leitores. esquecer alibertao conduziria paragem de todo o sistema.

    varNLeitores, LeitoresEspera, EscritoresEspera : integer;EmEscrita : boolean;Mutex, Leitores, Escritores : semaforo;

    procedure IniciaLeitura;begin

    Esperar (MutEx) /*seco crtica para estado do sistemaif EmEscrita or EscritoresEspera > 0 thenbegin

    LeitoresEspera := LeitoresEspera + 1;Assinalar (Mutex); /*liberta seco crtica depois deactualizar estado do sistema

    Esperar (Leitores); /*Bloqueia-se pois h processos emescrita ou espera para escrever.Avana quando houver umAssinalar(Leitores)

    Esperar (Mutex); /* Depois de ler vai actualizar estado dosistema

    LeitoresEspera := LeitoresEspera 1;if LeitoresEspera > 0 then Assinalar (Leitores); /* se houver mais espera para ler

    vai assinalar que acabou de ler,

    para entrar outroend;NLeitores := NLeitores + 1;Assinalar (Mutex); /* liberta seco crtica depois de

    aactualizar estado do sistemaend; {IniciaLeitura)

    procedure AcabaLeitura;begin

    Esperar (Mutex); /* acabou de ler e vai actualizar estadodo sistema

    NLeitores := NLeitores 1;if EscritoresEspera > 0 and NLeitores = 0 then /* Se h escritores espera e no h

    leitores a ler...Assinalar (Escritores); /* Desbloqueia Escritores

  • 7/29/2019 fsOperativosResumo_Livro

    13/74

    Assinalar (Mutex); /* Liberta seco crticaend; {AcabaLeitura}

    procedure IniciaEscritabegin

    Esperar (Mutex); /* Bloqueia-se na seco crticaif NLeitores > 0 or EmEscrita then /* Se houver leitores ou escritores em

    actividade...begin

    EscritoresEspera := EscritoresEspera + 1; /* fica esperaAssinalar (Mutex); /*liberta seco crticaEsperar (Escritores); /* bloqueia-se pois h escritores ou

    leitores em actividadeEsperar (Mutex); /* tenta aceder seco crtica, depois

    de ter sido desbloqueado por Assinalar(Escritores)

    EscritoresEspera := EscritoresEspera 1;end;EmEscrita := true; /* Depois de ter actualizado a seco

    escreveAssinalar (Mutex); /* liberta seco crtica

    end; {IniciaEscrita}

    procedure AcabaEscrita;begin

    Esperar (Mutex); /* tenta aceder seco crtica depoisde ter escrito tudo

    EmEscrita := false; /* Como j acabou de escrever actualizaa seco com essa informao

    if LeitoresEspera > 0 then Assinalar (Leitores) /* Se h Leitores espera desbloqueia-

    oselse if EscritoresEspera > 0 then Assinalar (Escritores); /* Se h escritores esperadesbloqueia-os

    Assinalar (Mutex); /*Liberta seco crticaend; {AcabaEscrita}

    2.11. InterblocagemApesar dos semforos existem ainda alguns problemas:- Imobilizao definitiva de um recurso um processo que execute Esperar (SemExMut) semfazer em seguida Asssinalar (SemExMut) devido a erro de programao impede a utilizao dorecurso pelos restantes processos.

    - Interblocagem Ser SemA e SemB forem dois semforos de excluso mtua e se doisprocessos executarem o encadeamento de operaes descrito na figura (pg.67) atinge-se umasituao em que nenhum dos dois poder prosseguir, ficando ambos bloqueados e sem qualquerhiptese de sarem dessa situao.Processo 1 Esperar(semA) Expira quantumProcesso 2 Esperar (Sem(B) Esperar (SemA) BloqueadoProcesso 1 Esperar(SemB) - BloqueadoO problema da interblocagem complexo. Para a tentar evitar foram propostas algumas soluespreventivas:- Garantir que os recursos do sistema so todos adquiridos pela mesma ordem (no pode sergeral pois h programadores independentes)- Requisitar todos os recursos que o processo necessita no incio da sua execuo (degradaode desempenho)- Quando a aquisio de um recurso no possvel, libertar todos os recursos detidos (s recursopreemptveis. ex. ficheiro parcialmente escrito no pode ser libertado a meio).

  • 7/29/2019 fsOperativosResumo_Livro

    14/74

    A preveno o melhor mas penaliza desempenho. H outras propostas com mecanismo de altonvel (cap. 16 e 17).

  • 7/29/2019 fsOperativosResumo_Livro

    15/74

    CAP. 3 O NCLEO DO SISTEMA OPERATIVO3.1. Arquitectura Tpica de Um ProcessadorApesar da complexidade de um computador, relativamente fcil identificar os principaiselementos da arquitectura. Todas as mquinas consideradas neste texto baseiam-se emevolues do modelo de Von Neumann que h 3 dcadas vem sendo utilizado na definio damaioria dos computadores comerciais. O modelo pressupe uma memria onde soarmazenados os programas e respectivos dados. O CPU e os controladores que executam

    algoritmos de comunicao com os dispositivos fsicos. Mais os buses.

    3.1.1. Unidade Central de ProcessamentoTem 3 subunidades:- Unidade Aritmtica e Lgica ou Unidade Operativa- Unidade de Controlo- Unidade de Gesto de MemriaUnidade Aritmtica e Lgica (ALU Arithmetic and Logic Unit)para alm dos circuitos lgicos que implementam as operaes, tem associado um banco deregistos endereados explicita ou implicitamente nas instrues. vulgar um segundo CIencarregar-se das operaes com vrgula flutuante (coprocessamento). As instrues destinadasao coprocessador tm um cdigo de operao especfico que permite a sua identificao. Quandoo coprocessador reconhece as instrues que lhe so destinadas, toma conta do bus para acederaos operandos e efectua a operao. Os registos podem conter apenas variveis especializadascomo Acumulador, Registo de estado, auxiliar, contador de programa (86/286) ou podem ser deutilizao indiferenciada (VAX e M68000). Esta ltima soluo apesar de complicar a estruturainterna permite optimizao de cdigo.Recentemente, assistiu-se a uma evoluo significativa na forma como os registos so utilizadosna arquitectura dos processadores. Analisando-se como a linguagens de alto nvel funcionam,chegou-se concluso de que se podiam obter ganhos significativos de desempenho atravs dautilizao de bancos de registos de grande dimenso, internos ao processador, cuja optimizaoos compiladores se encarregam pois conhecem a sua dimenso. O nmero de acessos memria reduz-se consideravelmente.

    Para acomodar um extenso banco de registos, a complexidade dos modos de endereamento(indexado, relativo, etc.) foi reduzida. O nome desta arquitectura RISC.Do ponto de vista do SO, o conjunto de registos corresponde ao contexto de execuo hardwaredo programa que se executa no computador. Ao mudar a actividade em curso, necessriosalvaguardar os valores de todos os registos para restaurar o contexto de hardware quando sepretenda prosseguir com a actividade interrompida. (TF1_2001-I-a) quais as informaes quefazem parte do contexto hardware de um processo.

    A Unidade de ControloA principal funo descodificar as instrues e traduzi-las em microcomandos que vo actuarsobre a unidade operativa e as linhas de sinalizao que controlam o bus.

    Pode ser implementada de vrias formas, sendo a mais comum a microprogramao.Uma outra capacidade a de restringir a execuo de instrues privilegiadas e especiais (aoutilizador), como as de manipulao de interrupes ou registos especiais. Isto levou definiode 2 modos de execuo: modo sistema e modo utilizador.Algumas mquinas apresentam um esquema um pouco mais complexo, considerando vriosnveis de proteco para permitir um melhor escalonamento dos mecanismos de proteco. NoVAX e no Intel 286 existem 4 nveis, que, ligados ao mecanismo de gesto de memria, permitemimplementar um sistema sofisticado de proteco.Tem ainda como funo a gesto de interrupes.

    Unidade de Gesto de MemriaMMU: no existe nos sistemas mais simples mas indispensvel nos sistemas de endereamentovirtual. Funcionalidade:- Possibilidade de recolocar cdigo ou dados na memria sem alterar o programa- Deteco de endereos invlidos

  • 7/29/2019 fsOperativosResumo_Livro

    16/74

    - Proteco de blocos de memria de acordo com o modo de execuo do processador.Faz parte integrante do processador, apesar de ser normalmente implementada por circuitos oucartas independentes. O acesso memria faz-se passando sempre por esta unidade quetransforma o endereo virtual enviado pela ALU num endereo fsico que ser enviado para amemria central.

    3.1.2. As Interrupes

    Permitem desviar assincronamente a execuo de um programa para outro. Do ponto de vista doSO so indispensveis para a implementao da concorrncia em que se baseia todo ofuncionamento do sistema.Para analisar o tratamento de interrupes podemos considerar os seguintes pontos:- Controlo de aceitao das Interrupes- Salvaguarda do contexto- Seleco da rotina de tratamento da interrupo.

    Aceitao das InterrupesBaseia-se em 2 mecanismos.O 1 automtico e inibe as interrupes depois de uma delas ter sido aceite.O 2 explicitamente controlado por programao atravs de uma mscara global. vantajoso, durante a execuo de uma rotina referente a um acontecimento de pequenaprioridade, esta poder ser interrompida --> conjunto de mscaras associadas aos vrios nveis deinterrupo.Em alguns sistemas este controlo executado pelo SO, mas na maioria das arquitecturas pelohardware. Registo memoriza o nvel actual das interrupes (IPL Interrupt Priority Level), postonum nvel e mascarando os outros.

    Salvaguarda do ContextoDevido interrupo, tenho de guardar:- Contador de Programa- Registo de Estado do Processador

    - Registos GeraisPode ficar a cargo do prembulo da rotina de interrupo ou ser parcialmente feita pelo hardwareantes de lhe transferir o controlo.

    Seleco de Rotina de InterrupoOs primeiros processadores s tinham uma linha de interrupo e depois atravs de um testeprogramado viam de onde ela vinha.Para evitar este teste foram includos na arquitectura das interrupes mecanismos devectorizao. O controlador do perifrico envia um vector (8bits no 286 --< tabela identificaposio de memria de incio da rotina) que permite ao hardware agulhar para a rotina respectiva(ex 286 NMI: falha de alimentao, inicializao/reset, etc; e INT). Tambm podem serprovocadas por instrues.

    3.1.3. A Memria um dos recursos crticos no desempenho global do sistema.Hierarquizando:- memria cache memria de reduzido tempo de acesso onde so mantidas as variveis ou asinstrues recentemente acedidas;- memria central memria do processador implementada com tecnologia de semicindutor;- memria secundria discos magnticos.O sistema dever gerir esta hierarquia de memria de forma a obter o melhor compromisso entrea ocupao das memrias rpidas e as necessrias transferncias para disco.

    3.1.4. BusA memria, a UCP e os controladores de perifricos encontram-se interligados atravs de um bus,que composto por 3 buses funcionalmente especializados:- Bus de dados bidireccional

  • 7/29/2019 fsOperativosResumo_Livro

    17/74

    - Bus de endereos que interliga o CPU e a unidade de gesto de memria- Bus de controlo

    3.1.5. PerifricosNas mquinas actuais o SO no se ocupa da gesto de baixo nvel dos perifricos. Placas comcapacidade autnoma de processamento ou CIs executam os protocolos fsicos de gesto dosperifricos, oferecendo uma interface virtual ao SO.

    Os controladores mais vulgares so:- Controlador de disco- Controlador de linhas assncronas (ligaes a terminais interactivos)- Controlador de protocolos sncronos (ex: X25)- Controlador de portos paralelos- Controlador de redes locais de computadores (ex: Ethernet)Mecanismos de Acesso Directo Memria (DMA) permitem optimizar o dbito de transferncia dainformao entre perifricos de alta velocidade e a memria. Cada canal de acesso directo memria composto por um conjunto de registos que so programados antes do incio datransferncia e especificam o endereo de/para onde se pretende ler/escrever os dados, o nmerode octetos a transferir, sentido da transferncia, etc. Depois de iniciada, decorre de formaautnoma ao processador.Um perifrico importante o gerador de temporizaes.

    3.2. Estrutura do NcleoO SO um programa ou conjunto de programas que implementa as diversas funes de suporteao modelo computacional. Como complexo temos de estruturar com base em nveis deabstraco para facilidade de implementao e manuteno.Cada camada encapsula a implementao dos conceitos que lhe correspondem, oferecendo umainterface que permite a sua utilizao pelos restantes nveis --> sucessivas mquinas virtuais. habitual que as diversas funes das camadas mais internas no sejam acessveis aosutilizadores ou que as funes internas do ncleo no respeitem a decomposio modular que omodelo de camadas sugere.

    Geralmente diversas camadas so agrupadas numa entidade chamada ncleo do SO. Asrestantes so consideradas como servios sistema e so executadas fora do ncleo. Aproteco e o tempo de execuo so 2 importantes factores para essa definio. frequente agrupar no ncleo do SO todas as funes que necessitem executar-se no nvel maisprivilegiado do processador ( que exigem manipulao de interrupes, acesso a registosespeciais, interaco com perifricos; ou modificam informao em que se baseia todo ofuncionamento do sistema tabelas de processos, tabelas de memria).Para que o modelo de multiprogramao seja eficaz importante que o ncleo no monopolize autilizao do processador. A conjuno destes 2 critrios implica que algumas funes associadass camadas mais internas da estrutura de implementao seja executadas fora do ncleo, comoservios sistema.Como difcil rigor, geralmente, as funes que tm a ver com gesto de processos, gesto de

    memria e entradas/sadas so integradas no ncleo.

    3.3. Gesto de Processos a camada mais interna da estrutura hierrquica de implementao dos SO. As funesexecutadas por esse nvel so fundamentais para o funcionamento de todo o sistema e soaquelas a que est associado o maior nvel de proteco. vulgar dividi-la em 3 unidades funcionais:- Gesto das Interrupes;

    - Multiplexagem do Processador efectuada conjuntamente por 2 entidades funcionais (comexecuo em nveis diferentes do modelo):

    - Gesto do Processador Escalonamento- Despacho;

    - Funes de Sincronizao.A rotina de despacho tem por funo determinar o prximo processo a executar-se eefectuar a comutao do contexto;

  • 7/29/2019 fsOperativosResumo_Livro

    18/74

    O escalonamento implementa a poltica global de gesto que optimiza a utilizao de todosos recursos da mquina (processador, memria, perifricos, etc.). Exame1poca2001-2002Grupo III

    3.3.1. Gesto das InterrupesEncontra-se no cerne da actividade do sistema. So o mecanismo que permite a comunicaoassncrona entre o processador e o sistema. Sem elas os programas apenas poderiam testar

    sistematicamente o hardware.O tratamento das interrupes uma das zonas do SDO mais directamente dependentes daarquitectura do processador. importante distinguir Interrupes e Excepes que tm considerveis diferenas a nvel dosmecanismos que as controlam.As interrupes so globais --> ncleo toma conta, as excepes relacionam-se apenas com oprocesso que as provoca --> tratadas no seu contexto.O programador de aplicaes raramente ter de interactuar com a gesto de interrupes. Aocontrrio, o controlo de excepes normalmente da responsabilidade sua.

    3.3.2. Representao dos ProcessosSo representados por um contexto que memoriza todas as informaes necessrias suaexecuo. Esse contexto, ao longo da sua execuo, ir fazer parte de inmeras listas do ncleo. vulgar considerar o contexto constitudo por 2 partes:- Hardware (todos os registos do processador):

    - Acumulador(es)- Registos de Uso Geral- Contador de Programa- Apontador de Pilha- Registo de Estado do Processador

    (TF1_2001-I-a) quais as informaes que fazem parte do contexto hardware de umprocesso.- Software:

    - Identificao do processo e do utilizador- Prioridade- Estado do Processo- Perifricos utilizados- Ficheiros abertos- Programa em execuo- Directoria actual / por defeito- Quotas de utilizao dos recursos- Contabilizao da utilizao dos recursos.

    Alguma desta informao permanente outra voltil.O contexto inicializado quando o processo criado com informaes fornecidas pelo utilizadorna chamada rotina de criao do processo ou retiradas do contexto utilizador do processo pai.

    Os contextos dos processos activos so mantidos na Lista dos Processos Executveis queprocura reflectir o algoritmo de seleco do despacho.

    3.3.3. DespachoA rotina de despacho chamada sempre que o processo actual deva ser comutado ou exista apossibilidade de ser comutado. dada a frequncia de utilizao do despacho, o tempo deexecuo da rotina crtico.A comutao de processos a base da pseudoconcorrncia e o seu funcionamento apenasprecisa de gesto cuidada das interrupes.Normalmente quando se d uma interrupo os processadores guardam o PC e o registo deestado. Quando h a RTI prossegue do endereo onde se tinha dado a interrupo.Para introduzir a hiptese de comutao temos de modificar o final da rotina de interrupo porforma a chamar o despacho antes de efectuar o retorno. Este verifica se h necessidade decomutao e se sim, guarda o contexto, no descritor do processo e coloca nos registos do

  • 7/29/2019 fsOperativosResumo_Livro

    19/74

    processador o estado do processo seleccionado pelo algoritmo de escalonamento. Finalmentetroca o PC e Rflags para relanar um processo. Depois desta troca que vem o RTI.

    3.3.4. Gesto do Processador EscalonamentoO processador o recurso crtico do sistema pelo que o escalonamento tenta optimizar asua utilizao, mantendo-o tanto quanto possvel ocupado. Mas tem de ser tudo visto emconjunto. Por ex. de nada serve colocar sucessivamente processos em execuo se isso

    originar muitos acessos ao disco (gesto de memria).Teoricamente seria interessante chamar o escalonamento cada vez que um recurso atribudo ou libertado, mas isso um grande peso para o sistema reportar todos osacontecimentos. pois preciso encontrar um equilbrio, definindo os dados eacontecimentos decisivos.Nos sistemas mais evoludos, o sistema atribui prioridades aos processos e modifica-se deacordo com o seu comportamento no sistema, procurando privilegiar os processos quemelhor se adaptam aos critrios globais de gesto, que podem ser vrios (tratamento porlotes, interactivos, tempo real, tempo partilhado, etc.) TF1_2001-I-c)No escalonamento podemos considerar 3 tipos de objectivos diferentes:- Procurar equilibrar a carga do sistema por forma a dar um servio relativamente uniformeaos utilizadores interactivos (Tempo Partilhado) Exame1poca2001-02-GrupoIII- Dotar o sistema de grande reactividade s condies externas (Tempo Real Relaxado)- Conseguir que o sistema execute determinadas aces em intervalos de tempoprdeterminados (Tempo Real Restrito) TF1_2001-I-b)

    Tempo de Execuo PartilhadoPara equitatividade a maioria dos sistemas apenas permite que o processo em execuo utilize oprocessador durante um certo intervalo de tempo (time-slice / quantum). Eventualmente odespacho pode seleccionar o mesmo se for o mais prioritrio.Soluo Round Robin muito fcil mas tem o evidente problema de facilmente conduzir a temposde resposta elevados em situaes de carga e no permite reagir a prioritrios.

    MultilistaUma evoluo haver vrias listas de acordo com o tipo de processo em execuo. Parasistemas mistos de tempo partilhado e lotes. Aos ltimos aplicar-se-ia uma poltica baseada namenor durao do trabalho e aos outros, circular.Uma evoluo possvel considerar que os processos podem ser transferidos entre vrias listasde acordo com o modo como utilizam o processador. A lista mais prioritria corresponde aosprocessos que utilizam pouco tempo de processador (tpico dos interactivos - I/O bound).A gesto multilista tem muitas variantes. A soluo mais simples (retirar sempre da lista maisprioritria) pode conduzir a starvation em carga elevada.

    Prioridades Dinmicas uma evoluo. O ajuste de prioridade de um processo reflecte o seu comportamento. O critrio

    de alterao baseia-se na utilizao dos recursos crticos, principalmente do processador.O peso da mudana de contexto importante, pelo que uma optimizao possvel aumentar oquantum.na maioria dos sistemas o quantum fixo.

    PreempoPreempo designa a aco de retirar o processador a um processo em execuo devido existncia de outro mais prioritrio. indispensvel nos sistemas de tempo-real. A preempotem, naturalmente, custos, devido ao peso das mudanas de contexto, pelo que alguns sistemaslimitam o seu uso, na deixando um processo ser retirado sem decorrer um determinado tempo.

    Tempo RealNestes sistemas as prioridades dos processos so geralmente fixas dado que esto associados aacontecimentos, que so notificados atravs dos mecanismos de sincronizao.

  • 7/29/2019 fsOperativosResumo_Livro

    20/74

    3.4. Implementao da Sincronizao3.4.1. Seces CrticasInibio das InterrupesA soluo mais simples para implementar a excluso mtua inibir as interrupes durante oposicionamento das variveis partilhadas e respectivo teste, para que no seja possvel amudana de contexto. Mas isso tem desvantagens: ineficiente gesto da mquina resultante daparagem de todas as aces externas susceptveis de fazerem evoluir o estado do sistema. Por

    ex. no se pode fazer esperar os discos por causa de sincronizao entre utilizadores.Assim, a inibio de interrupes s poder ser usada quando a seco crtica for muito pequenaou o processador possui sistema de interrupes hierarquizado.

    Implementao dos TrincosUma varivel do tipo trinco s implementvel se a sequncia de teste e posicionamento forindivisvel. Uma implementao possvel consiste na inibio das interrupes durante a execuodas operaes. Contudo, esta soluo no s coloca problemas ao escalonamento dos processoscomo no funciona em arquitecturas multiprocessador. Uma soluo mais geral implica autilizao de mecanismos de hardware que garantam a possibilidade de efectuar, de formaatmica, o teste e modificao de uma posio de memria. Na maioria das mquinasexistem instrues especficas Test and Set: Como se trata de uma nica instruo nopode ser interrompida.function TestAndSet (var Trinco: boolean): boolean;begin

    TestAndSet := Trinco;Trinco := true;

    end; Exame1poca2001-02 Grupo II a) e b)Exame2poca2000-01 Grupo III c)

    procedure Fechar (var Trinco: boolean);begin

    while TestAndSet (Trinco) do;

    end;

    Excluso Mtua em Arquitecturas MultiprocessadorTest and Set no suficiente. A sequncia de teste e posicionamento envolve leitura e escrita, oque para o controlador de bus (de todos os processadores) sempre visto como 2 sequnciasindependentes.Nesta arquitectura temos portanto de descer ao nvel de gesto do bus para garantir aatomicidade das operaes elementares de sincronizao. Teste e modificao num nico ciclode acesso memria. No M68000 a instruo TAS; no I8086 o prefixo lock torna uma instruoindivisvel. A rotina fechar conhecida por spin-lockfechar proc near

    mov a1, 1

    ciclo: lock xchg a1, trincoor a1, a1jnz cicloret

    fechar endp

    3.4.2. SemforosA cada semforo est associado uma varivel que representa o seu valor e um apontador queindica o incio da lista. Esta estrutura de dados dever ser mantida nas tabelas centrais dosistema.No contexto do processo deve existir um apontador que permite referenciar outros contextos. Amanipulao do apontador permite colocar logicamente o contexto na lista correspondente ao seuestado.As rotinas Assinalar e Esperar tm de ser sequncias indivisveis de aces. Basta pensar emEsperar, decrementa varivel, ainda no fez o teste e interrompido. Outro processo efectua

  • 7/29/2019 fsOperativosResumo_Livro

    21/74

    Esperar e fica logo bloqueado. O primeiro encontra semforo com valor negativo e bloqueiatambm.A manipulao da estrutura de dados do semforo deve ser includa numa seco crtica. Mascomo semforos so objecto do ncleo, a seco crtica pode implementar-se com base nainibio de interupes, com as restries j apontadas. interessante analisar o funcionamento dos semforos em conjuno com uma poltica deescalonamento preemptvel porque existe interdependncia entre ambos.

    Vamos supor que um semforo de excluso mtua com uma lista de espera gerida no habitualFIFO e dois processos concorrentes P1 < P2 que pretendem aceder mesma seco crtica.Consideremos que P1 efectua primeiro a primitiva Esperar iniciando a execuo do cdigo daseco crtica. Quando P2 executar Esperar teremos a seguinte situao:- P1 a executar a seco crtica- P2 bloqueado no semforoQuando P1 libertar o semforo vai desbloquear P2 que passa para a lista dos processosexecutveis. Nesta situao, como considermos P2 era mais prioritrio, vai executar-seimediatamente, passando P1 do estado de Em Execuo para Executvel. Se a relao deprioridades fosse inversa, logicamente P1 continuaria a sua execuo e P2 apenas passaria paraExecutvel. De notar que, mesmo que existisse P3 com maior prioridade que os 2 outros, nopoder aceder seco crtica pois a varivel do semforo permaneceu a zero.

    /* Programao de um semforoprocedure Esperar (S:Semforo)begin

    Fechar (Trinco);S.Int := S.Int 1;if S.Int < 0begin

    < bloquear processo e inclu-lo na fila de espera >end;

    Abrir (Trinco);

    end;

    procedure Assinalar (S:Semforo)begin

    Fechar (Trinco);S.Int := S.Int + 1;if S.Int

    end;Abrir (Trinco);

    end;

    3.5. Implementao das Funes SistemaO sistema implementa mecanismos que, a vrios nveis, protegem o acesso s suas estruturas dedados. Primeiramente nenhuma operao do sistema operativo poder ser executada sem seratravs da invocao das funes sistema fornecidas com o SO.De realar que funo sistema engloba a funo propriamente dita que se executa no ncleo e arotina de interface que ligada (linked) com o cdigo do utilizador. Esta responsvel pelavalidao de parmetros, sua formatao e colocao nas estruturas adequadas e finalmentedesencadear a interrupo. No retorno efectua o inverso e trata as indicaes de erros.A proteco das funes sistema implica que a chamada se efectue atravs de pontos de entradaespecficos. Na maioria dos sistemas so utilizadas instrues especiais (trapas) que causam umainterrupo. A agulhagem para a rotina de sistema efectuada pela rotina de tratamento dainterrupo com base num identificador da funo.O espao de endereamento do SO encontra-se protegido contra acessos do modo utilizador.

  • 7/29/2019 fsOperativosResumo_Livro

    22/74

    Para alm de assegurar a segurana este processo tem a vantagem do cdigo das funessistema ser partilhado por todos os programas.Um segundo mecanismo de proteco aplica-se aos parmetros das funes sistema. Umutilizador no pode especificar como parmetro entidades do sistema ou zonas de memria queno lhe pertenam.

  • 7/29/2019 fsOperativosResumo_Livro

    23/74

    CAP. 4 - MECANISMOS DE GESTO DE MEMRIA4.1. IntroduoA exposio est dividida em 2 partes:- Os mecanismos de gesto de memria, determinam a organizao da memria do computador,ou seja, se o endereamento real ou virtual, se segmentada ou paginada, ou qual o tamanhodas pginas ou segmentos. Estes mecanismos so em geral executados pelo hardware de gestode memria do processador, devidamente programado pelo SO.

    - Os algoritmos de gesto de memria, so da exclusiva responsabilidade do SO. Elesdeterminam que decises devem ser tomadas, usando os mecanismos de baixo nvel para aslevar a cabo.

    4.1.1. Processo e Espao de EndereamentoJ foi dito que um programa executa as suas instrues num determinado espao de memriaassociado ao processo. Designa-se por espao de endereamento de um processo o conjuntode posies de memria que um programa executado por esse processo pode referenciar. Oespao de endereamento est associado ao processo. Se houver uma falha, o hardware provocauma excepo que tratada pelo SO, causando normalmente a terminao do processo emcurso.

    4.1.2. Hierarquia de MemriaDo ponto de vista do SO a memria divide-se em:

    - Memria Primria (Fsica ou Central) pode ainda ser decomposta em central e cache,geralmente geridas pelo prprio hardware; voltil.

    - Memria Secundria (ou de Disco); persistente.Os tempos de acesso s memrias variam normalmente na razo inversa do seu custo. Por estarazo, a dimenso da memria secundria tipicamente uma ou mais ordens de grandezasuperior.

    4.1.3. Endereos Reais e VirtuaisOs primeiros computadores suportavam apenas endereamento real, no qual os endereos

    gerados pelo programa tinham uma relao directa com os endereos da memria fsica docomputador. No havia qualquer transformao pelo hardware. Um endereo real refere-sesempre memria fsica, nunca secundria.Desvantagens do mtodo:- A dimenso dos programas limitada pela dimenso da memria fsica- Um programa s pode funcionar nos endereos fsicos para onde foi escrito, no podendo serexecutado numa outra mquina com um mapa de memria diferente.- A multiprogramao fica bastante dificultada, pois no possvel executar simultaneamente 2programas que tivessem sido preparados para correr nos mesmos endereos fsicos.Para fazer face a estes problemas, numa mquina com endereamento virtual, os endereosgerados pelo programa so convertidos pelo processador e em tempo de execuo em endereosfsicos.

    funo do hardware de gesto de memria e dos SO fazer a correspondncia. Se a palavraestiver em memria secundria, a unidade de gesto de memria avisa o SO para este carregar apalavra em memria fsica.

    4.2. Endereamento Real4.2.1. Sistemas Monoprogramados (MS/DOS, Macintosh)FuncionamentoO principal inconveniente o tamanho dos programas ser limitado.Para ultrapassar este problema desenvolveu-se a tcnica da sobreposio (overlay): O programa dividido numa parte residente, que est sempre em memria, e em overlays, que so mdulosindependentes uns dos outros e que so carregados em memria a pedido do programa. Ex.Programa principal, overlay de inicializao, de simulao, de escrita de resultados. Acomunicao feita por variveis situadas na zona que permanece residente, que correspondema variveis globais do programa numa linguagem de alto nvel.

  • 7/29/2019 fsOperativosResumo_Livro

    24/74

    Este mtodo simples, at para o SO, mas tem a desvantagem de ter de ser o programador aindicar explicitamente quando deve ser carregado novo overlay, o que torna a programao maisdifcil. ainda difcil de aplicar a certos programas e pode tornar-se lento. bvio que as limitaes fsicas se mantm: a soma da parte residente + overlay no podeexceder a memria fsica.

    Proteco

    Em geral o SO fica localizado no extremo inferior da memria. Uma vez que s existe umutilizador, o problema da proteco pode ser ignorado. Se um programa perder o controlo ecorromper o SO, ter-se- de reinicializar o a mquina e carregar novamente o SO.Mquinas mais sofisticadas tm um registo limite indicando o endereo mnimo a que umprograma pode aceder. Se tenta --> excepo (modo utilizador e modo sistema, j).

    4.2.2. Sistemas Multiprogramados com Parties FixasFuncionamentoPara permitir multiprogramao necessrio que vrios programas possam coexistir em memriafsica. A foram mais simples dividir a memria em parties, carregando-se um programa emcada. Quando o programa da partio 1 se bloquear numa operao de E/S salvaguarda-se ocontexto do processador e passa-se a executar o programa da partio 2, e assimsucessivamente. O grau de multiprogramao depende do n de partiesInicialmente os programas eram compilados para uma determinada partio, o que uma mgesto. Para resolver o problema surgiram os programas recolocveis: os compiladores nofazem referncia a endereos fsicos, mas geram tabelas que o carregador em memria (loader)converte. Assim a deciso da partio onde colocar feita pelo operador de sistema na altura.Alguns compiladores tm registo base que carregado com endereo fsico do incio da partio,que serve de base a indexao pelo hardware na altura de execuo. A isto tambm se chamaendereamento baseado, que j uma aproximao do virtual pois tambm conta com ohardware. No entanto continuam relacionados com os fsicos a menos de uma constante. Resolveo problema da recolocao mas deixa outros em aberto.

    Dimenso dos ProgramasA tcnica dos overlays pode continuar a ser usada dentro das parties, sendo sempre limitadapela maior partio. noite pode juntar-se tudo numa partio.

    Fragmentao do tipo fragmentao interna (dentro do bloco/partio).

    ProtecoA existncia de vrios utilizadores implica que cada um no aceda a outra partio que no a sua.H um par de registos que carregado com o endereo mximo e mnimo da partio actual, queo hardware depois controla.

    4.2.3. Sistemas Multiprogramados com Parties VariveisFuncionamentoO problema da fragmentao anteriormente referido pode ser resolvido mudando dinamicamenteo nmero e dimenso das parties sem parar o sistema.

    FragmentaoQuando um programa termina e liberta a sua partio, 3 situaes podem ocorrer:O novo programa exactamente do tamanho do bloco livre (pouco provvel); Se for maior, no sepoder executar; se for menor pode e deixa zona menor livre.Com o tempo gera-se fragmentos de memria espalhados pela memria (fragmentaoexterna); logo, de tempos a tempos tem de haverrecompactao.

    Dimenso dos ProgramasContinua limitada pela memria fsica mas no necessrio parar o sistema.

  • 7/29/2019 fsOperativosResumo_Livro

    25/74

    Proteco igual anterior

    4.3. Endereamento VirtualO principal objectivo dissociar os endereos gerados pelo programa dos fsicos, acabando, parao programador, com a limitao do tamanho dos programas.O mecanismo de traduo efectuado pelo hardware (para ser rpida), mais propriamente pela

    gesto de memria do processador. As outras componentes do processador (unidade de controlo,ULA) s manipulam endereos virtuais. Uma tabela de correspondncia ocupava muita memria.Por isso, a memria dividida logicamente em blocos contguos, existindo para cada bloco umaentrada na tabela de tradues.Um endereo passa a ter a forma (bloco, deslocamento)Os 2 mtodos mais importantes de dividir a memria em blocos so: paginao (blocos com omesmo tamanho) e segmentao (blocos com tamanhos diferentes).

    4.3.1. SegmentaoObjectivosDiviso dos programas em segmentos lgicos que reflictam a sua subdiviso funcional (ex. rotina).A ideia base tentar suportar na gesto de memria as abstraces comuns das linguagens,nomeadamente:- Carregamento em Memria O segmento a unidade mnima a carregar em memria.Considera-se que todas as palavras dentro de um segmento tm a mesma probabilidade de seracedidas.- Proteco feita em termos de blocos lgicos.- Eficincia O princpio da localidade de referncia diz-nos que, se acedermos a um endereode um segmento lgico, com grande probabilidade os prximos acessos sero a endereossituados no mesmo segmento.

    Mecanismo de Traduo de EndereosUm endereo tem a forma (segmento, deslocamento)

    Existe uma tabela de segmentos composta pelo descritor de cada segmento. Cada descritorcontm o endereo fsico do segmento (de base), a sua dimenso, informao respeitante proteco e utilizao do segmento. 2 registos da unidade de gesto (registo base da tabela desegmentos BTS) e registo limite da tabela de segmentos LTS) contm respectivamente oendereo real de incio da tabela e a sua dimenso. Quando o programa gera um endereo, onmero do segmento comparado com o LTS. Se for inferior, somado com o BTS obtendo-se aentrada na tabela de segmentos correspondente a esse segmento. s vezes, para maior rapidez,usam-se, na soma, apenas alguns bits segmentos fsicos comeam na fronteira de 2 n. Deseguida os bits de proteco so testados (ler, escrever, executar, acesso legal). Por fim, verificado se o deslocamento pretendido inferior ou igual dimenso do segmento. Se oendereo for vlido, o deslocamento somado ao endereo fsico do incio, obtendo-se oendereo fsico pretendido.

    Se algum teste falhar, o endereo invlido, o hardware interrompe a traduo e gera umaexcepo. tudo feito pelo hardware. O SO s programa os vrios registos, preenche a tabela de segmentose trata excepes.Existe uma tabela de segmentos por processo. Quando se d uma mudana de contexto, osregistos base e limite tm de ser carregados com o endereo e dimenso da tabela de segmentosdo novo processo.A dimenso mxima de um segmento est associada arquitectura da mquina. ex. Intel 80286 64Kbytes.

    Optimizao do Mecanismo de Traduo de EndereosA tabela de segmentos est em memria fsica. Se o hardware tiver de lhe aceder cada vez que oprograma gera um endereo, o custo de acesso a uma posio de memria duplica, o que inaceitvel, pois a velocidade do computador est em grande parte limitada pelos acessos memria.

  • 7/29/2019 fsOperativosResumo_Livro

    26/74

    Em arquitecturas segmentadas a soluo habitual guardar em registos, de acesso rpido, asentradas da tabela de segmentos correspondentes aos segmentos em utilizao. O 80286 tem 4registos para segmentos: cdigo, dados, pilha e um extra. A operao demorada, que ler odescritor da tabela de segmentos, s efectuada da primeira vez que o segmento for acedido tipo cache.

    Fragmentao

    A segmentao gera fragmentao externa. Uma maneira de a resolver copiar todos ossegmentos para um dos extremos da memria, como no caso das parties variveis. Outrasoluo usar a memria secundria. o que incrtemental. Em ambas o processamento interrompido.

    ProtecoA unidade de proteco o segmento e est especificada no descritor, e feita a vrios nveis:- Como processos diferentes tm tabelas de segmentos diferentes, os espaos de endereamentovirtual so distintos, no havendo forma de um processo poder referenciar zonas de memria deoutro.- O deslocamento dentro do segmento verificado comparando-o com a dimenso presente nodescritor.- O tipo de acesso ao segmento verificado.

    Partilha de Memria Entre ProcessosBasta ter na tabela nas vrias tabelas de segmentos uma entrada contendo o mesmo endereofsico e dimenso.

    4.3.2. PaginaoObjectivosOferecer ao programador um espao de endereamento (virtual) linear, em geral bastante maiorque a dimenso da memria fsica da mquina. A ideia subjacente fazer com que oprogramador no precise de se preocupar com a gesto de memria quando escreve um

    programa.

    Mecanismo de Traduo de EndereosA memria dividida em blocos todos do mesmo tamanho, chamados pginas.Um endereo tem a forma (pgina, deslocamento)Existe uma tabela de pginas compostas pelo descritorde cada pgina. Cada descritor contmo endereo fsico da pgina, um bit de presena e informao respeitante proteco e utilizao da pgina.Dois registos de hardware de traduo de endereos, chamados Base da Tabela de Pginas(BTP) e Limite da Tabela de Pginas (LTP), contm respectivamente o endereo real de incio databela de pginas e dimenso desta. Quando o programa gera um endereo, o n da pgina comparado com o registo LTP. Se for inferior, somado com o BTP, obtendo-se a entrada na

    tabela de pginas correspondente a esta pgina. De seguida testam-se os bits... se o endereo forvlido, o deslocamento somado ao endereo fsico do incio da pgina, obtendo-se o endereofsico pretendido. A soma pode ser s concatenao de bits... tambm pode haver excepo parao SO.Existe uma ou mais tabelas de pginas por processo. Quando se d uma mudana os vriosregistos de base e limite tm de ser carregados com o endereo e dimenso das tabelas depginas do novo processo.A dimenso das pginas est definida na arquitectura das mquinas no podendo nunca seralterada. O espao virtual tpico de 4Gbytes (32 bits), a dimenso das pginas varia de 512bytes (VAX) a 4 a 8 Kbytes (SUN).

    Tabela de Traduo de Endereos (TLB)A tabela de pginas reside em memria fsica. Como na segmentao o mecanismo obriga aacesso suplementar memria, tornando indispensvel a existncia de uma tabela interna unidade de gesto de memria que guarde as PTE das ltimas pginas acedidas. Agora no

  • 7/29/2019 fsOperativosResumo_Livro

    27/74

    possvel registos pois nunca possvel saber se a palavra a ser acedida est na pgina ou no(no h diviso lgica). A soluo comum consiste em guardar numa memria associativa deacesso muito rpido chamada TLB (Translation Lookaside Buffer) os descritores das ltimaspginas acedidas. feito em paralelo com o acesso tabela de pginas. Se for encontrado oendereo na TLB interrompido o acesso tabela de pginas. Se no, posto na TLB em FIFO.Os RISC usam TLB gerida por software. A dimenso destas tabela s pequena (64, 128 entradas)pois o seu custo elevado (90 a 95% de eficcia).

    Falta de PginaA PTE tem um bit de presena (bit P) que indica se a pgina est ou no em memria primria.Se o bit estiver a zero, o hardware de gesto gera uma excepo que interrompe a instruo ameio. Diz-se ento que houve uma falta de pgina. O SO analisa a causa da excepo,determina que foi uma falta de pgina e inicia o processamento adequado. Em 1 lugar ter quealocar uma pgina livre em memria. Se uma pgina nova basta preench-la com zeros; seexiste em memria secundria, necessrio l-la do disco. Quando o acesso ao disco terminar, oSO preenche a PTE com o endereo da pgina, pe o bit P a 1 e coloca o processo na fila dosexecutveis.As excepes geradas pela UGM so diferentes pois interrompem uma instruo ao meio e oprocessador tem depois de retom-la a meio. At porque uma instruo pode ter uma parte numapgina e outra noutra. As instrues tm pois de ser recomeveis.A diferena importante que s as instrues que carregam um novo segmento podem originaruma falta de segmento. S estas tm de ser recomeveis, o que simplifica o hardware doprocessador.

    FragmentaoH fragmentao interna na ltima pgina de cada bloco (cdigo, dados, pilha). Quanto maioresforem as pginas maior o desperdcio.

    ProtecoFaz-se da mesma forma que na segmentada: processos distintos tm tabelas de pginas

    diferentes e cada pgina contm os modos de acesso permitidos (leitura, escrita, execuo). Noentanto, a granularidade de proteco a pgina --> implica mais complicado e deselegante quea segmentada para proteger bloco lgico.

    Partilha de Memria Entre ProcessosBasta ter nas tabelas de pginas dos processos um conjunto de PTE indicando o mesmoendereo fsico.

    Dimenso das Pginas opo importante. Pginas pequenas tm a vantagem de diminuir a fragmentao interna masaumentam o nmero de faltas de pginas mantidas pelo SO.

    4.3.3. Memria Segmentada/PaginadaSegmentao segue aproximao lgica e elegante. Paginao segue aproximao fsica e eficiente. A arquitectura segmentada/paginada procura obter as vantagens de uma e de outra.O endereo tem a forma (segmento, pgina, deslocamento)O mecanismo de traduo de endereos pode ser visto na pg. 115A proteco e partilha de segmentos feita como na segmentao pura.O 80386 tem uma arquitectura segmentada/paginada. Um endereo virtual tem 48 bits, os 16mais significativos determinam o segmento, cuja dimenso mxima de 232 octetos. cadasegmento subdividido em pginas de 4 Koctetos

  • 7/29/2019 fsOperativosResumo_Livro

    28/74

    CAP. 5 ALGORITMOS DE GESTO DE MEMRIA5.1. IntroduoEstes algoritmos so usados para decidir onde se deve colocar um bloco de programa dada amemria livre, quando transferir uma pgina ou segmento de memria secundria para primria evice-versa e quando no existe mais memria livre que bloco retirar de memria para l colocaroutro com maior prioridade. Dependem do SO.Existem 3 tipos de decises que o SO tem de tomar:

    - Alocao: onde colocar um bloco de memria- Transferncia: quando transferir um bloco de memria secundria para primria e vice-versa- Substituio: quando no existe mais memria livre, qual o bloco a retirar de memria parasatisfazer o pedido.A complexidade dos algoritmos tem a ver com a arquitectura de memria do computador.

    5.2. Alocao (colocao) de MemriaSo representados por duas rotinas:endereo = AlocMem (dimenso)

    LibMem (endereo)A 1 rotina devolve o endereo de um bloco de memria livre da dimenso igual ou maior que opedido.O SO tem de utilizar estes algoritmos quando:- Na criao e terminao de processos- Por extenso do espao de endereamento.

    5.2.1. Alocao de PginasComo as pginas so todas do mesmo tamanho (uniformidade da memria), o algoritmo trivial:aloca-se qualquer pgina que esteja livre.As pginas livres so mantidas numa lista, geralmente gerida em FIFO.

    5.2.2. Alocao de Segmentos mais complexa pois preciso encontrar um segmento com dimenso suficiente. Entre os blocos

    livres maiores que o pedido, tem que se decidir qual deles provocar menor fragmentaoexterna. Mas um algoritmo muito complicado pode comprometer o desempenho, por demasiadolento.A estrutura de dados manipulada pelas rotinas de alocao de segmentos composta por umalista de blocos de memria livres. Cada registo contm o endereo do bloco livre e a suadimenso. A lista est ordenada por endereos fsicos de forma a se poder agrupar blocoscontguos na libertao. Certos algoritmos ordenam tambm por dimenso do bloco.Habitualmente os blocos tm granularidade mnima, do valor de uma potncia de 2. Emboraprovoque fragmentao interna, existem algumas vantagens:- Evita que se gerem fragmentos muito pequenos, que seriam de difcil aproveitamento e iriamaumentar o comprimento da lista, tornando a pesquisa lenta.- Os blocos devolvidos ficam naturalmente alinhados numa fronteira de palavra.

    - Os registos da lista de blocos livres precisam de menos bits.

    Os diversos algoritmos que iremos analisar diferem na poltica de escolha do bloco a devolver:Best-FitPesquisa a lista procura do bloco cuja dimenso seja a mais prxima (por excesso) dadimenso pedida.Deixa livre, normalmente, fragmento pequeno de difcil reutilizao.A lista ordenada por dimenso crescente de blocos.Em mdia preciso percorrer metade da lista para encontrar o bloco certo, e depois precisoreintroduzir o fragmento na posio adequada da lista.Worst-FitPesquisa a lista procura do maior bloco livre. A ideia o fragmento ainda servir.Tem a desvantagem de esgotar primeiro os blocos maiores, o que pode fazer com alguns pedidossubsequentes no possam ser atendidos.

  • 7/29/2019 fsOperativosResumo_Livro

    29/74

    A lista ordenada por ordem decrescente de dimenso dos blocos, pelo que o maior sempre oprimeiro.Tambm preciso reintroduzir fragmentos.First-FitPesquisa a lista por ordem crescente (ou decrescente) de endereos e escolhe o primeiro blocolivre com dimenso suficiente.Procura optimizar o tempo de alocao diminuindo o nmero de registos a percorrer na lista.

    Gera um grupo de pequenos blocos no incio. mais rpido que os anteriores, embora gere maior fragmentao.No h necessidade de manter lista ordenada por dimenso. No tem de se reintroduzirfragmentos.Next-Fit um first-fit modificado, em que a pesquisa do bloco livre comea no ponto onde terminou oanterior, evitando-se a pesquisa dos fragmentos pequenos no incio das lista.Tem a desvantagem de espalhar fragmentos pela memria toda.BuddyOrganiza a memria livre em blocos de dimenso bn, b e n n naturais.Normalmente b =2, o que origina o buddy binrio.Para satisfazer um pedido de dimenso D, percorre-se a lista procura de um bloco de dimensoR tal que 2k-1 < R < 2k. Se tal bloco no for encontrado, a lista percorrida procura de um blocode dimenso 2k+i , i>0, que ser dividido em duas partes iguais, de dimenso 2 k+i-1, chamadosbuddies. Um destes buddies ser ainda subdividido quantas vezes as necessrias at se obter umbloco de dimenso 2k. Se possvel, na libertao o bloco recombinado com o seu buddy, sendoa associao entre buddies repetida at se obter um bloco com a maior dimenso possvel.Este mtodo mais elaborado permite um bom equilbrio entre o tempo de procura e afragmentao interna e externa.

    5.3. Algoritmos de TransfernciaDeterminam quando um bloco de memria deve ser transferido entre memria secundria ecentral. Existem 3 alturas em que a transferncia pode ser feita:

    - A pedido (on request): o programa ou o SO determinam explicitamente quando se deve carregaro bloco em memria;- Por necessidade (on demand): o bloco acedido e gera-se uma falta de pgina ou segmento,sendo necessrio carreg-lo em memria- Por antecipao: o bloco carregado em memria pelo SO, pois este considera fortementeprovvel que ele venha a ser acedido nos prximos instantes.

    5.3.1. Transferncia de Segmentos (Swapping)Para o processo se executar tem de te todos (4) os segmentos carregados em memria.Quando um novo processo criado, possvel que no haja espao em memria para o conter.Nesse caso necessrio transferir um ou mais segmentos de outros processos par o disco.Geralmente escolhe-se um processo e transferem-se todos os seus segmentos, pois intil ter

    apenas alguns em memria. Nesta altura diz-se que o processo foi transferido para disco(swapped out). Um segmento sempre transferido como um todo. Este mecanismo denomina-setransferncia de segmentos (swapping) e permite, de uma forma simples e sem hardwaresofisticado, oferecer um ambiente de multiprogramao.As transferncias descritas so feitas a pedido.Um processo transferido para memria quando est executvel mas swapped out e o SOconsidera que o deve carregar para executar em breve. A passagem para executvel podeacontecer mesmo quando estava swapped out, porque o sistema guarda o seu descritor residenteem memria. Nunca h falta de segmento, o que permite algoritmos muito simples (Unix sobrePDP-11)Em mquinas mais complexas, que suportem faltas de segmento, possvel mais sofisticao,em que certos segmentos de um programa s so carregados por necessidade. Tem interessese o processo constitudo por vrios segmentos. Tem a vantagem de s carregar um segmentoem memria quando ele mesmo necessrio.

  • 7/29/2019 fsOperativosResumo_Livro

    30/74

    Os segmentos que no cabem de momento em memria so colocados numa zona separada dedisco, chamada rea de transferncia (swap area). Aloca-se com na memria. Quando osegemento transferido para disco, guarda-se no seu descritor da tabela de segmentos o blocode disco onde comea o segmento na rea de transferncia.Em memria segmentada no se utiliza, geralmente, tcnicas de carregamento porantecipao.Mas pode optimizar-se guardando os mais utilizados na swap area em blocos contguos.

    5.3.2. Transferncia de PginasO mecanismo normal de transferncia de pginas por necessidade (on demand).Quando a pgina se encontra no disco, a PTE contm, em vez do endereo real da pgina, obloco de disco onde a pgina se encontra.Quando ocorre falta de pgina, o SO aloca uma pgina, retirando-a da lista de pginas livres,preenche a PTE com o endereo fsico da pgina e inicia a leitura do disco. Depois posiciona o bitP a 1 e coloca o processo na lista dos executveis. No inverso determina o bloco do disco...Tipicamente, cada processo tem uma tabela de pginas para o cdigo e outra para os dados epilha. Existe ainda a do SO.As pginas de cdigo e dados inicializados em tempo de compilao podem ser lidasdirectamente do ficheiro. Quando o SO pe o programa em execuo, percorre a tabela depginas do processo, coloca em cada PTE o bit P a 0 e escreve o n de bloco dessa pgina noficheiro. O cdigo no lido duma vez, vo-se gerando faltas de pgina.Nestes caso possvel aplicar polticas de antecipao, que consistem em ler em avanoalgumas pginas. Tem 2 vantagens: diminui-se o n de faltas de pgina e optimizam-se osacessos ao disco. Pode ler-se pginas no necessrias.O sistema mantm uma zona de disco onde escreve as pginas, chamada rea de paginao. Obit P da PTE colocado a 0 e no lugar do endereo fsico de incio da pgina coloca-se o bloco dedisco onde a pgina est guardada. Tem de se ver se j h em disco (ex. cdigo no precisoreescrever).A escrita de pginas em memria secundria feita em grupo. As pginas modificadas soguardadas numa fila at uma certa dimenso.

    5.4. Algoritmos de Substituio5.4.1. Substituio de PginasOs algoritmos de substituio so particularmente importantes na memria paginada. Quando noh pginas livres, ter de se retirar uma pgina a um processo para satisfazer o pedido.O SO mantm 2 listas de pginas: a lista de pginas livres e a lista de pginas livres masmodificadas. As primeiras podem ser usadas a qualquer momento; as segundas tm de serescritas em disco antes de serem reutilizadas.Se o n de pginas livres ficar abaixo de um mnimo, acordado o processo paginador, que irlibertar pginas, utilizando um dos algoritmos que a seguir veremos, at que o n suba acima deum valor mximo.Periodicamente a lista de pginas modificadas escrita em disco e as pginas desta lista passampara a lista de pginas livres.

    Um programa tende a concentrar as referncias memria em determinadas zonas durantecertos perodos Princpio da localidade de referncia boa indicao para futuro prximo, parano retirarmos pginas que vo logo ser precisas.Os mtodos que vamos ver seguem todos este raciocnio. Todos eles mantm uma histria dosltimos acessos memria feitos pelo programa, como forma de decidir qual a pgina que, emprincpio, ser menos provvel de vir a ser acedida nos instantes seguintes.

    Menos Usada Recentemente (LRU)A que no seja acedida h mais tempo. No entanto, a sua aplicao rigorosa implica que sedetermine exactamente a pgina que no acedida h mais tempo. Uma possibilidade de o fazerseria registar na PTE uma marca de tempo (timestamp) cada vez que a pgina fosse acedida,procurando depois a que tivesse a marca mais antiga. Teria de ser efectuado pelo hardware degesto de memria complexo e dispendioso.H variantes mais simples que dividem as pginas em grupos etrios. O Unix V mantm a idadeem 3 bits na PTE e inicializados a 0.

  • 7/29/2019 fsOperativosResumo_Livro

    31/74

    Se o bit R estiver a 0 o processo paginador, acordado regularmente, incrementa-o; se R estiver a1 o contador e o bit R so postos a zero. Quando o contador chegar a um n mximo a pgina marcada como invlida (bit P a 0) e posta na lista das pginas livres ou modificadas.

    No Usada Recentemente (NRU) simplificao do LRU. O processo paginador percorre regularmente as tabelas de pginas,analisa os bits R e M e volta a colocar o bit R a 0. As pginas dividem-se em 4 grupos:

    - Grupo 0 (R= 0, M=0) No referenciada, no modificada- Grupo 1 (R=0, M=1) No referenciada, modificada- Grupo 2 (R=1, M=0) Referenciada, no modificada- Grupo 3 (R=1, M=1) Referenciada e modificadaO algoritmo escolhe uma pgina qualquer do grupo mais baixo que no esteja vazio. 2 bits dehardware apenas. possvel realizar o NRU em mquinas que no possuam o bit R (ver pg. 127)

    FIFOEscolhe a pgina que esteja h mais tempo em memria.A grande desvantagem que a pgina mais antiga , possivelmente, muito acedida. A vantagem a simplicidade do algoritmo.Em geral, nenhum SO usa FIFO puro, mas o VMS e outras Unix usam FIFO modificado, com 3listas (ocupadas, livres e livres mas modificadas). Todas as listas so geridas em FIFO. Opaginador em vez de percorrer as listas limita-se a retirar as de que necessita da lista de pginasocupadas. Desta forma as mais antigas vo para as livres ou modificadas (cache).

    Espaos de TrabalhoOs processos devem roubar pginas uns aos outros ou s a si mesmos? Se paginar contra siprprio, qual deve ser o n de pginas a manter em memria?Na dcada de 70 Denning desenvolveu a teoria dos espaos de trabalho (working sets). Define-seo working set de um processo num determinado intervalo de tempo como sendo o n de pginasacedidas pelo processo nesse intervalo.

    interessante verificar que para tempos razoveis (20, 50 ms) o working set de um processo semantm constante. Se estiverem em memria menos pginas que o ws h constantes falhas depgina. Se vrios tiverem este comportamento h colapso (thrashing) do sistema.Ex. no VMS um processo s colocado em memria central se existir um n mnimo de pginaslivres (ws mnimo), que depois pode crescer at um valor mximo aps o que comea a paginarcontra si mesmo.Se o n descer abaixo do ws mnimo (devido a um prioritrio, por exemplo) o proceso swappedout.

    5.4.2. Substituio de SegmentosA deciso no pode ser tomada pelos mesmos critrios usados para a paginao, pois osegmento ideal a substituir pode ser demasiado pequeno. Geralmente usam-se 3 critrios:

    - Estado e Prioridade do processo: processos adormecidos e pouco prioritrios so os primeiroscandidatos a ir para disco.- Tempo de permanncia do processo em memria: os mais recentes no devem sair logo- Dimenso do processo

    5.5. Anlise Comparativa da Segmentao e Paginao5.5.1. SegmentaoVantagens:- Adapta-se estrutura lgica do programa- Permite a realizao de sistemas simples sobre hardware simples- permite realizar eficientemente as operaes que agem sobre um segmento inteiroDesvantagens:- O programador tem de ter sempre algum conhecimento dos segmentos subjacentes- Os algoritmos tornam-se bastante complicados em sistemas mais sofisticados

  • 7/29/2019 fsOperativosResumo_Livro

    32/74

    - O tempo de transferncia de segmentos entre memria central e disco torna-se incomportvelpara segmentos muito grandes- A dimenso mxima dos segmentos limitada.As caractersticas que tornam, a segmentao vantajosa para sistemas simples (PCs),transformam-se em desvantagens insuperveis para sistemas mais complexos.

    5.5.2. Paginao

    Vantagens:- O programador no tem que se preocupar com a gesto da memria- Os algoritmos de alocao, transferncia e substituio so mais simples e eficientes- O tempo de leitura de uma pgina de disco razoavelmente pequeno- a dimenso dos programas virtualmente ilimitadaDesvantagens:- O hardware mais complexo, no pe