Buscar

Resumo SO

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Tipos de Sistemas Operacionais 
3.1 Introdução 
 Evolução dos Sistemas Operacionais -> Hardware 
 Programa e Job X Processo e Subprocesso X Tarefa e Thread. 
 Tipos de Sistemas Operacionais 
o Monoprogramáveis / Monotarefa 
o Multiprogramáveis / Multitarefa 
o Multiplos Processadores 
3.2 - Sistemas Monoprogramáveis / Monotarefa 
 Execução de um único programa (JOB). 
 Relacionados ao surgimento dos mainframes -> PCs, estaçoes de trabalho 
 Todos recursos do sistema ligados a apenas uma tarefa 
3.3 – Sistemas Multiprogramáveis / Multitarefa 
 Mais complexos e eficientes que os monoprogramáveis. 
 Vários programas dividem os mesmos recursos. 
 Sistema Operacional gerencia o acesso concorrente aos recursos e 
dispositivos. 
 Aumento de produtividade 
 Mais de um usuário pode interagir com o sistema. 
 Sistemas Monousuários X Multiusuários 
 Sistemas Batch X Tempo Compartilhado X Tempo Real 
3.3.1 – Sistemas Batch (LOTE) 
 Execução Sequencial. 
 Os JOBS não exigem interação com o usuário, como compilação, sorts, 
backups. 
3.3.2 – Sistemas de Tempo Compartilhado (Sistemas OnLine) 
 Interação usuário – Vídeo, Teclado, Mouse, etc.. 
 Usuário comunica direto com o Sistema Operacional. 
 Cada usuário possue fatias de tempo dos recursos, aparentando estarem 
dedicados. 
3.3.3 – Sistemas de Tempo Real 
 Tempos de respostas devem estar dentro de limites rígidos. 
 Recursos dedicado ao Programa de maior prioridade, controlado pela própria 
aplicação. 
3.4 – Sistemas com Múltiplos Processadores 
 Uma ou mais CPUs interligadas, trabalhando em conjunto. 
 Fator Chave = Comunicação entre CPUs e grau de compartilhamento dos 
recursos. 
 Sistemas Fortemente Acoplados X Fracamente Acoplados 
3.5 – Sistemas Fortemente Acoplados 
 Vários processadores compartilhando única memória e apenas um Sistema 
Operacional 
 Vários programas podem ser executados ao mesmo tempo 
 Um programa pode ser dividido em subprogramas. 
 Ampliação da capacidade, adquirindo apenas novos processadores, menos 
custos. 
3.5.1 – Sistemas Assimétricos 
 Um processador primário responsável pelos demais e pelo Sistema 
Operacional 
 Outros processadores são secundários e executam programas de usuários 
 Se o processador primário falhar, o sistema para. 
 O Sistema pode ser reconfigurado para outro processador assumir 
 Utilização ineficiente do Hardware devido a assimetria dos processadores, 
que não realizam as mesmas funções. 
3.5.2 – Sistemas Simmétricos 
 Todos processadores têm as mesmas funções. 
 Podem executar o Sistema Operacional Independentemente. 
 Sistema Operacional e Hardware responsáveis pela distribuição dos 
recursos. 
 Se o sistema falha, o sistema continua rodando. 
 Mais poderosos que o s assimétricos, melhor balanceamento do 
processamento e das operações de I/O. 
 Implementação bastante complexa. 
3.5.3 - Multiprocessamento 
 Uma tarefa pode ser dividida e executada, ao mesmo tempo, por mais de 
um processador. 
 Processamento Vetorial 
o Permite manipulação de vetores inteiros 
o Exemplo “c = a + b” substitui ”para i=1 até 100 fazer c[i] = a[i] + 
b[i]” 
o Possui também um processador escalar 
o Identifica o tipo de instrução e envia ao processador adequado 
 Processamento Paralelo 
o Aplicação pode ser executada por mais de um processador 
o A aplicação precisa ser dividida em partes independentes 
3.6 – Sistemas Fracamente Acoplados 
 Possui dois ou mais sistemas de computação interligados 
 Cada nó possui seu sistema operacional gerenciando os recursos. 
3.6.1 – Sistemas Operacionais de Rede 
 Cada nó possui 
o seu próprio Sistema Operacional, podendo eles serem diferentes 
o conexão à outros nós 
o recursos de hardware compartilhados 
o total independência dos outros 
 Caso algum nó caia, o sistema pode continuar rodando apesar de alguns 
recursos indisponíveis 
 Exemplo : Local Area Network (LAN). 
3.6.2 – Sistemas Operacionais Distribuídos 
 Cada nó possui 
o Seu próprio Sistema Operacional que devem ser todos iguais. 
o Recursos de hardware 
o Possui um relacionamento mais forte entre seus componentes. 
 Para o usuário é como se não existisse uma rede de computadores, mas 
apenas um único sistema centralizado. 
 Vantagem da possibilidade do balanceamento da carga (processador mais 
ocioso é escolhido). 
 Num Cluster, qualquer usuário conectado ao mesmo poderá Ter acesso aos 
dispositivos compartilhados, independente de que sistema ele está rodando 
a aplicação. 
 Permite que a aplicação seja dividida em diferentes partes, podendo cada 
uma ser processada em um sistema independente (aplicação distribuída). 
 Possui a vantagem da redundância, se ocorrer algum problema com algum 
componente outro assume o papel do defeituoso. 
 
Sistemas Multiprogramáveis 
1. Introdução 
 Possibilidade de periféricos e dispositivos funcionarem simultaneamente 
junto com a CPU permitiu execução de tarefas concorrentes. 
 Sistemas Operacionais podem ser vistos como um conjunto de rotinas que 
executam concorrentemente de uma forma ordenada 
 Sistemas multiprogramáveis X baixa utilização dos recursos do sistema. 
 Uso Médio CPU – monoprogramáveis 30% X multiprogramáveis 90%. 
 Vários programas podem estar residentes na memória, deixando-a menos 
ociosa 
 Quando um programa perde o uso do processador, o estado do 
processamento deve ser armazenado para quando ele retornar para 
continuar executando a partir de onde parou. 
 Compartilhamento de periféricos e recursos do sistema por vários usuários e 
programas. 
 Maior compexibilidade do Sistema Operacional. 
2. Interrupção e Exceção 
 Interrupção X Exceção 
o Interrupção gerada por evento síncrono e Exceção gerada por evento 
assíncrono. 
o Evento síncrono – Resultado direto da execução do programa 
corrente e são previsíveis. 
o Evento assíncrono – Ocorre independentemente da execução do 
programa corrente e são imprevisíveis. 
 Interrupções 
