P. 1
Sistemas Operativos

Sistemas Operativos

|Views: 544|Likes:
Publicado porjgomes_95

More info:

Published by: jgomes_95 on Dec 15, 2011
Direitos Autorais:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

07/05/2013

pdf

text

original

Sections

  • 1. Histórico
  • 2.1 Sistemas Monoprogramáveis/Monotarefa
  • 2.2.1 Sistemas BATCH
  • 2.2.3 Sistemas de Tempo Real
  • 3.2 Buffer
  • 3.3 SPOOL
  • 3.4 Reentrância
  • 3.5 Segurança e Proteção do Sistema
  • 3.6 Operações de Entrada e Saída
  • 4.2 Funções do Sistema
  • 4.3 System Calls
  • 4.5 Arquiteturas: Sistemas monolíticos, em camadas e microkernel
  • 5.1 Componentes do processo
  • 5.2 Estados do processo
  • 5.3 Mudanças de estado do processo
  • 5.4 Tipos de processos
  • 6.1 Funções
  • 6.2 Critérios de escalonamento
  • 6.3 Escalonamentos Não-Preemptivos e Preemptivos
  • 7.1 Introdução
  • 7.2 Funções
  • 7.3 Alocação Contígua Simples
  • 7.4 Segmentação de Programas
  • 7.5 Alocação Particionada Estática
  • 7.6 Alocação Particionada Dinâmica
  • 7.7 Estratégias de Alocação de Partição
  • 7.8 Swapping
  • 7.9 Memória Virtual
  • 8.1 Estrutura de Diretórios
  • 8.2 Sistemas de alocação de arquivos
  • 8.3 Gerência de espaço livre
  • 8.4 Proteção de acesso

Universidade Jean Piaget de Cabo Verde, Pólo do Mindelo

Aula de : Sistemas Operativos
Docente: Celso Sousa

Autores: Josimar Costa nº 5320 ESI 2º ano Lenine Santos nº 5087 ESI 2º ano Rony Soares nº 3344 ESI 2º ano

1

Universidade Jean Piaget de Cabo Verde, Pólo do Mindelo

1. Histórico
Antes da década de 50, os computadores eram muito difíceis de serem programados. Era necessário conhecer totalmente sua arquitetura, e tal operação era efetuada em painéis com cerca de 6.000 conectores, em linguagem de máquina. Nesta fase os computadores não possuíam ainda dispositivos para interagir com o usuário, como teclados e monitores. Na década de 50, já com a utilização de transistores, sucedeu-se um grande avanço tecnológico, melhorando a velocidade dos processadores e a capacidade dos meios de armazenamento, em especial a memória e os discos magnéticos. Por volta de 1953 foi introduzido o primeiro sistema operacional, um programa de controle que permitia uma interação, mesmo que limitada, entre o operador e a máquina, otimizando a execução das tarefas. Em 1959 foi criada uma versão de sistema operacional que já implementava conceitos de memória virtual, conceito este largamente utilizado nos sistemas atuais. Na década de 60, a partir do surgimento dos circuitos integrados, foi possível difundir u uso de sistemas computacionais em empresas, com diminuição de custos e tamanho dos equipamentos. Além disso, esta década presenciou inúmeras inovações na área de sistemas operacionais, presentes até hoje, como os ambientes de multitarefa, multiprogramação, multiprocessamento e time-sharing, tendo o desenvolvimento destas técnicas avançado até o meado da década de 70, onde também foram implementadas as tecnologias baseadas em arquitetura VLSI (chips), as primeiras redes de computadores, e o desenvolvimento de diversas linguagens de programação de alto nível. A década de 80 foi marcada pela criação dos microcomputadores, baseados em microprocessadores de uso pessoal. Liderados pela IBM, diversos fabricantes seguiram por essa linha, porém alguns deles não abandonando a fabricação dos computadores de grande porte, como foi o caso da própria IBM. Nota-se que, a partir do meado da década de 80, acontece uma divisão de águas, com a indústria passando a produzir equipamentos de grande porte e muitos modelos de microcomputadores, que também precisavam de sistemas operacionais bastante evoluídos. Foram, então, utilizadas as técnicas modernas já existentes nos ambientes de grande porte na implementação de sistemas operacionais para os microcomputadores, com versões diversas, todas inicialmente monousuário/monotarefa (devido à baixa capacidade de armazenamento dos micros, naquela época). Com o avanço da tecnologia, os micros ganharam discos rígidos e outros periféricos, possibilitando a criação de sistemas operacionais mais evoluídos nesta categoria de computadores, quando surgiram os sistemas monousuário/multitarefa, que executam até hoje.

2

Universidade Jean Piaget de Cabo Verde, Pólo do Mindelo

Cronologia Grande porte (mainframes) 1990 1950 1960 1970 1980

1º Sistema Operacional Monoprogramável Monotarefa

Sistemas Multitarefa

Sistemas Multiprogramáveis Multitarefa

Introduzido o conceito de Memória Virtual

Microcomputadores

2. Tipos de Sistemas Operacionais
Tipos de Sistemas Operacionais

Sistemas Monoprogramáveis/ Monotarefa 2.1

Sistemas Multiprogramáveis/ Multitarefa

Sistemas Com Múltiplos Processadores

Sistemas Monoprogramáveis/Monotarefa

Os primeiros sistemas operacionais eram voltados tipicamente para a execução de um único programa. Qualquer outra aplicação, para ser executada, deveria aguardar o término do programa corrente. Neste tipo de sistema, o processador, a memória e os periféricos permanecem exclusivamente dedicados à execução de um único programa. Os sistemas monoprogramáveis estão diretamente ligados ao surgimento, na década de 50/60, dos primeiros computadores. Embora os sistemas operacionais já tivessem evoluído com as tecnologias de multitarefa e multiprogramáveis, os sistemas monoprogramáveis voltaram a ser utilizados na plataforma de microcomputadores pessoais e estações de trabalho devido à baixa capacidade de armazenamento destas máquinas, na época.

3

Universidade Jean Piaget de Cabo Verde, Pólo do Mindelo

Era muito clara a desvantagem deste tipo de sistema, no que diz respeito à limitação de tarefas (uma de cada vez), o que provocava um grande desperdício de recursos de hardware.

CPU

_______ _______ _______ _______ _______ Programa/Tarefa

Memória Principal

Dispositivos E/S

Sistema Monoprogramável/Monotarefa

Comparados a outros sistemas, os monoprogramáveis são de simples implementação, não existindo muita preocupação com problemas decorrentes do compartilhamento de recursos como memória, processador e dispositivos de E/S. 2.2 Sistemas Multiprogramáveis/Multitarefa

Constituindo-se uma evolução dos sistemas monoprogramáveis, neste tipo de sistema os recursos computacionais são compartilhados entre os diversos usuários e aplicações: enquanto um programa espera por um evento, outros programas podem estar processando neste mesmo intervalo de tempo. Neste caso, podemos observar o compartilhamento da memória e do processador. O sistema operacional se incumbe de gerenciar o acesso concorrente aos seus diversos recursos, como processador, memória e periféricos, de forma ordenada e protegida, entre os diversos programas. As vantagens do uso deste tipo de sistema são a redução do tempo de resposta das aplicações, além dos custos reduzidos devido ao compartilhamento dos recursos do sistema entre as diferentes aplicações. Apesar de mais eficientes que os monoprogramáveis, os sistemas multiprogramáveis são de implementação muito mais complexa.

4

Aplicações deste tipo eram utilizadas em cálculo numérico. Vem daí o nome batch (lote de cartões).Universidade Jean Piaget de Cabo Verde. etc. os programas eram submetidos para execução através de cartões perfurados e armazenados em disco ou fita. de tempo compartilhado e de tempo real. geralmente disco ou fita. podendo ser divididos em sistemas batch. de acordo com a figura abaixo. Sistemas Multiprogramáveis/ Multitarefa Sistemas BATCH Sistemas de Tempo Compartilhado Sistemas BATCH Sistemas de Tempo Real 2. back-ups. Todas as entradas ou saídas são implementadas por meio de algum tipo de memória secundária. Pólo do Mindelo _______ _______ _______ _______ _______ CPU _______ _______ _______ _______ _______ Programa/Tarefa Memória Principal Dispositivos E/S Programa/Tarefa _______ _______ _______ _______ _______ Programa/Tarefa _______ _______ _______ _______ _______ Sistema Multiprogramável/Multitarefa Programa/Tarefa Os sistemas multiprogramáveis/multitarefa podem ser classificados de acordo com a forma com que suas aplicações são gerenciadas. O processamento em batch tem como característica não exigir interação do usuário com o sistema ou com a aplicação. 5 . para posterior execução. Nesta modalidade.2.1 Foram os primeiros sistemas multiprogramáveis a serem implementados na década de 60. compilações.

2. este é interrompido pelo sistema operacional e substituído no processador por outro. Estes sistemas possuem uma linguagem de controle que permite ao usuário interagir com o sistema operacional através de comandos.3 Sistemas de Tempo Real Este tipo de sistema é implementado de forma bastante semelhante ao de tempo compartilhado. Neste tipo de processamento. que oferece tempos baixos de respostas a seus usuários e menores custos. O que caracteriza a diferença entre eles é o tempo exigido no processamento das aplicações. nos sistemas de tempo real os tempos de execução devem estar dentro de limites rígidos. Pólo do Mindelo Estes sistemas.2. se bem projetados. 6 .2 Sistemas de Tempo Compartilhado Também chamados sistemas de time-sharing. No sistema de tempo real não existe a idéia de fatia de tempo como nos sistemas de tempo compartilhado. o sistema responde em apenas alguns segundos à maioria destes comandos. teclado e mouse. mas podem oferecer tempos de resposta bastante longos.2. caso contrário poderão ocorrer problemas irreparáveis. que devem ser obedecidos. não havendo sistemas dedicados a este tipo de execução. Atualmente. permitem que diversos programas sejam executados a partir da divisão de tempo do processador em pequenos intervalos. cada usuário tem a impressão de que a máquina está dedicada ao seu programa. o que se levou a chamá-los também de sistemas on-line. os sistemas operacionais simulam este tipo de processamento. Normalmente. em função do alto grau de compartilhamento dos diversos recursos do sistema. podem ser bastante eficientes devido à melhor utilização do processador. Assim. como nos sistemas de tempo compartilhado. A maioria das aplicações comerciais atualmente é processada em ambiente de tempo compartilhado. denominados fatia de tempo (ou time-slice). Caso a fatia de tempo não seja suficiente para a conclusão do programa. como se ele fosse o único usuário a se utilizar do sistema. Enquanto nos sistemas de tempo compartilhado o tempo de processamento pode variar sem comprometer as aplicações em execução. Geralmente permitem interação do usuário com a aplicação através de terminais compostos por monitor. 2. enquanto aguarda nova fatia de tempo. é possível verificar arquivos armazenados em disco ou cancelar execução de programas. Um programa ocupa o processador o tempo que for necessário ou até que apareça um outro com um nível de prioridade maior. Esta prioridade de execução é definida pela própria aplicação e não pelo sistema operacional.Universidade Jean Piaget de Cabo Verde.

