P. 1
Sistemas Operacionais

Sistemas Operacionais

|Views: 47|Likes:
Publicado porAbner Smith

More info:

Published by: Abner Smith on May 30, 2012
Direitos Autorais:Attribution Non-commercial

Availability:

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

04/04/2013

pdf

text

original

www.carlosrobertodasvirgens.wikispaces.

com/

Sistemas Operacionais Definição SO é um programa que permite às pessoas usar o Hardware do computador (CPU, Memória e Armazenamento Secundário). Os usuários não dão instruções diretamente ao computador. Em vez disso, eles dão instruções ao Sistema Operacional. O SO instruí o Hardware a executar as tarefas desejadas. Funções O que faz o Sistema Operacional? Imaginemos uma calculadora e várias pessoas querendo usá-la. Como você poderia dar a cada um aquilo que ele precisa? Quem usaria a calculadora primeiro? O que você faria se alguém se apossasse da calculadora por muito tempo? O que você faria se alguém insistisse que seus cálculos são secretos e que ninguém poderia ter conhecimentos? O que você faria se eles quisessem armazenar seus resultados em algum lugar? Esta situação é semelhante ao que o SO geralmente enfrenta. Existem recursos que muitas pessoas querem usar. Se não houver algo que execute as tarefas, haverá conflitos e confusão geral. Tarefas que o Sistema Operacional realiza: Permite que os programas armazenem e obtenham as informações. Isola os programas dos detalhes específicos de hardware. Controla o fluxo de dados entre os componentes de um computador. Permite que outros programas sejam executados sem interferência de outros programas. Permite que programas independentes cooperem periodicamente e compartilhem informações. Responde aos erros ou a solicitações do usuário. Impõe um escalonamento entre programas que solicitem recursos. Histórico O primeiro computador eletrônico (o ENIAC) não tinha sistema operacional. O ENIAC tinha de ser operado manualmente. O ENIAC precisava que os engenheiros conectassem fios e conjuntos de chaves e reles para que pudesse funcionar. Uma vez concluído o trabalho dos engenheiros, o computador fazia os cálculos automaticamente. Se fossem necessários cálculos diferentes, era preciso refazer a fiação do computador. Durante a década de 1950, foram desenvolvidos Sistemas Operacionais simples, que permitiam que programas fossem apresentados (usualmente em cartões perfurados) em seqüência e armazenados. Todos os recursos do computador estavam dedicados a apenas um programa de cada vez. O próximo estágio do desenvolvimento (início da década de 1960) foi armazenar vários programas na memória simultaneamente. Em vez de serem executados em seqüência, os programas ocupavam turnos. Cada um executado por um certo tempo, quando então o Sistema Operacional alocava a CPU para outro. Um usuário podia solicitar permissão por meio de um terminal e acessar recursos quase imediatamente. Migrações para um computador maior significavam uma mudança para um novo Sistema Operacional. Em meados da década de 1960, a IBM introduziu um Sistema Operacional que poderia ser executado em qualquer computador, desde os pequenos e baratos até os mais caros. Como as informações geralmente tinham de ser acessíveis a muitos usuários, começou a surgir a necessidade de estabelecer comunicação entre computadores separados. Os Sistemas operacionais já não eram destinados apenas a sistemas estanques. Eles tinham de estabelecer interfaces com redes complexas de comunicações de dados. Tipos de Sistemas Operacionais 1. Monotarefa (Single-Tasking) O ambiente mais simples, é aquele onde um usuário executa um aplicativo de cada vez. O Sistema Operacional permite que apenas um programa (tarefa) seja executado de cada vez.

1

Esse tipo de Sistema Operacional tem como responsabilidades principais: processamento E/S, gerenciamento de disco e gerenciamento de memória. Por exemplo, o Sistema Operacional deve: Ler e interpretar as entradas do teclado. Enviar dados a um disco , impressora ou outro dispositivo de saída. Manter listas de arquivos em um disco e manter um controle do espaço de disco disponível. Manter compiladores, editores e outros programas do sistema em locais de memória distintos. 2. Multitarefa (Monousuário) Comportam apenas um usuário, que pode, entretanto, executar várias atividades ao mesmo tempo. Sistemas Multiusuário Também chamados sistemas multiprogramação. São mais complexos do que os sistemas monousuários. A elaboração do escalonamento se torna mais importante em um computador multiusuário. Tipos de Programas 1. Programas Interativos É aquele que o usuário ativa por meio de um terminal. Em geral o usuário introduz um pequeno comando. O Sistema Operacional interpreta então esse comando, decide qual a ação apropriada e a executa. Finalmente, ele instrui o usuário para que outro comando seja introduzido mostrando um sinal de prontidão ou uma mensagem. Os usuários interativos esperam respostas rápidas. 2. Programas em Lote Os programas em lote ( batch programs) dominaram a computação desde a década de 1950 até o começo da década de 1970. Um usuário pode armazenar comandos em um arquivo, colocá-lo em uma fila de lotes do Sistema Operacional, e então se desconectar do sistema e executar alguma outra tarefa. O arquivo com os comandos, porém, permanece na fila e é eventualmente tratado pelo sistema. Os usuários de programas em lote, ao contrário dos usuários interativos, não esperam respostas imediatas. Como resultados, os programas de lote em geral têm prioridade mais baixa do que os interativos. 3. Programas em Tempo Real A programação em tempo real é usada quando respostas imediatas são essenciais. Os usuários interativos preferem respostas rápidas, mas os usuários de programas em tempo real as exigem. Exemplos de programação em tempo real incluem software que deve responder a eventos externos, como o sistema de controle de tráfego aéreo em um aeroporto. Outros exemplos de programação em tempo real são: robôs, controladores de veículos, monitoração de experimentos de laboratório, reatores nucleares, indústrias químicas e controle de equipamentos em fábricas. Máquinas Virtuais Em geral os sistemas multiusuário permitem que os usuários compartilhem o acesso aos recursos de um computador. Como o Sistema operacional define quais os recursos existentes, os usuários geralmente vêem esses mesmos recursos. Há um outro tipo de sistema, um monitor de máquina virtual, que proporciona a cada usuário uma visão particular de seu ambiente de computação.

Projeto em Camadas Muitos Sistemas Operacionais implementam a interface entre o usuário e o computador como sendo uma série de etapas ou camadas. A camada superior define as funções e a inferior contém os detalhes de mais baixo nível para executá-las. O interpretador de comandos, na realidade, não executa os comandos do usuário.

2

Dispositivos Os dispositivos incluem as impressoras. Mas que necessidade são essas? Basicamente. Determinar onde o conteúdo deve ser impresso. Localizar o arquivo. Como usualmente há mais processos do que CPUs. geralmente é executada pelo núcleo. precisamos considerar como ele responde a todas as atividades independentes que podem existir. O Sistema Operacional não deve permitir que o processo ocupe tanta memória a ponto de impedir que outros processos sejam executados. O Sistema Operacional não está preocupado com o usuário ou mesmo com o programa (pelo menos não diretamente) . do valor do apontador de pilha (registrador SP). da pilha de execução. O número de programas por usuário pode variar. 3. apesar de parecerem simples. são na realidade muito complicados. Chamamos essas atividades de processos (ou tarefas). um sistema operacional deve garantir ao processo uma quantidade de memória suficiente. Processos Um processo é basicamente um programa em execução. 4. um simples comando solicitando ao Sistema Operacional que imprima o conteúdo de um arquivo exige que ele faça muitas coisas. Quando o usuário faz uma solicitação. Mas a última etapa. A memória é um recurso finito. Determinar se o usuário tem permissão para acessar o arquivo. Concorrência 3 .A razão é que muitos comandos. o “coração”do Sistema Operacional. do valor do contador de programa (registrador PC). Arquivos O que se espera é que o Sistema Operacional localize rapidamente um determinado arquivo e também que possa localizar um determinado registro no arquivo. além de controlar o fluxo dos dados enquanto os processos lêem e escrevem nos dispositivos. Um usuário pode ter vários programas independentes sendo executados simultaneamente e fazendo solicitações conflitantes. Esta é uma tarefa complexa. para dar ao usuário aquilo de que ele precisa. A última camada é o núcleo (Kernel). entre elas: Determinar se o arquivo existe. CPU O processo precisa da CPU para executar suas instruções. Portanto. Determinar a estrutura do arquivo. além de um conjunto de outras informações necessárias à execução do programa. Escrever no dispositivo de saída. dos valores dos demais registradores do hardware. 1. A privacidade e a segurança exigem que um processo seja impedido de acessar a memória de outro processo arbitrariamente. os utilitários fazem a maior parte das verificações e preparações necessárias para atender a solicitação. Ler o arquivo. unidades de fita e unidades de disco. 2. Para estudar um Sistema Operacional. Memória Um processo precisa de memória para armazenar suas instruções e dados. Ele contém as rotinas mais críticas e mais freqüentemente utilizadas. dos dados referentes ao código. sendo constituído do código executável. Por exemplo. mas deve fazê-lo adequadamente. O Sistema Operacional tem de determinar quem tem acesso a quê. Recursos Um Sistema Operacional deve responder às necessidades de um processo.sua responsabilidade básica é com os que devem ser executados e competem aos recursos. o Sistema Operacional deve controlar seu uso. os processos requerem recursos.

A memória principal é dividida em duas partes: uma para o Sistema Operacional e outra para o Programa do Usuário. A definição das áreas de overlay é função do programador. devido à possibilidade de transfer6encia excessiva dos módulos entre disco e a memória. O núcleo do S O ocupa parte da memória principal. deve permanecer na memória durante todo o tempo. Alocação Particionada Nos sistemas multiprogramáveis. O usuário tem controle sobre toda a memória principal. A técnica de overlay tem a vantagem de permitir ao programador expandir os limites da memória principal. em não ultrapassar o espaço de memória disponível. *Fazer com que o S O proteja a si mesmo. O módulo principal é comum aos dois módulos. Memória física é a memória do hardware começa geralmente no endereço físico 0 e continua até um endereço qualquer. A utilização dessa técnica exige muito cuidado. Apenas um usuário pode dispor desses recursos. A solução encontrada para o problema foi dividir o programa em partes (módulos). Memória secundária pode ser utilizada como extensão da memória principal. Gerenciamento de Memória Conceitos Iniciais: CPU e periféricos de I/O interagem com a memória. através de comandos específicos da linguagem utilizada. a alocação contígua simples não permite a utilização eficiente do processador. logo. • Apesar de sua fácil implementação e código reduzido. Problemas ao se observar recursos da memória: *Proteger programas e dados de interferência de outros programas. Um programa deve ser carregado na memória principal para executar. Dizemos que esses processos são concorrentes. processos concorrentes freqüentemente acessam o mesmo arquivo. O Sistema Operacional deverá garantir que um processo não altere os dados que um outro processo esteja usando. utilizando uma mesma área de memória. Alocação contígua Simples A alocação contígua simples foi implementada nos primeiros sistemas operacionais desenvolvidos. O programador deve desenvolver suas aplicações preocupado-se . Gerência de Memória Introdução Nos Sistemas operacionais monoprogramáveis a gerência da memória não é muito complexa. 2. Alguns sistemas implementam proteção através de um registrador. o processador permanece ocioso e a memória é substituída. A princípio. o outro não precisa necessariamente estar. é necessário que vários programas estejam na memória ao mesmo tempo. existirá um espaço de memória sem utilização. 4 . Por exemplo. enquanto o programa aguarda por algum evento. sempre que um programa de usuário faz referência a um endereço na memória. apenas. Quando um módulo estiver na memória. os programas dos usuários estavam limitados ao tamanho da memória principal disponível. devido a necessidade de se manter o maior número de usuários possível utilizando a memória eficientemente. podendo acessar qualquer posição de memória.Um dos problemas mais difíceis na administração dos recursos está relacionado ao fato de muitos processos existirem simultaneamente. Essa técnica é chamada de overlay (sobreposição). quanto na sua manutenção. Caso o programa do usuário não preencha totalmente. Dessa forma. pois pode trazer implicações tanto no desempenho das aplicações. 3. daí a necessidade de uma nova forma de organização para a memória principal. de forma que pudessem executar independentemente uma da outra. o sistema verifica se o endereço está nos seus limites. O tamanho de uma área será estabelecido a partir do tamanho do maior módulo. Para a multiprogramação ser eficiente. Nos Sistemas multiprogramáveis ela se torna crítica. que delimita as áreas do Sistema Operacional e do usuário. inclusive para alterar o Sistema Operacional. Também é chamada de memória principal.