o Tornou possível a implementação da concorrência nos sistemas 
multiprogramáveis. 
o Eventos que causam intervenção no Sistema Operacional durante a 
execução de programas. 
o Gerados pelo próprio Sistema Operacional ou por Hardware. 
o O sistema é desviado para uma rotina especial de tratamento. 
o Vetor de Interrupção – Relação de todas as rotinas de tratamento 
das interrupções. 
o Mecanismo de Interrupção – Procedimento para detectar a 
interrupção, salvar o contexto do programa e desviar para a rotina de 
tratamento. Na maioria das vezes implementados pelos projetistas e 
realizados pelo harware. 
o Mascaráveis (podem ser desabilitadas) X Não-Mascaráveis 
(tratamento obrigatório). 
o As interrupções possuem prioridades de execução. 
o Controlador de pedidos de interrupção – avalia as interrupções 
geradas e suas prioridades de atendimento. 
 Exceção 
o Resultado direto da execução de uma instrução do próprio programa 
(ex: divisão por zero, overflow). 
o Muitas vezes pode ser escrita pelo próprio programador, sendo 
possível evitar que um programa seja encerrado no caso de alguma 
exceção ocorrer. 
3. Operações de Entrada/Saída 
 Instruções de entrada/saída: 
o Primitivo. 
o Comunicação entre a CPU e os periféricos controladas por um 
conjunto de instruções especiais. 
o Limitava a comunicação do processador a um conjunto particular de 
dispositivos. 
 controlador de interfaçe: 
o Mais atual 
o CPU interage independente dos dispositivos de E/S. 
o CPU não comunica diretamente com periféricos, mas atravéz de um 
controlador. 
o Controle de operações de E/S pelo processador 
o Controladapor programa: 
o CPU sincronizada com periférico no início daoperação 
o Sistema testa periférico esperando final da operação 
o Ocupa CPU até término da operação (busy wait) 
o Desperdício de CPU. 
o Por Polling 
o CPU liberada para outras tarefas. 
o Controlador testa final da operação a cada período de tempo 
(polling). 
o Permitiu o paralelismo e sistemas multiprogramáveis. 
o Mais eficiente 
 DMA 
o Polling exigiu a implementação, por parte do controlador, da Direct 
Memory Access (DMA). 
o Transferir blocos de dados entre memória e periféricos, sem 
intervenção da CPU, a não ser no início e término da operação. 
o CPU interrompida só no início e final da Operação. 
o No momento da Transferência da DMA, CPU interrompe acesso ao 
bus. 
 No IBM 7094: 
 Extensão do conceito de DMA 
 Canal de E/S – processador para executar programas de E/S. 
 Controle total sobre operações de entrada e saída. 
 Instruções E/S armazenadas na memória principal pela CPU 
 CPU instrui canal para executar programa de canal. 
 O canal avisa o término da operação. 
 Um canal pode controlar múltiplos dispositivos através de diversos 
controladores. 
 Um controlador pode manipular um dispositivo, ou um conjunto de 
dispositivos. 
 Canal - ligação entre CPU e controlador. 
 Processador de E/S: 
 Evolução com memória própria. 
 Sem necessidade de programas de E/S serem carregados na Memória 
Principal. 
 Controle com mínima intervenção da CPU. 
4. Buffering 
 Utilização de uma área da memória para transferência de dados entre 
periféricos e memória principal denomidada buffer. 
 Os dado são transferidos para o buffer. 
 O dispositivo pode iniciar nova leitura enquanto a CPU manipula os dados do 
buffer. 
 O mesmo pode ser aplicado para operações de gravação. 
 Minimiza o problema da disparidade da velocidade de processamento e 
dispositivos de E/S 
 Objetiva manter CPU e dispositivos de E/S ocupados na maior parte do 
tempo. 
 O buffer possui uma fila FIFO podendo conter vários registros (unidade de 
transferência usada no mecanismo de buffering). 
5. Spooling (simultaneous pefipheral operation on-line) 
 Surgiu no final dos anos 50. 
 Base dos Sistemas Batch 
 Antes, as Operações I/O eram lentas, deixando a CPU ociosa. 
 No spooling vários programas (JOBS) eram armazenados em uma fita 
magnética, então eram enviados para processamento. 
 Diminuição do tempo de execução dos jobs e transição entre eles. 
 Da mesma forma um job poderia direcionar as saídas para impressora para 
outra fita. 
 Sistemas estritamente sequenciais devido as fitas magnéticas. 
 Mais eficiência com o surgimento de dispositivos de acesso direto, como 
discos e atribuição de prioridades aos jobs. 
6. Reentrância 
 Diversos usuários podem estar rodando o mesmo utilitário (compartilhado) 
simultaneamente. 
 Não precisa ter mais de uma cópia do mesmo utilitário na memória 
 Exige que o código reentrante não possa ser modificado por nenhum usuário 
enquanto está sendo executado. 
 Diversos usuários podem acessar partes diferentes do código manipulando 
seus próprios dados 
 Exemplo: Editores de texto, compiladores, linkers. 
7. Proteção do Sistema 
 Garantia de proteção de recursos compartilhados, como memória, 
dispositivos de E/S e CPU 
 Na memória, cada usuário deve possuir uma área de dados e códigos 
armazenados de forma que outros não interfiram nessas informações. 
 Numa impressão, não deve ser possível a utilização até que a impressão 
corrente termine. 
 O Sistema Operacional deve implementar esses mecanismos (modos de 
acesso). 
 
 
 
Sistemas Operacionais 
Capítulo 5 
Estrutura do Sistema Operacional 
5.1 – Introdução 
 Kernel -> conjunto de rotinas que oferecem serviços aos usuários do 
sistema e suas aplicações, bem como a outras rotinas do próprio sistema. 
o Principais rotinas: 
o tratamento de interrupções; 
o criação e eliminação de processos; 
o sincronização e comunicação entre processos; 
o escalonamento e controle dos processos; 
o gerência da memória; 
o gerência do sistema de arquivos; 
o operações de entrada e saída; 
o contabilização e segurança do sisteama. 
 
5.2 – System Calls (chamadas ao sistema) 
 Comunicação do usuário ou aplicação com o núcleo do sistema operacional. 
 Para cada serviço existe uma system call. 
 System call X modularização. 
 Grupos de funções: 
o Gerência de processos: 
 Criação e eliminação de processos; 
 Alteração das características do processo; 
 Sincronização e comunicação entre processos. 
o Gerência de memória: 
 Alocação e desalocação de memória 
o Gerência de entrada e saída: 
 Operações de entrada/saída; 
 Manipulação de Arquivos. 
 
5.3 – Modos de Acesso 
 Restrição quanto à utilização de algumas funções do sistema 
 Instruções privilegiadas 
o oferecem perigo ao sistema) 
o funcionam no modo kernel 
o acesso ao conjunto total de instruções do processador 
 Instruções não privilegiadas 
o não oferecem perigo ao sistema 
o funcionam no modo usuário 
o acesso à um número reduzido de instruções 
 A system call altera o modo de acesso do processador para o modo kernel 
 Quando uma aplicação necessita de um serviço de risco a um sistema, 
chama uma system call. 
 
5.4 – Sistemas Monolíticos 
 Mais comum de ser encontrada 
 Rotinas interagem livremente umas com as outras 
 
