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

back-ups. 5 . Sistemas Multiprogramáveis/ Multitarefa Sistemas BATCH Sistemas de Tempo Compartilhado Sistemas BATCH Sistemas de Tempo Real 2. de acordo com a figura abaixo. geralmente disco ou fita. os programas eram submetidos para execução através de cartões perfurados e armazenados em disco ou fita.Universidade Jean Piaget de Cabo Verde.2. O processamento em batch tem como característica não exigir interação do usuário com o sistema ou com a aplicação. de tempo compartilhado e de tempo real. 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. Todas as entradas ou saídas são implementadas por meio de algum tipo de memória secundária. Nesta modalidade. para posterior execução.1 Foram os primeiros sistemas multiprogramáveis a serem implementados na década de 60. compilações. Aplicações deste tipo eram utilizadas em cálculo numérico. podendo ser divididos em sistemas batch. Vem daí o nome batch (lote de cartões). etc.

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

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. 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. controle de tráfego aéreo. 2. como monitoramento de refinarias de petróleo. simulações. 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.Universidade Jean Piaget de Cabo Verde. Em função destes fatores. Esta técnica permitiu a criação de sistemas computacionais voltados para processamento científico. de usinas. prospecção de petróleo. processamento de imagens e CAD. ou em qualquer aplicação onde o tempo de processamento é fator fundamental. A grande diferença entre estas duas categorias é que nos sistemas fortemente acoplados existe apenas uma memória 7 . 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.

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

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

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. Neste caso. 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. o processador deve interromper o programa para tratar o término da operação.Universidade Jean Piaget de Cabo Verde. sendo o fundamento básico dos sistemas multiprogramáveis/multitarefa. alguns eventos inesperados podem ocorrer. Essas informações consistem basicamente no conteúdo dos registradores internos da CPU. Pólo do Mindelo Durante a execução de um programa. para onde o fluxo do programa é desviado. 10 . Um exemplo de interrupção é quando um dispositivo avisa ao processador que alguma operação de E/S está completa. A interrupção é o mecanismo que permitiu a implementação da concorrência nos computadores. um certo conjunto de informações sobre sua execução seja preservado. no momento da interrupção. sendo assim. independe da instrução que está sendo executada. Desta forma. denominada rotina de tratamento de interrupção. que deverão ser restaurados para a continuação do programa. ocasionando um desvio forçado no seu fluxo normal de execução. Esses eventos são conhecidos como interrupção ou exceção. e podem ser resultado de sinalizações de algum dispositivo de hardware externo ao ambiente memória/processador. Para que o programa interrompido possa retornar posteriormente à sua execução é necessário que. Uma interrupção é sempre gerada por um evento externo ao programa e. A diferença entre interrupção e exceção é dada pelo tipo de evento ocorrido. A identificação do tipo de evento ocorrido é fundamental para determinar o endereço da rotina adequada ao tratamento da interrupção. 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.

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

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

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

já que um programa poderia ser processado enquanto uma operação de leitura/gravação em periférico estava sendo efetuada. O canal de E/S funciona então como uma interface entre os controladores e a CPU.Universidade Jean Piaget de Cabo Verde. Na figura a seguir. Isto permitiu a implementação dos primeiros sistemas multiprogramáveis. 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. como mostra a figura a seguir: Memória Principal CPU 14 . ligados a estes. 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). o que diminuía sua eficiência devido ao excesso de interrupções. Pólo do Mindelo periféricos para saber se a operação de E/S tinha terminado. Em vez de o processador ser interrompido várias vezes para interrogar os dispositivos para saber do resultado das operações. 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. podemos ver a implementação do canal de E/S gerenciando vários controladores e. vários periféricos. foi criado um dispositivo de transferência de dados chamado de DMA – Direct Memory Access. Este tipo de operação permitiu um certo grau de paralelismo.

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

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