foi eliminado o conceito de partições de tamanho fixo. a geração de código relocável foi possível. como processador e área em disco. Existem duas soluções para fragmentação Os espaços adjacentes são reunidos. • A princípio. Como é alocada a partição que deixa a menor área livre. produzindo um espaço de tamanho maior. diminuindo o tempo de busca por uma área desocupada.3. o sistema deveria ser desativado e reiniciado com uma nova configuração. ou seja. que diminuísse o problema da fragmentação e. • Tanto nos sistemas de alocação absoluta quanto nos de alocação relocável. linkers e loaders. Nesse esquema de alocação de memória. Para manter o controle de quais partições estavam alocadas ou não. três estratégias para determinar em qual partição livre um programa será carregado para execução. normalmente. aquela em que o programa deixa o menor espaço sem utilização. aquela em que o programa deixa o maior espaço sem utilização.3 Estratégias para Escolha da Partição Os sistemas Operacionais implementam. * Worst-fit Escolhe a pior partição (worst-fit).  Deixa espaços livres maiores. analisada no item anterior. A esse tipo de alocação chamou-se alocação particionada estática absoluta. a memória foi dividida em pedaços de tamanho fixo. Sempre que fosse necessária a alteração do tamanho de uma partição. quando os programas forem terminando e deixando espaços cada vez menores na memória. conseqüentemente. Cada programa utilizaria o espaço de que necessitasse.2 Alocação Particionada Dinâmica A alocação particionada estática. ou diminuir. onde o programa pudesse ser alocado. o sistema percorria a tabela. com o endereço e tamanho de cada uma delas. os programas. na tentativa de localizar uma partição livre. Essas estratégias tentam evitar. delimitando cada partição. o problema da fragmentação antes que ela ocorra. realmente. Na alocação particionada dinâmica (ou variável). basicamente. Sempre que um programa era carregado para a memória. 3. Essa limitação se devia aos compiladores e montadores. os sistemas possuíam uma tabela. somadas. • A lista de áreas livres está ordenada por endereços crescentemente. não preenchiam totalmente as partições onde eram carregados. aumentasse o grau de compartilhamento da memória. os programas só podiam executar em uma das partições. que geravam apenas código absoluto. de tamanho suficiente para carregar o programa. A fragmentação externa começará a ocorrer. deixou evidente a necessidade de uma nova forma de organização para a memória principal. não permitindo o ingresso de novos programas. a tendência é que cada vez mais a memória fique com pequenas áreas não contíguas. 5 . Foi criado um novo tipo de organização. chamados partições. totalizem o tamanho do programa. 3. * Best-fit Escolhe a melhor partição (best-fit). * First-fit Escolhe a primeira partição (first-fit) livre. ou seja. ele ficará aguardando uma que o acomode. Com a evolução dos compiladores. A segunda maneira de resolver o problema da fragmentação envolve a relocação de todas as partições. Se um programa for maior que qualquer partição livre. mesmo se outras estivessem disponíveis. que permitem a um maiores número de programas utilizar a memória diminuindo o problema da fragmentação. e os programas puderam ser carregados em qualquer partição.1 Alocação Particionada Estática Nos primeiros sistemas multiprogramáveis. A complexidade do algoritmo e o consumo de recursos do sistema. mesmo que existam duas ou mais partições adjacentes que. a proteção baseia-se em dois registradores. A lista de áreas livres está ordenada por tamanho. denominado alocação particionada estática relocável. O sistema possuí uma lista de áreas livres (free list). que indicam os limites inferior e superior da partição onde o programa está sendo executado. O tamanho das partições era estabelecido na fase de iniciação do sistema. seu tamanho e se estava em uso ou não. passando esse pedaço a ser sua partição. podem torná-lo inviável. eliminando os espaços entre elas e criando uma única área livre contígua. aumentando o problema da fragmentação. em função do tamanho dos programas que executariam no ambiente.

um maior throughput. o endereço virtual é traduzido para um endereço físico. Torna o mecanismo ineficiente em função do tempo gasto para o carregamento. para permitir que a relocação seja realizada durante a execução do programa. os programas e suas estruturas de dados não estão mais limitados ao tamanho da memória física disponível. Os programas e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível. como se nada tivesse ocorrido. apenas parte deles pode estar residente na memória em um determinado instante. O mecanismo de tradução do endereço virtual para endereço físico é denominado mapeamento. Esse tipo de mecanismo é denominado relocação dinâmica (Guimarães –1). O sistema operacional utiliza a memória secundária como extensão da memória principal. Quando o usuário desenvolve suas aplicações. dando ao usuário a ilusão de existir uma memória principal. Espaço de Endereçamento Virtual Um programa no ambiente de memória virtual não faz referência a endereços físicos de memória (endereços reais) . Um programa pode fazer referência a endereços virtuais que estejam fora dos limites do espaço real. ou seja. um programa permanecia na memória principal até o final da sua execução. Memória Virtual Memória Virtual (virtual memory) é a técnica sofisticada e poderosa de gerência de memória. O espaço de endereçamento virtual não tem nenhuma relação direta com os endereços no espaço real. Swapping Mesmo com o aumento da eficiência da multiprogramação e. A melhor solução para este problema é uma implementação do hardware dos computadores.Como o método tenta primeiro utilizar as áreas livres de endereços mais baixos. porém a relocação é realizada no momento do carregamento. Como conseqüência do mapeamento. da gerência de memória. Das três. um programa não precisa estar necessariamente contíguo na memória real para ser executado 6 . ele ignora a existência dos endereços virtuais. O conjunto de endereços virtuais que os processos podem endereçar é chamado espaço de endereçamento virtual. Um dos problemas gerados pelo swapping é a relocação dos programas. é necessário que a relocação seja realizada pelo loader de cada carregamento. a first-fit é a mais rápida. existe uma grande chance de se obter uma grande partição livre nos endereços de memória mais altos. O sistema escolhe um programa residente. No momento em que o programa é carregado na memória. A relocação dinâmica é realizada através de um registrador especial denominado registrador de relocação. O conceito swapping permitiu um maior compartilhamento da memória e. muitas vezes um programa não podia ser executado por falta de uma partição livre disponível. e o sistema operacional cuida dos detalhes de sua execução. Os programas podem ser muito maiores que a memória física. No caso de um programa que saia e volte muitas vezes para a memória. onde as memórias principal e secundária são combinadas. mas apenas a endereços virtuais. que é levado da memória para o disco (swap out). Mapeamento permite ao sistema operacional traduzir um endereço localizado no espaço virtual para um no espaço real. Em todos os esquemas apresentados anteriormente. Mapeamento Deve existir um mecanismo que transforme os endereços virtuais em endereços reais. Os compiladores linkers se encarregam de gerar o código executável em função desses endereços. consumindo menos recursos do sistema. O loader relocável permite que um programa seja colocado em qualquer posição de memória. conseqüentemente. o conjunto de endereços reais é chamado espaço de endereçamento real. o registrador recebe o endereço inicial de memória que o programa irá ocupar. retornando posteriormente para a memória principal (swap in). Analogamente. No momento da execução de uma instrução. O conceito de memória virtual está baseado em desvincular o endereçamento feito pelo programa dos endereços físicos da memória principal. A relocação dinâmica é essencial para a implementação de um sistema multiprogramável. A técnica swapping veio tentar resolver o problema da insuficiência de memória para todos os usuários. pois o processador acessa apenas posições da memória principal. particularmente.