5.5 – Sistema em Camadas 
 Sistema operacional dividido entre camadas sobrepostas 
 Cada módulo possui um conjunto de funções que podem ser utilizadas por 
outro módulo 
 Módulos de uma camada podem apenas fazer referência a módulos das 
camadas inferiores 
 Camadas internas tem mais privilégios que as camadas externas 
 
5.6 – Sistema Cliente-Servidor 
 Tendência de tornar o núcleo menor e mais simples possível. 
 Sistema dividido em processos, cada qual responsável por um conjunto de 
serviços 
 Núcleo é responsável pela comunicação entre clientes e servidores 
 Apenas núcleo executa no modo kernel 
 Caso um servidor dê problemas, não compromete o funcionamento do resto 
do sistema 
 Mais fácil manutenção do Sistema Operacional 
 Permite que um cliente solicite um serviço e a resposta seja processada 
remotamente 
 Na prática, implementação muito difícil e combinada com o sistema em 
camadas. 
Sistemas Operacionais 
Capítulo 6 
Processo 
6.1 – Introdução 
 De forma simples, o processo é um programa em execução. 
 Extensão do conceito: Estrutura responsável pela manutenção de todas as 
informações necessárias à execução de um programa, como conteúdo de 
registradores e espaço na memória 
 
6.2 – Modelo de Processo 
 Processo = ambiente onde se executa um programa 
 Um mesmo programa pode produzir resultados diferentes, dependendo do 
processo no qual ele é executado. 
 Bloco de controle do processo (Process Control Block – PCB) – Estrutura 
onde o SO guarda todas as informações do processo, contendo sua 
identificação, prioridade, estado corrente, recursos alocados por ele e 
informações sobre o programa em execução 
 O Sistema Operacional gerencia os processos através de System Calls. 
 Processo : contexto de hardware, software e espaço de endereçamento. 
6.2.1 – Contexto de Hardware 
 Constitui-se do conteúdo de registradores 
 A troca de um processo por outro na CPU, pelo sistema operacional, é 
denominada mudança de contexto. 
 Mudança de Contexto - salva o conteúdo dos registradores da CPU e 
carregá-los com os valores referente ao do processo que está ganhando a 
utilização do processador. 
 
6.2.2 – Contexto de Software 
 Características do processo incluídas na execução de um programa, divididasem: 
o Identificação – Principalmente número (PID) de identificação e 
identificação do processo ou usuário (UID) que o criou. 
o Quotas – Limites de cada recurso do sistema que um processo pode 
alocar 
o Privilégios – o que o processo pode ou não fazer em relação ao 
sistema e aos outros processos. 
 
6.2.3 – Espaço de Endereçamento 
 Área da memória do processo onde o programa será executado e para 
dados utilizados por ele. 
 Deve ser protegido do espaço de endereçamento dos demais processos 
 
6.3 – Estado do Processo 
 Em sistemas Multitarefas o processo não é executado todo o tempo pelo 
processador 
 3 tipos de estados: 
o Execução (running) – O processo está sendo executado pela CPU. 
o Pronto (ready) – O processo está pronto e esperando para ser 
executado pela CPU. 
o Espera (wait) – O processo está esperando algum evento externo ou 
por algum recurso para poder prosseguir seu processamento. 
 Bloqueado – O processo está esperando por algum recurso do 
sistema que não se encontra disponível. 
 
6.4 – Mudança de Estado do Processo 
 Mudança de estado por eventos do próprio processo (eventos voluntários) 
ou causados pelo sistema operacional (eventos involuntários). Dividido em 4 
mudanças: 
o Pronto -> Execução = Quando um processo é criado, é colocado em 
uma lista de processos no estado pronto. Então é escolhido pelo 
sistema para ser executado. 
o Execução -> Espera = O processo passa para espera quando aguarda 
a conclusão de um evento solicitado. 
o Espera -> Pronto = O processo passa para pronto quando a operação 
solicitada é atendida ou o recurso esperado é concedido. 
o Execução -> Pronto = O processo passa de execução para pronto por 
eventos gerados pelo sistema. 
 
6.5 – Subprocesso e Thread 
 Subprocesso ou processo filho 
o processos criados por um outro processo, de maneira hierárquica. 
o O subprocessos são eliminados quando o processo pai deixa de 
existir. 
o Permite dividir a aplicação para trabalhar de forma concorrente. 
o Cada processo e subprocesso possui seu ambiente e recursos 
alocados. 
 Thread ou Linha de Controle 
o No ambiente multthread cada processo pode responder a várias 
solicitações concorrentes ou mesmo simultaneamente, se houver 
mais de um processador. 
o Threads compartilham o processador da mesma forma que um 
processo. 
o Cada Thread possui seu próprio conjunto de registradores, porém 
compartilha o mesmo espaço de endereçamento com as demais 
threads do processo. 
o Uma Thread pode alterar os dados de outra Thread. 
 
6.6 – Processos do Sistema 
 Grande parte do núcleo do sistema é executada no contexto de processos, 
inclusive no contexto de processos de usuários, como: 
o auditoria e segurança: 
o serviços de rede; 
o contabilização do uso de recursos; 
o contabilização de erros; 
o gerência de impressão; 
o gerência de jobs batch; 
o temporização; 
o comunicação de eventos; 
o inteface de comando (shell). 
 
6.7 – Tipos de processos 
 CPU-bound (Ligado à CPU) 
o O processo passa a maior parte do tempo no estado de execução. 
o Realiza poucas operações de I/O 
o Encontrado em aplicações que efetuam muitos cálculos. 
 I/O-bound (Ligado à E/S) 
o O processo passa a maior parte do tempo no estado de espera 
o Encontrado em aplicações comerciais com bastante leitura, 
processamento e gravação. 
o Encontrado também em aplicações interativas. 
Sistemas Operacionais 
Capítulo 7 
Comunicação entre Processo 
 
7.1 – Introdução 
 Compartilhamento de recursos entre processos pode gerar situações 
indesejáveis 
 Mecanismos de sincronização – garantem a comunicação entre processos 
concorrentes e o acesso a recursos compartilhados 
 
7.2 – Especificação de Concorrência em Programas 
 Primeira notação para especificação da concorrência: FORK e JOIN 
o FORK – Inicia a execução de outro programa concorrentemente 
o JOIN – O programa chamador espera o outro programa terminar para 
continuar o processamento 
 Implementação mais simples: PARBEGIN e PAREND 
o PARBEGIN – Inicia lista de programas que serão executados paralela 
e aleatoriamente. 
o PAREND – Especifica o ponto de sincronização. 
 
7.3 – Problemas de Compartilhamento de Recursos 
 Mecanismos de controle devem existir para evitar problemas 
 Exemplos: 
o Atualização de arquivos compartilhados ao mesmo tempo 
o Cálculos com mesmas variáveis ao mesmo tempo. 
 
7.4 – Solução para os Problemas de Compartilhamento 
 Exclusão Múltua (solução mais simples): impedir que dois ou mais processos 