em detalhes. implementando mecanismos de controle da segurança e direitos de acesso às áreas utilizadas pelos usuários nos diversos dispositivos. Pólo do Mindelo - Tratamento de interrupções e exceções: já explicados anteriormente. 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.Universidade Jean Piaget de Cabo Verde. linhas impressas. entre outros. 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 dispositivos de E/S: responsável por gerenciar os dispositivos. o contexto do processo. - - - - - - - 17 . Escalonamento e controle de processos: função responsável por organizar a fila de acesso ao processador. Gerência de sistemas de arquivos: responsável pelo gerenciamento dos arquivos. Auditoria e segurança do sistema: função extremamente importante. além de controlar e confirmar o envio e recebimento de todas as mensagens que trafegam pela rede. Isto se faz necessário para servir de subsídio para análise de performance. 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. é esta função que desaloca todos os espaços em memória ocupados pelo processo. aos arquivos. páginas de papel. fitas e outros periféricos que serão usados no processamento. Quando do fim da execução do programa. quantidade de área alocada em memória. 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. bem como seu compartilhamento pelos diversos usuários. tempo corrido. para então entrarem em execução. à memória e a todos os recursos do sistema. liberando-os para futuras alocações a outros processos. além do executável. Nesta função também são estabelecidos vínculos físicos a arquivos em disco. É esta função que aloca em memória. estatísticas de gastos com material de consumo e também para definição de custos de processamento. Suporte a redes e teleprocessamento: é esta função que executa todos os serviços de rede. além de listas e estruturas de controle utilizadas pelo sistema operacional. em disco. São registrados: tempo de CPU.. fazendo o empacotamento das mensagens vindas dos terminais para a CPU central e vice-versa. 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. o buffer de leitura/gravação (se necessário). 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.

Para cada serviço disponível existe uma system call associada. Pólo do Mindelo O arquivo de LOG é usado pela gerência de sistemas. todo o sistema poderá ficar comprometido e inoperante. a maneira como ele é organizado e o inter-relacionamento entre seus diversos componentes pode variar conforme a concepção do projeto do sistema. Através dos parâmetros fornecidos na system call. e cada sistema operacional possui seu próprio conjunto de chamadas. com nomes. com o intuito de verificar e aperfeiçoar os mecanismos de segurança e proteção ao sistema. Caso uma aplicação que tenha acesso ao núcleo realize alguma operação que altere sua integridade.4 Modos de Acesso 18 . Aplicação Núcleo do Sistema Operacional Hardware System Call Biblioteca 4. parâmetros e formas de ativação específicos. 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.Universidade Jean Piaget de Cabo Verde. 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. Sempre que um usuário ou uma aplicação necessita de algum serviço do sistema. 4. As system calls podem ser entendidas como uma porta de entrada para acesso ao núcleo do sistema e aos seus serviços.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. é realizada uma chamada a uma de suas rotinas através de uma system call. A estrutura do sistema.

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

Como desvantagens. Onde os módulos podem interagir livremente. principalmente.Universidade Jean Piaget de Cabo Verde. 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. a limitação quanto a inovações futuras e a dificuldade de manutenção. sua manutenção muito difíceis. o que tornava seu desenvolvimento e.5 - Arquiteturas: Sistemas monolíticos. Os primeiros sistemas operacionais foram desenvolvidos com base nesta arquitetura. Como vantagens desta arquitetura podemos citar a rapidez de execução e simplicidade de implementação. Pólo do Mindelo 4. Aplicação Modo Usuário Modo Kernel System call Aplicação Núcleo do Sistema Hardware Arquitetura monolítica 20 .

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

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

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

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. A troca de um processo por outro no processador. comandada pelo sistema operacional.Universidade Jean Piaget de Cabo Verde. em função disso. é denominada troca de contexto. o sistema salva as informações no contexto de hardware do processo. além dos registradores de uso específico. 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. Quando um processo está em execução. 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. as informações e características que valerão para o processo. quando da sua alocação. que consiste em salvar o conteúdo dos registradores do processo que está deixando a CPU e carrega-los com os valores 24 . a partir do cadastro de usuários e do cadastro de contas no sistema. número máximo de arquivos abertos. suas áreas de atuação no sistema. -  Contexto de Hardware: armazena o conteúdo dos registradores gerais da CPU. como área utilizada em disco. prioridade de execução. etc. No momento em que o processo perde a utilização da CPU. etc. em memória. como número máximo de arquivos abertos. tempo limite de CPU. Muitas destas características são criadas no momento da criação do processo. Privilégios: diz respeito principalmente às prioridades assumidas pelo processo durante sua execução. número máximo de linhas impressas. e. o seu contexto de hardware está armazenado nos registradores da CPU. limite de linhas impressas.

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

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

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

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

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

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

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

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

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

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