enquanto. Cada processo tem o mesmo espaço de endereçamento virtual. Como a maioria das aplicações tende a fazer referência a um reduzido número de páginas. No caso de o sistema errar nessa previsão. de forma a não comprometer seu desempenho e torná-lo transparente a usuários e suas aplicações. toda vez que há mudança de contexto. O NPV identifica. O sistema tenta prever as páginas que serão à execução do programa. então. Working Set O mecanismo de memória virtual apesar de suas vantagens. o sistema verifica. chamados páginas. se for igual a 1. somente uma pequena fração da tabela de páginas é realmente necessária. As páginas dos processos são transferidas da memória secundária para a principal apenas quando são referenciadas. relacionando os endereços virtuais do processo às suas posições na memória física. chamando memória associativa ou translation lookside buffer. Se um outro programa vai ser executado no contexto de outro processo. Toda vez que o sistema é solicitado para isso. que indica a posição inicial da tabela de mapeamento. Quanto maior o bloco. somando-se o endereço do frame localizado na tabela de páginas com o deslocamento contido no endereço virtual. Caso o mapeamento fosse realizado para cada célula na memória principal. o registrador é atualizado com o endereço da nova tabela.Nos sistemas atuais. o sistema deve passar a referenciar a tabela do novo processo. Paginação 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. o que inviabilizaria a implementação do mecanismo de memória virtual. menos entradas nas tabelas de mapeamento. Blocos maiores aumentam o tempo de transferência do bloco entre a memória secundária e a principal. como se possuísse sua própria memória virtual. então. indica que a página virtual não está na memória principal. terá perdido tempo de processador e ocupado memória desnecessariamente. Quando um programa é executado. Isso é realizado através de um registrador. de manter tabelas de mapeamento exclusivas para cada processo. na ETP da tabela do processo. Quando um programa está sendo executado. o sistema. utiliza a tabela de mapeamento do processo no qual o programa executa. o endereço físico do frame. juntamente com o sistema operacional. para realizar a tradução. através do bit de validade. através de tabelas de páginas. as páginas virtuais são transferidas da memória secundária para a memória principal e colocadas em frames. Sempre que o processo faz referência a um endereço virtual. dizemos que ocorreu um page fault (falha de página). trazendo-as para a memória antecipadamente. entre elas o bit de validade. Sempre que o programa fizer referência a um endereço virtual. o espaço ocupado pelas tabelas seria tão grande quanto o espaço de endereçamento virtual de cada processo. unicamente. foi introduzido um hardware especial para mapear endereços virtuais para endereços físicos sem a necessidade de acesso à tabela de páginas.ETP). O endereço virtual é formado pelo número da página virtual (NPV) e um deslocamento dentro da página. O endereço físico é calculado. Este mecanismo é chamado paginação por demanda (demand paging) e é conveniente. As tabelas mapeiam blocos de informações. Cada página virtual do processo possui uma entrada na tabela (entrada na tabela de ‘páginas . O mecanismo de tradução se encarrega. Todo o mapeamento é realizado em nível de página. A EPT possui outras informações. que indica se uma página está ou não na memória física (valid bit). a página está localizada na memória. uma página virtual na tabela de páginas (ETP) O deslocamento funciona como seu índice. Existe uma tendência de os sistemas passarem a utilizar a técnica de paginação antecipada (antecipatory paging). Se o bit tem o valo 0. na medida em que leva para a memória principal apenas as páginas realmente necessárias à execução do programa. Caso não esteja. as páginas no espaço real são chamadas de páginas reais ou frames (molduras). As páginas no espaço virtual são denominadas páginas virtuais. introduz um grande problema. Com base nesta realidade. se a página que contém o endereço referenciado está ou não na memória principal. a tarefa de tradução é realizada por hardware. onde. com informações de mapeamento que permitem ao sistema localizar a página real correspondente. cujo tamanho determina o número de entradas existentes nas tabelas de mapeamento. 7 . o mecanismo de mapeamento localizará. o sistema tem de transferir a página da memória secundária para a memória física.

deve ser evitada. possíveis dados armazenados na página serão perdidos. A taxa de page faults gerada por um programa depende de como a aplicação foi desenvolvida. Realocação de Páginas O maior problema na gerência de memória virtual por paginação não é decidir que página carregar para a memória. ocorrerá o page fault. A localidade está relacionada com a forma que a aplicação foi escrita. varia conforme a execução de um programa. quando possível. mais quais páginas remover. exige do sistema operacional pelo menos uma operação de E/S. Sempre que o sistema liberar uma página desse tipo. devendo permanecer na memória principal para que execute de forma eficiente. ela será trazida novamente para o working set do processo (page in). Sempre que um processo faz referência a uma página. Quando o limite do working set de um processo é alcançado. Este fato está ligado diretamente a um outro conceito-chave na estratégia d gerência de memória chamado localidade. o número page faults por unidade de tempo. Quando um programa começa a ser executado. elas são transferidas para o working set do processo na memória principal (page in). Localidade é a tendência que existe em um programa de fazer referências a posições de memória de forma que uniforme. indicando que a página foi modificada. e este necessita de novos frames. todas as suas páginas estão na memória secundária. antes de liberá-la para outro processo.Sempre que um processo faz referência a uma de suas páginas e esta não se encontra na memória (page fault). Sempre que uma destas páginas for novamente referenciada. o sistema verifica se a página já se encontra no working set do processo. O gráfico mostra como a taxa de paginação. O sistema consegue implementar esse mecanismo através do bit de modificação (dirty ou modify bit). Um processo tenderá a concentrar suas referências em um mesmo conjunto de páginas durante determinado período de tempo. a tendência de essas três páginas serem referenciadas novamente é muito grande. O working set do processo deve ter um limite máximo de páginas permitidas Quanto maior o working set. preservando seu conteúdo. Principais Estratégias adotadas pelos Sistemas Operacionais para a Realocação de Páginas *Aleatória 8 . que exige na entrada de cada tabela de páginas. se um programa foi desenvolvido utilizando técnicas estruturadas. Caso contrário. que. quais as páginas que devem ser liberadas. Qualquer sistema que implementa paginação deve se preocupar em manter na memória principal um certo número de páginas que reduza ao máximo a taxa de paginação dos processos. ao mesmo tempo que não prejudique os demais processos que desejam ter acesso à memória. Outro fato que se pode observar é a existência de um ponto onde o aumento do working set do processo não implica diminuição significativa na taxa de paginação. Por exemplo. o valor do bit de modificação é alterado de 0 para 1. além da política de gerência de memória implementada pelo sistema operacional. Quando um processo é criado. Não existe nenhuma ferramenta que permita prever mais as próximas páginas que a aplicação irá referenciar. O conceito de working set surgiu a partir da análise da taxa de paginação dos processos. Normalmente. o conceito de localidade quase sempre é válido. percebe-se uma elevada taxa de page faults. À medida que acontecem referências às páginas virtuais. Working set de um processo é o conjunto de páginas referenciadas por ele durante determinado intervalo de tempo. ou seja. um loop cujo código ocupe três páginas. ou seja. O sistema mantém um arquivo de paginação (page file) onde as páginas modificadas são armazenadas. a instruções próximas. que se estabiliza com o decorrer da sua execução. Sempre que uma página é alterada. O working set é o conjunto de páginas constantemente referenciadas pelo processo. o sistema operacional deve intervir e escolher. ele antes deverá gravá-la na memória secundária (page out). menor a chance de ocorrer uma referência a uma página que não esteja na memória principal (page fault). entre as diversas páginas do seu working set. Como os working sets dos processos ocuparão mais memória. Qualquer estratégia de realocação de páginas deve considerar se uma página foi ou não modificada. Caso a página não se encontre no working set. um número menor de processos poderá estar compartilhando a memória principal.

é possível saber quais páginas foram referenciadas ou não. Caso uma página seja constantemente referenciada. Porém. *Least-Recently-Used (NRU) Seleciona a página utilizada menos recentemente (least-recently-used). O programa ocupa quase que integralmente todas as páginas. Páginas pequenas. Segmentação Segmentação é a técnica de gerência de memória. as páginas que entrarem mais recentemente no working set serão. ou seja. ou seja. *Least-Frequently-Used (LFU) A página menos referenciada.Não utiliza critério algum de seleção. O algoritmo privilegia. A página que está a mais tempo de ser referenciada. *Not-Recently-Used (NRU) A escolha da página que não foi recentemente utilizada (not-recently-used) é bastante semelhante ao esquema LRU. só que em menor escala. Apesar de ser uma boa estratégia. em cada página referenciada. também tem influência em outros fatores. e está associado a cada entrada na tabela de páginas. aumentam o número de acessos à memória secundária. justamente. as páginas que são bastante utilizadas. menor fragmentação. quando o código não a ocupa por completo. a menos freqüentemente utilizada (least-frequently-used) será a página escolhida. mantém na memória. 9 . sem qualquer ligação com a estrutura do programa. Existe um flag. onde os programas são divididos logicamente em subrotinas e estruturas de dados e colocados em blocos de informações na memória. é pouco implementada devido ao grande overhead causado pela atualização. gerando. realmente. porém. Sua implementação é bastante simples. Tamanho de Página O problema da fragmentação também existe em sistemas com paginação. todas as páginas estão com o flag indicando que não foram referenciadas (0). sendo necessária apenas uma fila . O tamanho da página está associado ao hardware e varia de sistema para sistema. A maioria dos estudos em relação ao tamanho ideal de página indica páginas de tamanho pequeno. É mantido um contador do número de referência feitas às páginas. como é o caso de páginas de utilitários do sistema. se comparada com a de outras organizações já apresentadas. A grande diferença entre a paginação e a segmentação é que. enquanto a primeira divide o programa em partes de tamanho fixo. na última página. além do algoritmo de busca dessas páginas. conseqüentemente. provocam maior taxa de paginação e. aquelas que estarão com os contadores com menos valor. A maior ou menor fragmentação é conseqüência do tamanho da página que. necessitam tabelas de mapeamento maiores. é raramente utilizada. que permite ao sistema a implementação do algoritmo. do momento do último acesso. A fragmentação só é encontrada. A página que tiver o contador com o menor número de referências será a página escolhida. À medida que as páginas são referenciadas. O flag de referência indica quando a página foi referenciada ou não. o fator tempo se torna irrelevante. e o sistema tem de fazer retornar a mesma página várias vezes. cada um com seu próprio espaço de endereçamento. a segmentação permite uma relação entre a lógica do programa e sua divisão na memória. Apesar de ser uma estratégia que consome poucos recursos do sistema. Depois de um certo tempo. Os blocos têm tamanhos diferentes s são chamados segmentos. inclusive as páginas que são freqüentemente referenciadas. onde as páginas mais antigas estão no início da fila e as mais recentes no final. o flag associado a cada página é modificado pelo hardware (1). Todas as páginas do working set têm a mesma chance de ser selecionadas. Inicialmente. * First-In-First-Out (FIFO) A página que primeiro foi utilizada (first-in) será a primeira a ser escolhida (first-out).

As estratégias para escolha da área livre podem ser as mesmas utilizadas no item Alocação Particionada Dinâmica. os programas devem estar bem modularizados. Através do número do segmento. a modifique ou mesmo tenha acesso a ela. é comum usuários utilizarem certos programas simultaneamente (código reentrante). pois o sistema deve manter tabelas de segmentos que variam de acordo com o número de segmentos. enquanto o de gravação (write). ou seja. principalmente. em páginas. com uma proteção que impeça a gravação. e os endereços são compostos pelo número do segmento e um deslocamento dentro do segmento. por exemplo. Nesse sistema. O sistema operacional mantém uma tabela com áreas livres e ocupadas da memória. best-fit. um número de página dentro desse segmento e um deslocamento dentro dessa página. Os segmentos são mapeados através de tabelas de mapeamento de segmento (TMS). onde alguns bits especificam os acessos permitidos a cada uma das páginas/segmentos Definiremos dois tipos de acessos básicos realizados em uma página/segmento: leitura e gravação. Os dois tipos de acessos combinados produzem um mecanismo de proteção simples e eficiente. Um outro problema é sua complexidade. até a falta completa de acesso. Se as aplicações não estiverem divididas em módulos. Em sistemas que implementam memória virtual. Logo. amenos que haja compartilhamento explícito de páginas/segmentos. No esquema de memória virtual. permitindo desde o total à página/segmento. O problema da fragmentação também ocorre nesse modelo. Mesmo as páginas/segmentos do processo podem estar definidas. worst-fit ou first-fit. que não acomodam nenhum segmento que necessite ser carregado. a proteção deve ser realizada em nível de cada página/segmento na memória. é bastante simples o compartilhamento de código e dados entre vários processos. a área do sistema operacional. ao acessar uma página/segmento do sistema. o sistema localiza um espaço livre que o acomode. passando por acessos intermediários. Quando um novo processo é carregado para a memória. Basta que as entradas das tabelas de páginas/segmentos apontem para as mesmas páginas/segmentos na memória principal. O acesso à leitura (read) permite a leitura da página/segmento. se ele está ou não na memória e sua proteção. também. cada processo tem sua tabela de mapeamento. Compartilhamento de Memória Em sistemas multiprogramáveis. apenas os segmentos referenciados são transferidos da memória secundária para a memória real. utilizem a memória. A proteção é necessária para impedir que um processo. Segmentação Paginada Sistemas que implementam segmentação paginada permitem a divisão lógica dos programas em segmentos e. e a tradução dos endereços é realizada pelo sistema. Proteção Em qualquer sistema multiprogramável. por sua vez. Além do endereço do segmento na memória física. 10 . Assim. é impossível que um processo tenha acesso a áreas de memória de outros processos. onde estão as informações sobre o segmento na memória real. grandes pedaços de código estarão na memória desnecessariamente. não permitindo que outros usuários. O endereçamento físico é obtido somando-se a posição inicial do frame e o deslocamento. Esse mecanismo é implementado utilizando-se as entradas das tabelas de mapeamento. O endereço absoluto é calculado a partir do endereço inicial do segmento mais o deslocamento dentro do segmento.O mecanismo de mapeamento é muito semelhante ao de paginação. quando as áreas livres são tão pequenas. cada segmento é dividido. Na segmentação. a sua alteração. fisicamente. Em sistemas que implementam paginação e/ou segmentação. que contém informações na tabela de páginas do segmento. como é o caso de páginas/segmentos de código executável. para serem mais eficientes. O número de segmento identifica unicamente uma entrada na tabela de segmentos (ETS). obtém-se uma entrada na tabela de segmentos. um endereço é formado pelo número do segmento. Com o número da página obtém-se uma entrada na tabela de páginas com informações da página na memória física. cada entrada na tabela de segmentos possui informações sobre o tamanho do segmento. deve existir um mecanismo que proteja o espaço de memória de cada processo e.

Existem dois motivos que levam um processo a sofrer esse tipo de thrashing . A parte do sistema responsável por sua gerência é denominada sistema de arquivos. o thrashing ocorre em dois níveis: em nível do próprio processo e em nível do sistema. como já analisamos. ou seja. a excessiva paginação ocorre devido ao elevado número de page faults. gerado pelo programa em execução. Em nível do processo. o sistema começa o trabalho de swapping. o thrashing ocorre quando existem mais processos competindo por memória que espaço disponível. porém. baseia-se na forma em que os programas são divididos. a transferência de segmentos é excessiva devido a modularização extrema do programa.A vantagem da segmentação em relação à paginação. os d menor prioridade de execução. o sistema seleciona um ou mais processos que deverão sair da memória para ceder espaço aos novos processos. O segundo é a não obediência do conceito de localidade. entre os processos. Arquivos Um arquivo é constituído de informações logicamente relacionadas. O primeiro passo é a redução do tamanho dos working sets dos processos. Um processo deve ser capaz de ler e gravar grande volume de dados em dispositivos como fitas ou discos de forma permanente. Sistema de Arquivos Introdução O armazenamento e a recuperação de informações são atividades essenciais para qualquer tipo de aplicação. Nesse caso. Enquanto o mapeamento de um vetor necessita de várias entradas na tabela de páginas. Em nível do sistema. 11 . não seguindo o conceito de localidade. tirando e trazendo processos da memória principal para a memória secundária. O thrashing em sistemas que implementam segmentação também ocorre em dois níveis. Caso a redução do working set não seja suficiente. Os mais utilizados são a prioridade e o estado do processo. Nesse caso. além de poder compartilhá-los com outros processos. A manipulação de arquivos é uma atividade freqüentemente realizada pelos usuários. Os arquivos são gerenciados pelo sistema operacional de modo a facilitar o acesso dos usuários ao seu conteúdo. Um arquivo pode ser entendido como um conjunto de registros definidos pelo sistema de arquivos. Thrashing Thrashing pode ser definido como sendo a excessiva transferência de páginas/segmentos entre a memória principal e a memória secundária. esse mecanismo leva ao thrashing em nível do processo. O primeiro é o mau dimensionamento no tamanho do working set de um processo. e a aplicação deverá ser reescrita. Esse problema se aplica tanto a sistemas que implementam paginação como segmentação. Se esse mecanismo for levado ao extremo. ou seja. Quando existem novos processos que desejam ser processados e não existe memória real suficiente. Na paginação. no aspecto de compartilhamento. o sistema passará mais tempo fazendo swapping que executando os processos. independentemente dos diferentes dispositivos de armazenamento. basta aumentar-se o tamanho do working set do processo. aguardando por algum evento. O critério de estado seleciona os processos que estão no estado de espera. podendo representar programas ou dados. o programa faz referência a comandos/dados localizados em páginas fora do working set do processo. Em nível do processo. O sistema tenta admitir a memória de forma que todos os processos sejam atendidos. o thrashing em segmentação é bastante semelhante ao da paginação com a ocorrência de swapping. pequeno demais para acomodar as páginas constantemente referenciadas por ele. Em nível do sistema. devendo sempre ocorrer de maneira uniforme. Swapping em Memória Virtual O conceito de swapping continua válido quando aplicado à memória virtual. Há vários critérios que podem ser aplicados na escolha do(s) processo(s) que deve(m) sair da memória. o problema é de programação. O critério de prioridade escolhe. na tabela de segmentos é necessária apenas uma única entrada.

As organizações mais conhecidas e implementadas são a seqüencial. os atributos variam. como organização e data/hora de criação. O aceso direto somente é possível quando o arquivo é definido com registros de tamanho fixo. Métodos de Acesso Inicialmente. Um arquivo é identificado por meio de nome. Esse tipo de acesso. sendo a gravação de novos registros possível apenas no final do arquivo. A grande vantagem desse modelo é a flexibilidade para cria diferentes estruturas de dados. como fitas magnéticas. O acesso direto pode ser combinado com o acesso seqüencial. o acesso era restrito à leitura dos registros na ordem em que eram gravados. na área de índice. No momento da criação de um arquivo. Esta organização pode ser uma estrutura suportada pelo sistema operacional ou definida pela própria aplicação.Arquivos podem ser armazenados pelo sistema operacional em diferentes dispositivos físicos. Regras como extensão máxima do nome e quais são os caracteres válidos também podem variar. que é a sua posição relativa ao início do arquivo. proteção. foram introduzidos métodos de acesso mais eficientes. Operações de Entrada Atributos Cada arquivo possui informações de controle denominadas atributos. acessar seqüencialmente os demais. A aplicação deve definir toda a organização. podemos visualizar um arquivo como um conjunto de registros. discos magnéticos e discos ópticos. como tradução de nomes em endereços. 12 . A partir desta informação. Organização de Arquivos A organização de arquivos consiste no modo como os seus dados estão internamente armazenados. Um método de acesso mais sofisticado. tais registros são ditos registros de tamanho fixo. Com isso. chamado de seqüencial. cada arquivo criado deve seguir um modelo suportado pelo sistema de arquivos. Esse método é realizado através do número do registro. Em alguns sistemas de arquivos é feita distinção entre caracteres alfabéticos maiúsculos e minúsculos. relativa e indexada. O sistema de arquivos não impõe nenhuma lógica para os dados. deverá ser especificada uma chave através da qual o sistema pesquisará. O tipo de dispositivo no qual o arquivo é armazenado deve ser isolado pelo sistema operacional. a partir deste.que permite a leitura/gravação de um registro diretamente na sua posição. porém alguns. o ponteiro correspondente. e caso contrário. é possível definir que organização será adotada. Quando definidos sempre com o mesmo tamanho. realiza-se um acesso direto ao registro desejado. estando livre para estabelecer seus próprios critérios. Dependendo do sistema de arquivos. Arquivos-textos possuem propósitos completamente distintos de arquivos executáveis. Neste caso. estão presentes em quase todos os sistemas. como tamanho do arquivo. formando uma seqüência de caracteres. Sempre que a aplicação desejar acessar um registro. Alguns sistemas operacionais estabelecem diferentes organizações de arquivos. Operações de Entrada/Saída O sistema de arquivos oferece um conjunto de system calls que permite às aplicações realizar operações de E/S. A forma mais simples de organização de arquivos é através de uma seqüência não-estruturada de bytes. porém todo o controle de acesso ao arquivo é de inteira responsabilidade da aplicação. que tem como base o acesso direto. identificação do criador e data de criação. Na realidade. Com discos magnéticos. leitura e gravação de dados e criação/eliminação de arquivos. Com isso é possível acessar diretamente um registro qualquer de um arquivo e. A estrutura dos dados pode variar em função do tipo de informação contida no arquivo. O primeiro a surgir foi o acesso direto. as system calls de E/S têm como função oferecer uma interface simples e uniforme entre a aplicação e os diversos dispositivos. O arquivo deve possuir uma área de índice onde existam ponteiros para os diversos registros. Alguns atributos especificados na criação do arquivo não podem ser modificados em função de sua própria natureza. são chamados de registros de tamanho variável. de forma que exista uma independência entre os arquivos a serem manipulados e o meio de armazenamento. é o chamado acesso indexado ou acesso por chave. Nesses tipos de organização. os primeiros sistemas operacionais só armazenavam arquivos em fitas magnéticas.

como proteção do arquivo. Este novo modelo. Como o sistema de nível único é bastante limitado. Com esta implementação. é possível ao usuário criar quantos diretórios desejar. A partir do primeiro bloco livre pode-se ter acesso seqüencial aos demais de forma encadeada . onde o MDF é a raiz. Esta tabela contém todos os arquivos abertos. que se libere o espaço na tabela de arquivos abertos. Existe apenas um único diretório contendo todos os arquivos do disco Este modelo é bastante limitado. Cada arquivo. A extensão do modelo de dois níveis para um de múltiplos níveis permitiu que os arquivos fossem logicamente mais bem organizados. Uma segunda maneira de realizar este controle é por meio da ligação encadeada de todos os blocos livres do disco. já que não permite que usuários criem arquivos com o mesmo nome. chamado estrutura de diretórios em árvore (treestructure directory). É importante que ao término do uso de arquivos. podendo um diretório conter arquivos ou outros diretórios. este seja fechado. os galhos são os UFD e os arquivos são as folhas. nome. O diretório é uma estrutura de dados que contém entradas associadas aos arquivos onde são armazenadas informações como localização física. Cada bloco possui uma área reservada para armazenamento do endereço do próximo bloco. foi implementada uma estrutura onde. como tamanho e data/hora do último backup realizado. possuindo identificação e atributos. bem como o diretório onde ele se encontra. para cada usuário. Na maioria dos sistemas. o sistema operacional procura a sua entrada na estrutura de diretórios. deve haver um nível de diretório adicional para controlar os diretórios individuais dos usuários. Cada entrada de tabela é associada a um bloco do disco representado por um bit. Quando um arquivo é aberto. que pode assumir valor igual a 0 (indicando bloco livre) ou 1 (indicando bloco alocado). além do espaço utilizado no bloco com informação de controle. cada usuário poderia criar arquivos com qualquer nome. 13 . organização e demais atributos. Este controle é realizado através de uma estrutura de dados que armazenam informações que possibilitam ao sistema de arquivos gerenciar o espaço livre do disco. Este nível. sendo fundamental para aumentar o desempenho das operações com arquivos. é necessário especificar o seu nome. existiria um diretório particular denominado User File Directory (UFD). Atributos de Arquivos Diretórios A estrutura dos diretórios é o modo como o sistema organiza logicamente os diversos arquivos contidos em um disco. identificação do criador e data de criação. sem a preocupação de conhecer os demais arquivos do disco. o algoritmo de busca de espaço livre sempre deve realizar uma pesquisa seqüencial na lista. os diretórios também são tratados como arquivos.Outros são alterados pelo próprio sistema operacional. possui um path único que descreve todos os diretórios desde a raiz (MFD) até o diretório no qual o arquivo está ligado. Na estrutura em árvore. Na tabela são apresentados os principais atributos presentes nos sistemas de arquivos. tamanho máximo e senha de acesso. Existem ainda atributos que podem ser modificados pelo próprio usuário. ou seja. armazenando informações sobre atributos e localização do arquivo em uma tabela mantida na memória principal. A implementação mais de uma estrutura de diretórios é chamada de nível único (single-level directory). já que para cada bloco do disco deve existir uma entrada na tabela. denominado Master File Directory (MFD). nesta estrutura. Nesse tipo de estrutura. Para que o sistema possa localizar arquivos nesta estrutura. Nesta estrutura é possível identificar blocos livres que poderão ser alocados para um novo arquivo. quando se referencia a um arquivo. é atualmente adotado pela maioria dos sistemas operacionais.nele. como proteção. cada entrada aponta para o diretório pessoal. é indexado pelo nome do usuário e.. O principal problema é um excessivo gasto de memória. A estrutura de diretórios com dois níveis é analógica a uma estrutura de dados em árvore. A forma mais simples de implementar uma estrutura de espaços livres é através de uma tabela denominada mapa de bits (bit map). Alocação de Espaço em Disco A criação de arquivos em disco exige que o sistema operacional tenha o controle de quais áreas ou blocos estão livres. Este esquema representa algumas restrições se considerarmos que.

não ocasiona nenhum problema na alocação encadeada. denominado defragmentação. Principal problema é a locação de espaço livre para novos arquivos. Podemos enxergar o disco como um conjunto de segmento de blocos livres. sendo o principal problema a determinação do espaço em disco necessário a um arquivo. Como os arquivos são criados e eliminados freqüentemente. pode ocasionar que parte do espaço alocada permaneça ociosa por um longo período de tempo. Cada bloco deve possuir um ponteiro para o bloco seguinte do arquivo e assim sucessivamente. sendo interrompida tão logo se localize um segmento de tamanho adequado. Mais uma vez a busca em toda a lista se faz necessária. 14 . O sistema localiza um arquivo através do endereço do primeiro bloco e da sua extensão em blocos. A fragmentação dos espaços livres. A alocação contígua apresenta um problema chamado fragmentação dos espaços livres. é necessário que exista uma cadeia de n blocos dispostos seqüencialmente no disco. É possível manter uma tabela com o endereço do primeiro bloco de cada segmento e o número de blocos livres contíguos que se seguem.Uma outra solução leva em conta que blocos contíguos são geralmente alocados ou liberados simultaneamente. Nem sempre no momento da criação de um arquivo é possível determinar qual o seu tamanho em definitivo. podendo posteriormente existir a necessidade de extensão. O acesso a arquivos dispostos contiguamente no disco é bastante simples tanto para a forma seqüencial quanto para a direta. a menos que exista uma ordenação por tamanho. A alocação contígua apresenta alguns inconvenientes. No momento em que o sistema operacional deseja alocar espaço para armazenar um novo arquivo. independentemente da sua localização física. Caso um arquivo deva ser criado com n blocos. porém não existe u segmento contíguo em que o arquivo possa ser alocado. *Best-fit Seleciona o menor segmento livre disponível com tamanho suficiente para armazenar o arquivo. os segmentos livres vão se fragmentando em pequenos pedaços por todo o disco. Ocorre a fragmentação de arquivos. O problema pode tornar-se crítico quando um disco possui blocos livres disponíveis. * Worst-fit O maior segmento é alocado. pois os blocos livres alocados para um arquivo não precisam necessariamente estar contíguos. Este procedimento. geralmente utiliza uma área de trabalho no próprio disco ou em fita magnética. A busca em toda a lista se faz necessária para a seleção do segmento. Alocação Encadeada Um arquivo pode ser organizado como um conjunto de blocos ligados logicamente no disco. É necessário que alguma estratégia de alocação seja adotada para selecionar qual o segmento na lista de blocos livres deve ser escolhido. O problema da fragmentação pode ser contornado através de rotinas que reorganizem todos os arquivos no disco de maneira que só exista um único segmento de blocos livres. apesar de resolver o problema. A busca na lista é seqüencial. pode existir mais de um segmento livre disponível com o tamanho exigido. Existe um grande consumo de tempo nesse tipo de operação. A pré-locação de espaço é uma solução que. que é a quebra do arquivo em diversos pedaços denominados extents. a não ser que a lista esteja ordenada por tamanho. *First-fit O primeiro segmento livre com tamanho suficiente para alocar o arquivo é selecionado. Técnicas de Alocação de Espaço Alocação Contígua Consiste em armazenar um arquivo em blocos seqüencialmente dispostos no disco.

se comparado com o mecanismo de proteção por grupos de usuários. pois o mecanismo de leitura/gravação do disco deve se deslocar diversas vezes sob sua superfície para acessar cada extent. uma maior flexibilidade ao mecanismo de proteção de arquivos e diretórios. Qualquer sistema de arquivos deve possuir mecanismos próprios para proteger o acesso ás informações gravadas em discos e fitas. Os grupos de usuários são organizados logicamente com o objetivo de compartilhar arquivos e diretórios. quando desejado. sendo que os usuários que desejam compartilhar arquivos entre si devem pertencer a um mesmo grupo. Na criação do arquivo. 15 .A fragmentação resulta no aumento do tempo de acesso aos arquivos. Existem diferentes mecanismos e níveis de proteção. é de fundamental importância que mecanismos de proteção sejam implementados para garantir a proteção individual de arquivos e diretórios. onde são especificados quais os usuários e os tipos de acesso permitidos. o tipo de acesso a arquivos é implementado mediante a concessão ou não dos diferentes acessos que podem ser realizados. como leitura (read). devido à pesquisa seqüencial que o sistema deverá realizar na lista sempre que um acesso for solicitado. ter a liberação do acesso ao arquivo concedida pelo sistema. O princípio desta técnica é manter os ponteiros de todos os blocos do arquivo em uma única estrutura denominada blocos de índice. A alocação indexada. Proteção de Acesso Considerando que os meios de armazenamento são compartilhados entre diversos usuários. group (grupo) e all (todos). Lista de Controle de acesso Consiste de uma lista associada a cada arquivo. é importante que o disco seja periodicamente desfragmentado. Isto constitui uma das principais desvantagens dessa técnica. pois além do dono do arquivo todos os demais usuários teriam que conhecer a senha de acesso. que é a impossibilidade do acesso direto aos blocos dos arquivos. Outra desvantagem desse método é a dificuldade de compartilhamento de arquivos. Além deste fato. E geral. execução e eliminação) aos tr6es níveis de proteção. execução (execute) e eliminação (delete). É necessário associar o tipo de acesso (leitura. escrita. conseqüentemente. Senha de Acesso O controle de acesso se resume ao usuário ter o conhecimento da senha e. oferecendo. Em determinados sistemas de arquivos é possível encontrar tanto o mecanismo de proteção por grupos de usuários quanto o de lista de controle de acesso. pelos usuários do grupo ao qual ele pertence ou por todos os usuários do sistema. o acesso é liberado ou não na sua totalidade. A alocação encadeada só permite que se realize acesso seqüencial aos blocos dos arquivos. Grupos de Usuários A proteção baseada em grupos de usuários é implementada por diversos sistemas operacionais. gravação (write). Alocação Indexada A alocação indexada soluciona uma das principais limitações da alocação encadeada. não utiliza informações de controle nos blocos de dados como existente na alocação encadeada. Quando um usuário tenta acessar um arquivo. Para otimizar o tempo das operações de E/S nesse tipo de sistema. desta forma. Não é possível determinar quais tipos de operação podem ou não ser concedidas. Tem como princípio a associação de cada usuário do sistema a um grupo. o usuário especifica se o arquivo deve ser acessado somente pelo seu criador. Essa técnica desperdiça espaço nos blocos com o armazenamento de ponteiros. O procedimento de desfragmentação é idêntico ao já apresentado na alocação contígua. Esse mecanismo implementa três níveis de proteção ao arquivo: owner (dono). O tamanho dessa estrutura de dados pode ser bastante extenso se considerarmos que um arquivo pode ter seu acesso compartilhado por diversos usuários. o sistema operacional verifica se a lista de controle autoriza a operação desejada. existe um overhead adicional. já que não é possível o acesso direto aos blocos. Como cada arquivo possui apenas uma senha. além de possibilitar o compartilhamento de arquivos entre usuários.

16 . Um processo fica bloqueado quando. realizar imediatamente uma atualização no disco (write-through caches). por exemplo perde o processador por pedido de E/S. Caso o bloco requisitado não se encontre no cache. O sistema operacional reserva uma área da memória para que se tornem disponíveis caches utilizados em operações de acesso ao disco. baixa prioridade. No caso de blocos de dados permanecerem por um longo período de tempo na memória principal. a operação de E/S é realizada e o cache é atualizado. a ocorrência de problemas de energia pode ocasionar a perda de tarefas já realizadas e consideradas já salvas em disco. Se existe o recurso pedido. Com o objetivo de minimizar este problema. Como existe uma limitação no tamanho do cache. Dois Tipos de Processos: Foreground: Vanguarda. Coloca o processo no estado PRONTO Aloca os recursos necessários (memória. ou de que processos independentes executam instruções ao mesmo empo (processador virtual).. cria um processo ‘BATCH”para cada job selecionado. Ativar um processo seria pegar o conteúdo do seu processador virtual e colocar no processador real para a execução. é removido para a fila pronto. Uma segunda alternativa é toda vez que um bloco do cache for modificado. arquivos. Solicitação ao S. Gerenciamento do Processador Processador: Executa programas. Processo: Execução de um PGM com os seus dados.). Um exemplo de processador seria pegar o conteúdo do seu processador virtual e colocar no processador real para a execução. não são executados agora. Linguagens Concorrentes: Divide processos em tarefas e executa-as em paralelo. Processadores Reais e Virtuais Processamento Virtual: Cria uma ilusão de que cada processo ocupa o processador independentemente dos demais. o sistema verifica se a informação desejada se encontra no buffer cache. mas permite um maior número de programas ativos na memória. a maioria dos sistemas de arquivos implementa uma técnica denominada buffer cache. atualizando em disco todos os blocos modificados do cache. ou a ilusão de que vários processos ocupam o mesmo espaço ao mesmo tempo. Ocorre a chegada de jobs em lotes na fila ENTRADA e 1 job é selecionado por vez. “Job”: Requisição para a criação de um ou mais processos. resposta imediata . não é necessário a acesso ao disco. O processador virtual sempre será mais lento que o processador real. Quando uma operação é realizada. Em caso positivo.Implementação de Caches O acesso a disco é bastante lento se comparado ao acesso à memória principal. como o FIFO (First in First out) ou a LRU (least Recently Used). Multiprogramação com um Único Processador Ilusão de que cada processo utiliza ciclos de processador independentemente dos demais processos. Este é o principal fator para as operações de E/S com discos serem um problema para o desempenho do sistema. Seleção de “Jobs”: Selecionador (software) É também conhecido como “SCHEDULER”.º para a posterior execução do programa. cada sistema adota políticas para substituição de blocos.. seja leitura ou gravação. Libera os recursos alocados. somente quando tempo.On-line Background: Retaguarda (Batch). O sistema operacional possui uma rotina que executa periodicamente em um intervalo de tempo.

17 . Como ativar os Processos(Dispatching): O ATIVADOR tem como função selecionar para execução o processo PRONTO que possui mais alta prioridade. Existe um grande número de mecanismos para implementar as diferentes políticas. A) Política: Mesmo serviço. Tempo já gasto processando. Soma dos tempos dividida pelo número de vezes que o processador ficou na fila PRONTO até receber o processador. Oferece o mesmo serviço a todos os usuários. Prover a cada processo o mesmo tempo de espera médio. um processo é chamado. Espera Média.Ativação de Processos: Ativador (software) É também conhecido como “DISPATCHER”. Tempo de serviço requisitado. Deve ser considerado o tempo para atender a mais recente requisição de serviço. Processos “Batch”: Não depende do usuário em relação a dados e recursos. Assim estará garantindo o processador a todos os processos. Aloca um contador de instruções (processador) a um processo no estado PRONTO. Processos Interativos: Depende do usuário. O processo que estiver bloqueado não pode ser ativado. são apenas conceituais (Teoria das Filas) Espera Média Global: Soma dos tempos de todos os processos na fila PRONTO dividido pelo número de vazes que eles entraram na fila PRONTO. O SELECIONADOR (fila ENTRADA para ganhar o processador virtual) e o ATIVADOR (fila PRONTO para ganhar o processador real) gerenciam filas de jobs ou de processos que esperam a sua aceitação por um processador real ou virtual. Cada processo é atendido pela ordem de chegada (tempo de criação). Fatores Utilizados para Determinar a Prioridade de um Processo Hora de criação do processo. Sempre que o processador se encontra livre. Para isto nenhum processo deverá esperar em média mais tempo que um outro na fila PRONTO. Recursos requisitados ou utilizados. Política apenas razoável. Tempo já gasto sem processar. Um job é selecionado apenas uma vez durante sua execução. Mecanismos de Fila Única: Possui apenas uma fila única a espera do processador (fila pronto). Hora de seleção do seu job (para ganhar um processo virtual da fila de entrada para a fila pronto). O mecanismo deve considerar o tempo total gasto no sistema. A escolha de um mecanismo não afeta o tempo de um processo no estado bloqueado pois ele está dependendo de um evento e não do processador. Escolha dos Mecanismos de Ativação Deve-se determinar o tempo de espera de um processo na fila PRONTO. Estas medidas não são práticas.