acessem um mesmo recurso no mesmo instante, um deve esperar que o 
outro termine para utilizar. 
 Região crítica: parte do código onde é feito o acesso ao recurso 
compartilhado. 
 Usualmente utiliza-se de um protocolo ao entrar em uma região crítica e ao 
sair dela. 
 
7.5 – Problemas de Sincronização 
 Problemas introduzidos pela exclusão múltua. 
 Velocidade de Execução dos Processos: 
o Processos com diferenças de velocidade ou maior tempo de 
processamento 
 Starvation: 
o Situação em que um processo nunca consegue executar sua região 
crítica e acessar o recurso compartilhado. 
o Ocorre quando dois ou mais processos esperam por um mesmo 
recurso alocado. Caso o sistema escolha o processo aleatoriamente 
quando o recurso é liberado, um processo pode nunca ser escolhido 
o Quando um processo tem baixa prioridade também pode nunca ser 
escolhido. 
o Filas FIFO eliminam esse problema. 
 Sincronização Condicional: 
o Quando um recurso não se encontra pronto para ser utilizado pelos 
processos, o processo deve ser colocado no estado de espera, até a 
liberação do recurso. 
o Problema de processo produtor/consumidor: exemplo, quando um 
processo tenta gravar num buffer e outro tenta ler. Um processo não 
poderia ler de um buffer cheio nem tentar ler de um buffer vazio. 
 
7.6 – Soluções de Hardware 
 Desabilitação de Interrupções: 
o Desabilitar interrupções externas ao entrar numa região critica e 
habilitar ao sair. 
o Se o processo não habilitar as interrupções ao sair da região crítica, o 
sistema pode estar comprometido. 
 Instrução Test-and-set: 
o Instrução especial que permite ler uma variável, armazenar seu 
conteúdo em uma outra área e atribuir um novo valor a essa 
variável. 
o Executa sem interrupção 
o É uma instrução invisível 
o Assim, dois processos não podem manipular uma variável 
compartilhada ao mesmo tempo (exclusão múltua). 
 
7.7 – Solução de Software 
 Fatores para a solução de problemas de sincronização: 
o O número de processadores e o tempo de execução dos processos 
concorrentes devem ser irrelevantes; 
o Um processo, fora de sua região crítica, não pode impedir que outros 
processos entrem em suas próprias regiões críticas; 
o Um processo não pode permanecer indefinidamente esperando para 
entrar em sua região crítica. 
 
7.7.1 – Semáfaros 
 Solução mais geral e simples de ser implementada. 
 Variável inteira, não negativa, que só pode ser manipulada por duas 
instruções: DOWN e UP. 
 Mutexes (mutual exclusion semaphores): 
o Semáfaros aplicados ao problema da exclusão múltua 
o Na exclusão múltua, as instruções DOWN e UP funcionam como 
protocolos de entrada e saída. Valor > 0, recurso liberado, Valor = 0, 
processo impedido do acesso. 
o Processo entra na região crítica executa DOWN, impedindo outros 
processos do acesso. 
o Processo sai da região crítica executa UP, liberando o acesso para 
outros processos. 
o Normalmente, UP e DOWN são System Calls. 
 Semáfaros aplicados ao problema de sincronização condicional: 
o Em geral, se existe um processo que deve ser notificado sobre a 
ocorrência de um evento e um outro capaz de detectar sua 
ocorrência, pode-se utilizarum semáfaro acossiado ao evento 
esperado para sincronizar ambos os processos 
o Semáfaros contadores: úteis quando aplicados na alocação de 
recursos do mesmo tipo (pool). 
 
7.7.2 – Monitores 
 Mecanismos de sincronização de alto nível que tentam tornar mais fácil o 
desenvolvimento e correção de programas concorrentes. 
 Conjunto de procedimentos, variáveis e estrutura de dados definidos dentro 
de um módulo. 
 Somente um processo pode estar executando um dos procedimentos do 
monitor em um determinado instante. 
 Implementação da exclusão mútua nos monitores é realizada pelo 
compilador. 
 WAIT – Faz um processo entrar em estado de espera quando uma variável 
de condição (estrutura de dados tipo fila) está impedindo a liberação para 
outros processo. 
 SIGNAL – Liberação do recurso pelo processo que o alocou. 
 
7.7.3 – Troca de Mensagens 
 Mecanismo de comunicação e sincronização entre processos. 
 SEND – Envia uma mensagem a um processo receptor 
o SEND (Receptor, Mensagem) 
 RECEIVE – Recebe uma mensagem de um processo transmissor 
o RECEIVE (Emissor, Mensagem) 
 Não ocorre exclusão multua. 
 Uma mensagem só pode ser lida apos Ter sido enviada. 
 Pode ocorrer perda de mensagens 
 ACK (acknowledgement) – enviada pelo processo receptor para informar o 
recebimento da mensagem. Se o emissor não receber um ACK em 
determinado tempo, reenvia a mensagem. 
 Endereçamento direto – só permite a comunicação entre dois processos. 
 Endereçamento indireto – utiliza uma área compartilhada (buffer conhecido 
como mailbox) onde as mensagens podem ser colocadas pelo emissor e 
retiradas pelo receptor 
 Comunicação síncrona (rendezvous): 
o Um processo envia uma mensagem e fica esperando até que o 
receptor leia a mensagem 
o Um receptor tenta receber uma mensagem e fica esperando até que 
o processo transmissor grave alguma mensagem. 
o Dispensa necessidade de buffers. 
o A necessidade de espera reduz o grau de concorrência. 
 Comunicação assíncrona: 
o O transmissor não aguarda o recebimento da mensagem. 
o O receptor não aguarda o envio de uma mensagem. 
o Necessita de buffers 
o Maior paralelismo na execução dos processos em relação a síncrona. 
 
7.8 – Deadlock 
 Um processo espera por um evento que nunca ocorrerá. 
 Conseqüência, em geral, do compartilhamento de recursos do sistema entre 
vários processos de forma exclusiva. 
 Espera circular – quando, por exemplo, um processo A, utilizando um 
recurso P, necessita de um recurso Q, alocado pelo processo B, para 
continuar o processamento e o processo B necessita do recurso P para 
continuar o processamento. 
 Deadlocks ocorrem quando 4 condições são verdadeiras: 
1. Exclusão mútua - Cada recurso só pode estar alocado a um único 
processo em um determinado instante. 
2. Um processo, além dos recursos já alocados, pode estar esperando 
por outros recursos. 
3. Não-preempsão – Um recurso não pode ser liberado de um processo 
só porque outros processos desejam o mesmo recurso. 
4. Espera circular – Um processo pode Ter de esperar por um recurso 
alocado a outro processo e vice-versa. 
 
7.8.1 – Prevenção de Deadlock 
 Garantir que uma das quatros condições nunca se satisfaçam 
 1a condição: 
o A ausência da exclusão múltua acaba com o problema. 
o Pode causar sérios problemas de consistência. 
 2a condição: 