Na figura a seguir. chamada área de overlay. 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. Os sistemas multiprogramáveis já 35 . um de cadastramento e outro de impressão. que será compartilhada entre os módulos de cadastramento e impressão.5 Alocação Particionada Estática Os sistemas operacionais evoluíram no sentido de proporcionar melhor aproveitamento dos recursos disponíveis. sendo os módulos de cadastramento e impressão independentes. Assim. o sistema o carregará da memória secundária para a área de overlay. logo. precisa estar na memória durante todo o tempo da execução do programa. sempre que um dos módulos for referenciado no módulo principal. 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. que totaliza 9 KB. sobrepondo o módulo antigo na memória. a memória é insuficiente para armazenar todo o programa. A independência significa que quando um módulo estiver na memória para execução. 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. o outro não necessariamente precisa estar presente.Universidade Jean Piaget de Cabo Verde. Nos sistemas monoprogramáveis o processador permanece grande parte do tempo ocioso e a memória principal é sub-utilizada. Pólo do Mindelo Consideremos um programa que tenha três módulos: um principal.O módulo principal é comum aos outros dois. através de comandos específicos da linguagem de programação utilizada. 7.

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

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.reunião de todos os blocos livres adjacentes. Nesse esquema. Para resolver o problema da fragmentação externa. Assim. formando uma grande área livre no final da 37 . tornando esse espaço a sua partição. Porém. que se transforma em uma nova partição. como os programas utilizam apenas o espaço de que necessitam. passam a existir na memória blocos cada vez menores na memória. utilizaria o espaço necessário à sua execução. os fabricantes tentaram duas soluções: . foi eliminado o conceito de partições de tamanho fixo. eliminando os blocos livres entre elas. com o término de alguns programas e o início de outros. formando uma grande área livre. realocação de todas as partições ainda ocupadas para a parte inicial da memória. não permitindo o ingresso de novos programas. ao ser carregado.Universidade Jean Piaget de Cabo Verde. conseqüentemente. A este tipo de problema dá-se o nome de fragmentação externa. no esquema de alocação particionada dinâmica o problema da fragmentação interna deixa de existir. o grau de compartilhamento da memória aumentado. Na alocação particionada dinâmica. cada programa. onde o problema da fragmentação interna fosse reduzido e. 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.

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

além de minimizar (ou quase eliminar) o problema da fragmentação. 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.espaço de endereçamento virtual: é o conjunto de endereços virtuais que um processo pode endereçar. E vai trabalhando assim até que os processos vão terminando. O problema dessa técnica é que pode provocar um número excessivo de acesso à memória secundária (disco).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. levando o sistema a uma queda de desempenho. que funciona como uma extensão da memória principal. Outra vantagem desta técnica é permitir um número maior de processos compartilhando a memória principal. e “descarrega” este processo da memória para uma área especial em disco. chamada arquivo de swap. para que este possa ser executado novamente. porém os esquemas vistos se mostraram muitas vezes ineficientes. já que apenas partes de cada processo estarão residentes. 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. o tamanho dos programas e de suas estruturas de dados estava limitado ao tamanho da memória disponível. Isto leva a uma utilização mais eficiente do processador.Universidade Jean Piaget de Cabo Verde. dando ao usuário a impressão de que existe muito mais memória do que a capacidade real de memória principal. A seguir. os conceitos que envolvem a gerência de memória virtual. pois podem possuir endereços vinculados à memória secundária. 7. Pouco antes de chegar a vez do processo armazenado em swap utilizar a CPU. Como vimos. 39 . o outro que necessitava de memória entra em execução ocupando o espaço deixado pelo que saiu. memórias principal e secundária são combinadas. o programa e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível. onde o processo fica armazenado temporariamente. Desta forma. o sistema escolhe um outro processo para descarregar para swap e devolve o anterior da área de swap para a memória principal. 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. Durante o tempo em que o processo fica em swap. Além disso. incluindo a paginaçã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).

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

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

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

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

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