N tende a diminuir o número de processos na fila PRONTO pois tende a diminuir o número de processos pequenos* 2) S. Desvantagens: SJN e SRT necessitam de uma estimativa inicial de tempo de execução. Utilizado para processos bloqueados também. Processos pequenos são ainda mais favorecidos que os grandes. * S.J. poderá ser executado rapidamente.C.F. .S.Um processo executa até o seu término. Primeiro que chega é o primeiro a ser atendido. Desvantagens do F.F. assim eles terminam mais rápido e não atrapalham os outros.F.F. logo.Shortest Job Next Menor Job será o próximo a ser servido. Implementado como uma fita simples (FIFO) caso os processos não se bloqueassem. Atende os processos PRONTO na ordem de chegada no sistema.C.N.S Simplicidade.F.C. Aumentar a tarifa a cobrar de um processo após o término do tempo estimado. A prioridade de ativação se baseia na duração estimada de um processo e não no seu tempo de criação. processo não perde o processador se aparecer outro com menor duração.Shortest Remaining Time Prioridade se baseia no tempo que falta para terminar um processo (tempo restante). 3) Dar Maior Prioridade de Ativação a quem Requisitar Menor Tempo do Processador 18 . a não ser que entre no estado bloqueado.J. F.T.C. Processo utilizando o processador sem se bloquear causa uma espera intolerável nos demais processos.S.Primeiro quem é o Primeiro Servido.muito útil para implementar PREEMPÇÃO. Mecanismo não PREEMPTIVO (perda forçada do processador).R.S .S Processos pequenos esperam tanto quanto os grandes. B) Política: Minimizar a Espera Média Global. logo. pois se colocam os menores processos na frente. Como evitar a Sub-Estimação Proposital do Tempo? Eliminando do sistema os processos que não terminarem no tempo estimado. Desvantagens Espera média para grandes processos é maior que no F. Alcança a menor média de espera global possível pois termina mais rapidamente o processo e passa o processador para outro.C. são inapropriados para ativar processos interativos. Existem 4 mecanismos. . Vantagens: Vai dar mais prioridade aos processos próximos do fim . que são: 1) S. Vantagens: A espera global média é menor que no F. Processos pequenos tem menor espera média que os grandes. Vantagens do F. um PGM que dure 10 horas e o usuário coloque 10 minutos. O usuário que estimar o menor tempo para um processo terá a maior prioridade.