o Alocar todos os recursos necessários para a execução, antes de se 
executar, caso não disponíveis, fica em espera. 
o Pode ocorrer starvation, pois seus recursos podem nunca estarem 
liberados todos ao mesmo tempo 
o Dificuldade de se determinar o número de recursos que um processo 
deverá alocar antes de sua execução. 
o Algum recurso pode demorar a ser liberado. 
 3a condição: 
o Evitada quando permitimos que um recurso seja retirado de um 
processo, no caso de outro processo necessitar do mesmo. 
o Pode perder o processamento feito até o momento. 
o Pode ocorrer starvation, quando o processo garante alguns recursos 
e o sistema os libera em seguida. 
 4a condição: 
o Forçar ao processo Ter apenas um recurso de cada vez, se precisar 
de outro recurso, deve liberar o primeiro. 
 
7.8.2 – Detecção do Deadlock 
 Mecanismo que determina a existência de deadlock, permitindo identificar os 
recursos e processos envolvidos no sistema 
 Existe uma estrutura de dados capaz de identificar cada recurso do sistema. 
 Geralmente os algoritmos verificam a existência de espera circular, 
percorrendo toda a estrutura quando um processo solicita um recurso que 
não pode ser imediatamente garantindo. 
 
7.8.3 – Correção do Deadlock 
 Eliminar um ou mais processos envolvidos no deadlock e desalocar os 
recursos já garantidos por eles, eliminando a espera circular. 
 A escolha dos processos é normalmente feita aleatoriamente ou com base 
em prioridades. 
 Pode gerar um elevado overhead ao sistema. 
 Rollback : 
o liberação de apenas uns recursos alocados até o ciclo de espera 
terminar 
o o processo retorna seu processamento quando o recurso é devolvido. 
o Difícil de ser implementado devido ser bastante dependente da 
aplicação. 
Sistemas Operacionais 
Capítulo 8 
Gerência do Processador 
(Escalonamento de Processos) 
 
8.1 – Introdução 
 Compartilhamento da CPU em sistemas multiprogramáveis. 
 Critérios de escolha da ordem dos processo a entrar em execução. 
 Scheduler (escalonador): 
o Uma das principais funções do Sistema Operacional 
o Parte do código do Sistema Operacional responsável pelo scheduling 
(escalonamento). 
 Funções do escalonamento: 
o Manter a CPU ocupada a maior parte do tempo. 
o Balancear a utilização do processador entre diversos processos. 
o Maximizar o throughput do sistema 
o Oferecer tempos de respostas razoáveis para os usuários interativos. 
o Evitar starvation. 
 
8.2 – Critérios de Escalonamento 
 Utilização da CPU 
o Em geral, é desejável que o processador permaneça a maior parte do 
tempo ocupado 
 Throughput 
o Número de processos executados em um determinado intervalo de tempo. 
o Em geral, a maximização do throughput é desejada. 
 Tempo de turnaroud 
o Tempo que um processo leva desde sua admissão no sistema até seu 
término. 
o Considera tempo de espera para alocação de memória, espera na fila de 
processos prontos, processamento e operações de entrada e saída. 
o Em geral, a minimização do tempo de turnaround é desejada. 
 Tempo de resposta 
o Tempo decorrido do momento da submissão de um pedido ao sistema até 
a primeira resposta produzida. 
o Em geral, a minimização do tempo de resposta é desejada. 
 
8.3 – Escalonamento Não-preemptivo 
 Existente nos primeiros sistemas multiprogramáveis, onde predominava o 
processamento batch. 
 Quando um processo (JOB) ganha o direito de utilizar a CPU, nenhum outro 
processo pode lhe tirar esse recurso 
 
8.3.1 – Escalonamento First-In-First-Out (FIFO) 
 O processo que chegar primeiro, é o primeiro a ser selecionado para a execução. 
 Necessário apenas uma fila de processos prontos, esperando pelo uso do 
processador. 
 O processo utiliza a CPU sem ser interrompido. 
 Problemas: 
o Impossibilidade de prever quando um processo entrará em execução. 
o Possibilidade de processos CPU-bound de menor importância prejudicarem 
processos de I/O-bound mais proprietários. 
 
8.3.2 – Escalonamento Shortest-Job-First (SJF) 
 Associa cada processo (JOB) ao seu tempo de execução. 
 Quando o processador está livre, o processamento que ocupar menos tempo da 
CPU para terminar seu processamento é selecionado. 
 Favorece os programas menores. 
 Reduz o tempomédio de espera em relação ao FIFO. 
 Problemas: 
o Determinar, exatamente, quanto tempo de CPU o processo vai utilizar 
para terminarseu processamento. 
 
8.3.3 – Escalonamento Cooperativo 
 O processo está em execução libera voluntariamente o processador, retornando 
para a fila de pronto, cooperando com os outros processos. 
 Permite uma melhor distribuição do processador entre os processos. 
 Não existe intervenção do Sistema Operacional na execução do processo. 
 Exemplos: Microsoft Windows 3.1 e 3.11 
 Problemas: 
o Um programa mal escrito pode entrar em looping, monopolizando a CPU. 
 
8.4. Escalonamento Preemptivo 
 O Sistema pode interromper um processo em execução para que outro processo 
utilize o processador. 
 Permite que o sistema dê atenção imediata a processos mais prioritários, como 
no caso de sistemas em tempo real. 
 Proporciona melhores tempos de resposta em sistemas de tempo compartilhado 
 Compartilhamento do processador de uma maneira mais uniforme entre os 
processos. 
 A troca de um processo pelo outro na CPU (mudança de contexto), causado pela 
preempção, gera um overhead no sistema. 
 Critérios de preempção devem ser definidos para o overhead não se tornar 
crítico. 
 
8.4.1 – Escalonamento Circular (round robin) ou preempção por tempo 
 Implementado por um algoritmo semelhante ao FIFO, porém, quando um 
processo passa para o estado de execução, existe um tempo-limite (quantum ou 
time-slice) para sua utilização de forma contínua. Se o processo não terminou a 
execução, volta ao estado de pronto. 
 Em geral, o valor do quantum de tempo está entre 100 e 300 ms. 
 Nenhum processo poderá monopolizar a CPU. 
 Algoritmo bastante adequado para sistemas multiusuários de tempo 
compartilhado. 
 No caso, o processo CPU-bound tem mais chances de ser executado do que o 
processo IO-bound 
 
8.4.2 – Escalonamento por Prioridades ou preempção por prioridade 
 Processos possuem diferentes prioridades de execução. 
 Processos de maior prioridade são escalonados preferencialmente. 
 Algoritmo Implementado mediante um clock, que interrompe o processador em 
determinados intervalos de tempo, reavaliando prioridades e, possivelmente, 
escalonando outro processo. 
 Todos os sistemas de tempo compartilhado implementam algum tipo de 
prioridade, sendo esta uma característica do contexto de software. 
 Prioridade estática: 