devido às constantes buscas seqüenciais na lista. onde cada entrada da tabela é associada a um bloco do disco representado por um bit. que estando com valor 0 indica que o espaço está livre. - - 45 . Alocação indexada: esta técnica soluciona a limitação da alocação encadeada. Isso é conseguido mantendo-se os ponteiros de todos os blocos do arquivo em uma única estrutura chamada bloco de índice. pois para cada bloco do disco há uma entrada na tabela. Uma delas é através de uma tabela denominada mapa de bits. O arquivo é localizado através do endereço do primeiro bloco de sua extensão em blocos. Este tipo de alocação. onde cada bloco possui um ponteiro para o bloco seguinte. Alocação encadeada: nesta modalidade o arquivo é organizado como um conjunto de blocos ligados logicamente no disco. Pólo do Mindelo métodos de acesso aos arquivos. cada bloco possui uma área reservada para armazenar o endereço do próximo bloco livre. O UNIX utiliza também alguns diretórios padronizados. A fragmentação não representa problemas na alocação encadeada. sendo esta uma das principais desvantagens da técnica. Gasta muita memória.Universidade Jean Piaget de Cabo Verde. o que aumenta o tempo de acesso. leva em consideração que blocos contíguos de dados geralmente são alocados/liberados simultaneamente. Neste tipo de alocação só se permite acesso seqüencial aos blocos do arquivo. de exclusividade do Sistema. que deve ser contígua. Assim. 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. Desse modo. worst-fit e first-fit (já conhecidas) para definir onde o arquivo será alocado. pode-se enxergar o disco como um conjunto de segmentos de blocos livres. Causa alto índice de fragmentação no disco. O principal problema neste tipo de alocação é a existência de espaço livre para novos arquivos. não utiliza informações de controle nos blocos de dados. Desta forma. independente de sua localização física. Outra desvantagem é a perda de espaço nos blocos com o armazenamento dos ponteiros. A segunda forma é utilizando uma lista encadeada dos blocos livres do disco. além de permitir acesso direto aos blocos. O que acontece é a quebra do arquivo em vários pedaços. Alocação contígua: armazena o arquivo em blocos seqüencialmente dispostos no disco. A terceira forma é a tabela de blocos livres. e com valor 1 representa um espaço ocupado. pois os blocos livres para alocação do arquivo não necessariamente precisam estar contíguos. pois permite acesso direto aos blocos do arquivo. Utiliza as estratégias best-fit.3 Gerência de espaço livre São três as formas de se implementar estruturas de espaços livres. Apresenta problemas de lentidão no acesso. 8. no que diz respeito ao 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). GROUP (grupo) e ALL (todos). Pólo do Mindelo 8. escrita. Além deste problema. Grupos de usuário: é muito utilizada em muitos Sistemas Operacionais. Os grupos são organizados logicamente com o objetivo de compartilhar arquivos e diretórios no disco. mas apresenta duas desvantagens: não é possível determinar quais os tipos de operação podem ser efetuadas no arquivo. pelo grupo ou por todos os usuários. é 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. - - 46 .Universidade Jean Piaget de Cabo Verde. além de definir que tipos de acesso podem ser realizados (leitura.4 Proteção de acesso Considerando-se que os meios de armazenamento são compartilhados por vários usuários. há o inconveniente de se fazer acesso seqüencial à lista toda vez que um acesso é solicitado. se este for compartilhado. 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. e. todos os usuários que o utilizam devem conhecer a senha 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. Em determinados sistemas de arquivos pode-se utilizar uma combinação de proteção por grupos de usuários ou por listas de acesso. oferecendo assim maior flexibilidade ao mecanismo de proteção de arquivos e diretórios.

Sign up to vote on this title
UsefulNot useful