Risco: Todos os mecanismos de Espera média Global vistos até aqui podem causar POSTERGAÇÃO INDEFINIDA de processos grandes ativos com o processador virtual sem nunca terminar. É necessário um valor adequado de “q”: [200 milisegundos.F. cada um recebe 1/n do tempo do processador (no somatório geral do tempo). 3 filas PRONTO 1)TEMPO REAL 2)INTERATIVOS 3)LOTES (batch) Múltiplas filas: possuem mais de uma fila para cada estado e permite usar mais de um mecanismo de ativação.C. 2000 milisegundos] Mecanismos de Fila Múltipla: Mecanismos de uma fila única não permitem dar diferentes tratamentos para classes diferentes de processos.A fila PRONTO é mantida em ordem ascendente de tempo desde o último comando de E/S 5’ 10’ 25’ 1”10’ 1”51’ Vantagem: Favorece processos com alta atividade de E/S. *”ROUND-ROBIN” é a política básica para gerenciar o processador*. 19 . Sistemas multiprogramados em lotes podem querer privilegiar processos “I/O BOUND”em relação a “CPU BOUND”. A prioridade na fila fica sendo a de ordem ascendente de espera desde a última fatia de tempo. Associação Estática de Processos a Fila Pronto: Uma vez associado a uma fila PRONTO. No final da sua fatia de tempo. Processos removidos. Desvantagens: Devido ao tempo de troca de processos (PREEMPÇÃO). um por fila. Vantagens: Favorece processos curtos. Maior freqüência de troca de processos no processador causa um maior OVERHEAD do sistema. Com “n”processos executáveis. o processo é removido do processador em favor do próximo da fila PRONTO. Que Tamanho deveria possuir a Fatia de Tempo “q”? “q”Muito Grande: O tempo total de um processo é aumentado pela chegada de novos processos ou desbloqueios e diminuído pelo bloqueio de outros. Política de gerência de fita muito simples. Solução: O que se tem que fazer é minimizar o tempo de espera. o processo sempre retorna a ela. mas sem penalizar em excesso os processos grandes. Estabelece uma fatia de tempo para cada processo. que terminam primeiro. Desvantagens: Uma fila única ordenada por atividade de E/S torna impossível considerar outros fatores de ativação. a Espera Média Global é maior que no F.S. 4) “Round-Robin”: Mecanismo PREEMPTIVO pois perde o processador mesmo que não esteja bloqueado. “q”Muito Pequeno: O processo vai muitas vezes para o final da fila demorando cada vez mais para acabar. desbloqueados ou que iniciaram são incluídos no final da fila PRONTO. mas assegurando o término de todos os processos. Pode ser implementado um sistema com diferentes tratamentos para diferentes classes de processos.