o Não é modificada durante a existência do processo. 
o De simples de implementação. 
o Pode ocasionar tempos de resposta elevados. 
 Prioridade dinâmcia: 
o Pode ser modificada durante a execução do processo. 
o O processo recebe um acréscimo à sua prioridade ao sair do estado de 
espera. 
o Processos I/O-bounds terão mais chances de serem escalonados, 
compensando o tempo que passam no estado de espera. 
o Os processos CPU-bounds podem ser executados enquanto os processos 
CPU-bounds esperam por algum evento. 
 O tempo de resposta compensa o maior overhead e complexidade algorítmica. 
 
8.4.3 – Escalonamento por Múltiplas filas 
 Implementa diversas filas de processos no estado pronto, onde cada processo é 
associado exclusivamente a uma delas. 
 Cada fila possui um mecanismo próprio de escalonamento, em função das 
características dos processos. 
 Cada fila possui uma prioridade associada. 
 O sistema só pode escalonar processos de uma fila, se todas as outras de 
prioridade maior estiverem vazias. 
 
8.4.4 – Escalonamento por Múltiplas Filas com Realimentação 
 Também Implementa diversas filas onde cada uma tem uma prioridade de 
execução associada, porém, os processos não permanecem em uma mesma fila 
até o término do processamento. 
 O sistema identifica dinamicamente o comportamento de cada processo, 
ajustando assim suas prioridades de execução e mecanismos de escalonamento. 
 Os processos não são previamente associados às filas de pronto, e sim 
direcionados pelo sistema entre as diversas filas com base em seu 
comportamento. 
 Execução: 
o Processo criado entra no final da fila de mais alta prioridade. 
o Cada fila implementa o mecanismo de FIFO para escalonamento. 
o Quando o processo em execução deixa a CPU por preempção por 
prioridade ou por solicitação a um recurso do sistema ele é reescalonado 
para dentro da mesma fila. 
o Caso o processo esgote seu quantum de tempo, ele é redirecionado para 
um a fila de menor prioridade (preempção por tempo), e assim por diante. 
o A fila de mais baixa prioridade implementa o mecanismo de 
escalonamento circular. 
o O quantum em cada fila varia em função da sua prioridade. Quanto maior 
a prioridade, menor seu quantum de tempo. 
 Atende as necessidades dos diversos tipos de processos. 
 Pode ser implementado em qualquer tipo de Sistema Operacional. 
 Pode gerar um grande overhead no sistema, ainda assim, pode justificar sua 
implementação. 
 
8.4.5 – Escalonamento de Sistemas de Tempo Real 
 Fator de tempo crítico, pequeno tempo de resposta obrigatório. 
 Escalonamento feito unicamente com base no esquema de prioridades estáticas. 
 Quanto maior a importância de uma tarefa, maior sua prioridade de execução em 
relação às demais. 
 
8.5 – Escalonamento com Múltiplos Processadores 
 Escalonamento bem mais complexo do que com um único processador. 
 Sistemas Fracamente Acoplados: 
o cada processador faz seu processamento local. 
 Sistemas Fortemente Acoplados 
o Possível implementar uma única fila de pronto para todos os 
processadores. 
o Importante a implementação da exclusão mútua. 
o Não pode haver a possibilidade de um mesmo processo ser escalonado 
por dois processadores diferentes. 
Sistemas Operacionais 
Capítulo 9 
Gerência de Memória 
9 – Gerência de Memória 
9.1 – Introdução 
 Na memória principal residem os programas em execução. 
 Memória secundária são mecanismos de armazenamento permanente, são 
mais abundantes e baratas. 
 Para um programa ser executado deve ser carregado na memória principal. 
 Gerenciamento complexo em sistemas multiprogramáveis com múltiplos 
usuários utilizando-a eficientemente. 
 
9.2 – Alocação Contígua Simples 
 Implementada nos primeiros Sistemas Operacionais e ainda existentes em 
alguns sistemas monoprogramáveis. 
 Memória dividida em duas partes, Sistema Operacional e programa do 
usuário. 
 O programador tem controle sobre toda a memória principal, podendo 
acessar qualquer posição da memória, inclusive onde está residente o 
Sistema Operacional. 
 Um mecanismo de proteção utilizado é delimitar a área do Sistema 
Operacional que delimita a área do mesmo. 
 Fácil implementação e código reduzido, porém Ineficiência no uso do 
processador e da memória pois apenas um usuário pode dispor desse 
recurso. 
 Programas limitados ao tamanho da memória disponível. 
 Overlay (sobreposição) – Solução encontrada para dividir o programa em 
partes (módulos), de forma que pudessem executar independentemente 
uma da outra, utilizando uma mesma área de memória. 
 A definição das áreas de Overlay são de responsabilidade do programador 
através de comandos específicos da linguagem utilizada. 
 
9.3 – Alocação Particionada 
 A eficiência da multiprogramação exige que vários programas estejam na 
memória ao mesmo tempo, vindo a necessidade de organização da 
memória. 
 
9.3.1 – Alocação Particionada Estática: 
 Divisão da memória em tamanhos fixos (partições) definidos na inicialização 
do Sistema em função dos programas que executariam no ambiente. 
 A alteração do tamanho de uma partição necessita a inicialização do Sistema 
Operacional. 
 Os programas só podiam executar em uma das partições, mesmo com 
outras disponíveis. 
 Limitações impostas pelos compiladores e montadores que geravam apenas 
códigos absolutos. 
 Posteriormente, evolução dos compiladores, linkers e loaders com geração 
de código realocável, sendo que osprogramas puderam ser carregados em 
qualquer partição (alocação particionada estática realocável). 
 Surgimento da tabela de partições com informações de tamanho, uso e 
delimitações. 
 Proteção da memória através de dois registradores, início e fim da partição. 
 Os programas não preenchiam totalmente as partições onde eram 
carregados. 
 Problemas de fragmentação. 
 
9.3.2 – Alocação Particionada Dinâmica 
 Aumento do grau de compartilhamento diminuindo o problema da 
fragmentação. 
 Partições sem tamanho fixo, onde cada programa utiliza o espaço que 
necessita. 
 Existe ainda o problema de fragmentação, conforme os programas vão 
terminando e deixando espaços cada vez menores. 
 Soluções para resolver o problema de fragmentação: 
o Primeira – Reunir os espaços adjacentes, produzindo um único 
espaço de tamanho maior. 
o Segunda – Realocação de todas as partições ocupadas, eliminando 
todos os espaços entre elas (alocação dinâmica com realocação), 
porém, aumentando a complexibilidade do algoritmo e consumindo 
mais recursos do sistema. 
 
9.3.3 – Estratégias para Escolha da Partição 
 Função para determinar em qual partição livre um programa será carregado 
para execução. 
 Função de evitar, ou diminuir, o problema da fragmentação antes que ele 
ocorra. 
 O tamanho do programa é o fator mais importante para a adoção da melhor 
estratégia. 
 Best-fit: 
