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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

No final da sua fatia de tempo. o processo sempre retorna a ela. Pode ser implementado um sistema com diferentes tratamentos para diferentes classes de processos. 2000 milisegundos] Mecanismos de Fila Múltipla: Mecanismos de uma fila única não permitem dar diferentes tratamentos para classes diferentes de processos. Desvantagens: Devido ao tempo de troca de processos (PREEMPÇÃO). 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. Desvantagens: Uma fila única ordenada por atividade de E/S torna impossível considerar outros fatores de ativação.C. Sistemas multiprogramados em lotes podem querer privilegiar processos “I/O BOUND”em relação a “CPU BOUND”. que terminam primeiro. É necessário um valor adequado de “q”: [200 milisegundos. um por fila. cada um recebe 1/n do tempo do processador (no somatório geral do tempo). 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. Maior freqüência de troca de processos no processador causa um maior OVERHEAD do sistema. Vantagens: Favorece processos curtos. Associação Estática de Processos a Fila Pronto: Uma vez associado a uma fila PRONTO. Solução: O que se tem que fazer é minimizar o tempo de espera. 19 . 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. *”ROUND-ROBIN” é a política básica para gerenciar o processador*.F. A prioridade na fila fica sendo a de ordem ascendente de espera desde a última fatia de tempo. desbloqueados ou que iniciaram são incluídos no final da fila PRONTO. Com “n”processos executáveis.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. 4) “Round-Robin”: Mecanismo PREEMPTIVO pois perde o processador mesmo que não esteja bloqueado. mas assegurando o término de todos os processos. Processos removidos. Estabelece uma fatia de tempo para cada processo. mas sem penalizar em excesso os processos grandes. Política de gerência de fita muito simples. a Espera Média Global é maior que no F. o processo é removido do processador em favor do próximo da fila PRONTO. “q”Muito Pequeno: O processo vai muitas vezes para o final da fila demorando cada vez mais para acabar.S.

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

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

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

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

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). 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. elas são transferidas para o Working set do processo na memória principal. 0 está na memória principal. •Quem mata um processo é o pai dele a partir de sua identificação (id). o S. À medida que acontecem referências às páginas virtuais. instruções próximas.O traduzir um endereço localizado no espaço virtual para um no espaço real. o S. 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. Permite ao S.O tem de transferir a página da memória secundária para a física. 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. Operações em Processos: 1) Execução: •O pai executa concorrentemente (adotada em FORK/JOIN). 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. ocorre o page fault (falha de página). 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. Porque Matar um Processo? 24 .O tem de transferir a página da memória secundária para a memória física.Mecanismo que transforma os endereços virtuais em endereços reais. •O pai espera que o filho acabe (adotada em comandos concorrentes). 60) Como funciona o compartilhamento de memória? Com o compartilhamento de código e dados entre vários processos. 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. com informações de mapeamento que permitem ao S. 59) Quando um processo é criado. 57) Fale sobre Page Fault: Quando a página referenciada não está na memória principal. ou seja. 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. onde toda vez que houver mudança de contexto. todas as suas páginas estão na memória secundária. o mesmo é atualizado com o endereço da nova tabela.O localizar a página real correspondente. •Um processo pode causar a morte de outro com o uso de instruções do tipo ABORT id ou KILL id. 1 não está na memória principal. 54)Explique o “bit de validade”: O bit de validade indica se uma página está ou não na memória física. Toda vez que o sistema é solicitado para isso. as entradas das tabelas de páginas/segmentos devem apontar para as mesmas páginas/segmentos na memória principal. 3) Término de Processos •Em circunstâncias especiais um processo poderá acabar antes de executar seu último comando. 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.

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

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

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

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

Sign up to vote on this title
UsefulNot useful