5) Explique brevemente a realocação de páginas: Maior problema de realocação é saber qual página remover. gerando. a segmentação permite uma relação do programa na divisão da memória. Associação dinâmica de Processos a Fila Pronto Cada fila com uma fatia de tempo “q”diferente. É o conjunto de páginas constantemente referenciadas pelo processo. QUESTÕES: 1) O que é memória virtual? Memória virtual consiste em gerenciar memória principal e secundária passando ao usuário a impressão de existir uma única memória principal. relacionando os endereços virtuais do processo à memória física. menos fragmentação. Existe um flag de referência que indica quando a página foi referenciada ou não. 8) Qual a diferença entre a paginação e a segmentação? A diferença é que enquanto a primeira divide o programa em partes de tamanho fixo. Processos curtos possuem mais alta prioridade. sem qualquer ligação com a estrutura do programa. os endereçamentos virtuais e reais.S. baseia a análise de taxa de paginação dos processos.C. antes deve-se gravá-la na memória secundária ( arquivo de paginação). 3) O que é paginação? E qual é o mecanismo onde as páginas dos processos são transferidas da memória secundária para a principal? A paginação consiste em dividir em blocos de mesmo tamanho. Páginas pequenas.F. recolhendo. explicando-as: First-In-First-Out: a página que primeiro for utilizada será a primeira a ser escolhida. Processo volta para a próxima fila PRONTO na prioridade. sendo chamado de página. 2) Qual o mecanismo de tradução do endereçamento virtual para o endereçamento físico? Mapeamento. As páginas são transferidas da memória principal para a secundária. 20 . provocam maior taxa de paginação e conseqüentemente aumentam o número de acessos à memória secundária.O intervém. 4) O que significa working set de um processo? O working set. Least-Frequently-Used: a página que menos é utilizada. Not-Recently-Used: a página que não foi recentemente utilizada. É criado um contador de número de freqüências. Least-Recently-Used: seleciona a pagina utilizada menos recentemente. Nisso o S. entre as diversas quais liberar. Sempre que for liberado uma página. quando necessária na memória principal (referenciado) esse processo chama-se “Paginação por demanda”. isso faz com que os programas não sejam limitados ao tamanho da memória. fisicamente em páginas. Fila podem ser gerenciadas “ROUND-ROBIN” ou F. devendo permanecer na memória principal para que execute de forma eficiente. 6) Quais as principais estratégias para a realocação de páginas. 9) Descreva o sistema que implementa segmentação paginada: Segmentação paginada. cada segmento é dividido. permite a divisão lógica dos programas em segmentos e. Sendo que cada processo possui sua tabela de mapeamento. Desta maneira pode-se colocar processos em REAL-TIME em fila com maior prioridade que os processos em ROUND-ROBIN para assim executá-los mais rapidamente. ela está associada a quê? E por quê as páginas pequenas geram menor fragmentação? Está associado ao hardware e varia de sistema para sistema.ATIVADOR seleciona o primeiro processo da primeira fila não vazia na ordem de prioridade. 7) Em relação ao tamanho de página. usam tabelas de mapeamento maiores. por sua vez.