o Escolhe a melhor partição, ou seja, aquela que o programa deixa o 
menor espaço sem utilização. 
o Lista de áreas livres alocada por tamanho, diminuindo o tempo de 
busca 
o Desvantagem de deixar pequenas áreas não contíguas, aumentando 
o problema da fragmentação. 
 Worst-fit: 
o Escolhe a pior partição, ou seja, aquela que o programa deixa o 
maior espaço sem utilização. 
o Diminui o problema de fragmentação, deixando espaços livres 
maiores que permitem a um maior número de programas utilizar a 
memória. 
 First-fit: 
o Escolhe a primeira partição livre de tamanho suficiente para carregar 
o programa 
o Lista de áreas livres ordenada por endereços crescentemente. 
o Grande chance de se obter uma grande partição livre nos endereços 
de memórias mais altos. 
o Mais rápida e consome menos recursos do sistema. 
 
9.4 – Swapping 
 Tenta resolver o problema de insuficiência da memória para todos os 
usuários. 
 Aloca espaço para programas que esperam por memória livre para serem 
processados. 
 O sistema escolhe um programa residente, que é levado da memória para o 
disco (swap out), retornando posteriormente para a memória principal 
(swap in) como se nada tivesse ocorrido. 
 Problema da realocação dos programas. O loader realocável permite que um 
programa seja colocado em qualquer posição da memória, porém a 
realocação é realizada no momento do carregamento. 
 Mecanismo ineficiente em função do tempo gasto para carregamento. 
 Uma alternativa é esperar que a região de memória usada pelo programa na 
ocasião do seu primeiro carregamento esteja disponível. 
 Realocação Dinâmica: 
o É a melhor solução, uma implementação no hardware dos 
computadores, permitindo que a realocação seja realizada durante a 
execução do programa. 
o Realizada através de um registrador especial denomidado registrador 
de alocação, que recebe o endereço inicial da região da memória que 
o programa irá ocupar no momento do carregamento do programa na 
memória. 
o Toda vez que ocorrer uma referência a algum endereço, o endereço 
contido na instrução será somado ao conteúdo do registrador, 
gerando assim, o endereço físico. 
 Essencial para a implementação de um sistema multiprogramável. 
 Permitiu um maior throughput através de um maior compartilhamento da 
memória. 
 Mais eficiente para programas onde existiam poucos usuários competindo 
por memória e em ambientes que trabalhavam com aplicações pequenas. 
 Seu maior problema é o elevado custo das operações de entrada/saída 
(swapped in/out). 
9.5 – Memória Virtual 
 Combina memória principal e secundária; 
 Impressão da memória ser muito maior do que é; 
 Desvinculação do endereçamento feito pelo programa dos endereços físicos 
da memória principal; 
 Procura minimizar o problema de fragmentação da memória. 
 
9.4.1 – Espaço de Endereçamento Virtual 
 Conceito próximo a vetores em linguagens de alto nível; 
 Referência a um componente do vetor sem preocupação com a posição da 
memória onde o dado está; 
 Programa no ambiente de memória virtual não faz referência a endereços 
físicos de memória (endereços reais), mas apenas a endereços virtuais; 
 Mapeamento – é a tradução do endereço virtual para o físico; 
 Espaço de endereçamento virtual – é o conjunto de endereços virtuais que 
os processos podem endereçar. 
 Espaço de endereçamento real – é o conjunto de endereços reais. 
 Apenas parte do programa pode estar residente na memória em um 
determinado instante; 
 O Sistema Operacional utiliza a memória secundária como uma extensão da 
memória principal. 
 
9.5.2 – Mapeamento 
 Mecanismo que transforma os endereços virtuais em endereços reais; 
 Todo programa precisa estar no espaços de endereçamento real para poder 
ser referenciado ou executado; 
 Atualmente, o mapeamento é realizado via hardware junto com o Sistema 
Operacional, de forma a não comprometer seu desempenho e torná-lo 
transparente aos usuários e suas aplicações; 
 A maioria das aplicações tende a fazer referência a um reduzido número de 
páginas, logo, somente uma pequena fração da tabela de páginas é 
necessária. 
 Memória associativa ou Translation Lookside Buffer – Hardware especial 
para mapear endereços virtuais para endereços físicos sem a necessidade de 
acesso à tabelas de páginas; 
 Quando um programa está em execução, existe uma tabela de mapeamento 
do processo no qual o programa executa. Se outro programa for executado 
no contexto de outro processo, o sistema deve passar a referenciar a tabela 
do novo processo. Toda vez que há mudança de contexto, o registrador é 
atualizado com o endereço da nova tabela. 
 
9.5.3 – Paginação 
 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 (páginas); 
 Páginas virtuais no espaço virtual e páginas reais ou frames (molduras) no 
espaço real; 
 Todo mapeamento é realizado a nível de página, através de tabelas de 
páginas, em que cada página virtual do processo possui uma entrada na 
tabela ETP; 
 Paginação por demanda é quando as páginas dos processos são 
transferidas da memória secundária para a principal apenas quando são 
referenciadas. 
 Paginação Antecipada é o carregamento de páginas na memória 
antecipadamente, sendo que o sistema tenta prever as páginas que serão 
necessárias à execução do programa. 
 ALGORÍTMO DA PAGINAÇÃO. 
 
9.5.3.1 – Working Set 
 Problemas: 
o Paginação exigem operações de E/S (que deve ser evitado) quando 
um processo faz referência a uma página que não se encontra na 
memória; 
o O Sistema Operacional deve se preocupar em ter um certo número 
de páginas na memória que reduza ao máximo a taxa de paginação 
dos processos e não prejudique os demais processos que desejam 
acesso a memória. 
 Observações: 
o Quando um programa começa a ser executado, percebe-se uma 
elevada taxa de page faults (páginas que não se encontram na 
memória), que se estabiliza com o decorrer de sua execução. 
o Localidade é a tendência que existe em um programa de fazer 
referências a posições de memória de forma quase uniforme, ou seja, 
instruções próximas. 
o A partir da observação da localidade Denning formulou o modelo de 
working set. 
 Working Set de um processo é o conjunto de páginas referenciadaspor ele 
durante determinado intervalo de tempo, ou, segundo Denning, é o conjunto 
de páginas constantemente referenciadas pelo processo, devendo 
permanecer na memória principal para que execute de forma eficiente, 
evitando a elevada taxa de paginação (thrashing). 
 Sempre que um processo é criado, todas as suas páginas estão na memória 
secundária. 
 O Working Set deve Ter um limite máximo de páginas permitidas. 
 
9.5.3.2 – Realocação de Páginas 
 Problema em decidir quais páginas remover da memória principal. 
 O Sistema Operacional deve considerar se uma página foi ou não modificada 
antes de liberá-la para outro processo, caso contrário, possíveis dados 
armazenados na página serão perdidos. 
 Sempre que uma página é alterada, um bit de modificação é alterado de 0 
para 1, informando que a página foi alterada. 
 Melhor estratégia de realocação é escolher uma página que não será 