Pólo do Mindelo Estes sistemas são utilizados em aplicações de controle de processos.3 Sistemas com Múltiplos Processadores Os sistemas com múltiplos processadores caracterizam-se por possuir duas ou mais CPUs interligadas e trabalhando em conjunto. A grande diferença entre estas duas categorias é que nos sistemas fortemente acoplados existe apenas uma memória 7 . ou em qualquer aplicação onde o tempo de processamento é fator fundamental. de usinas. como monitoramento de refinarias de petróleo. prospecção de petróleo. A vantagem deste tipo de sistema é permitir que vários programas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido em várias partes para serem executadas simultaneamente em mais de um processador. processamento de imagens e CAD. simulações. 2. Um fator chave no desenvolvimento dos sistemas multiprocessados é a forma de comunicação entre as CPUs e o grau de compartilhamento da memória e dos dispositivos de E/S. Em função destes fatores. podemos classificar os sistemas multiprocessados de acordo com a figura a seguir: Sistemas com Múltiplos Processadores Sistemas Fortemente Acoplados Sistemas Fracamente Acoplados Simétricos Assimétricos Redes Distribuídos Tipos de Sistemas com Múltiplos Processadores Na figura podemos perceber a divisão dos sistemas multiprocessados em duas categorias iniciais: sistemas fortemente acoplados e fracamente acoplados.Universidade Jean Piaget de Cabo Verde. Esta técnica permitiu a criação de sistemas computacionais voltados para processamento científico. controle de tráfego aéreo.

e o usuário não conhece os nomes dos membros do cluster e nem quantos são. somente interligados por cabos de interconexão. diz-se que o sistema é simétrico. Os sistemas distribuídos permitem. que uma aplicação seja dividida em partes e que cada parte seja executada por hosts diferentes na rede. que oferecem algum tipo de serviço aos demais. Nos sistemas fracamente acoplados. interligados por linhas telefônicas. enquanto que nos fracamente acoplados cada sistema tem sua própria memória individual. quando os processadores são diferentes. com memória própria. por exemplo. Para os usuários e suas aplicações é como se não existisse a rede. Quando é necessário algum serviço. Em um cluster podem existir dois ou mais servidores ligados por algum tipo de conexão de alto desempenho. Clusters são muito utilizados em servidores de bancos de dados e Web. com os outros hosts da rede. basta solicitar ao cluster para obtê-lo. nos sistemas distribuídos os sistema operacional esconde os detalhes dos hosts individuais e passa a tratá-los como um conjunto único. dispositivos de E/S e sistemas operacionais independentes. Nos sistemas fortemente acoplados a memória principal e os dispositivos de E/S são gerenciados por um único sistema operacional. permitindo que um host compartilhe seus recursos. existem dois ou mais sistemas independentes (hosts). Pólo do Mindelo a ser compartilhada pelos processadores do conjunto. Outros exemplos de sistemas distribuídos são os clusters. 8 . como se fosse um sistema só. No ambiente de rede. No entanto. cada CPU constitui uma máquina independente. A taxa de transferência entre processadores e memória em sistemas fortemente acoplados é muito maior que nos fracamente acoplados. fortemente acoplado. Quando todos os processadores na arquitetura são iguais. dá-se à arquitetura a denominação assimétrica. temos como exemplo as redes e os sistemas distribuídos. mas um único sistema centralizado. Nesta subdivisão. como os processadores estão em arquiteturas diferentes. Enquanto nos sistemas em rede os usuários têm conhecimento dos hosts e seus serviços. sem se preocupar com quem vai dispor e oferecer tal serviço. como impressora e diretórios.Universidade Jean Piaget de Cabo Verde.

Os sistemas multiprogramáveis surgiram a partir das limitações dos sistemas monoprogramáveis onde os recursos computacionais como processador. aparentando ao usuário que nada aconteceu. é comum nos sistemas monoprogramáveis é comum termos. Pólo do Mindelo 3. por exemplo. limitando seu desempenho. O tempo de espera é relativamente longo. O programa deverá continuar sua execução exatamente na instrução seguinte àquela onde havia parado. Em sistemas de tempo compartilhado existe a impressão de que o computador está inteiramente dedicado ao usuário. impressoras paradas por um grande período de tempo e discos com acesso restrito a um único usuário. Esses problemas são minimizados nos sistemas multiprogramáveis. memória e dispositivos de E/S eram utilizados de maneira muito pouco eficiente. quando um programa solicita uma operação de E/S. Outro aspecto a ser considerado é a sub-utilização da memória principal. Dessa forma. deixando a CPU menos ociosa e tornando o uso da memória mais eficiente. Nos sistemas monoprogramáveis somente um programa pode estar em execução de cada vez. Sistemas Multiprogramáveis Um Sistema Operacional pode ser visto como um conjunto de rotinas que executam concorrentemente de forma ordenada. como impressoras e discos. A possibilidade de um processador executar instruções em paralelo com operações de entrada e saída permite que diversas tarefas sejam executadas concorrentemente. já que as operações de E/S são muito lentas se comparadas à velocidade de operação do processador. com muitos destes recursos permanecendo ociosos por longos períodos de tempo. outros programas poderão utilizar o processador. onde é possível compartilhar os dispositivos de E/S. ficando ocioso enquanto uma operação de leitura em disco é realizada. pois existem vários residentes e se revezando na utilização do processador. Quanto ao uso dos periféricos.Universidade Jean Piaget de Cabo Verde. permanecendo o processador dedicado exclusivamente a uma tarefa. ficando o restante inutilizado. É este conceito de concorrência o princípio fundamental para o projeto e implementação de sistemas multiprogramáveis. concorrendo pelo uso do processador. onde um programa nem sempre ocupa todo o espaço disponível.1 Interrupção e Excecução 9 . A utilização concorrente da CPU deve ser feita de maneira que. 3. seu estado deve ser idêntico ao do momento em que foi interrompido. Nos sistemas multiprogramáveis vários programas podem ser alocados na memória. entre diversos usuários e aplicativos. quando um programa perde o uso do processador e depois retorna para continuar sua execução. ficando esse mecanismo totalmente transparente aos usuários.

e podem ser resultado de sinalizações de algum dispositivo de hardware externo ao ambiente memória/processador. 10 . Um exemplo de interrupção é quando um dispositivo avisa ao processador que alguma operação de E/S está completa. A identificação do tipo de evento ocorrido é fundamental para determinar o endereço da rotina adequada ao tratamento da interrupção. no momento da interrupção. independe da instrução que está sendo executada. ocasionando um desvio forçado no seu fluxo normal de execução. Para que o programa interrompido possa retornar posteriormente à sua execução é necessário que. Esses eventos são conhecidos como interrupção ou exceção. Pólo do Mindelo Durante a execução de um programa. Neste caso. para onde o fluxo do programa é desviado. o processador deve interromper o programa para tratar o término da operação. sendo assim. Programa Salva Contexto Identifica a origem Interrupção Trata a Interrupção Restaura Contexto Mecanismo de interrupção/exceção Rotina de Tratamento Para cada tipo de interrupção existe uma rotina de tratamento associada. denominada rotina de tratamento de interrupção. um certo conjunto de informações sobre sua execução seja preservado. que deverão ser restaurados para a continuação do programa. A interrupção é o mecanismo que permitiu a implementação da concorrência nos computadores.Universidade Jean Piaget de Cabo Verde. o programa em execução é interrompido e seu controle é desviado para uma rotina do sistema responsável por tratar o evento ocorrido. embora alguns autores e fabricantes não façam tal distinção. Uma interrupção é sempre gerada por um evento externo ao programa e. Ao término de cada instrução a Unidade de Controle (situada dentro do processador) verifica a ocorrência de algum tipo de interrupção. Essas informações consistem basicamente no conteúdo dos registradores internos da CPU. A diferença entre interrupção e exceção é dada pelo tipo de evento ocorrido. sendo o fundamento básico dos sistemas multiprogramáveis/multitarefa. alguns eventos inesperados podem ocorrer. Desta forma.

A principal diferença é que a exceção é o resultado da execução de uma instrução dentro do próprio programa.Pelo programa do usuário (entrada de dados pela console ou teclado) . os dispositivos de E/S estão efetuando operações para outros processos. Isto se deve ao fato de que a exceção é melhor tratada dentro do próprio programa. A unidade de transferência do mecanismo de buffering é o registro.3 SPOOL A técnica de spooling foi criada inicialmente para auxiliar a submissão de processos ao sistema. Na maioria das vezes. denominada buffer. Pólo do Mindelo As interrupções podem ser geradas: . esta técnica teve sua função adaptada para armazenar o resultado da impressão dos programas em execução. de forma que o processador tenha à sua disposição dados suficientes para processar sem ter que interromper o programa a cada leitura/gravação no dispositivo de E/S. sendo os processos gravados em fita para posterior leitura e execução.Pelo sistema operacional (ao término da fatia de tempo do processador destinada ao programa) As interrupções sempre são tratadas pelo Sistema Operacional. como a divisão por zero ou a ocorrência de um overflow (estouro de capacidade de um campo) numa operação aritmética.2 Buffer A técnica de buffering consiste nua utilização de uma área em memória principal.Pelo hardware (operações de E/S) . A exceção é um evento semelhante à interrupção. e tem como objetivo principal manter tanto os dispositivos de E/S como o processador ocupados a maior parte do tempo.Universidade Jean Piaget de Cabo Verde. O buffer permite minimizar a disparidade de velocidade entre o processador e os dispositivos de E/S. criada e mantida pelo Sistema Operacional. 3. 3. Enquanto o processador está ocupado processando. a exceção provoca um erro fatal no sistema. O buffer deve permitir o armazenamento de vários registros. Com o aparecimento dos terminais para acesso ao sistema. pois também de fato interrompe um programa. com a finalidade de auxiliar a transferência de dados entre dispositivos de E/S e a memória. com instruções escritas pelo programador. causando o término anormal do programa. 11 .