controladores de veículos. Qual o problema enfrentado nas alocações de memória utilizando o método da questão 19. 17) Defina alocação de memória contígua simples: Na alocação contígua simples o usuário tem controle sobre toda a memória principal. do valor do apontador de pilha e outras informações necessárias. Não permite a utilização eficiente do processador. Arquivos: para que o S. Thrashing em dois níveis: Processo: ocorre devido ao grande número de Page faults. Realocação de todas as partições. 15) O que é um processo no sistema operacional? É um programa em execução. sendo constituído do código executável os dados referentes ao código. 12) Qual a definição de Thrashing. de forma que pudessem executar independentemente uma da outra.O para diminuir o problema da fragmentação. gerado pelo programa de execução. que pode. da planilha de execução. Dispositivos: impressoras. 16) Que necessidades os sistemas operacionais necessitam para atender às necessidades de um processo? Memória: para armazenar suas instruções e dados. do valor do contador de programa. E quais os motivos que levam um processo a sofrer Thrashing? Thrashing é a excessiva transferência de páginas/segmentos entre a memória principal e a memória secundária. eliminando os espaços entre elas criando uma área livre contígua. ocorre a fragmentação. 21 .O. Best-fit. qual a solução para o reaproveitamento dos espaços da memória? Os espaços adjacentes são reunidos. produzindo um espaço de tamanho maior. CPU: para executar as instruções. o sistema seleciona um ou mais processos que deverão sair da memória para ceder espaço aos novos processos. Sistema: é a não obediência de localidade. 14) O que são programas em tempo real? Exemplifique: É usado quando respostas imediatas são essenciais. first-fit. 19) 20) 21) Defina alocação de memória particionada realocável: A geração de código realocável é possível. reatores nucleares. 22) Cite as estratégias utilizadas pelo S. Na alocação de memória particionada dinâmica. para isso existe dois critérios. o programa faz referência a comandos localizados fora do working set do processo. pois é a mais rápida consumindo menos recurso do sistema. executar várias atividades ao mesmo tempo. 11) Quando existe novos processos que desejam ser processados e não existe memória real suficiente. worst-fit. Os programas não preenchem totalmente as partições onde eram carregados. Quais são? Os mais utilizados são a prioridade e o estado do processo.O o localize e localize um registro dentro dele. Comportam apenas um usuário.10) Por quê a proteção é tão necessária para sistemas? A proteção é necessária para impedir que um processo. a modifique ou mesmo tenha acesso a ela. 13) Quais são os tipos de sistemas operacionais? Explique cada um: Monotarefa: o ambiente mais simples é aquele onde um usuário executa um aplicativo de cada vez. Explique qual é a melhor na sua opinião. A melhor é first-fit. ao acessar uma página/segmento do sistema. unidade de fita e disco. podendo carregar os programas em qualquer partição. utilizando uma mesma área de memória. pode acessar qualquer posição de memória e alterar o S. controle de equipamentos de fábricas. 18) Qual foi a solução encontrada para resolver o problema onde os usuários estavam limitados ao tamanho da memória principal disponível ? Foi dividir o programa em partes. Ex: robôs.

O traduzir um endereço localizado no espaço virtual para um no espaço real. excel. 36) Exemplifique programas em tempo real: Controle de tracógrafo aéreo. Responde aos erros ou solicitações do usuário. as memórias principal e secundária são combinadas. 29) 30) Quais as responsabilidades principais de um sistema operacional? Processamento de E/S. O usuário não espera retorno imediato. colocá-lo em uma fila de lotes e se desconectar ao sistema e executar alguma outra tarefa. 32) 33) O que é um S. o que melhorou? Melhorou tudo. gerenciamento de disco e gerenciamento de memória. etc. O que é um Programa Interativo? Programa interativo é aquele que o usuário ativa por meio de um terminal. O que faz o Sistema operacional: Permite que os programas armazenem e obtenham informações. O S.O multitarefa Monousuário? Comportam apenas um usuário. Defina realocação dinâmica: É realizada através de um registrador que recebe o endereço inicial de memória que o programa irá 24) Defina memória virtual: É a técnica sofisticada e poderosa de gerência de memória. O arquivo com os comandos permanecem na fila e é eventualmente tratado pelo sistema. dando ao usuário a ilusão de existir uma memória principal. Defina programa interativo e dê exemplos: É aquele que o usuário ativa por meio de um terminal . executa a função e envia uma mensagem ao usuário. o sistema deveria ser desativado e reiniciado com uma nova configuração. robôs. Comparando os sistemas operacionais de 1950 e os de hoje. Memória e Armazenamento Secundário).O interpreta esse comando. Permitem que programas sejam executados sem interferência de outros. Isola os programas dos detalhes específicos de Hardware. permite que o usuário execute múltiplas tarefas ao mesmo tempo.O deve garantir ao processo uma quantidade de memória suficiente.23) ocupar.O ? Permite ao S. reatores nucleares. Permite que programas independentes cooperem e compartilhem informações. Em geral o usuário introduz um pequeno comando. envia dados a um disco impressora e outros dispositivos de saída. Defina espaço de endereçamento virtual: Conjunto de endereços virtuais que os processos podem endereçar. O S. 35) O que é e o que faz o sistema operacional? Sistema operacional é um programa que permite às pessoas usar o Hardware do computador (CPU. editores e outros programas em locais de memória distintos. executar várias atividades ao mesmo tempo. 31) Quais são as preocupações dos sistemas operacionais com relação aos recursos da memória? Um processo precisa de memória para armazenar suas instruções e dados. 28) O que acontece com um programa maior que as partições livres disponíveis em uma alocação particionada estática absoluta? Sempre que fosse necessária a alteração do tamanho de uma partição. 34) O que faz um Programa em Lote? O usuário pode armazenar comandos em um arquivo. que pode. 25) 26) 27) O que é mapeamento em S. Ex: Word. Os usuários esperam respostas imediatas. Em geral o usuário introduz um pequeno comando. Controla o fluxo de dados entre os componentes. Impõe um escalonamento entre programas que solicitem recursos. 22 . mantém compiladores.

A privacidade e a segurança exigem que um processo seja impedido de acessar a memória de outro processo.O deve garantir ao processo uma quantidade de memória suficiente. Relocação de todas as partições. que delimita as áreas do S. 45) Como funciona alocação particionada estática? A memória dividida em partições de tamanhos fixos. 38) O que é processo? Processo é basicamente um programa em execução. 39) 40) 41) Qual a responsabilidade básica do S. de forma que pudessem executar independentemente utilizando uma mesma área de memória. 44) O que é overlay? É a divisão do programa em módulos.O e do usuário. 46) Como funciona alocação particionada dinâmica? Eliminando o conceito de partições de tamanho fixo. Cada programa utilizaria o espaço que necessitasse. 50)O que é mapeamento? 23 . passando esse pedaço a ser sua partição. 42) O que é concorrência? Muitos processos existem simultaneamente.O em relação aos programas? É com os programas que devem ser executados e competem aos recursos Qual a responsabilidade do S. 48) Quais as estratégias para escolha da partição a ser utilizada pelo programa? O sistema possui uma lista de áreas livres (free list). Alguns sistemas implementam proteção através de um registrador. O usuário tem controle sobre toda a memória principal. Processos concorrentes 43) Como funciona alocação contígua simples? A memória principal é dividida em 2 partes: uma para o S. Sempre que fosse necessária uma alteração no tamanho de uma partição. como se nada tivesse ocorrido. freqüentemente acessão o mesmo arquivo. Best-fit (melhor partição): menos espaço sem utilização.O deve gerenciar para atender às necessidades de um processo? Respostas das questões 40 e 41. O programador deve desenvolver suas aplicações preocupando-se em não ultrapassar o espaço da memória disponível. sendo constituído do código executável. O S.O e outra para o programa do usuário. podendo acessar qualquer posição.O executa o Swapping? O sistema escolhe um programa residente que é levado da memória para o disco (swap out). 47) Como se soluciona o problema da fragmentação na alocação particionada dinâmica? Solução de programa de fragmentação na alocação particionada dinâmica: Existem 2 soluções: Os espaços adjacentes são reunidos. O S. First-fit: primeira partição livre de tamanho suficiente para carregar o programa. dos dados referentes ao código.37) O que é Kernell? Kernell é o núcleo (coração) do S. estabelecido pelo desenvolvidor. 49) Como o S. retornando posteriormente para a memória principal (swap in). Conforme o tamanho dos programas. Worst-fit (pios partição): maior espaço sem utilização.O . além de um conjunto de outras informações necessárias à execução do programa. com o endereço e tamanho de cada uma delas. Ele contém rotinas mais críticas e mais freqüentemente utilizadas. produzindo um espaço de tamanho maior. o sistema deveria ser desativado e reiniciado com uma nova configuração.O em relação a memória? Que recursos o S. são concorrentes. É utilizado para ceder espaço aos novos processos.O não deve permitir que o processo ocupe tanta memória a ponto de impedir que outros processos sejam executados. Os programas só podiam executar em uma das partições. eliminando os espaços entre elas e criando uma única área livre contígua.

ocorre o page fault (falha de página). 1 não está na memória principal. •Quem mata um processo é o pai dele a partir de sua identificação (id). 3) Término de Processos •Em circunstâncias especiais um processo poderá acabar antes de executar seu último comando. 2) Compartilhamento: •Pai e filho compartilham todas as variáveis (FORK/JOIN e comandos concorrentes) •Pai e filho compartilham um subconjunto de variáveis do pai (adotada no UNIX).O traduzir um endereço localizado no espaço virtual para um no espaço real. 53) Como é calculado o endereço físico? Forma-se o endereço do frame localizado na tabela de páginas com o deslocamento contido no endereço virtual. •O pai espera que o filho acabe (adotada em comandos concorrentes). elas são transferidas para o Working set do processo na memória principal. Porque Matar um Processo? 24 .O tem de transferir a página da memória secundária para a física. •Um processo pode causar a morte de outro com o uso de instruções do tipo ABORT id ou KILL id. as entradas das tabelas de páginas/segmentos devem apontar para as mesmas páginas/segmentos na memória principal.O localizar a página real correspondente.Mecanismo que transforma os endereços virtuais em endereços reais. 54)Explique o “bit de validade”: O bit de validade indica se uma página está ou não na memória física.O tem de transferir a página da memória secundária para a memória física. 52) O que permite ao sistema localizar a página real do processo? Cada página virtual possui uma entrada na tabela de páginas. o S. Operações em Processos: 1) Execução: •O pai executa concorrentemente (adotada em FORK/JOIN). 57) Fale sobre Page Fault: Quando a página referenciada não está na memória principal. À medida que acontecem referências às páginas virtuais. 51) Qual a função do registrador na tabela de mapeamento? O registrador presente na tabela de mapeamento tem por função indicar a posição inicial da tabela. 60) Como funciona o compartilhamento de memória? Com o compartilhamento de código e dados entre vários processos. o mesmo é atualizado com o endereço da nova tabela. 59) Quando um processo é criado. o S. instruções próximas. ou seja. 56) O que é paginação por demanda? Paginação por demanda é um mecanismo no qual as páginas dos processos são transferidas da memória secundária para a principal apenas quando são referenciadas. onde toda vez que houver mudança de contexto. 0 está na memória principal. 58) O que é localidade? Localidade é a tendência que existe em um programa de fazer referências a posições de memória de forma uniforme. com informações de mapeamento que permitem ao S. onde estão todas as suas páginas? E o que acontece a medida que acontecem referências às páginas virtuais? Quando um processo é criado. 61)Como sabemos se uma página virtual esta ou não na memória principal? Através do bit de validade que indica se está ou não na memória principal. todas as suas páginas estão na memória secundária. Permite ao S. 55) O que o sistema faz caso a página que contém o endereço referenciado não estiver na memória principal? O que ocorre nesses casos? Neste caso. Toda vez que o sistema é solicitado para isso.