referenciada num futuro próximo. Tarefa difícil para o Sistema Operacional. 
 Principais estratégias usadas pelos sistemas operacionais para realocação de 
páginas: 
o Aleatória (random): 
 Não utiliza nenhum critério de seleção. 
 Consome menos recursos do sistema. 
 Raramente é utilizada. 
o First-In-First-Out (FIFO): 
 A página que primeiro foi utilizada será a primeira a ser 
escolhida. 
 Implementação bastante simples. 
 Necessário apenas uma fila. 
o Least-Recently-Used (LRU): 
 Seleciona a página utilizada menos recentemente, ou seja, a 
que está há mais tempo sem ser referenciada. 
 Estratégia boa, mas pouco implementada; 
 Grande overhead causado pela atualização, em cada página 
referenciada, do momento do último acesso, além do 
algoritmo de busca dessas páginas. 
o Not-Recently-Used (NRU): 
 Escolha da página que não foi recentemente utilizada 
(semelhante ao LRU). 
 Flag de referência – indica quando a página foi referenciada 
ou não. 
 Inicialmente, todas as páginas estão com o flag = 0, à 
medida que as páginas são referenciadas, o flag é modificado 
para 1. 
o Last-Frequently-Used (LFU): 
 Escolhe a página menos referenciada. 
 Existe um controle do número de referências feitas às 
páginas. 
 É escolhida a página que o contador tem o menor número de 
referências. 
 Problema – As páginas que entrarem mais recentemente no 
working set serão as que estarão com o menor número no 
contador. 
 
9.5.3.3 – Tamanho da Página 
 Paginação leva a uma menor fragmentação, pois apenas poderá haver 
fragmentação na última página. 
 A fragmentação é conseqüência do tamanho da página. 
 Páginas pequenas, tabelas de mapeamento maiores, maior taxa de 
paginação e aumento do número de acesso à memória secundária, porém, 
menor fragmentação. 
 Tamanho da página associado ao hardware e varia de sistema para sistema, 
norlamente entre 512 bytes e 64 kb. 
 
9.5.4 – Segmentação 
 Técnica de gerência de memória, onde os programas são divididos 
logicamente e em sub-rotinas e estruturas de dados e colocados em blocos 
de informações na memória 
 Segmentos – blocos de tamanhos diferentes com seu próprio espaço de 
endereçamento. 
 Segmentação X Paginação – Paginação com partes de tamanho fixo e 
segmentos com blocos de tamanhos variados e permite uma relação entre a 
lógica do programa e sua divisão na memória. 
 Cada entrada na tabela de segmentos possuí o endereço do segmento na 
memória física, informações sobre o tamanho do segmento, sua proteção e 
se ele está na memória ou não. 
 O Sistema Operacional mantém uma tabela com as áreas livres e ocupadas 
da memória. 
 A escolha da área livre a ser ocupada por um processo a ser carregado na 
memória pode ser a mesma utilizada no item Alocação Particionada 
Dinâmica (best-fit, worst-fit ou first-fit). 
 Apenas os segmentos referenciados são transferidos para a memória real. 
 Os programas devem ser bem modularizados para uma maior eficiência. 
 Existe também o problema da fragmentação e o problema da 
complexibilidade. 
 
9.5.5 – Segmentação com Paginação 
 Permite a divisão lógica dos programas e segmentos e, cada segmento é 
dividido fisicamente em páginas. 
 Um endereço é formado pelo número do segmento, pelo número de página, 
contida nesse segmento, e pelo deslocamento dentro dessa página. 
 O endereço físico é obtido somando-se a posição inicial do frame e o 
deslocamento. 
 
9.5.6 – Proteção 
 Necessária para impedir que um processo, ao acessar uma página/segmento 
do sistema, a modifique ou mesmo tenha acesso a ela. 
 No esquema de memória virtual, cada processo tem sua própria tabela de 
mapeamento e a tradução dos endereços é realizada pelo sistema, 
impedindo assim, que um processo tenha acesso a áreas de memória de 
outros processos, a não ser que tenham compartilhamento explícito. 
 A proteção deve ser realizada em nível de cada página/segmento na 
memória, utilizando-se as entradas da tabela de mapeamento, com alguns 
bits especificando permissões a cada uma das páginas/segmentos. 
 
9.5.7 – Compartilhamento de Memória 
 Bastante útil para programas de código reentrante. 
 Bastante simples implementação do compartilhamento de código e dados 
entre vários processos, bastando que as entradas das tabelas de 
páginas/segmentos apontem para as mesmas páginas/segmentos na 
memória principal. 
 Reduz o número de programas na memória principal e aumenta o número 
de usuários compartilhando o mesmo recurso. 
 Segmentação X Paginação em relação ao compartilhamento: 
o O compartilhamento de segmentos é mais simples que o de páginas, 
pois as tabelas de segmentos mapeiam estruturas lógicas, como sub-
rotinas e estruturas de dados. 
o Enquanto o mapeamento de um vetor necessita de várias entradas 
na tabela de páginas, na tabela de segmentos é necessária apenas 
uma única entrada. 
o O segmento pode variar seu tamanho durante a execução com o 
crescimento de um vetor, por exemplo, na paginação, isso implica na 
alocação de novas páginas. 
 
9.5.8 – Swapping em Memória Virtual 
 Quando existem novos processos que desejam ser processados e não existe 
memória real suficiente, o sistema seleciona um ou mais processos que 
deverão sair da memória para ceder espaço aos novos processos. 
 Os critérios mais utilizados para a escolha são a prioridade, escolhendo 
processos de melhor prioridade, e o estado do processo, selecionando os 
processos que estão no estado de espera. 
 
9.5.9 – Thrashing 
 É a excessiva transferência de páginas/segmentos entre a memória principal 
e a memória secundária. Problema existente tanto em paginação quanto a 
segmentação. 
 Na paginação: 
o A nível de processo: 
 o working set de um processo pode ser pequeno demais para 
acomodar as páginas constantemente acomodadas 
referenciadas por ele, a solução é aumentar o tamanho do 
working set. 
 O thrashing também pode ocorrer pela não obediência do 
conceito da localidade, ou seja, o programa faz referência a 
comandos/dados localizados em páginas fora do working set 
do processo e a solução para isso é reescrever a aplicação. 
o A nível de sistema: 
 o trashing ocorre quando existem mais processos competindo 
por memória que espaço disponível. 
 O primeiro passo é a redução do tamanho dos working set dos 
processos, mas isso pode levar o thrashing a nível de 
processo. 
 Na segmentação: 
o Em nível de processo, quando a trasferência de segmentos é 
excessiva devido a modularização extrema do programa não 
seguindo o conceito da modularidade. 
o Em nível de sistema é semelhante ao caso da paginação. 
 Em qualquer caso, se existem mais processos para serem executados que a 
memória real disponível, a única solução é expandir a memória principal. 
 Este problema ocorre emtodos os sistemas que possuem um mecanismo de 
gerência de memória.

Continue navegando