como editores de texto. exigindo apenas uma cópia do programa em memória. todos os usuários e seus programas imprimem. 3. Normalmente códigos reentrantes são utilizados em utilitários do sistema. em sistemas multiprogramáveis.Universidade Jean Piaget de Cabo Verde. faz-se então necessário existir mecanismos de proteção para garantir a confiabilidade e a integridade dos dados e programas dos usuários. manipulando dados próprios. cada usuário possui uma área reservada onde seus programas e dados são armazenados durante o 12 . liberando a associação dos dispositivos de impressão diretamente aos programas que estão executando. promovendo um uso mais eficiente da memória e um desempenho maior do sistema. na verdade. Desta forma. 3. compiladores e linkers. Considerando-se que diversos usuários estão compartilhando os mesmos recursos. À proporção que vão sendo gerados no SPOOL. vários usuários utilizarem os mesmos aplicativos simultaneamente. Pólo do Mindelo Isto é conseguido através da criação e manutenção. além do próprio sistema operacional. processador e dispositivos de E/S. pelo Sistema Operacional de uma grande área em disco. compiladores e outros utilitários. mas não é comum. de forma ordenada e seqüencial. Como vários programas ocupam a memória principal simultaneamente. o que causaria um grande desperdício de espaço. gerando assim mais eficiência e economia de papel e fita de impressão. já que alguns problemas de proteção surgem como decorrência deste tipo de implementação. se cada usuário que utilizasse um destes aplicativos trouxesse o código executável para a memória. com a finalidade de simular uma impressora. Reentrância é a capacidade de um código executável (código reentrante) ser compartilhado por vários usuários. como editores. haveria então diversas cópias de um mesmo programa ocupando espaço na memória. Alguns sistemas operacionais permitem a possibilidade de se implementar o conceito de reentrância em aplicações desenvolvidas pelo próprio usuário. A reentrância permite que cada usuário esteja executando um trecho diferente do código reentrante.5 Segurança e Proteção do Sistema A eficiência proporcionada por um ambiente multiprogramável implica em maior complexidade do sistema operacional. O usuário consegue visualizar o resultado de seus programas na tela dos terminais. é como se ele tivesse uma impressora associada para si. Nesta situação. para este arquivo em disco.4 Reentrância É comum. os relatórios vão sendo liberados para impressão pelo operador do sistema. exclusivos de cada usuário. como memória. Para cada usuário.

Com esse novo elemento. toda uma estrutura de controle é iniciada. ficando permanentemente testando o estado do periférico para saber quando a operação chegaria ao seu final. um disco também armazena arquivos de diferentes usuários. além de controlar internamente quais telas e funções tal usuário pode acessar. quando o usuário faz a conexão inicial ao sistema. no sentido de proteger as áreas alocadas em memória. em função da identificação do usuário. com a inserção de rotinas específicas dentro do programa para controlar o acesso de usuários ao aplicativo. 3. evitando problemas de consistência. um erro indicando a violação de acesso deve ocorrer. mas sim via controlador. Todo o controle da segurança do sistema é implementado pelo sistema operacional. o processador não mais se comunicava diretamente com os periféricos. e até mesmo o uso do processador. a comunicação entre o processador e os periféricos era direta. de forma a preservar as informações nela contidas. sendo responsabilidade do sistema operacional o controle eficiente do compartilhamento dos recursos e a sincronização da comunicação. perfis de usuários e direitos de acesso. Passou a existir então três maneiras básicas de se implementar operações de E/S: - por programa: o processador sincronizava-se com o periférico e iniciava a transferência de dados. Pólo do Mindelo processamento. após o início da transferência de dados o processador passou a ficar livre para realizar outras tarefas. em disco. O surgimento do controlador de E/S permitiu ao processador agir de maneira independente dos dispositivos de E/S. através de nome do usuário e senha. a partir de mecanismos como grupos de usuários. - por interrupção: evoluindo o processo anterior. A proteção começa geralmente no procedimento de login. Assim. O processador ficava ocupado até o término da operação de E/S. A proteção e segurança do sistema pode ser implementada também a nível do programa do usuário. O sistema operacional deve possuir mecanismos de proteção a essas áreas. Caso um programa tente acessar uma posição de memória fora de sua área. sendo o processador responsável por efetuar as operações de leitura/gravação nos dispositivos. em determinados intervalos de tempo o sistema operacional deveria testar o estado dos 13 .6 Operações de Entrada e Saída Nos primeiros sistemas computacionais. Novamente o sistema operacional deve garantir a integridade e confiabilidade dos dados de cada usuário. Semelhante ao compartilhamento da memória.Universidade Jean Piaget de Cabo Verde. A partir daí.

já que um programa poderia ser processado enquanto uma operação de leitura/gravação em periférico estava sendo efetuada. Isto permitiu a implementação dos primeiros sistemas multiprogramáveis. ligados a estes. Memória Principal CPU Controlador Dispositivos de E/S - A necessidade de se transmitir cada vez um volume maior de informações trouxe uma evolução significativa nas operações de E/S. Este tipo de operação permitiu um certo grau de paralelismo. podemos ver a implementação do canal de E/S gerenciando vários controladores e. O canal de E/S funciona então como uma interface entre os controladores e a CPU. Pólo do Mindelo periféricos para saber se a operação de E/S tinha terminado. Esta técnica permite que um bloco de dados seja transferido entre a memória e os dispositivos de E/S sem a intervenção do processador. Em vez de o processador ser interrompido várias vezes para interrogar os dispositivos para saber do resultado das operações. como mostra a figura a seguir: Memória Principal CPU 14 . o que diminuía sua eficiência devido ao excesso de interrupções. foi criado um dispositivo de transferência de dados chamado de DMA – Direct Memory Access. a não ser no início (quando a operação é solicitada) e no final da transferência (quando o processador é notificado sobre o término da operação). Na figura a seguir. vários periféricos.Universidade Jean Piaget de Cabo Verde.

Pólo do Mindelo 4.1 Estrutura do Sistema 15 .Universidade Jean Piaget de Cabo Verde. Estrutura do Sistema Operacional 4.

Os utilitários. Os procedimentos do sistema são executados concorrentemente sem uma ordem específica ou predefinida. Muitos desses eventos estão relacionados ao hardware e a tarefas internas do próprio sistema operacional. É fundamental não se confundir o núcleo do sistema com aplicações. como os compiladores.2 Funções do Sistema As principais funções do núcleo encontradas na maioria dos sistemas comerciais são as seguintes: 16 . e também ao próprio sistema. As aplicações são utilizadas pelos usuários de maneira transparente.Universidade Jean Piaget de Cabo Verde. Existe uma grande dificuldade em compreender a estrutura e o funcionamento do sistema operacional. utilitários ou o interpretador de comandos. A esse conjunto de rotinas dá-se o nome de núcleo do sistema ou kernel. escondendo todos os detalhes da interação com o sistema. às suas aplicações. 4. Pólo do Mindelo USUÁRIO UTILITÁRIOS NÚCLEO DO SISTEMA HARDWARE Hierarquia do Sistema Operacional O sistema operacional é formado por um conjunto de rotinas que oferecem serviços essenciais aos usuários. pois ele não é executado como uma aplicação tipicamente seqüencial. desenvolvedores e administradores de sistema uma interação amigável com o sistema. editores de texto e interpretadores de comandos permitem aos usuários. que acompanham o sistema operacional. com início. meio e fim. com base em eventos dissociados do tempo.

para então entrarem em execução. Criação e eliminação de processos: função responsável por alocar em memória todos os recursos necessários à execução do processo. fazendo o empacotamento das mensagens vindas dos terminais para a CPU central e vice-versa. em detalhes. Gerência de sistemas de arquivos: responsável pelo gerenciamento dos arquivos. em disco. estatísticas de gastos com material de consumo e também para definição de custos de processamento. quantidade de área alocada em memória. É esta função que aloca em memória. Gerência de dispositivos de E/S: responsável por gerenciar os dispositivos. fitas e outros periféricos que serão usados no processamento. Auditoria e segurança do sistema: função extremamente importante. aos arquivos. além do executável.Universidade Jean Piaget de Cabo Verde. pois detecta e registra (num arquivo especial de LOG) todas as ocorrências de erro e violação de direitos de acesso ao sistema. Gerência de memória: função responsável por fornecer à função de criação/eliminação de processos os endereços em memória disponíveis para alocação. Quando do fim da execução do programa. além de controlar e confirmar o envio e recebimento de todas as mensagens que trafegam pela rede. Nesta função também são estabelecidos vínculos físicos a arquivos em disco. o contexto do processo. Pólo do Mindelo - Tratamento de interrupções e exceções: já explicados anteriormente.. São registrados: tempo de CPU. linhas impressas. Contabilização de uso do sistema: responsável por contabilizar o uso de todos os recursos do sistema consumidos pelos usuários e suas aplicações. Suporte a redes e teleprocessamento: é esta função que executa todos os serviços de rede. é esta função que desaloca todos os espaços em memória ocupados pelo processo. Isto se faz necessário para servir de subsídio para análise de performance. além de listas e estruturas de controle utilizadas pelo sistema operacional. tempo corrido. páginas de papel. o buffer de leitura/gravação (se necessário). implementando mecanismos de controle da segurança e direitos de acesso às áreas utilizadas pelos usuários nos diversos dispositivos. à memória e a todos os recursos do sistema. - - - - - - - 17 . bem como seu compartilhamento pelos diversos usuários. Escalonamento e controle de processos: função responsável por organizar a fila de acesso ao processador. entre outros. Utiliza parâmetros do sistema e do perfil do usuário para estabelecer a ordem em que os processos permanecerão à espera pela liberação da CPU. liberando-os para futuras alocações a outros processos. prestando auxílio à criação/eliminação de processos e á gerência de sistemas de arquivos no que diz respeito ao endereçamento e associação de arquivos em periféricos.

A estrutura do sistema. Sempre que um usuário ou uma aplicação necessita de algum serviço do sistema. todo o sistema poderá ficar comprometido e inoperante. com o intuito de verificar e aperfeiçoar os mecanismos de segurança e proteção ao sistema. Aplicação Núcleo do Sistema Operacional Hardware System Call Biblioteca 4. 4. e cada sistema operacional possui seu próprio conjunto de chamadas.4 Modos de Acesso 18 .3 System Calls Uma grande preocupação no projeto de sistemas operacionais se refere à implementação de mecanismos de proteção ao núcleo do sistema e também o controle de acesso aos serviços oferecidos pelo sistema.Universidade Jean Piaget de Cabo Verde. Caso uma aplicação que tenha acesso ao núcleo realize alguma operação que altere sua integridade. Pólo do Mindelo O arquivo de LOG é usado pela gerência de sistemas. a maneira como ele é organizado e o inter-relacionamento entre seus diversos componentes pode variar conforme a concepção do projeto do sistema. é realizada uma chamada a uma de suas rotinas através de uma system call. As system calls podem ser entendidas como uma porta de entrada para acesso ao núcleo do sistema e aos seus serviços. com nomes. a solicitação é processada e uma resposta é enviada à aplicação juntamente com um estado de conclusão indicando o sucesso ou não da operação. Isto explica por que uma aplicação desenvolvida utilizando serviços de um determinado sistema operacional não pode ser diretamente portada para um outro sistema. Para cada serviço disponível existe uma system call associada. Através dos parâmetros fornecidos na system call. parâmetros e formas de ativação específicos.