•PROCESSO é um programa em estado de execução.•Filho excedeu o uso de recursos. Sistemas Monoprocessável: •Inibir interrupções na entrada da seção crítica e ativando-as na saída da seção crítica.aumenta a quantidade de processos) e dar tempo de resposta rápida a programas interativos. tabelas. •Só é permitido a um processo executar em sua seção crítica se nenhum outro estiver executando sua própria seção crítica. •Cada processo possui seções críticas nas quais atualiza variáveis comuns. •O trabalho atribuído ao filho não é mais necessário. Construções “Fork”e “Join”: •Definida por Conway (1963) e por Dennis e Van Horn (1966). ininterruptamente. Exclusão Mútua: •Acesso exclusivo de um processo a variáveis comuns a outros processos. •2) Processo: somente os processos que não estão executando no restante da seção crítica podem participar da decisão de~”qual irá entrar”. •Cada pai pode ter vários filhos. Problema: •Como controlar a comunicação entre os processos sem comprometer a segurança dos dados de cada um. uma vez que envolve variáveis comuns entre eles? Solução: •Implementando um mecanismo de sincronização. Definição do Problema: •Sistema operacional com “n”processos. Não deve ser feita nenhuma suposição sobre velocidade dos processos. 25 . são chamados de processos “concorrentes”ou “cooperantes”. registradores e variáveis. Processos Concorrentes •Quando dois ou mais processos necessitam se comunicar entre si. do início ao final. •Uma aresta de um nodo Pi para um nodo Pj significa que Pj foi criado por Pi (Pi é o pai de Pj e Pj é filho de Pi). nenhum outro processo as utilize também. Processos Paralelos •Cada processo possui sua própria CPU virtual. Hierarquia de Processos: •“Um grafo de processo é uma árvore cujos nodos correspondem a um processo”. * Ilusão de paralelismo. Regiões Críticas: •Consiste em uma ou mais variáveis comuns utilizadas por diversos processos. •Cada processo possui um pai. cujo pai é ele mesmo. •Os objetivos procurados vão aumentar o número de programas processados por unidade de tempo (“throughput”. •Primeiras notações de linguagem para especificar concorrência. Soluções para o Problema devem Satisfazer às Seguintes Condições: •1) Exclusão Mútua. ou seja: garantir que quando um processo estiver utilizando variáveis comuns. A seleção não pode ser postergada indefinidamente. •Em sistemas com multiprogramação: * Uso da CPU compartilhada entre os diferentes processos. •3) Espera Limitada: deve haver um limite de vezes em que um processo entre na sua seção crítica após outro processo haver requisitado a entrada na sua seção crítica. •A execução da seção crítica por um processo deve ser feita de forma mutuamente exclusiva no tempo. •O filho se encontra em “LOOP”. exceto o inicial. incluindo os valores correntes do PC. Sistemas Multiprocessável: •Apenas inibir as interrupções é insuficiente pois dois processadores podem estar executando dois processos distintos que queiram executar a mesma seção crítica. etc. Um sistema pode ter várias regiões críticas distintas. Desta maneira o processo irá executar os comandos de sua seção crítica.

•Não deve existir prioridade entre processos que queiram entrar na seção crítica. Sn Parend: •Todos os comandos entre as construções Parbegin/Parend podem ser executados concorrentemente. colocado no estado ativo poderá executar novamente a operação P(s).1 (execução acabe). •O consumidor consome uma mensagem. •Semáforo s=1 (para a seção crítica).. o processo será bloqueado ao executar P(s) e será colocado em uma fila de espera associada ao semáforo “s”. •Uma execução começa no rótulo L.. •As construções FORK e JOIN desestruturam um programa. •Pode ser facilmente adicionado a uma linguagem de alto nível estruturada em blocos. isto é. •Semáforo n>0 ou n=0 (contador das mensagens). Funcionamento de “Fork”e “Join”: •FORK produz duas execuções concorrentes no processo. •Se s=0. •São semelhantes ao comando GOTO. if count< > o then quit. •Dois ou mais processos não podem se bloquear mutuamente na entrada de uma seção critica. *Quando count=0.se um ou mais processos estiverem bloqueados na fila de espera associada ao semáforo “s”. “s”. Forma: Parbegin S1. •O comando seguinte ao Parend somente será executado após todos os anteriores terem terminado. dirigido. Semáforos: •Dijkstra (1965). significa que a seção crítica está livre e a operação P(s) pode ser completada com sucesso. Exemplo com Semáforo: Problema: realizar a comunicação entre duas classes de processos denominadas de “produtores” e “consumidores”. nenhum processo na fila “s” ficará indefinidamente bloqueado por causa desta escolha. isto é. •Se s >0. •A outro execução combina no comando seguinte ao FORK. •A que executa o Join primeiro. •Cada uma das duas deve requisitar um JOIN com outra. um deles será acordado. •O semáforo “n”terá valor maior e igual a zero. •Uma das computações termina antes da outra. o processo continua. •Divide uma computação em duas independentes. JOIN combina execuções em uma. •O semáforo “s”terá apenas os valores 0 e 1.•Utiliza um grafo de precedência para a construção “fork”. S2.. só uma execução deverá continuar. •A operação V(s) incrementa “s”(se e somente se a fila estiver vazia) e. Comando Concorrente: •Dijkstra (1965). •JOIN combina duas execuções concorrentes em uma.” “Uma aresta de um nodo Si para um nodo Sj significa que o comando Sj somente poderá ser executado após o comando Si ter completado sua execução. •Um semáforo “s” é uma variável inteira que pode ser acessada somente através das operações P e V para permitir a entrada e a saída da Região Crítica. 26 . •O fato de um processo se bloquear fora da seção crítica não impede que outros processos entrem nela. Join parâmetro count:=count-1. após o JOIN . •O produtor produz uma mensagem. “Um grafo de precedência é um grafo sem ciclos. •Existindo três computações. respectivamente. ou seja. *O primeiro processo chega a JOIN e count:=count . é decrementado e o processo entra na seção crítica. •JOIN tem um parâmetro que especifica o número de computações. •A escolha do processo a ser acordado deverá ser “justa’. cujo nodos correspondem a um comando individual. às duas primeiras é permitido terminar. •Construção de mais alto nível. enquanto que a terceira deve continuar.. termina enquanto que à outra é permitido continuar.

S6. EM’. c. PAREND. END. f. b. o sistema deve tornar a tarefa o mais simples possível para o usuário e suas aplicações. Para obter a independência de dispositivos. •Cinco filósofos pensam e comem. END BEGIN P(a). é possível escrever um programa que manipule arquivos. -----PENSA -------UNTIL false. •CADA FILÓSOFO (1) REPEAT •P(chopstick(i-1)). •De posse de ambos os “pauzinhos”. Problema do Jantar dos Filósofos •Proposto e resolvido por Dijkstra em 1965. g: Semáforo “valor inicial=0” BEGIN PARABEGIN BEGIN S1. A comunicação entre os comandos de E/S oferecidos pelas linguagens de programação de alto nível e as system calls de E/S é feita simplesmente através de passagem de parâmetros. •V (chopstick (l mod 5)). P(e). •Um prato de arroz para cada filósofo. V(b). •VAR I Integer. ------COME -------•V(chopstick (l-1)). permitindo ao usuário realizar operações de E/S. BEGIN P(d). Esse conceito. S7. As system calls responsáveis por essa comunicação são denominadas system calls de entrada/saída. S4. •Compartilham uma mesa com cinco lugares •existem cinco pauzinhos (chopstick).4 of semaphore. V(d). END. V(g). END. Estas rotinas estão presentes na camada de mais alto nível implementada pelo sistema operacional. •De tempos em tempos o filósofo sente fome e tenta pegar o “pauzinho”à esquerda e o “pauzinho” à direita. sem ter que alterar o código para cada tipo de dispositivo. BEGIN P( c ). Operações de Entrada/Saída: • Sempre que um processo realiza uma operação de E/S.. denominado independência de dispositivos. oferecidas pela maioria da linguagens de programação. A maneira mais simples de ter acesso a um dispositivo é através das bibliotecas de comandos de entrada/saída. as operações de E/S devem ser realizadas através de system calls. END. e. discos rígidos ou fita magnética. END. estejam eles em disquetes. V(e). •Cada semáforo inicializado com 1. está presente em qualquer sistema de arquivos. BEGIN P(f). P(g). V(a). libera os “pauzinhos”e novamente pensa. O sistema operacional deve ser projetado de forma a poder se comunicar com qualquer dispositivo que possa ser conectado ao hardware do computador. V(f). •VAR chopstick: array 0. S5. S2. •Quando termina de comer. BEGIN P(b). Dessa forma. sem se preocupar com detalhes do dispositivo que está sendo acessado. V( c ). d.Semáforos para sincronizar Processos VAR a. ele come. Problema do Jantar dos Filósofos Solução Simples •Representar cada “pauzinho”por um semáforo. S3. •P (chopstick (i mod 5)). 27 .

O subsistema de E/S é responsável por criar uma unidade lógica de informações independente do dispositivo e repassa-la para os níveis superiores. chamada buffer. Subsistema de Entrada/Saída: O subsistema de entrada/saída é responsável por realizar as funções que são comuns a todos os dispositivos. além de esconder do programador características específicas associadas à programação de cada dispositivo. Por exemplo. Cada dispositivo trabalha com unidades de informação de tamanhos diferentes. o tratamento de erros nas operações de E/S é realizada pelas camadas mais próximas do hardware. especificando características físicas de cada dispositivo. os drivers tratam apenas dos seus aspectos particulares. Uma de suas funções é mapear o nome do dispositivo com o seu respectivo driver. Cada device driver manipula somente um tipo de dispositivo ou grupo de dispositivos semelhantes. Bufferização é outra tarefa do subsistema de E/S. geralmente através de controladores. elimina-se a necessidade de duplicação de rotinas idênticas nos diversos aplicativos. o controlador possui memória e registradores próprios. Podemos considerar que o subsistema de E/S é realmente a parte do sistema operacional responsável pela gerência dos dispositivos. o sistema traz para o buffer. Não havendo erro. um bloco de dados. No momento que o usuário realiza uma operação de E/S. utilizando uma área de memória intermediária. e traduzi-los para comandos que o controlador do dispositivo possa entender e executar. Enquanto o subsistema de E/S trata de funções que afetam a todos os dispositivos. além do dado solicitado. Com isso. Em operações de leitura.Um dos objetivos principais das system calls de E/S é simplificar a interface entre as aplicações e os dispositivos. certos erros que podem ser tratados e reportados de forma uniforme independente do dispositivo pelo subsistema de E/S. Device Drivers: O device driver. Existem. Sua função principal é receber comandos abstratos. o bloco pode ser transferido para a memória principal. O sistema operacional (device drivers) se comunica com os dispositivos através dos controladores. Em geral. é verificado se o seu processo possui permissão para realizar a operação. registros ou blocos. ele já estará no buffer. Essa técnica permite reduzir o número de operações de E/S. Normalmente. Na próxima vez que um novo dado que pertença ao bloco for lido . O subsistema de E/S é responsável também por implementar todo um mecanismo de proteção de acesso aos dispositivos . tem como principal função a comunicação com dispositivos de E/S em nível de hardware. como caracteres. As camadas superiores conhecem apenas o nome do dispositivo e utilizam esse nome para terem acesso ao periférico. Essas instruções de baixo nível são responsáveis pela interface entre o controlador e o dispositivo. que poderão ser executados pelos controladores. Controladores: Os controladores ou interfaces são componentes eletrônicos (hardware) responsáveis por manipular diretamente os dispositivos de E/S. o controlador deve armazenar em seu buffer interno uma seqüência de bits vinda do dispositivo e verificar a ocorrência de erros. geralmente das system calls de E/S. ou somente driver. para executar instruções enviadas pelo device driver. ficando os aspectos específicos de cada periférico a cargo dos device drivers. 28 . evitando uma nova operação de E/S. quando um dado é lido do disco. Os drivers têm como função receber comandos gerais sobre acessos aos dispositivos e traduzi-los para comandos específicos. porém. bytes.

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)//-->