é preciso que haja um mecanismo de proteção no processador. O programa. que altera o modo de acesso ao processador do modo usuário para o modo kernel. o modo de acesso retorna para o modo usuário. 19 . Tal procedimento evita que a aplicação possa ter acesso a qualquer área do disco indiscriminadamente. pois a sua utilização indevida poderia ocasionar sérios problemas à integridade do sistema. As instruções que têm o poder de comprometer o sistema são chamadas de instruções privilegiadas. Imagine que uma aplicação atualize um arquivo em disco. por si só. fica claro que existem certas instruções que só podem ser executadas pelo sistema operacional ou sob sua supervisão. Pólo do Mindelo Existem certas instruções que não podem ser colocadas diretamente à disposição das aplicações. Assim. chamado modos de acesso. A melhor maneira de controlar o acesso às instruções privilegiadas é permitir que apenas o sistema operacional tenha acesso a elas. Existem basicamente dois modos de acesso ao processador: modo usuário e modo kernel. Já no modo kernel (ou supervisor). Sempre que uma aplicação necessita executar uma instrução privilegiada. enquanto as instruções que não comprometem o funcionamento do sistema chamam-se instruções não-privilegiadas. o que poderia comprometer a segurança e a integridade do sistema de arquivos. Quando o processador trabalha no modo usuário. sua utilização deve ser gerenciada unicamente pelo sistema operacional. a aplicação pode ter acesso ao conjunto total de instruções do processador. Ao término da execução da rotina do sistema. somente instruções não-privilegiadas podem ser executadas. Para que uma aplicação possa executar uma instrução privilegiada. a solicitação deve ser feita através de uma system call. tendo assim acesso a um número limitado de instruções do processador.Universidade Jean Piaget de Cabo Verde. como o disco é um recurso compartilhado. não pode especificar diretamente as instruções que acessam seus dados no disco pois.

Os primeiros sistemas operacionais foram desenvolvidos com base nesta arquitetura. em camadas e microkernel Arquitetura monolítica: é caracterizada por possuir seus módulos compilados separadamente mas linkados formando um único e enorme programa executável. o que tornava seu desenvolvimento e. Onde os módulos podem interagir livremente. Como desvantagens. a limitação quanto a inovações futuras e a dificuldade de manutenção.Universidade Jean Piaget de Cabo Verde. sua manutenção muito difíceis.5 - Arquiteturas: Sistemas monolíticos. Aplicação Modo Usuário Modo Kernel System call Aplicação Núcleo do Sistema Hardware Arquitetura monolítica 20 . principalmente. Pólo do Mindelo 4. Como vantagens desta arquitetura podemos citar a rapidez de execução e simplicidade de implementação.

como gerência de arquivos. que pode ser uma aplicação do usuário ou um outro componente do sistema operacional. Neste tipo de implementação as camadas mais internas são mais privilegiadas que as camadas mais externas. técnicas de programação estruturada e modular foram incorporadas em seu projeto. A utilização deste modelo permite que os servidores operem em modo usuário. é realizada uma solicitação ao processo responsável. A vantagem da estruturação em camadas é o isolamento das funções do sistema. O servidor responde ao cliente através de uma outra mensagem. Sempre que uma aplicação deseja algum serviço. comprometido devido às várias mudanças de estado do processador provocado pela mudança de camadas. Pólo do Mindelo - Arquitetura em camadas: com o aumento do tamanho do código dos sistemas operacionais. a aplicação que está solicitando o serviço é chamada de cliente. Neste caso. gerência de processos. Um cliente.Universidade Jean Piaget de Cabo Verde. enquanto o processo que responde à solicitação é chamado de servidor. Para implementar esta idéia. Camada Usuário Camada Supervisor Camada Executivo Kernel Arquitetura em camadas - Arquitetura microkernel (cliente x servidor): uma tendência nos sistemas operacionais modernos é tornar o núcleo do sistema o menor e o mais simples possível. o sistema é dividido em níveis sobrepostos. ou seja. os serviços do sistema são disponibilizados através de processos. Cada camada oferece um conjunto de funções que podem ser utilizadas somente pelas camadas superiores. onde cada um é responsável por oferecer um conjunto específico de funções. Uma desvantagem é o desempenho. gerência de memória e escalonamento. a troca de mensagens entre o cliente e o servidor. A principal função do núcleo é realizar a comunicação. facilitando sua manutenção. solicita um serviço enviando uma mensagem para o servidor.Na arquitetura em camadas. não tendo acesso 21 . A figura a seguir mostra esta arquitetura.

Apenas o núcleo do sistema.Universidade Jean Piaget de Cabo Verde. Como os servidores se comunicam através de trocas de mensagens. A começar pelo desempenho. passa a incorpora funções críticas do sistema. Apesar de todas as vantagens deste modelo. se ocorrer um erro em algum servidor.este poderá parar. exigem acesso direto ao hardware. mais fácil de depurar (procurar e solucionar erros) e. comprometido devido às várias trocas de modo de acesso a cada troca de mensagens entre cliente e servidor. o núcleo do sistema. A arquitetura microkernel permite isolar as funções do sistema operacional por diversos servidores pequenos e dedicados a serviços específicos. não importa se os clientes e servidores processam em um sistema com um único processador. Outro problema é que certas funções do sistema operacional. sua implementação é muito difícil. como escalonamento. mas o sistema não ficará inteiramente comprometido. aumentando assim a sua disponibilidade. aumentando a sua confiabilidade. responsável pela comunicação entre clientes e servidores. Assim. executa em modo kernel. PROCESSO 22 . tratamento de interrupções e gerência de dispositivos. Como conseqüência. além de promover a comunicação entre clientes e servidores. tornando o núcleo menor. com vários processadores ou ainda em um ambiente de sistema distribuído. como operações de E/S. Pólo do Mindelo direto a certos componentes do sistema. com isso. Servidor Arquivo Servidor Process o Servidor Memória Servidor Impressã o Servidor Rede Modo Usuário Modo Kernel Microkernel Hardware 5.

Todas as informações necessárias à execução de um programa fazem parte do processo. poderá estar processando um outro programa. não lhe faltando nenhuma informação vital à sua continuação. além das informações sobre a execução. 23 . possui também a quantidade de recursos do sistema que o programa pode utilizar. Um processo também pode ser definido como o ambiente onde o programa é executado.1 Componentes do processo Um processo pode ser entendido inicialmente como um programa em execução. Este ambiente. um programa pode alocar recursos. A gerência do processador é uma das principais funções de um sistema operacional. Todos os recursos estão sendo compartilhados. do mesmo ou de outro usuário. Num sistema multiusuário. que juntas mantêm todas as informações necessárias à execução de um programa. o processador executa o processo do usuário por um intervalo de tempo e. Neste caso. mas isto não é verdade. 5. não sendo capaz de distinguir qual programa se encontra em execução.Universidade Jean Piaget de Cabo Verde. Pólo do Mindelo O conceito de processo é a base para a implementação de um sistema multiprogramável. que tem suas informações mantidas pelo sistema operacional. que deve controlar a execução dos diversos programas e o uso concorrente do processador.como espaço de endereçamento.A gerência de um ambiente multiprogramável é função exclusiva do sistema operacional. Para que a troca de processos possa ser feita sem problemas. Através dos processos. no instante seguinte. cada usuário tem a impressão de possuir o processador e todos os demais recursos reservados exclusivamente para si. para que ele possa retornar à CPU exatamente do ponto em que parou. é necessário que todas as informações do programa que está sendo interrompido sejam guardadas. O processador é projetado apenas para executar instruções. tempo do processador e área em disco. compartilhar dados e trocar informações. contexto de hardware e espaço de endereçamento. Um processo é formado por três partes: contexto de software. inclusive a CPU.

quando da sua alocação. suas áreas de atuação no sistema. etc. é denominada troca de contexto. as informações e características que valerão para o processo.Universidade Jean Piaget de Cabo Verde. em função disso. etc. número máximo de arquivos abertos. o seu contexto de hardware está armazenado nos registradores da CPU. e. Muitas destas características são criadas no momento da criação do processo. -  Contexto de Hardware: armazena o conteúdo dos registradores gerais da CPU. além dos registradores de uso específico. em memória. O sistema operacional obtém. número máximo de operações de E/S pendentes. Quotas: são os limites de recursos do sistema que um processo pode alocar. a partir do cadastro de usuários e do cadastro de contas no sistema. A troca de um processo por outro no processador. como número máximo de arquivos abertos. tempo limite de CPU. comandada pelo sistema operacional. como área utilizada em disco. o sistema salva as informações no contexto de hardware do processo. No momento em que o processo perde a utilização da CPU. número máximo de linhas impressas. Pólo do Mindelo Estrutura do processo: Contexto de Software Contexto de Hardware ________ ________ ________ Programa Espaço de endereçamento  Contexto de Software: neste contexto são especificadas características e limites dos recursos que podem ser alocados pelo processo. que consiste em salvar o conteúdo dos registradores do processo que está deixando a CPU e carrega-los com os valores 24 . prioridade de execução. Privilégios: diz respeito principalmente às prioridades assumidas pelo processo durante sua execução. limite de linhas impressas. Quando um processo está em execução. O contexto de software é composto por tr?es grupos de informações: Identificação: neste grupo são guardadas informações sobre o usuário que criou o processo.

pelo hardware. onde permanecem até que a intervenção seja resolvida. Execução: é onde o processo efetivamente utiliza a CPU. São estados possíveis de um processo: Criação: neste estado o processo está sendo alocado na memória.Universidade Jean Piaget de Cabo Verde. Essa operação resume-se em substituir o contexto de hardware de um processo pelo de outro. - - - 25 . Cada processo possui seu próprio espaço de endereçamento. ou pelo próprio programa. ao mesmo tempo. já que existe apenas um processador. que deve ser devidamente protegido do acesso dos demais processos. um processo não deve alocar a CPU com exclusividade. 5. Todos os recursos necessários à execução do processo são reservados durante a passagem do processo por este estado.2 Estados do processo  Num sistema multiprogramável. Pólo do Mindelo referentes ao do novo processo que irá executar. depois de criados ou quando retornam do tratamento de uma interrupção. Vários processos podem estar neste estado. Neste estado. gerenciada pelo sistema operacional. permanecem aguardando a liberação da CPU para que possam iniciar ou continuar seu processamento. ao mesmo tempo. O BCP reside em memória. contendo os contextos de software e de hardware e o espaço de endereçamento.  Espaço de endereçamento: é a área de memória pertencente a um processo onde as instruções e os dados do programa são armazenados para execução. Vários processos podem estar neste estado. É como se fosse uma fila. sendo criado no sistema. somente um processo pode permanecer de cada vez. de forma que possa existir um compartilhamento no uso do processador. Espera: neste estado estão todos os processos que sofreram algum tipo de interrupção de E/S. Vários processos podem estar neste estado. Bloco de controle do processo: é a estrutura de dados que compõe o processo. em função de eventos gerados pelo sistema operacional. Pronto: é o estado onde os processos. o que acontece uma única vez. Os contextos de software e de hardware não fazem parte do espaço de endereçamento . que se incumbe de organizar os processos de acordo com as informações contidas no contexto de software (identificação. ao mesmo tempo. quotas e privilégios). Ele permanece no processador até que seja interrompido ou termine sua execução. numa área reservada ao sistema operacional. Os processos passam por diferentes estados ao longo do processamento.

3 Saída: é o estado final do processo. Significa que deve permanecer no estado de espera até que a interrupção seja tratada pelo sistema. Vários processos podem estar neste estado. não tem nenhuma intervenção pendente. Execução  Saída: o processo terminou. Ainda precisa de mais tempo na CPU para terminar sua execução. São mudanças possíveis: Criação Pronto: o processo foi criado. Execução  Pronto: o processo foi interrompido por fatia de tempo ou por prioridade. permanecendo em execução até que seja interrompido ou termine sua execução. ao mesmo tempo. por isso volta à fila de pronto para disputar novamente o uso da CPU. Espera  Pronto: Após o término do tratamento da interrupção. o processo volta à fila de pronto para disputar novamente o uso da CPU. Criação Pronto Execução Saída Mudanças de estado de um processo Espera 26 . devido aos eventos ocorridos durante sua execução. quando este termina seu processamento. a figura mostra as mudanças possíveis de estado de um processo. Pólo do Mindelo 5. Execução  Espera: esta transição acontece quando o processo foi interrompido por E/S. Pronto  Execução: o processo é o primeiro da fila de pronto e a CPU fica disponível.Universidade Jean Piaget de Cabo Verde. tem seus recursos alocados. e não mais disputará o uso da CPU. Mudanças de estado do processo Um processo muda de estado diversas vezes durante sua permanência no sistema. Neste momento o processo passa a ocupar a CPU. Neste estado o processo fica impedido de disputar o uso da CPU. e está apto a disputar o uso da CPU. - - - - - A seguir.

de acordo com suas características de uso de CPU e periféricos: Processo CPU-bound: é aquele processo que utiliza muito a CPU. De acordo com essas características. matemática.4 Tipos de processos Além dos processos do usuário. a CPU também executa processos do sistema. Pólo do Mindelo 5. sem desperdiçar nenhum tempo. Normalmente fazem pouca ou nenhuma entrada de dados. Os processos em execução. e também na área de simulação. Aplicações em Banco de Dados. do usuário. estatística. É o caso de programas científicos. podem assumir dois tipos diferentes. Ele ganha uma fatia de tempo e a utiliza por inteiro. podemos dizer que este tipo de processo permanece mais tempo em espera (tratando interrupções) do que propriamente em execução. Estes executam sempre. e muito processamento. São aqueles que oferecem os serviços do sistema operacional aos usuários. onde se faz consultas e atualizações constantes em arquivos em disco são um bom exemplo deste tipo de processo.Universidade Jean Piaget de Cabo Verde. ocupando a CPU por períodos mínimos de tempo. com certa prioridade. tratamento de interrupção e todos aqueles correspondentes às funções do sistema já estudadas. concorrendo com os processos do usuário. - 27 . como criação/eliminação de processos. de cálculo numérico. Processo I/O-bound: é o tipo de processo que utiliza muito mais E/S do que CPU.

aguardando a liberação da CPU para ser executado.2 - Critérios de escalonamento Utilização do processador: corresponde a uma taxa de utilização. 6. A redução deste tempo de espera é desejada pela maioria das políticas de escalonamento. As políticas de escalonamento não interferem neste parâmetro. possuem requisitos de escalonamento distintos dos sistemas de tempo real. sendo este tempo função apenas do código executável e da entrada/saída de dados.Universidade Jean Piaget de Cabo Verde. com carga de processamento baixa. que na maioria dos sistemas varia entre 30 e 90%. podemos citar: manter o processador ocupado a maior parte do tempo. - - - 28 . durante seu processamento. balancear o uso da CPU entre processos. que é a base da gerência do processador e da multiprogramação em um sistema operacional. Cada sistema operacional possui sua política de escalonamento adequada ao seu propósito e às suas características. Pólo do Mindelo 6. Dentre as funções da gerência do processador. devem ser estabelecidos critérios para definir qual processo será escolhido para fazer uso do processador. Tempo de Processador: é o tempo que um processo leva no estado de execução. Throughput: é o número de processos executados em um determinado intervalo de tempo. Quanto maior o throughput. A maximização do throughput é desejada na maioria dos sistemas. A partir do momento em que vários processos podem estar no estado de pronto. próximo da sua capacidade máxima (em alguns casos tal situação pode levar a um crash – travamento do sistema). privilegiar a execução de aplicações críticas. enquanto uma taxa de utilização acima dos 90% pode indicar um sistema bastante carregado. Uma utilização abaixo dos 30% indicaria um sistema ocioso. por exemplo. Sistemas de tempo compartilhado. maximizar o throughput e oferecer tempos de resposta razoáveis aos usuários interativos.1 Funções Com o surgimento dos sistemas multiprogramáveis. a gerência do processador tornou-se uma das atividades mais importantes em um sistema operacional. Gerência do Processador 6. maior o número de tarefas executadas em função do tempo. Tempo de Espera (pela CPU): é todo o tempo que o processo permanece na fila de pronto. Tais critérios compõem a política de escalonamento. onde múltiplos processos poderiam permanecer na memória e disputar o uso de um único processador.

Neste caso. Outro problema é quanto aos tipos de processo. os tempos de resposta devem ser da ordem de apenas poucos segundos. onde os CPU-bound levam vantagem no uso do processador em relação aos do tipo I/O-bound. é possível ao sistema priorizar a execução de processos. onde permanece aguardando nova oportunidade de ocupar a CPU. como aplicações online ou acesso à Web. desde sua criação até o momento em que é encerrado. e permanece utilizando o processador até terminar sua execução ou ser interrompido por E/S. como no caso de aplicações em tempo real. já que a ordem de chegada á fila de pronto deve ser observada à risca. principalmente no que diz respeito à dificuldade de se prever o início da execução de um processo. Neste caso o processo retirado da CPU volta ao estado de pronto. Assim sendo. Pólo do Mindelo - Tempo de Turnaround: é o tempo total que o processo permaneceu no sistema. conservando a ordem de chegada na fila. se nenhum evento externo ocorresse durante a execução do processo. Já os escalonamentos preemptivos são caracterizados pela possibilidade de o sistema operacional interromper o processo em execução para retirá-lo da CPU e dar lugar a outro. este permanecia na CPU até terminar ou então alguma instrução do próprio programa o desviasse para o estado de espera (operação de E/S). Em sistemas interativos.3 Escalonamentos Não-Preemptivos e Preemptivos - Escalonamentos do tipo não-preemptivos são aqueles onde o sistema operacional não pode interromper o processo em execução para retirá-lo da CPU. espera na fila de pronto e interrupção (E/S). este escalonamento apresenta algumas deficiências. sendo ineficiente se aplicado em sistemas interativos de tempo compartilhado. até ser escalonado novamente. o próximo processo da fila de pronto é selecionado para execução. Com o uso da preempção. São escalonamentos não-preemptivos: FIFO: o processo que chegar primeiro à fila de pronto é selecionado para execução. Outro benefício é a possibilidade de implementar políticas de escalonamento que compartilhem o processador de uma maneira mais uniforme. São contados os tempos de alocação de memória. balanceando o uso da CPU entre os processos. Todo processo que chega à fila de pronto entra no final desta fila. 29 . Tempo de Resposta: é o tempo decorrido entre uma requisição ao sistema e o instante em que a resposta começa a ser exibida. Apesar de simples.Universidade Jean Piaget de Cabo Verde. O escalonamento FIFO foi inicialmente implementado em sistemas monoprogramáveis. pois o sistema não trata este tipo de diferença. 6.

o processo que estiver na fila de pronto com menor necessidade de tempo de CPU para terminar o seu processamento será o escolhido para ocupar a CPU. C e A. os demais programas não 30 .. um exemplo de escalonamento utilizando o método FIFO: a ordem de chegada dos processos (A. se um programa em execução não verificar a fila de mensagens. permitindo melhor distribuição do tempo do processador.t. Funciona com um parâmetro passado ao sistema via contexto de software. que de maneira cooperativa libera o processador para um outro processo. Processo B 8 u. como por exemplo. onde o tempo estimado para o processo é informado baseando-se em estatísticas de execuções anteriores. não tendo sido interrompidos por E/S. 0 10 18 27 Processo A 10 u.t. vamos utilizar os mesmos processos executados no escalonamento FIFO acima. e o processo C com 9 u. possibilitando que um novo processo seja escalonado. situações indesejáveis podem ocorrer. Processo C 9 u.t. como a interrupção do processo não depende do sistema operacional. A liberação da CPU é uma tarefa exclusiva do programa em execução. C) na fila de pronto foi obedecida. Neste caso. Como neste escalonamento o que importa é o tempo de execução.Universidade Jean Piaget de Cabo Verde. um processo em execução pode voluntariamente liberar o processador retornando à fila de pronto. o processo em execução verifica periodicamente uma fila de mensagens para saber se existem outros processos na fila de pronto. com seus respectivos tempos de execução em u.t.t. Como exemplo. Pólo do Mindelo Abaixo. - SJF (Shortest Job First): este escalonamento seleciona o processo que tiver o menor tempo de processador ainda por executar. Porém.t. Neste mecanismo. Desta forma. (unidades de tempo): processo A com 10 u. processo B com 8 u.t. os processos executaram inteiramente até terminar. B. a nova ordem de escalonamento para utilização da CPU será B. como segue: 0 8 17 27 Processo B Processo C Processo A - Cooperativo: este escalonamento busca aumentar o grau de concorrência no processador. de acordo com seus tempos necessários para execução. e.

chamado fatia de tempo (time-slice) ou quantum. Pólo do Mindelo terão chance de executar enquanto a CPU não for liberada. - Por Prioridades: funciona com base num valor associado a cada processo. denominado prioridade de execução. mas quando um processo passa para o estado de execução há um limite de tempo para o uso contínuo do processador. Assim.. A B C 2 4 6 8 10 11 17 u.Universidade Jean Piaget de Cabo Verde.t e 3 u. gastam 10 u. Este mecanismo é conhecido como preempção por tempo. Os processos A. 6 u. uma desvantagem é que os processos CPU-bound são beneficiados no uso do processador em relação aos processos I/O-bound. Neste escalonamento a perda do uso do processador somente ocorrerá no caso de uma mudança voluntária para o estado de espera (interrupção por E/S).t. salva seu contexto e o direciona para a fila de PRONTO. dando lugar na CPU ao processo prioritário. toda vez que um processo é selecionado para execução uma nova fatia de tempo lhe é concedida. sendo os processos com prioridades iguais escalonados pelo critério FIFO. pois tendem a utilizar totalmente a fatia de tempo recebida. salva seu contexto e o coloca na fila de pronto.t. um processo em execução não pode sofrer preempção por tempo. Neste escalonamento o conceito da fatia de tempo não existe.t. onde a fatia de tempo é igual a 2 u. A principal vantagem deste escalonamento é não permitir que um processo monopolize a CPU. É muito semelhante ao FIFO (obedece a ordem de chegada á fila de PRONTO).t. A figura a seguir mostra o escalonamento circular com 3 processos. O processo com maior prioridade na fila de PRONTO é sempre o escolhido para ocupar o processador. ou quando um outro processo de prioridade maior passa (ou chega) para o estado de pronto. B e C. nem o tempo perdido em operações de E/S. Neste caso o sistema operacional interrompe o processo em execução. Outrossim. No exemplo não estão sendo levados em consideração tempos de troca de contexto entre os processos. Caso esta fatia de tempo expire. Como conseqüência disto. As primeiras versões do Windows chegaram a utilizar este tipo de escalonamento. São escalonamentos preemptivos: Circular: é um tipo de escalonamento projetado especialmente para sistemas em tempo compartilhado. o sistema operacional interrompe o processo. A figura a seguir mostra a 31 . respectivamente. Este mecanismo é chamado de preempção por prioridade.

Neste escalonamento. robótica. também respectivamente.Universidade Jean Piaget de Cabo Verde. cada uma com prioridade específica. Pólo do Mindelo execução dos processos A. ou sofra uma preempção por tempo ou prioridade. B e C. tipo de processamento ou área de memória necessária. com aplicações de controle de processos. porém permitindo ao processo voltar para uma outra fila de maior ou menor prioridade. Este escalonamento é muito usado em sistemas de tempo real. com tempos de execução de 10. ou voluntariamente passe para o estado de espera (interrupção por E/S). como importância da aplicação. O sistema operacional só pode escalonar processos de uma fila quando todas as outras filas de maior prioridade estejam vazias. e valores de prioridades de 2. aéreo). Assim. Os processos são associados às filas de acordo com características próprias. mas sim a fila.t. Os processos sempre voltam para a mesma fila de onde saíram. controle de tráfego (sinais de trânsito. e pode ser estática (quando não pode ser alterada durante a existência do processo) ou dinâmica (quando pode ser alterada durante a existência do processo). a ordem de execução será invertida para B. não é o processo que detém a prioridade. A prioridade de execução faz parte do contexto de software do processo. O sistema operacional identifica dinamicamente o comportamento de cada processo e o redireciona para a fila mais conveniente ao longo de seu processamento. O processo em execução sofre preempção caso um outro processo entre em uma fila de maior prioridade. A B C 4 14 17 u. 1 e 3. Assim. Na maioria dos sistemas. um processo permanece no estado de execução até que termine seu processamento. Por Múltiplas Filas com Realimentação: semelhante ao anterior. com a possibilidade de diferenciar o grau de importância dos processos através da prioridade (o Windows utiliza este escalonamento). de trens/metrô.t. A principal vantagem deste escalonamento é permitir um melhor balanceamento no uso do processador. podendo ser implementado na maioria dos sistemas operacionais. A e C. 32 - - . entre outros. 4 e 3 u. É um algoritmo generalista. Por Múltiplas Filas: Este escalonamento implementa várias filas de pronto. valores menores correspondem à MAIOR prioridade. de acordo com seu comportamento durante o processamento. - Escalonamento Circular com Prioridades: implementa o conceito de fatia de tempo e de prioridade de execução associada a cada processo. respectivamente.

Uma das maiores preocupações dos projetistas foi desenvolver sistemas operacionais que não ocupassem muito espaço de memória e. o sistema deve permitir que novos processos sejam aceitos e executados. como discos ou fitas. nos sistemas multiprogramáveis essa gerência se torna crítica. A gerência de memória deve tentar manter na memória principal o maior número de processos residentes. além da área onde reside o próprio sistema. ao mesmo tempo. embora ainda nos dias de hoje esteja presente em alguns sistemas monoprogramáveis. Pólo do Mindelo 7.Universidade Jean Piaget de Cabo Verde. Como o processador somente executa o que está na memória principal.1 Introdução Historicamente. Mesmo atualmente. Gerência de Memória / Memória Virtual 7.2 Funções Geralmente. de uso permanente e não voláteis. otimizassem a utilização dos recursos computacionais. seu gerenciamento é dos fatores mais importantes no projeto e implementação dos sistemas operacionais. Caso um programa tente realizar algum acesso indevido à memória. os programas são armazenados em memórias secundárias. Nesse modelo. com a redução do custo e o aumento considerável da capacidade da memória principal. devido à necessidade de se maximizar o número de usuários e aplicações utilizando eficientemente o espaço da memória principal. impedir o acesso. de alguma forma. a memória principal é dividida em duas partes. Enquanto nos sistemas monoprogramáveis a gerência de memória não é muito complexa. o sistema operacional deve sempre transferir programas da memória secundária para a principal antes de serem executados. 7. permitindo maximizar o compartilhamento do processador e demais recursos computacionais. o sistema deve. a memória principal sempre foi vista como um recurso escasso e caro. 7. Mesmo não havendo espaço livre.Como o tempo de acesso às memórias secundárias é muito superior ao tempo de acesso à memória principal. o sistema operacional deve buscar reduzir o número de operações de E/S (acessos à memória secundária) a fim de não comprometer o desempenho do sistema.3 Alocação Contígua Simples Este tipo de alocação foi implementado nos primeiros sistemas operacionais. Em um ambiente de multiprogramação o sistema operacional deve proteger as áreas de memória ocupadas por cada processo. uma para o sistema operacional e a outra para o 33 . Outra preocupação na gerência de memória é permitir a execução de programas maiores do que a memória física disponível.

exceto naquela área onde reside o sistema operacional. Sistema Operacional X registrador Área para programas Proteção na alocação contígua simples Apesar de simples implementação e código reduzido. 34 . cujo endereçamento é protegido por um registrador.Universidade Jean Piaget de Cabo Verde. A esta técnica dá-se o nome de segmentação ou overlay. a alocação contígua simples não permite a utilização eficiente dos recursos do sistema. de modo que seja possível a execução independente de cada módulo. o programador deve desenvolver suas aplicações preocupado apenas em não ultrapassar o espaço de memória disponível. impedindo acesso indevido pelo usuário. Uma solução encontrada para o problema é dividir o programa em módulos. Pólo do Mindelo programa do usuário. Há inclusive um desperdício de espaço de memória. Dessa forma. Sistema Operacional Programa do Usuário Área livre Sub-utilização da memória principal 7. Neste esquema o usuário tem total controle sobre toda a memória. pois apenas um usuário pode dispor destes recursos. utilizando a mesma área de memória.4 Segmentação de Programas Na alocação contígua simples todos os programas estão limitados ao tamanho da memória principal disponível para o usuário. caso o programa não venha a ocupar toda a área reservada para ele.

que totaliza 9 KB. Assim. Os sistemas multiprogramáveis já 35 . o outro não necessariamente precisa estar presente. através de comandos específicos da linguagem de programação utilizada. um de cadastramento e outro de impressão. sempre que um dos módulos for referenciado no módulo principal. Na figura a seguir. a memória é insuficiente para armazenar todo o programa. sobrepondo o módulo antigo na memória. A grande vantagem da utilização desta técnica consiste em se poder executar programas maiores do que a memória física disponível. Memória Principal Sistema Operacional Módulo Principal Área de Overlay Área livre Cadastramento 4 KB 2 KB 3 KB 4 KB Impressão 2 KB 1 KB 2 KB Técnica de Overlay A definição das áreas de overlay é função do programador. sendo os módulos de cadastramento e impressão independentes.O módulo principal é comum aos outros dois. que será compartilhada entre os módulos de cadastramento e impressão. Pólo do Mindelo Consideremos um programa que tenha três módulos: um principal. A independência significa que quando um módulo estiver na memória para execução. logo. A técnica de overlay utiliza uma área de memória comum para armazenar o módulo principal do programa e uma outra área na mesma memória.5 Alocação Particionada Estática Os sistemas operacionais evoluíram no sentido de proporcionar melhor aproveitamento dos recursos disponíveis. chamada área de overlay.Universidade Jean Piaget de Cabo Verde. precisa estar na memória durante todo o tempo da execução do programa. Nos sistemas monoprogramáveis o processador permanece grande parte do tempo ocioso e a memória principal é sub-utilizada. 7. o sistema o carregará da memória secundária para a área de overlay.

o código gerado deixou de ser absoluto e passou a ser relocável . Desta forma. necessitando que vários processos estejam na memória principal ao mesmo tempo e que novas formas de gerência de memória sejam implementadas. todas as referências a endereços no programa são relativas ao início do código e não a endereços fixos na memória. mesmo que as outras estivessem disponíveis. decorrente do esquema de alocação fixa de partições. os programas só podiam ser carregados e executados em apenas uma partição específica.O tamanho dessas partições. independente do endereço inicial e da partição para a qual o código foi criado. A esse tipo de alocação de memória chamou-se alocação particionada estática absoluta. No código relocável. Sistema Operacional Partição 1 Partição 2 Partição 3 2 KB 5 KB 8 KB Inicialmente. normalmente. o sistema deveria ser inicializado novamente com uma nova configuração. deixando algum espaço livre dentro das partições. Esta limitação se devia aos compiladores e linkeditores. era definido em função do tamanho dos programas que executariam no ambiente.Universidade Jean Piaget de Cabo Verde. é chamado fragmentação interna. Nos primeiros sistemas multiprogramáveis a memória era dividida em blocos de tamanho fixo. que geravam apenas código absoluto. montadores e loaders. ou seja. todas as referências a endereços no programa são posições físicas na memória.Sempre que fosse necessária a alteração do tamanho de uma partição. estabelecido em tempo de inicialização do sistema. não ocupam totalmente as partições onde são alocados. Este tipo de problema. os programas. Tanto nos sistemas de alocação absoluta como nos de alocação relocável. A figura a seguir mostra um gráfico representando o particionamento estático de uma memória e sua fragmentação interna. linkeditores. chamados partições. o programa só poderia ser carregado a partir do endereço de memória especificado no seu próprio código. Pólo do Mindelo são muito mais eficientes no uso do processador. No código absoluto. os programas puderam ser alocados em qualquer partição livre. Coma evolução dos compiladores. A esse tipo de alocação deu-se o nome de alocação particionada estática relocável. 36 .

Porém. Na alocação particionada dinâmica. A este tipo de problema dá-se o nome de fragmentação externa. conseqüentemente.6 Alocação Particionada Dinâmica A alocação particionada estática deixou clara a necessidade de uma nova forma de gerência de memória principal. Assim. utilizaria o espaço necessário à sua execução. foi eliminado o conceito de partições de tamanho fixo. não permitindo o ingresso de novos programas. passam a existir na memória blocos cada vez menores na memória. onde o problema da fragmentação interna fosse reduzido e. formando uma grande área livre no final da 37 . eliminando os blocos livres entre elas. Pólo do Mindelo Memória Principal Sistema Operacional Programa C 1 KB Programa A 3 KB Programa E 5 KB Fragmentação interna Alocação particionada estática com fragmentação interna 7. cada programa. realocação de todas as partições ainda ocupadas para a parte inicial da memória. como os programas utilizam apenas o espaço de que necessitam. que se transforma em uma nova partição. ao ser carregado. com o término de alguns programas e o início de outros. Para resolver o problema da fragmentação externa. formando uma grande área livre. tornando esse espaço a sua partição.reunião de todos os blocos livres adjacentes. o grau de compartilhamento da memória aumentado. os fabricantes tentaram duas soluções: . Nesse esquema.Universidade Jean Piaget de Cabo Verde. no esquema de alocação particionada dinâmica o problema da fragmentação interna deixa de existir.

Universidade Jean Piaget de Cabo Verde. a fragmentação aparece mais rapidamente.7 Estratégias de Alocação de Partição Os sistemas operacionais implementam basicamente três estratégias para determinar em qual área livre um programa será alocado para execução. Independentemente do algoritmo utilizado. A melhor estratégia a ser adotada por um sistema depende de uma série de fatores. Worst-fit: aloca o programa na pior partição. que podia ser distribuída entre os processos ainda por executar. diminuindo ou retardando a fragmentação. 38 . Visa também resolver o problema da falta de memória principal num sistema. nem todos os sistemas operacionais as utilizaram. São estratégias de alocação: Best-fit: é escolhida a melhor partição. melhorando seu compartilhamento. A este tipo de compactação de espaços livres foi dado o nome de alocação particionada dinâmica com realocação. consumindo menos recursos do sistema. esta é a mais rápida. com endereço e tamanho de cada área. devido á complexidade dos algoritmos. mas. independente do espaço livre que vai deixar. Esta técnica. Uma grande desvantagem desta estratégia é que. aquela que deixa o menor espaço sem utilização. ou seja.8 É uma técnica aplicada à gerência de memória que visa dar maior taxa de utilização à memória principal. ou seja. Swapping - - 7. como são alocados primeiramente as partições menores. Estas soluções ajudaram a diminuir os problemas da fragmentação (tanto interna como externa). permitindo que um número maior de processos se utilizem da memória. apesar de aproveitar primeiro as partições maiores. aquela que deixa o maior espaço livre. Pólo do Mindelo memória. 7. Das três estratégias. First-fit: esta estratégia aloca o programa na primeira partição que o couber. sendo o mais importante o tamanho dos programas executados no ambiente. acaba deixando espaços livres grandes o suficiente para que outros programas utilizem esses espaços. Essas estratégias tentam evitar ou diminuir o problema da fragmentação. deixando pequenos blocos. o sistema possui uma lista das áreas livres.

o sistema escolhe um outro processo para descarregar para swap e devolve o anterior da área de swap para a memória principal.9 Memória Virtual Anteriormente foram apresentadas diversas técnicas de gerenciamento de memória que evoluíram no sentido de maximizar o número de processos residentes na memória principal e reduzir o problema da fragmentação. Outra vantagem desta técnica é permitir um número maior de processos compartilhando a memória principal. Desta forma. o tamanho dos programas e de suas estruturas de dados estava limitado ao tamanho da memória disponível. A seguir. Pouco antes de chegar a vez do processo armazenado em swap utilizar a CPU. Durante o tempo em que o processo fica em swap. a utilização da técnica de overlay para contornar este problema é de difícil implementação na prática e nem sempre uma solução garantida e eficiente. onde o processo fica armazenado temporariamente. os conceitos que envolvem a gerência de memória virtual. memórias principal e secundária são combinadas. já que apenas partes de cada processo estarão residentes. para que este possa ser executado novamente. o outro que necessitava de memória entra em execução ocupando o espaço deixado pelo que saiu. levando o sistema a uma queda de desempenho.espaço de endereçamento virtual: é o conjunto de endereços virtuais que um processo pode endereçar. Isto leva a uma utilização mais eficiente do processador. Memória virtual é uma técnica sofisticada e poderosa de gerência de memória onde as O conceito de memória virtual baseia-se em não vincular o endereçamento feito pelo programa aos endereços físicos da memória principal. que funciona como uma extensão da memória principal.Universidade Jean Piaget de Cabo Verde. além de minimizar (ou quase eliminar) o problema da fragmentação. o sistema operacional escolhe entre os processos alocados que não tem previsão de utilizar a CPU nos próximos instantes (quase sempre entre aqueles que estão em interrupção de E/S ou no final da fila de pronto). o programa e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível. 7. chamada arquivo de swap. Como vimos. Pólo do Mindelo Toda vez que um programa precisa ser alocado para execução e não há espaço na memória principal. incluindo a paginação: . 39 . pois podem possuir endereços vinculados à memória secundária. porém os esquemas vistos se mostraram muitas vezes ineficientes. dando ao usuário a impressão de que existe muito mais memória do que a capacidade real de memória principal. e “descarrega” este processo da memória para uma área especial em disco. O problema dessa técnica é que pode provocar um número excessivo de acesso à memória secundária (disco). E vai trabalhando assim até que os processos vão terminando. Além disso.

pode haver um comprometimento do desempenho do sistema. acontece o page fault. quando então o processo voltará à fila de pronto e entrará em execução de acordo com o escalonamento 40 . O processador apenas executa instruções e referencia dados residentes no espaço de endereçamento real. e consiste em permitir a tradução do endereço virtual em endereço real. Assim. relacionando os endereços virtuais do processo ás suas posições na memória real. - Mapeamento: como o espaço de endereçamento virtual não tem nenhuma relação com o espaço de endereçamento real. - Memória virtual por paginação: é a técnica de gerência de memória onde o espaço de endereçamento virtual e o espaço de endereçamento real são divididos em blocos do mesmo tamanho chamados páginas. Esta transferência é chamada de paginação. é o conjunto de endereços reais que um processo pode endereçar. entre outras informações. ou seja. e o sistema operacional se incumbe de administrar os detalhes durante a sua execução. Cabe ao compilador e ao linkeditor gerar códigos executáveis em função do endereçamento virtual. um programa não mais precisa estar necessariamente em endereços contíguos na memória real para ser executado. enquanto as páginas do espaço real são chamadas páginas reais ou frames. sempre que acontece a paginação. É única e exclusiva para cada processo. As páginas do espaço virtual são chamadas páginas virtuais. o mapeamento. O número de page faults gerados por um processo em um determinado intervalo de tempo é chamado de taxa de paginação do processo. permanecendo o restante na memória virtual até o momento de ser referenciado. Este mecanismo é o que chamamos de mapeamento. Se esta taxa atingir valores elevados. Como conseqüência. Sempre que o processo referencia um endereço virtual. Pólo do Mindelo - Espaço de endereçamento real: analogamente. Um page fault provoca uma interrupção no processo. Neste caso. deve existir um mecanismo que transforme os endereços virtuais em endereços reais. - Page fault: é a falha de página.Universidade Jean Piaget de Cabo Verde. Se não estiver. pois há a necessidade de acessar operações de E/S. - Tabela de endereçamento de páginas: estrutura mantida pelo sistema para armazenar. uma interrupção de E/S fará com que o processo em execução seja interrompido e colocado em estado de espera até que sua intervenção de E/S seja realizada. Portanto. Este esquema de endereçamento virtual é ignorado pelo programador no desenvolvimento das aplicações. o sistema deve transferir a página virtual para um endereço na memória real. os programas e suas estruturas de dados não estão mais limitados ao tamanho da memória física disponível. apenas uma parte do seu código fica residente na memória principal. um programa pode fazer referência a um endereço virtual que esteja fora dos limites da memória principal (real). o sistema verifica se a página correspondente já está carregada na memória real. Quando um programa é executado.

na tentativa de economizar tempo de E/S. - Working-set: é o conjunto de páginas de um processo. Este mecanismo é conveniente. MAIOR é o grau de compartilhamento da memória e da CPU. chamada paginação antecipada. funciona carregando antecipadamente várias páginas da memória virtual para a principal. ou por um limite de working-set muito pequeno (que não comporte o loop principal do programa. com menos programas disputando o processador. Nem sempre o sistema acerta na antecipação. significa que há mais páginas sendo requeridas na memória real do que ela pode realmente suportar. após uma referência a um endereço de memória. Pode acontecer a nível de programa ou de sistema. A política de alocação fixa determina um limite de working- 41 .Universidade Jean Piaget de Cabo Verde. esta mesma posição seja referenciada novamente num curto intervalo de tempo. Este conceito surgiu com o objetivo de reduzir o problema do thrashing e está relacionado ao princípio da localidade. aproximadamente. - Tamanho da página: deve estar entre 512 bytes e 128KB. um outro ocupará a CPU. Enquanto o sistema trata a interrupção deste processo. Políticas de alocação de páginas: determinam quantos frames cada processo pode manter na memória real. pois leva para a memória real somente as páginas realmente necessárias à execução do programa. A solução é aumentar o tamanho da memória física. Imagine um loop principal de um programa que ocupe três páginas. Pólo do Mindelo normal. sejam realizadas novas referências a endereços próximos ou adjacentes. após a referência a uma posição de memória. - Thrashing: é o efeito causado pelo excesso de page faults durante a execução de um processo. - Políticas de busca de páginas: definem como as páginas serão carregadas da memória virtual para a memória real. A partir desse princípio de localidade. por exemplo). A tendência é que estas três páginas tenham um alto índice de referências durante a execução do programa. com desvios incondicionais espalhados por seu código (desobedecendo portanto aos princípios da localidade). A solução para estes casos é reescrever o programa ou aumentar o limite do working-set. Assim conclui-se que quanto menor o tamanho da página. pode ser provocado por um programa mal escrito. A localidade espacial é a tendência de que. em memória real. mas o índice de acertos é quase sempre maior que o de erros. permitindo que mais programas possam ser executados. em um determinado instante. No caso de thrashing de sistema. A outra política. A localidade espacial é a tendência de que. Páginas menores promovem maior compartilhamento da memória. o processador tenderá a concentrar suas referências a um conjunto de páginas do processo durante um determinado período de tempo. Existem dois tipos de localidade que são observados durante a execução da maioria dos programas. A política por demanda estabelece que uma página - somente será carregada quando for referenciada. A nível de programa. Páginas maiores diminuem o grau de compartilhamento da memória. ficando as outras na memória virtual.

Universidade Jean Piaget de Cabo Verde. Na política local.10 Algoritmos de substituição de páginas O maior problema na gerência de memória virtual por paginação não é decidir quais páginas carregar para a memória real. É um algoritmo de simples implementação. e pode ser vista como uma política injusta. todas as páginas alocadas na memória principal são candidatas à substituição. Os algoritmos de substituição de páginas têm o objetivo de selecionar os frames que tenham as menores chances de serem referenciados num futuro próximo. 7. armazenado na tabela de 42 . pode ser que este processo sofra um aumento temporário da taxa de paginação em função da diminuição das suas páginas alocadas em memória. - Políticas de substituição de páginas: definem onde serão trocadas as páginas. em função de seu tamanho. o frame poderia retornar diversas vezes para a memória real. mas sim quais páginas liberar.Já na política global. taxa de paginação ou até mesmo da taxa de ocupação da memória principal. Através de um contador. pois o processador não consegue prever com segurança qual frame não será mais referenciado durante a execução do programa. Tal fato deve-se à lógica do programa e aos dados que ele manipula. o sistema deve selecionar entre as diversas páginas alocadas na memória qual delas deverá ser liberada pelo processo. Como uma página de qualquer processo pode ser escolhida. na medida em que processos maiores normalmente necessitam de um working-set maior. embora consuma poucos recursos do sistema. first out): escolhe a página que está há mais tempo na - memória principal para fazer a troca. - Algoritmo aleatório: escolhe qualquer página. entre as alocadas na memória. este algoritmo não muito utilizado. Pólo do Mindelo set igual para todos os processos. Em função de sua baixa eficiência. embora tenha sido carregada há mais tempo. para fazer a substituição. somente as páginas do processo que gerou o page fault são candidatas a serem substituídas. esteja sendo muito utilizada. Algoritmo LFU (least frequently used): elege a página menos freqüentemente usada para efetuar a troca. que define um limite de working-set diferente e variável para cada processo. provocando excesso de page faults. - Algoritmo FIFO (first in. independente do processo que gerou o page fault. mas corre o risco de retirar uma página que. Quando há a necessidade de carregar uma página. A outra política é a variável. Caso contrário. São algoritmos de substituição de páginas: - algoritmo ótimo: impossível de ser implementado. desconhecidos pelo processador. Por essa razão não é muito usado. quando se fizer necessária uma substituição.

Universidade Jean Piaget de Cabo Verde. mo sistema identifica quantas referências cada página teve e utiliza esta informação para escolher a página. qual página deve sair. - Algoritmo LRU (least recently used): elege a página menos recentemente usada para fazer a troca. pelo método FIFO. Pólo do Mindelo endereçamento de páginas. 43 . O sistema exclui da decisão a página mais recente e escolhe entre as outras. - Algoritmo NRU (not recently used): elege a página menos recentemente usada para efetuar a troca. e com base nestas informações faz a seleção. O sistema mantém na tabela de endereçamento de páginas um campo onde são armazenadas a data e a hora da última referência de cada página.

2  Sistemas de alocação de arquivos   FAT: sistema criado no MS-DOS e depois utilizado no Windows. criptografia. caracteriza-se por um baixo desempenho no acesso e armazenamento. Neste Sistema Operacional todos os arquivos são considerados apenas como uma “seqüência” de bytes. mas pode trabalhar com partições de até 2TB. sem significado para o Sistema. original da plataforma Windows NT/2000/XP. com um raiz e outros diretórios subordinados. Gerência de Sistemas de Arquivos 8. sendo que cada diretório pode conter arquivos e sub-diretórios. Opera com uma estrutura em árvore binária. provendo o acesso a cada um. não permitindo a criação de arquivos com o mesmo nome. Nesta modalidade cada usuário pode criar vários níveis de diretórios (ou sub-diretórios). É responsabilidade da aplicação controlar os 44 . sem a preocupação de conhecer os outros arquivos do disco. Contém entradas associadas aos arquivos.Universidade Jean Piaget de Cabo Verde.    UNIX: Usa diretório hierárquico. suporta discos de até 264 bytes. NTFS: NT File System. onde existe um único diretório contendo todos os arquivos do disco. Diretório pessoal: Evolução do modelo anterior.1 Estrutura de Diretórios É como o Sistema organiza logicamente os arquivos. Neste modelo há um diretório “master” que indexa todos os diretórios particulares dos usuários. 8. dispensa ferramentas de recuperação de erros. É muito limitado. minúsculas e espaços em branco. podendo conter maiúsculas. permite a cada usuário ter ser “diretório” particular. Pólo do Mindelo 8. com as informações de localização. Múltiplos níveis (ÁRVORE): É o modelo utilizado hoje em dia em quase todos os Sistemas Operacionais. organização e outros atributos:  Nível único: é a implementação mais simples de uma estrutura de diretórios. Usa listas encadeadas. bom sistema de proteção de arquivos. oferecendo alto grau de segurança e desempenho: nomes de arquivo com até 255 caracteres. FAT32: igual ao FAT no que diz respeito a organização e desempenho. tem um limite de área utilizável em partições de 2 GB. nome. O número de níveis possíveis depende do Sistema Operacional.

leva em consideração que blocos contíguos de dados geralmente são alocados/liberados simultaneamente. A segunda forma é utilizando uma lista encadeada dos blocos livres do disco. independente de sua localização física. Alocação contígua: armazena o arquivo em blocos seqüencialmente dispostos no disco. Nesta. pode-se manter uma tabela com o endereço do primeiro bloco de cada segmento e o número de blocos contíguos que se seguem. A terceira forma é a tabela de blocos livres. onde cada bloco possui um ponteiro para o bloco seguinte. e com valor 1 representa um espaço ocupado. não utiliza informações de controle nos blocos de dados. que estando com valor 0 indica que o espaço está livre. Utiliza as estratégias best-fit. Alocação indexada: esta técnica soluciona a limitação da alocação encadeada. Outra desvantagem é a perda de espaço nos blocos com o armazenamento dos ponteiros. pois para cada bloco do disco há uma entrada na tabela. A fragmentação não representa problemas na alocação encadeada. Desse modo. Desta forma. pois permite acesso direto aos blocos do arquivo. devido às constantes buscas seqüenciais na lista. pois os blocos livres para alocação do arquivo não necessariamente precisam estar contíguos. pode-se enxergar o disco como um conjunto de segmentos de blocos livres. Neste tipo de alocação só se permite acesso seqüencial aos blocos do arquivo. Alocação encadeada: nesta modalidade o arquivo é organizado como um conjunto de blocos ligados logicamente no disco. O principal problema neste tipo de alocação é a existência de espaço livre para novos arquivos. Assim. Apresenta problemas de lentidão no acesso. O arquivo é localizado através do endereço do primeiro bloco de sua extensão em blocos. Causa alto índice de fragmentação no disco. 8. sendo esta uma das principais desvantagens da técnica. Uma delas é através de uma tabela denominada mapa de bits. worst-fit e first-fit (já conhecidas) para definir onde o arquivo será alocado. além de permitir acesso direto aos blocos. Pólo do Mindelo métodos de acesso aos arquivos. Isso é conseguido mantendo-se os ponteiros de todos os blocos do arquivo em uma única estrutura chamada bloco de índice. onde cada entrada da tabela é associada a um bloco do disco representado por um bit. no que diz respeito ao acesso. O UNIX utiliza também alguns diretórios padronizados. o que aumenta o tempo de acesso. cada bloco possui uma área reservada para armazenar o endereço do próximo bloco livre. O que acontece é a quebra do arquivo em vários pedaços.Universidade Jean Piaget de Cabo Verde. - - 45 . que deve ser contígua.3 Gerência de espaço livre São três as formas de se implementar estruturas de espaços livres. Este tipo de alocação. Gasta muita memória. de exclusividade do Sistema.

Universidade Jean Piaget de Cabo Verde. é fundamental que mecanismos de proteção sejam implementados para garantir a integridade e proteção individual dos arquivos e diretórios: Senha de acesso: mecanismo de simples implementação. execução e eliminação) Lista de controle de acesso: é uma lista associada ao arquivo onde são especificados quais os usuários e os tipos de acesso permitidos. Em determinados sistemas de arquivos pode-se utilizar uma combinação de proteção por grupos de usuários ou por listas de acesso. O tamanho dessa estrutura pode ser bastante extenso se considerarmos que um arquivo pode ser compartilhado por vários usuários. Consiste em associar cada usuário a um grupo. Além deste problema. e. mas apresenta duas desvantagens: não é possível determinar quais os tipos de operação podem ser efetuadas no arquivo. Pólo do Mindelo 8. oferecendo assim maior flexibilidade ao mecanismo de proteção de arquivos e diretórios. escrita. pelo grupo ou por todos os usuários. GROUP (grupo) e ALL (todos).4 Proteção de acesso Considerando-se que os meios de armazenamento são compartilhados por vários usuários. se este for compartilhado. além de definir que tipos de acesso podem ser realizados (leitura. Grupos de usuário: é muito utilizada em muitos Sistemas Operacionais. - - 46 . todos os usuários que o utilizam devem conhecer a senha de acesso. Na criação do arquivo o usuário especifica se o arquivo pode ser acessado somente pelo seu criador. Este mecanismo implementa três níveis de proteção: OWNER (dono). há o inconveniente de se fazer acesso seqüencial à lista toda vez que um acesso é solicitado. Os grupos são organizados logicamente com o objetivo de compartilhar arquivos e diretórios no disco.

You're Reading a Free Preview

Descarregar
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->