Buscar

Sistemas Operacionais - Apostila

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 63 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 63 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 63 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

Universidade Estácio - Fagner Lima 
fagnerlima.com.br 
 
SISTEMAS OPERACIONAIS 
APRESENTAÇÃO 
Bem vindos a disciplina Sistemas Operacionais. Nesta disciplina iremos estudar como funciona um 
sistema operacional identificando seus componentes, problemas e características nos sistemas 
modernos. 
Essa disciplina aborda os fundamentos de sistemas operacionais relacionando-os a tarefas e 
problemas conhecidos nas implementações mais usuais. Essa abordagem possibilita a solução de 
problemas com fundamentação teórica e um bom uso das características de cada sistema. Fornece 
ainda um grau de conhecimento que diferencia profissionais com uma formação adequada dos 
demais. 
Fique atento(a) e bom estudo! 
 
SUMÁRIO 
1. INTRODUÇÃO A SISTEMAS OPERACIONAIS ....................................................................3 
Objetivos .............................................................................................................3 
Conceitos Fundamentais de Sistemas Operacionais ...........................................................3 
Classificação de Sistemas Operacionais .........................................................................4 
Estruturas dos Sistemas Operacionais Modernos...............................................................6 
Interrupções .........................................................................................................8 
Conceitos de Concorrência ...................................................................................... 10 
Síntese do Capítulo ............................................................................................... 11 
Exercícios de Revisão ............................................................................................. 11 
2. PROCESSOS ...................................................................................................... 12 
Objetivos ........................................................................................................... 12 
Conceito ............................................................................................................ 12 
Componentes ...................................................................................................... 12 
Ciclo de Vida de um Processo ................................................................................... 13 
Estados .............................................................................................................. 14 
Tipos ................................................................................................................. 15 
Síntese do Capítulo ............................................................................................... 15 
Exercícios de Revisão ............................................................................................. 15 
3. THREADS ......................................................................................................... 16 
Objetivos ........................................................................................................... 16 
Conceito ............................................................................................................ 16 
Estrutura ............................................................................................................ 16 
Tipos ................................................................................................................. 18 
Síntese do Capítulo ............................................................................................... 20 
Exercícios de Revisão ............................................................................................. 20 
4. COMUNICAÇÃO ENTRE PROCESSOS .......................................................................... 21 
Objetivos ........................................................................................................... 21 
Motivação ........................................................................................................... 21 
Entendendo uma Condição de Corrida ........................................................................ 22 
Como Evitar a Ocorrência de uma Condição de Corrida ................................................... 24 
Síntese do Capítulo ............................................................................................... 26 
Exercícios de Revisão ............................................................................................. 26 
5. SINCRONIZAÇÃO ENTRE PROCESSOS ......................................................................... 28 
Objetivos ........................................................................................................... 28 
Mecanismos de Exclusão Mútua ................................................................................. 28 
Mecanismos Baseados em Algoritmos .......................................................................... 28 
Mecanismos Baseados em Características de Hardware .................................................... 29 
Mecanismos Baseados em Primitivas do Sistemas Operacional ........................................... 30 
Detalhando os Semáforos ........................................................................................ 31 
Sincronização Condicional Utilizando Semáforos ............................................................ 31 
Síntese do Capítulo ............................................................................................... 34 
Exercícios de Revisão ............................................................................................. 34 
6. GERÊNCIA DE TEMPO DE CPU ................................................................................. 36 
Objetivos ........................................................................................................... 36 
Escalonamento .................................................................................................... 36 
Estratégias de Escalonamento .................................................................................. 36 
Tipos de Estratégia ............................................................................................... 37 
Critérios de Escalonamento ..................................................................................... 37 
Critérios de Escalonamento ..................................................................................... 38 
Síntese da Aula .................................................................................................... 40 
Exercícios de Fixação............................................................................................. 40 
7. GERÊNCIA DE ALOCAÇÃO DE MEMÓRIA ...................................................................... 42 
Objetivos ........................................................................................................... 42 
Conceito ............................................................................................................ 42 
Estratégias de Organização Lógica do Espaço de Memória ................................................ 42 
Síntese do Capítulo ............................................................................................... 46 
Exercícios de Fixação............................................................................................. 46 
8. MEMÓRIA VIRTUAL .............................................................................................. 48 
Objetivos ........................................................................................................... 48 
O que é Memória Virtual? ........................................................................................ 48 
Endereçamento ....................................................................................................48 
Características, Vantagens e Desvantagens .................................................................. 48 
Características de Implementação ............................................................................. 49 
Paginação em Memória Virtual ................................................................................. 49 
Síntese do Capítulo ............................................................................................... 51 
Exercícios de Revisão ............................................................................................. 52 
9. DISPOSITIVOS DE ENTRADA E SAÍDA ......................................................................... 53 
Objetivos ........................................................................................................... 53 
Subsistemas de Entrada e Saída ................................................................................ 53 
Detalhando os Componentes .................................................................................... 54 
Classificação dos Dispositivos ................................................................................... 55 
Síntese do Capítulo ............................................................................................... 55 
Exercícios de Fixação............................................................................................. 55 
10. SISTEMA DE ARQUIVOS ..................................................................................... 57 
Objetivos ........................................................................................................... 57 
Conceitos de Arquivos e Diretórios ............................................................................ 57 
Métodos de Alocação ............................................................................................. 58 
Gerência de Espaço Livre ........................................................................................ 59 
Proteção de Acesso ............................................................................................... 60 
Síntese do Capítulo ............................................................................................... 60 
Exercícios de Fixação............................................................................................. 60 
 
 
 3 INTRODUÇÃO A SISTEMAS OPERACIONAIS 
1. INTRODUÇÃO A SISTEMAS OPERACIONAIS 
Objetivos 
 Identificar as funções e os componentes de um sistema operacional; 
 Diferenciar os tipos de sistemas operacionais existentes; 
 Identificar os modelos de estruturas existentes de sistemas operacionais; 
 Compreender os modos de acesso e o funcionamento de uma chamada ao sistemas (system 
call); 
 Compreender a importância e o funcionamento dos mecanismos de interrupção. 
 Compreender os fundamentos de sistemas concorrentes. 
Conceitos Fundamentais de Sistemas Operacionais 
O que é um sistema operacional? 
Sistema Operacional é um conjunto de programas (software) responsável por: 
 Fazer a interface com os usuários; 
 Gerenciar recursos; 
 Fazer a interface com o hardware. 
 
 
 
Cada parte (módulo ou função) de um sistema operacional é responsável pelo gerenciamento de um 
recurso específico. 
Que recursos são esses? 
 Tempo de CPU; 
 Espaço em memória; 
 Espaço em disco; 
 Acesso aos dispositivos de comunicação; 
 Bibliotecas de software. 
Funções adicionais: contabilização de uso, segurança de acesso, auditoria. 
O sistema operacional é o intermédio entre o usuário e o hardware. 
 4 INTRODUÇÃO A SISTEMAS OPERACIONAIS 
Gerenciar recursos é garantir a utilização compartilhada do recurso sem que ocorram erros que 
possam gerar instabilidade ou falha no sistema. 
Na visão do usuário, o sistema operacional fornece: 
 Acesso ao sistema; 
 Possibilidade de criar e gerir arquivos e diretórios; 
 Ambiente para execução de programas; 
 Acesso aos dispositivos de E/S; 
 Acesso ao conteúdo de arquivos; 
 Detecção de erros. 
Classificação de Sistemas Operacionais 
A classificação é utilizada como uma forma sintética de apresentar, em poucas palavras, as 
características de um sistema operacional. 
 
Conhecer os conceitos envolvidos em uma classificação evita o uso incorreto da nomenclatura 
técnica e sintetiza de forma unívoca as características de um sistema. 
Sistemas Monotarefa x Sistemas Multitarefa 
Definem a capacidade de gerenciar mais de uma tarefa ao mesmo tempo. 
 
 Sistemas Monotarefa: Admite e gerencia apenas uma tarefa em execução. 
Exemplo: DOS. 
 Sistemas Multitarefa: Admite e gerencia várias tarefas em processamento concorrente. 
Exemplos: Windows 7, Windows XP, Lixux, MacOS. 
 
Sistemas Monotarefa x Sistemas Multitarefa 
Sistemas Monousuário x Sistemas Multiusuário 
Sistemas Monoprocessados x Sistemas Multiprocessados 
Atenção 
Estamos falando de gerenciamento, e não de execução. 
 5 INTRODUÇÃO A SISTEMAS OPERACIONAIS 
Sistemas Monousuário x Sistemas Multiusuário 
Definem a capacidade de gerenciar mais de um usuário ao mesmo tempo, compartilhando recursos 
de software e hardware. 
 Sistemas Monousuário: Admite e gerencia apenas um usuário - não permite que mais de um 
usuário esteja “logado” simultaneamente. 
Exemplos: Windows XP, Windows NT (exceto versão com Terminal Server). 
 Sistemas Multiusuário: Admite e gerencia vários usuários - permite que mais de um usuário 
esteja “logado” simultaneamente. 
Exemplos: Linux, VMS. 
 
Sistemas Monoprocessados x Sistemas Multiprocessados 
Possuem capacidade de reconhecer e gerenciar computadores com mais de um processador. 
 Sistemas Monoprocessados: Somente reconhecem e utilizam um processador. 
Exemplo: Windows 98. 
 Sistemas Multiprocessados: Reconhecem e utilizam mais de um processador. 
Exemplos: Windows XP, Windows Vista, Windows 7, Linux. 
 
Outros Sistemas com Finalidades Específicas 
 Sistemas de Tempo Real: Sistemas que possuem um forte vínculo com o tempo. O resultado 
só é considerado correto se a execução acontecer no tempo previsto. 
O sistema deve garantir que uma tarefa possua todos os recursos necessários para sua 
execução em um intervalo de tempo pré-definido. 
 
 Sistemas Embarcados: Sistemas inseridos em produtos com funções específicas como, por 
exemplo, telefones celulares. 
 
Atenção 
Todo sistema operacional multiusuário é obrigatoriamente multitarefa, pois cada 
usuário representa, no mínimo, uma tarefa para ser executada. 
Nota 
Sistemas com suporte a multiprocessamento podem executar mais de uma 
tarefa ao mesmo tempo; uma em cada processador. 
Atenção 
Não se trata de velocidade de processamento, e sim de garantia 
de tempo de resposta. 
Atenção 
Nem todo dispositivo eletrônico possui um microcontrolador, e nem todo 
aparelho com microcontrolador possui um sistema operacional. 
 6 INTRODUÇÃO A SISTEMAS OPERACIONAIS 
Estruturas dos Sistemas Operacionais Modernos 
Um velho conhecido pelos usuários de microcomputadores é a famosa “tela azul”. Quem já utilizou 
sistemas operacionais antigos, como o Windows 95, certamente já se deparou com este problema. A 
“tela azul” era de fato uma violação de acesso que tornava o sistema instável. 
A partir do 80386, esse problema foi solucionado em termos de hardware através da possibilidade 
de 2 modos de execução: o modo protegido e o modo real. Ficava a cargo do sistema operacional a 
comutação entre esses dois modos por questões de compatibilidade. 
A instabilidade evidenciada pela “tela azul” tem razões históricas. Os primeiros processadores da 
linha x86 possuíam um único modo de operação: o modo real. Dessa forma, todas as operações 
poderiam ser executadasdiretamente pelas aplicações que, ao produzir erros, geravam panes no 
sistema. 
 
Modo Usuário x Modo Kernel 
As aplicações são executadas em modo usuário, ou seja, modo que não possui privilégios para 
operações que coloquem o sistema em risco tais como escrever no disco, criar novas tarefas etc. 
Quando essas aplicações precisam executar tarefas críticas, é necessário que haja uma mudança 
para modo Kernel (núcleo do sistema operacional, responsável pelas tarefas críticas do sistema). 
Essa mudança ocorre através de uma “system call” ou chamada ao sistema. 
 
Voltando à “tela azul”: As aplicações podiam executar diretamente as funções do kernel sem a 
proteção da mudança de modo, ou seja, o erro acontecia após a execução de uma função do kernel. 
Com a mudança de modo, se a execução não for segura, a aplicação será impedida de continuar a 
execução e o sistema permanecerá estável. 
Tipos de Estrutura 
Os sistemas são classificados em relação às atribuições do kernel e a relação entre seus módulos em 
monolíticos, camadas e microkernel. 
Os sistemas modernos são divididos em dois grandes grupos: arquitetura monolítica e microkernel. A 
diferença entre elas está nas atribuições do núcleo do sistema operacional, denominado KERNEL. 
Chamadas ao sistema (System Call) 
Mecanismo responsável pela mudança de modo usuário para modo kernel. Ao invés de executar 
diretamente funções do kernel a aplicação executa uma função intermediária que verifica se o 
acesso ao kernel é seguro e, só então, completa a operação. 
 7 INTRODUÇÃO A SISTEMAS OPERACIONAIS 
Essa característica é muito importante no projeto de um Sistema Operacional e foi alvo de discussão 
entre dois grandes nomes da computação: Andrew Tanenbaum e Linus Torvalds. 
Para mais informações sobre o motivo da discussão, leia o texto a seguir: Tanenbaum x Torvalds. 
De um lado, Torvalds defendia um kernel monolítico por ser mais rápido e, de outro, Tanenbaum 
defendia o microkernel pela elegância e facilidade de adaptação e substituição de módulos. Quem 
ganhou? Os dois. 
Andrew Tanenbaum (Microkernel) x Torvalds (Monolítico) 
Arquitetura Monolítica 
Todo o kernel é compilado e “linkado” em um único bloco, tornando o código eficiente, porém de 
difícil manutenção. A inclusão de um módulo requer que todo o kernel seja recriado. 
 
 
Arquitetura Microkernel 
Somente as funções críticas fazem realmente parte do kernel. Demais funções são tratadas como 
tarefas e executam em modo usuário fazendo chamadas ao kernel quando necessário. 
Essa arquitetura simplifica a manutenção, inclusão e exclusão de módulos do sistema operacional, 
não sendo necessário gerar um novo kernel a cada modificação e nem mesmo reiniciar o 
computador para ativação e desativação do módulo. 
Nota 
O kernel do Linux incorporou características modulares. 
 8 INTRODUÇÃO A SISTEMAS OPERACIONAIS 
 
Interrupções 
São sinais de hardware fundamentais para a existência de sistemas multitarefa, pois provocam a 
suspensão da tarefa em execução pela ocorrência de um evento externo permitindo que outras 
tarefas compartilhem o tempo de uso do processador. 
 
 
Parte do mecanismo é executada pelo hardware (identificação do dispositivo, empilhamento dos 
registradores de sistema) e parte é feita por software através da rotina de tratamento da 
interrupção (interrupt handler). 
Atenção 
Neste caso, o que está sendo compartilhado é o TEMPO DE USO do processador, e 
não o processador em si. Cada tarefa utiliza 100% do processador. 
 9 INTRODUÇÃO A SISTEMAS OPERACIONAIS 
 
Tipos de Interrupções 
As interrupções são geradas por dispositivos de hardware e podem ocorrer de forma síncrona ou 
assíncrona. 
 Relógio (temporizador)  síncrona 
 Dispositivos de E/S (sinalização de conclusão)  assíncrona 
 Falha de hardware (paridade de memória, erro de disco, etc.)  assíncrona 
O termo interrupção é muitas vezes para qualquer atividade que suspenda a execução de uma 
tarefa, mesmo que seja solicitada pelo próprio programa. Utilizaremos, para este fim, o termo 
“estado de exceção”. 
Estados de Exceção: são provocados pela própria aplicação. 
 Estouro aritmético; 
 Divisão por zero; 
 Instrução ilegal; 
 Acesso não permitido; 
 Chamadas ao sistema. 
 
As interrupções podem acontecer de forma sequencial ou em cascata. 
 Sequencial: Uma interrupção só poderá ser atendida se nenhuma outra estiver em 
atendimento. 
 A Rotina de Serviço desabilita as interrupções. 
 Uma nova interrupção só é tratada após o retorno. 
 A interrupção pode demorar a ser tratada, o que pode, eventualmente, ocasionar 
uma perda de dados. 
 Finalizada a Rotina de Serviço de interrupção, o processador verifica por 
interrupções adicionais. 
Atenção 
Mascaramento de interrupções: Capacidade de inibir a ação de uma 
interrupção. As interrupções de segurança não podem ser mascaradas. 
 10 INTRODUÇÃO A SISTEMAS OPERACIONAIS 
 
 Cascata: Uma interrupção pode interromper a ação de uma rotina de tratamento de outra 
interrupção. 
 Interrupções têm prioridade. 
 Interrupções com alta prioridade interrompem rotinas de serviço de interrupções de 
menor prioridade. 
Exemplos de prioridade: 
 Impressora - 
 Disco 
 Comunicação + 
 
Conceitos de Concorrência 
Compartilhar recursos significa que diferentes usuários ou programas usam os recursos de forma 
concorrente. 
Como administrar recursos compartilhados? 
Os recursos são limitados e, assim, o uso dos mesmos pelos diferentes programas ou usuários precisa 
ser controlado e administrado de forma a evitar possíveis conflitos ou uma alocação por tempo 
indeterminado de algum recurso. 
Concorrência: 
 É a capacidade de execução concorrente de 
tarefas permitindo um melhor aproveitamento 
de recursos. 
 11 INTRODUÇÃO A SISTEMAS OPERACIONAIS 
 Uma tarefa pode deixar a CPU por vontade própria, quando precisa aguardar por um 
recurso, ou por uma interrupção. 
 Em particular, uma interrupção de temporizador provoca a substituição da tarefa em 
execução criando uma alternância entre as tarefas. 
 
Síntese do Capítulo 
Você aprendeu: 
 O que é um sistema operacional e quais são suas funções. 
 Como os sistemas operacionais estão classificados. 
 Como são as estruturas dos sistemas operacionais modernos. 
 O que são modos de execução. 
 A importância das interrupções nos sistemas operacionais modernos. 
 O que é compartilhamento. 
Exercícios de Revisão 
1) São funções do sistema operacional: 
 Gerenciar recursos de hardware e fornecer um aplicativo para navegação na internet. 
 Gerenciar recursos de hardware e interface com o usuário. 
 Interface com o usuário e correção ortográfica. 
 Gerenciar recursos de software e interromper uma tarefa em execução. 
2) Para que uma aplicação execute instruções privilegiadas deverá executar um(a): 
 Arquivo específico para gerenciamento de hardware. 
 Interrupção de hardware. 
 Solicitação ao administrador do sistema. 
 Chamada ao sistema. 
Soluções 
1) Gerenciar recursos de hardware e interface com o usuário. 
2) Chamada ao sistema. 
 
 
Atenção 
A alternância entre as tarefas pode dar a impressão de execução 
simultânea de tarefas, mas não é o que ocorre. 
 12 PROCESSOS 
2. PROCESSOS 
Objetivos 
 Compreender os conceitos de processos; 
 Identificar os estados de um processo; 
 Compreender como acontece a mudança de estado. 
Conceito 
Processo é a instância de um programa em execução. É a unidade de 
carga e alocação de uma tarefa. 
Em sistemas mais antigos, também é considerado a unidade de 
execução, mas veremos, na próxima aula, que isso não é verdadenos 
sistemas modernos. 
 Cada processo é único em um sistema 
 O processo é criado quando o programa é carregado para a 
memória principal para ser executado. 
 Um programa é carregado para a memória onde aloca uma 
determinada área para código e dados. 
Componentes 
Um processo é dividido em partes que são armazenadas na memória em uma estrutura denominada 
PCB (Process Control Block). 
Identificação Programa 
Registrador SP 
Registrador PC 
Registradores de uso geral 
Informações de escalonamento 
Relação de arquivos abertos 
Privilégios 
Espaço de endereçamento de memória 
 
 Programa: código executável. 
 Contexto de hardware: características da execução. Armazena o conteúdo dos 
registradores responsáveis pelo controle dos registradores responsáveis pelo controle de 
execução do programa. 
 Contexto de software: características e limites do ambiente onde o programa será 
executado. Fazem parte do contexto de software: identificação, quotas, privilégios, 
identificação do usuário dono do processo. 
 Espaço de endereçamento de memória: área de memória alocada para execução do 
programa. 
 13 PROCESSOS 
Ciclo de Vida de um Processo 
 
Criação 
Quando um processo é criado? 
 Quando executamos um programa. 
 Quando um usuário acesso o sistema. 
 Quando um processo gera um processo-filho. (Exemplo: mouse-over em processo-filho com o 
seguinte texto: processo gerado internamente por outro processo) 
Etapas de criação: 
 Atribui um identificador único. 
 Aloca uma entrada na tabela de processos. 
 Aloca espaço para o processo. 
 Inicializa o PCB (Process Control Block). 
 Coloca o processo na fila apropriada. 
 Cria estruturas auxiliares. 
Execução 
A execução concorrente de processos leva às seguintes situações: 
 Troca de contexto; 
 Troca de modo de execução. 
Trocas de Contexto 
Substituição do processo em execução. 
Causas: 
 Interrupção: Reação a um evento assíncrono. 
 Trap: Associado a erro na execução de uma instrução. 
 System Call: Requisição explícita. 
Ações: 
 Salvo o estado do processador. 
 Muda o estado do processador. 
 Muda o processo para a fila apropriada. 
 Seleciona o novo processo. 
 Atualiza o PCB do novo processo. 
 Modifica os mapeamentos de memória. 
 Restaura o estado do processador. 
Trocas de Modo de Execução 
É uma troca menor e mais rápida que a troca de contexto. O estado do processo corrente não é 
alterado. 
Criação -> Execução -> Término 
 14 PROCESSOS 
Ocorre geralmente quando o processador, ao final de um ciclio de interrupção, detecta a existência 
de interrupção pendente. Nesses casos, o processador realiza os seguintes passos: 
 Salva o contexto do processo em execução. 
 Carrega o PC com o endereço inicial da rotina de interrupção. 
 Troca o modo de execução de usuário para kernel (privilegiado) para que a instruções 
privilegiadas do tratador de interrupções possam ser executadas. 
Término 
 Quando acaba o programa que está em execução. 
 Quando ocorre um erro. 
 Quando é forçado pelo usuário a terminar. 
Estados 
No que diz respeito aos estados de um processo, o diagrama mais comum possui cinco estados e é 
suficiente para o entendimento dos demais estados intermediários. Observe-o abaixo: 
 
 Novo: Estado de admissão onde são geradas as estruturas de dados e alocado espaço para o 
processo. O processo recém-criado é configurado como "pronto". 
 Pronto: Após a admissão, o processo está pronto para ser executado, mas aguarda sua vez. 
 Executando: Apenas um processo por vez pode estar nesse estado. Após ser selecionado, o 
processo recupera seu contexto que é guardado após ter sua execução interrompida. 
 Bloqueado: Um processo é bloqueado quando precisa aguardar um recurso. Esse bloqueio é 
síncrono, ou seja, sempre que o programa executar um determinado trecho, o bloqueio 
acontecerá. (Exemplo: acesso a disco) 
 Fim: Ao terminar a execução do processo, as estruturas criadas são removidas e a área 
alocada é liberada. 
 
 
Atenção 
A substituição do processo em execução é denominada troca de contexto. Quando o 
processo é interrompido, seu contexto é armazenado. Quando o processo retorna 
para o estado de execução, seu contexto é recuperado. 
Atenção 
O sistema operacional não pode provocar troca de contexto, uma vez que é um 
software e para gerar uma ação precisaria estar em execução. 
 15 PROCESSOS 
 
Tipos 
Os processos podem ser classificados em função de características de execução: 
 Processos CPU-Bound: São processos que passam a maior parte do tempo em estado de 
execução ou pronto. Realiza poucas operações de E/S. 
 Processos I/O-Bound: São processos que passam a maior parte do tempo em estado de 
espera, pois realizam um elevado número de operações de E/S. 
 Processos em Foreground: Permitem a comunicação direta do processo com o usuário 
durante sua execução. Em geral, o canal de entrada está associado ao teclado/mouse e de 
saída a um monitor. 
 Processos em Background: Processos em que não existe interação direta com o usuário. 
A estratégia utilizada para ordenar a execução de processos pode variar em função dos tipos de 
processo em um sistema. 
Síntese do Capítulo 
Você aprendeu: 
 O que é um processo. 
 Quais os componentes de um processo. 
 Quais são os estados de um processo. 
 Como ocorre a mudança de estado de um processo. 
Exercícios de Revisão 
1) Sobre o conceito de processos, marque a afirmação verdadeira. 
 Processo é a mesma coisa que programa. 
 Processo é um programa que está em execução. 
 Processo é uma característica do processador. 
 Processo é um programa armazenado no disco. 
2) Pode ser responsável pela troca de contexto. 
 Operação aritmética. 
 Interrupção por tempo provocada pelo temporizador. 
 Sistema operacional. 
 Outro programa que quer executar. 
Soluções 
1) Processo é um programa que está em execução. 
2) Interrupção por tempo provocada pelo temporizador. 
 
 
Atenção 
Não é possivel haver mudança de estado entre pronto e bloqueado. Se o processo 
está em estado de pronto, não está executando, logo, não poderá fazer nenhuma 
requisição. 
 16 THREADS 
3. THREADS 
Objetivos 
 Compreender os conceitos de threads. 
 Entender as diferenças entre um sistema operacional baseado em threads e outro baseado 
em processos. 
 Diferenciar os tipos de threads. 
 Identificar as oportunidades para uso de threads. 
Conceito 
Threads são fluxos de execução distintos dentro de um mesmo processo, um executável. 
Atualmente, uma thread é considerada a unidade de execução de um sistema ao invés do processo 
como um todo. 
Um processo pode ter uma ou mais threads. Veja o exemplo. 
 
Estrutura 
Um processo que contenha threads é composto pelo seu PCB (Process Control Block) e pelos blocos 
específicos para cada thread que contém uma estrutura de contexto de software e uma estrutura de 
contexto de hardware. 
 
Cada thread possui contextos próprios de hardware e software, porém compartilham o mesmo 
espaço de endereçamento alocado ao processo. 
 17 THREADS 
Vamos entender melhor. Pense em funções de um mesmo processo, onde todas as funções são 
capazes, por exemplo, de ver e alterar o conteúdo de variáveis globais. 
Vamos exemplificar com o seguinte trecho de programa: 
 
Como a variável x é visível por todas as funções, o valor final da variável x será 12. As funções 
enxergam a mesma área de memória. 
Nem toda função é uma thread. Quando utilizamos uma função, o módulo que fez a chamada deve 
aguardar o término da função para continuar. No exemplo, o resultado abaixo somenteserá exibido 
após o retorno da função. 
 
Se fosse uma thread (veremos mais tarde como criar uma), a exibição poderia ocorrer antes que a 
função terminasse. 
 
Uma thread pode ser imaginada como uma função de um programa que tem "vida própria" para a 
execução, mas não pode ser criada isoladamente. 
Para mais informações, leia o texto a seguir (Motivação para o uso de threads). 
Motivação Para o Uso de Threads 
Imagine a seguinte situação: 
Precisamos armazenar os tijolos produzidos por um equipamento que, ao término da fabricação de 
um tijolo, espera que haja alguém no final da esteira para pegá-lo. 
Se o procedimento de pegar o tijolo e levá-lo até o depósito for feito por uma única pessoa, 
provavelmente diversos tijolos caíram no chão enquanto essa pessoa leva um dos tijolos para o 
depósito. 
O que fazer? Se houver uma pessoa que fique na saída da esteira retirando os tijolos e os 
entregando para seus assistentes, a chance de que um tijolo caia no chão será muito reduzida, pois 
cada tijolo será entregue em um período de tempo constante ao assistente que o levará ao 
Atenção 
Pode gerar erros? A exibição poderia mostrar o resultado antes da função terminar. 
Esse tipo de problema será tratado em Comunicação entre Processos e é conhecido 
como condição de corrida. Calma! Tem solução. 
 18 THREADS 
depósito. O encarregado de pegar os tijolos está “a postos” em um tempo conhecido, permitindo, 
assim, calibrar o equipamento. 
Pode haver muitos assistentes congestionando o caminho? Sim, identificando que o caminho não é 
suficiente para a demanda. 
Pensando agora em uma aplicação, como um servidor para transferências de arquivos. Uma 
threadfica “a postos” para receber requisições que serão entregues a novas threadscriadas sob 
demanda para atender a cada uma das requisições. A cada requisição, uma nova threadé criada e a 
threadprincipal retorna imediatamente para aguardar novas requisições, evitando (ou reduzindo 
muito) o descarte de mensagens. Poderemos ter várias threadssendo executadas concorrentemente, 
podendo gerar um tempo de resposta maior, mas as requisições não serão perdidas. 
Só para registrar: esse tipo de servidor é chamado de servidor concorrente. 
As threads contribuem para o melhor uso dos recursos com: 
 Melhor aproveitamento da fatia de tempo: Permite que a execução do processo continue 
mesmo que algumas de suas Threads estejam bloqueadas. 
 Compartilhamento de Recursos: Threadscompartilham memória e outros recursos do 
processo. 
 Economia de tempo de gerenciamento: Threadssão mais econômicas de serem criadas e o 
custo da troca de contexto é menor. Todas as threadsde um mesmo processo compartilham 
o mesmo espaço de endereçamento. 
 Utilização de Múltiplos Processadores: Cada Threadpode ser executada em paralelo em um 
processador distinto. 
Tipos 
As threads podem ser classificadas em: 
 Threads de Kernel: As threads de Kernel são criadas e gerenciadas pelo kernel do sistema 
operacional, mas não podem ser diretamente utilizadas pelo usuário. 
O suporte a múltiplas threads é uma característica do sistema operacional. 
 Threads de Usuário: As threads de usuário facilitam aspectos de portabilidade e são criadas 
e gerenciadas por uma biblioteca no nível do usuário. 
O Kernel não enxerga essas threads e, por esse motivo, não podem ser gerenciadas 
individualmente. 
 
Processo Leve ou LWP 
A combinação entre os dois tipos de threads promove uma associação entre threads de usuário e de 
Kernel, porém a forma de associação depende do sistema operacional. 
Exemplos de bibliotecas de threads 
POSIX Pthreads, Win32 threads, Java threads. 
 19 THREADS 
 
 
Vamos conhecer agora os modelos de associação entre threads de usuário e de kernel. 
 
Muitos para um: 
 Gerenciamento da thread é feito no espaço do 
usuário; 
 Usadas em sistemas que não suportam threads; 
 Uma thread bloqueada bloqueia todo o 
processo. 
 
Um para um: 
 Cada thread de usuário é mapeada para uma 
Kernel thread; 
 Criar uma user thread requer a criação de uma 
thread de Kernel; 
 Algumas implementações restringem o número 
de threads suportada pelo sistema; 
 É utilizada pelo Windows e pelo Linux. 
Atenção 
Esta é a solução mais utilizada nos sistemas modernos. 
Pois o uso combinado de threads de usuário e de Kernel permite melhor 
aproveitamento do tempo de CPU, possibilidade de paralelismo e facilidade de 
programação. 
 20 THREADS 
 
Muitos para muitos: 
 Permite que várias threads de usuário sejam 
mapeadas para um número menor ou maior de 
threads de Kernel dinamicamente; 
 Permite que o SO crie um número suficiente de 
threads de Kernel. 
Síntese do Capítulo 
Você aprendeu: 
 O que é uma thread. 
 Quais os tipos de threads disponíveis e suas características. 
 As vantagens e desvantagens do uso de threads. 
Exercícios de Revisão 
1) Uma thread é a execução de um fluxo de processamento, isto significa que um processo pode 
ser composto por várias threads. Neste contexto é correto afirmar que: 
 Uma thread é equivalente a um processo filho, pois a execução de cada thread é 
independente. 
 Uma thread pode ser compartilhada por vários processos, pois o espaço de endereçamento é 
compartilhado. 
 Uma thread pode existir sem estar associada a um processo. 
 Threads de um mesmo processo podem ter suas execuções independentes e compartilham 
espaço de endereçamento de memória. 
2) Considere uma aplicação baseada em threads em um sistema operacional com suporte a 
threads. Se uma das threads for bloqueada por solicitar uma operação de E/S, as demais threads 
do mesmo processo: 
 Poderão continuar executando se não dependerem da thread que foi bloqueada. 
 Serão bloquedas também. 
 Não serão bloqueadas, mas ficarão aguardando o desbloqueio da thread que executou a 
operação de E/S. 
 Serão interrompidas, provocando um erro no processo. 
Soluções 
1) Threads de um mesmo processo podem ter suas execuções independentes e compartilham 
espaço de endereçamento de memória. 
2) Poderão continuar executando se não dependerem da thread que foi bloqueada. 
 
 
 21 COMUNICAÇÃO ENTRE PROCESSOS 
4. COMUNICAÇÃO ENTRE PROCESSOS 
Objetivos 
 Compreender o conceito de concorrência em sistemas multitarefa; 
 Entender os problemas gerados pelo compartilhamento de recursos; 
 Entender o conceito de condição de corrida; 
 Identificar regiões críticas em um programa; 
 Entender o que é exclusão mútua e seus mecanismos; 
 Entender os conceitos de deadlock e starvation identificando a possibilidade de ocorrência 
dessas duas situações. 
Motivação 
Processos e threads em sistemas multitarefa compartilham recursos. 
Aprendemos nos capítulos anteriores que processos e threads não executam direto, ou seja, desde o 
inicio até ao fim. Durante o tempo de execução, sofrem interrupções e ficam bloqueados 
aguardando recursos. 
Suponha que um Processo P1 está executando quando é interrompido 
pelo final da fatia de tempo. 
Outro Processo P2 será selecionado para execução e poderá querer 
utilizar o mesmo recurso que estava sendo utilizado por P1. 
E agora? 
 
Entendendo o exemplo 
Considere que as variáveis A e B, ambas iniciadas com o valor 1, são compartilhadas por duas 
threads de um mesmo processo e cada uma delas deverá executar: 
 Thread 1 Thread 2 
Linha 1 A = A * 2 B = B + 1 
Linha 2 B = B * 2 A = A + 1 
Quais serão as formas possíveis de execução? 
 22 COMUNICAÇÃO ENTRE PROCESSOS 
Caso 1 
 Thread 1 executa linha 1 e linha 2 
 Thread 2 executa linha 1 e linha 2 
 Resultado final: A = 3; B = 3 
Caso 2 
 Thread 2 executa linha1 e linha 2 
 Thread 1 executa linha 1 e linha 2 
 Resultado final: A = 4; B = 3 
Caso 3 
 Thread 1 executa linha 1 
 Thread 2 executa linha 1 e linha 2 
 Thread 1 executa linha 2 
 Resultado final: A = 3; B = 4 
Podemos perceber neste exemplo muito simples que obtivemos 3 resultados diferentes em função 
da ordem em que os processos ocorrem. Esse efeito é denominado condição de corrida. 
 
Há condição de corrida quando existem recursos compartilhados entre duas ou mais threads ou 
entre dois ou mais processos sem as devidas precauções. 
Entendendo uma Condição de Corrida 
O trecho do código que trata recursos compartilhados é denominado região crítica. 
No exemplo, ambas as threads utilizavam as variáveis A e B compartilhadas, então as duas linhas 
apresentadas formam uma região crítica. 
 
Repare que, no exemplo, a ordem de execução das threads, mesmo sem interrupção, já é suficiente 
para permitir resultados diferentes. 
A garantia de ordem de execução será alvo da próxima sessão deste capítulo. 
Condição de corrida 
Conjunto de eventos que geram resultados não determinísticos e deve 
ser evitada. 
O termo “condição de corrida” vem do fato da não previsibilidade do 
resultado de uma corrida onde a velocidade de execução de um 
processo não pode ser prevista, pois depende das atividades dos outros 
processos, da forma como o SO trata as interrupções e das estratégias 
de escalonamento adotadas. 
Região crítica 
Parte do código que trata recursos compartilhados e 
deve ser protegida de forma a garantir acesso 
exclusivo a um processo ou uma thread. 
 23 COMUNICAÇÃO ENTRE PROCESSOS 
Exemplo Prático 
Esse problema aconteceu realmente em um sistema operacional bem conhecido que utiliza uma fila 
de impressão para armazenar temporariamente os documentos que seriam impressos. Essa fila é 
implementada em uma área de memória do sistema operacional compartilhada entre todos os 
processos. 
Quando um processo deseja imprimir, deverá executar a seguinte rotina (fornecida como uma API 
do sistema operacional): 
 
 
 
Considere a seguinte situação: Processo 0 está sendo impresso e, em um determinado momento, o 
processo 1 também irá imprimir. 
1º passo: API irá ler a primeira posição livre da fila (será 1). 
2º passo: API irá incluir o arquivo na posição 1 da fila. 
3º passo: API irá atualizar a posição livre para 2. 
Voltamos para a situação inicial, só que agora utilizaremos dois processos concorrentes: Processo 0 
está sendo impresso e, em um determinado momento, o processo 1 também irá imprimir. 
1º passo: API irá ler a primeira posição livre da fila (será 1). 
2º passo: API irá incluir o arquivo na posição 1 da fila. 
3º passo: A fatia de tempo expira e ocorre uma troca de contexto, deixando a situação 
abaixo: 
 
1 
Ler posição livre da 
fila 
2 
Incluir o arquivo na 
posição indicada 
3 
Atualizar próxima 
posição livre 
API (Application Programming Interface) 
É um conjunto de rotinas para serem utilizadas por 
programas aplicativos sem que estes conheçam 
detalhes de sua implementação. 
 24 COMUNICAÇÃO ENTRE PROCESSOS 
Após a troca de contexto, o processo 2 é selecionado e também irá imprimir. Processo 2 executa a 
API de impressão para enviar um documento para a fila. 
1º passo: API irá ler a primeira posição livre da fila (será 1). 
2º passo: API irá incluir o arquivo na posição 1 da fila. 
3º passo: API irá atualizar a posição livre para 2. 
 
Para o processo 2, está tudo ok. Para o sistema operacional e para o gerenciador de impressão, está 
tudo ok, pois a primeira posição livre é realmente a posição 2. Para o processo 1, também está tudo 
ok – não houve erro; logo, não haverá registro de erro. 
Se está tudo certo, onde está o papel impresso do processo 1? "O gato comeu". 
Simplesmente sumiu sem deixar registros. Alguém já passou por isso? Se sim, agora já sabe que não 
foi culpa do usuário. É erro no código! 
Onde está o erro? 
Tanto a fila de impressão quanto a variável entrada são recursos compartilhados e este 
compartilhamento não está sendo tratado, fazendo com que em determinadas sequências de 
eventos o resultado não seja o esperado. 
Como Evitar a Ocorrência de uma Condição de Corrida 
Para garantir o acesso exclusivo a uma região crítica, será necessário utilizarmos mecanismos que 
garantam a exclusão mútua entre processos e/ou threads. 
 
Para implementação de um mecanismo de exclusão mútua, utilizaremos um protocolo de acesso e 
um protocolo de saída de uma região crítica. Esse protocolo poderá ser baseado em soluções 
algorítmicas, em características do processador ou em primitivas do sistema operacional. 
O código da estrutura ficaria: 
 
De acordo com o exemplo anterior: 
Mecanismo de Exclusão Mútua 
Solução que impede que dois ou mais processos tenham acesso a uma 
mesma região crítica, ou seja, impede acesso simultâneo a um 
determinado recurso. 
Nota: acesso simultâneo a região crítica não é a mesma coisa que 
execução simultânea. 
ENTRAR_RC() 
 Código da região crítica 
SAIR_RC() 
 25 COMUNICAÇÃO ENTRE PROCESSOS 
 
Os mecanismos que implementam a exclusão mútua podem colocar o processo que não deve ter 
acesso ao recurso em “espera ocupada” (busy wait) ou bloqueá-lo ao executar a função 
ENTRAR_RC e deverá permitir o acesso ou desbloqueá-lo ao executar a função SAIR_RC. 
 
 
Para que um mecanismo de exclusão mútua seja efetivo, deve garantir que: 
 Somente um processo por vez possa executar uma região crítica. 
 Um processo interrompido fora de uma região crítica não possa impedir que outro processo 
tenha acesso a essa região crítica. 
 Não possa haver nem deadlock nem starvation. 
 Quando não houver processo executando uma região crítica, qualquer processo que solicitar 
acesso deverá obtê-lo imediatamente. 
 Um processo deve permanecer executando uma região crítica por tempo finito. 
 Nada possa ser assumido sobre a velocidade relativa e dos processos nem o número de 
processadores. 
 
 
 
 
ENTRAR_RC() 
 Ler posição livre da fila 
 Incluir o arquivo na posição indicada 
 Atualizar próxima posição livre 
SAIR_RC() 
Espera Ocupada 
O processo em espera ocupada continua no estado de pronto e, a cada 
execução, tenta continuamente o acesso à região crítica. Esse 
procedimento consome tempo de CPU desnecessariamente. 
Bloqueio 
O processo será bloqueado e, é acordado quando 
o acesso a região crítica estiver liberado. 
Deadlock 
(Impasse) Situação em que dois ou mais processos entram em um impasse 
aguardando um recurso que nunca estará disponível. Essa situação só é 
desfeita por um agente externo (Exemplo: interromper um dos processos). 
Starvation 
Condição em que não há garantia de execução de um processo. 
A execução pode ser adiada por um tempo indeterminado. 
Atenção 
Atenção para as condições de 
ocorrência de deadlock 
 26 COMUNICAÇÃO ENTRE PROCESSOS 
Condições necessárias: 
 Exclusão mútua; 
 Posse e espera (hold & wait); 
 Não preempção. 
Condição suficiente: 
Espera circular: 
 Os processos P1 e P2 precisam dos recursos R1 e R2 para executar. 
 P1 está de posse de R1 e aguardando R2. P1 não executará enquanto não obtiver R2; logo, 
não liberará R1. 
 P2 está de posse de R2 e aguardando R1. P2 não executará enquanto não obtiver R1; logo, 
não liberará R2. 
 
 
Síntese do Capítulo 
Você aprendeu: 
 O que é concorrência entre processos. 
 Quais os efeitos de uma condição de corrida. 
 Como uma condição de corrida pode ser evitada. 
 Os conceitos de deadlock e starvation 
Exercícios de Revisão 
1) A condição de corrida é derivada de: Aplicações concorrentes que não garantem exclusão mútua às regiões críticas. 
 Aplicações baseadas em threads. 
 Sistemas operacionais sem suporte à múltiplas threads. 
 Aplicações em sistemas monotarefa que tentam executar ao mesmo tempo. 
 27 COMUNICAÇÃO ENTRE PROCESSOS 
2) Preciso de giz e apagador para a aula. Peguei a caixa de giz, mas parei para conversar. Ao 
tentar pegar o apagador fiquei sabendo que outro professor, que só daria aula no segundo 
tempo, pegou o apagador e aguardava a caixa de giz que não estava sobre a mesa. Não sabia 
quem era o outro professor então fiquei esperando que fosse devolvido. Como iria ter aula no 
segundo tempo, resolvi guardar o giz e esperar o apagador. Esta situação retrata: 
 Uma condição de corrida. 
 Um deadlock em função da exclusão mútua no acesso aos dois recursos. 
 Um evento que será solucionado assim que terminar a aula. 
 Um deadlock que poderá ser solucionado indo em busca do apagador e arrancando-o da mão 
do professor. 
Soluções 
1) Aplicações concorrentes que não garantem exclusão mútua às regiões críticas. 
2) Um deadlock em função da exclusão mútua no acesso aos dois recursos. 
 
 
 28 SINCRONIZAÇÃO ENTRE PROCESSOS 
5. SINCRONIZAÇÃO ENTRE PROCESSOS 
Objetivos 
 Aprender o funcionamento dos principais mecanismos de exclusão mútua para acesso a uma 
região crítica. 
 Aprender como processos podem ser sincronizados para garantir uma determinada ordem de 
execução. 
 Entender o problema do produtor/consumidor 
Mecanismos de Exclusão Mútua 
A utilização de mecanismos de exclusão mútua é necessária para impedir o acesso a uma região 
crítica por mais de um processo evitando, assim, condições de corrida. 
Os mecanismos estão divididos em três categorias baseados em: 
 Algoritmos; 
 Características de hardware; 
 Primitivas do sistema operacional. 
A implementação de um mecanismo de exclusão mútua implica a utilização de um protocolo de 
acesso à região crítica e um protocolo de saída da região crítica. 
 
Mecanismos Baseados em Algoritmos 
A primeira abordagem baseada em algoritmos possui uma estrutura muito simples onde uma variável 
compartilhada determina se a região crítica está ou não livre. Essa solução possui diversas 
limitações, como veremos a seguir. 
Considere a variável global vez e os processos P0 e P1 disputando uma região crítica: 
Processo 0 
while turn = 0 do { } 
 <RC> 
vez = 1 
Processo 1 
while turn = 1 do { } 
 <RC> 
vez = 0 
 
 ENTRAR_RC 
 
 SAIR_RC 
Um dos processos permanece em espera ocupada até que o outro saía da região crítica executando, 
altere o valor da variável vez permitindo que o outro processo saia do loop e execute a região 
crítica. 
Essa abordagem possui diversos incovenientes: 
 É baseada em espera ocupada. 
 Processos se alternam no uso de suas respectivas RCs, fazendo com que o tempo de 
execução seja ditado pelo processo mais lento. 
 Somente pode ser utilizada por dois processos. 
ENTRAR_RC 
 Acesso ao recurso compartilhado 
SAIR_RC 
 29 SINCRONIZAÇÃO ENTRE PROCESSOS 
 Se um dos processos falhar (abortar, por exemplo), o outro jamais poderá entrar em sua RC 
novamente, pois a variável vez não será alterada, contrariando uma das regras de 
implementação de mecanismos de exclusão mútua. 
Diversos algoritmos foram propostos, porém, até a quarta versão, esses algoritmos apresentavam 
problemas que feriam os princípios de exclusão mútua. 
A primeira solução que garantiu a exclusão mútua entre dois processos foi proposta por Dekker e 
possui uma lógica bastante complexa. Esse algoritmo foi simplificado posteriormente por Peterson 
generalizando o código para n processos. 
Veremos a seguir o Algoritmo de Peterson. 
Algoritmo de Peterson 
Apresenta uma solução para dois processos que pode ser generalizada para N processos. 
1. Antes de acessar a região crítica, o processo sinaliza esse desejo através de uma variável 
booleana flag. 
2. Porém o processo cede o uso do recurso ao outro processo indicado pela variável vez. 
3. Em seguida, o processo executa um loop até a obtenção da variável vez. 
Processo 0 
flag[0] = true 
vez = 1 
while flag[1] and vez = 1 { } 
 <RC> 
flag[0] = false 
Processo 1 
flag[1] = true 
vez = 0 
while flag[0] and vez = 0 { } 
 <RC> 
flag[1] = false 
 
 
 
 ENTRAR_RC 
 
 SAIR_RC 
Mecanismos Baseados em Características de Hardware 
São mecanismos que utilizam determinadas instruções do processador para a implementação de 
exclusão mútua. Iremos estudar duas soluções. 
Inibir Interrupções 
É a solução mais simples para o problema de exclusão mútua, pois permite que um processo 
desligue o recebimento de interrupções antes da execução de uma região crítica, impedindo a troca 
de contexto. As interrupções são novamente habilitadas após o término da região crítica. 
Nesse exemplo, serão utilizadas as instruções da família de processadores x86 para desligar (cli) e 
ligar(sti) as interrupções: 
CLI 
 <RC> 
STI 
 ENTRAR_RC 
 
 SAIR_RC 
Essa solução apresenta alguns problemas: 
 Não habilitar as interrupções por erro de programação (só desligando o computador!); 
 Como somente as interrupções do processador que executou a instrução são desabilitadas, não 
garante exclusão mútua em sistemas multiprocessados. 
 Uma aplicação de usuário não deve ter privilégios para executar essa operação. 
 30 SINCRONIZAÇÃO ENTRE PROCESSOS 
Instruções TSL 
São instruções atômicas que executam a leitura de uma variável utilizada para lock, armazenando 
temporariamente seu valor em um registrador. 
Sem sofrer interrupção, essa instrução valida o conteúdo da variável e faz a alteração se necessário. 
Veja a implementação dessa instrução: 
ENTRAR_RC 
 TSL RX, LOCK 
 CMP RX, #0 
 JNE ENTRA_RC 
 RET 
 
SAIR_RC 
 MOV LOCK, #0 
 RET 
O valor 0 (zero) significa que a região crítica está livre, o valor é configurado para 1 e o acesso é 
obtido. 
Se, ao tentar o acesso, o valor está em 1, o processo permanece em espera ocupada até que o valor 
da variável seja configurado para 0 (zero) pela execução de SAIR_RC. 
Essa implementação apresenta as seguintes características: 
 Utiliza espera ocupada; 
 Possibilidade de starvation; 
 Seleção arbitrária; 
 Deve garantir exclusividade no uso do barramento para multiprocessadores. 
Mecanismos Baseados em Primitivas do Sistemas Operacional 
Nessa categoria, estão incluídas três implementações: 
 Semáforos 
 Um processo é suspenso enquanto não obtém acesso a região crítica. 
 O processo bloqueado é acordado através de um sinal. 
 Monitores 
 O monitor é composto de várias rotinas cujas variáveis somente são acessadas dentro do 
monitor. 
 Um processo entra no monitor chamando uma das suas rotinas. 
 Somente um processo entra no monitor de cada vez. 
 Troca de Mensagens 
 Utilizado também em sistemas distribuídos. 
 Utiliza primitivas send e receive para o envio e recebimento de mensagens. 
 As primitivas podem ou não bloquear o processo. 
 Considere um receive bloqueante e um send não bloqueante. O processo deve aguardar 
um send para liberar o processo bloqueado na instrução receive. 
Os semáforos serão alvo de estudo mais detalhado. 
 31 SINCRONIZAÇÃO ENTRE PROCESSOS 
Detalhando os Semáforos 
O conceito de semáforo foi proposto por Dijkstra para implementação de exclusão mútua e 
sincronização condicional entre processos. 
 
 
Regras de acesso do semáforo: 
 O semáforo deve ser inicializado com um valor não negativo. 
 A operação wait decrementa o semáforo; se o valor ficar negativo o processo é bloqueado. 
 A operação signal incrementa o semáforo;se o valor não ficar positivo o processo bloqueado 
pela operação wait é desbloqueado. 
Vamos ver um exemplo: 
Considere P0, P1 e P2 três processos que desejam acesso a uma região crítica e s o semáforo que 
controla esse acesso, inicializado com 1. 
O acesso à região crítica é dado por: 
 
P0 
Executa wait(s) então s = 0 
Região Crítica 
P1 
Executa wait(s) então s = -1 
BLOQUEIO 
P2 
Executa wait(s) então s = -2 
BLOQUEIO 
Executa signal(s) então s = -1 
Desbloqueia P1 
Região Crítica 
Executa signal(s) então s = 0 
Desbloqueia P2 
Região Crítica 
Executa signal(s) então s = 1 
Sincronização Condicional Utilizando Semáforos 
Além de permitirem a implementação de exclusão mútua, os semáforos também podem ser 
utilizados para sincronização condicional entre processos. 
Um processo é suspenso 
enquanto não obtém permissão 
para executar uma RC e é 
automaticamente "acordado" 
através de um sinal. 
Para liberar um semáforo "s" o 
processo deve executar uma 
primitiva signal(s) e para obter 
acesso a RC, via o semáforo "s", 
o processo deve executar uma 
primitiva wait(s). 
Atenção 
Um semáforo é uma estrutura de dados composta por um 
contador e uma fila que registra os processos pendentes em 
ordem de solicitação. 
O semáforo possui regras de acesso. 
Wait(s) 
 Região Crítica 
Signal(s) 
 32 SINCRONIZAÇÃO ENTRE PROCESSOS 
 
Um problema clássico que exemplifica essa função é o Problema do produtor/consumidor. 
O problema do produtor/consumidor pode ser dividido em duas etapas: 
1. O processo produtor pode produzir incondicionalmente colocando itens em um buffer área de 
armazenamento), mas o consumidor só pode consumir se existirem itens produzidos e 
armazenados no buffer. 
2. Ambos os processos sofrem restrições. Existe uma capacidade máxima para produção, limitada 
ao tamanho da estrutura de armazenamento (buffer). 
Vamos ver agora dois casos. Em ambos os casos, o acesso ao buffer deve ser exclusivo somente pode 
ser acessado por um processo de cada vez. 
Caso 1 
Problema do produtor/consumidor com buffer de armazenamento infinito. 
Neste problema, serão utilizados dois semáforos: 
 s - exclusão mútua 
 n - controle de consumo 
Inicialmente s = 1 e n = 0 
(Região crítica liberada e não há itens para consumo) 
Produtor(i) { 
 while(T) { 
 produz_item() 
 wait(s) 
 adiciona_item() 
 signal(s) 
 signal(n) 
 } 
} 
 
Consumidor(i) { 
 while(T) { 
 wait(n) 
 wait(s) 
 remove_item() 
 signal(s) 
 consome_item() 
 } 
} 
Execução 
1. Se o consumidor executar primeiro: ao executar wait(n), decrementará o valor de n (que é 
zero), ficando negativo. O processo será bloqueado. 
Sincronização Condicional 
Um processo precisa de um resultado de outro processo 
para que possa continuar sua execução. 
 33 SINCRONIZAÇÃO ENTRE PROCESSOS 
2. Quando um produtor executar, obterá acesso à região crítica incluindo um item no buffer e 
sinalizando que há itens produzidos incrementando o valor de n (signal n). Pelo algoritmo da 
função signal, o processo que está bloqueado será acordado. 
Rotina Ação Valor de N Valor de S Resultado 
C wait(n) -1 1 Bloqueado 
P wait(s) -1 0 Acessa RC 
 signal(s) -1 1 Saída da RC 
 signal(n) 0 1 Libera consumidor 
C wait(s) 0 0 Acessa RC 
 signal(s) 0 1 Libera RC 
Caso 2 
Problema do produtor/consumidor com buffer de armazenamento finito. 
Esse problema é semelhante ao anterior, porém será necessário outro semáforo de sincronização 
que controle os espaços vazios no buffer. Têm-se então três semáforos: 
 s - exclusão mútua 
 n - controle de consumo 
 v - controle de espaços vazios 
Inicialmente s = 1, n = 0 e v = tamanho do buffer 
(Região crítica liberada, não há itens para consumo e todos os espaços estão livres) 
Produtor(i) { 
 while(T) { 
 produz_item() 
 wait(v) 
 wait(s) 
 adiciona_item() 
 signal(s) 
 signal(n) 
 } 
} 
 
Consumidor(i) { 
 while(T) { 
 wait(n) 
 wait(s) 
 remove_item() 
 signal(s) 
 consome_item() 
 signal(v) 
 } 
} 
Execução 
 O produtor executará v vezes até que o buffer esteja cheio. Ao tentar executar mais uma vez, 
ficará bloqueado. 
 34 SINCRONIZAÇÃO ENTRE PROCESSOS 
 Quando um consumidor executar, obterá acesso a região crítica removendo um item no buffer e 
sinalizando que há espaço disponível incrementando o valor de v (signal v). Pelo algoritmo da 
função signal, o processo que está bloqueado será acordado. 
 Suponha que o buffer possua três posições (v=3): 
Rotina Ação Valor de N Valor de S Valor de V Resultado 
P wait(v) 0 1 2 Diminui os espaços vazios 
 wait(s) 0 0 2 Acessa RC 
 signal(s) 0 1 2 Libera RC 
 signal(n) 1 1 2 Incrementa n 
 
 wait(v) 1 1 1 Diminui os espaços vazios 
 wait(s) 1 0 1 Acessa RC 
 signal(s) 1 1 1 Libera RC 
 signal(n) 2 1 1 Incrementa n 
 
 wait(v) 2 1 0 Diminui os espaços vazios 
 wait(s) 2 0 0 Acessa RC 
 signal(s) 2 1 0 Libera RC 
 signal(n) 3 1 0 Incrementa n 
 wait(v) 3 1 -1 Bloqueado 
C wait(n) 2 1 -1 Consome um item 
 wait(s) 2 0 -1 Acessa RC 
 signal(s) 2 1 -1 Libera RC 
 signal(v) 2 1 0 Libera produtor bloqueado 
Síntese do Capítulo 
Você aprendeu: 
 Como funciona uma solução baseada em algoritmo e os problemas encontrados. 
 Como características do processador podem ser utilizadas na implementação de exclusão 
mútua. 
 O que são semáforos e como utilizá-los para garantir exclusão mútua. 
Exercícios de Revisão 
1) Considere o problema do produtor/consumidor com buffer infinito (caso 1). O que acontece se 
trocarmos de posição as linhas wait(n) e wait(s) na rotina consumidor? 
 Deadlock 
 Condição de corrida 
 Starvation do produtor 
 Não faz diferença a ordem em que estas linhas são executadas 
 35 SINCRONIZAÇÃO ENTRE PROCESSOS 
2) Considerando o problema do produtor/consumidor com buffer finito (caso 2), o que acontece se 
trocarmos de posição as linhas signal(n) e signal(s) na rotina produtor? 
 Condição de corrida. 
 Deadlock. 
 Starvation do consumidor. 
 Não faz diferença a ordem em que estas linhas são executadas. 
Soluções 
1) Deadlock. 
2) Não faz diferença a ordem em que estas linhas são executadas. 
 
 
 36 GERÊNCIA DE TEMPO DE CPU 
6. GERÊNCIA DE TEMPO DE CPU 
Objetivos 
 Entender os objetivos da gerência de um recurso. 
 Entender o que são estratégias de alocação (escalonamento) de processador. 
 Conhecer as estratégias de alocação usuais. 
 Conhecer os critérios de avaliação de desempenho de uma estratégia de escalonamento. 
Escalonamento 
Escalonar é uma função do Sistema Operacional que consiste em escolher (determinar) dentre os 
processos candidatos aquele que: 
 Ganhará acesso ao ambiente de processamento 
 Será retirado do ambiente de processamento 
 Ganhará a posse da CPU 
Esta tarefa do sistema operacional é de fundamental importância em sistemas multitarefa. 
Estratégias de Escalonamento 
A estratégia de escalonamento adotada deverá: 
 Manter o processador ocupado a maior parte do tempo possível 
 Balancear o tempo de CPU entre as tarefas 
 Oferecer tempos de resposta razoáveis 
 Maximizar a taxa de atendimento (vazão) do sistema (throughput) 
 
 
 
Atenção: 
É importante lembrar que o escalonador só pode 
executar quando o processo que estiver 
utilizando o processador for interrompido ou 
bloqueado. 
A tarefa é executada por um processo 
do sistema operacional denominadoescalonador 
(scheduler). 
Escalonador 
Processo do sistema operacional responsável por 
indicar o próximo processo que será executado dos 
que estiverem prontos para execução segundo uma 
estratégia pré-definida. 
 37 GERÊNCIA DE TEMPO DE CPU 
 
 
Tipos de Estratégia 
As políticas de escalonamento podem ser classificadas segundo a possibilidade do Sistema 
Operacional permitir ou não a interrupção de um processo em execução e substituí-lo por outro. 
 Escalonamento Preemptivo: O escalonamento preemptivo permite que um evento 
externo posso interromper o processo em execução e colocá-lo no estado de pronto para 
que outro processo possa ter direito a execução. 
 Escalonamento NÃO Preemptivo: O escalonamento não preemptivo é utilizado 
tipicamente me processamento em batch. Quando um processo está em execução 
nenhum evento externo poderá interrompe-lo. O processo só deixa o estado de 
execução se terminar ou se executar alguma instrução que o coloque em bloqueio. 
Critérios de Escalonamento 
Existem 5 critérios de escalonamento: 
 FCFS 
 Sem preempção 
 Processos são executados na ordem de chegada 
 Processos curtos podem esperar em demasia 
 Favorece processos CPU-bound 
 Processos I/O-bound esperam processo CPU-bound terminar ou ficar 
bloqueado. Quando este fica bloqueado, a CPU fica ociosa. 
 Prioridade 
 Cada processo recebe uma prioridade ao ser iniciado. 
 O escalonador seleciona o processo pronto de maior prioridade. 
 Existem várias filas “pronto”, uma para cada nível de prioridade. 
 Processos de baixa prioridade podem sofrer Starvation. 
 Uma solução possível é mudar dinamicamente a prioridade de acordo com a “idade” 
ou o histórico de execução do processo. 
 SJF 
 Política sem preempção. 
 Baseado em estimativa do tempo de execução. 
 Processo com o tempo esperado de execução menor é selecionado primeiro. 
 Favorece processos curtos em detrimento dos longos. 
 Utilizado em sistemas batch. 
 Round Robin (Circular) 
 Usa preempção baseado num “Quantum”(time slice, fatia de tempo). 
Dispatcher 
Processo do sistema operacional responsável 
pela troca de contexto. 
Atenção 
Pode haver conflito de interesses: Usuário quer 
que seu processo termine logo (tempo de 
resposta baixo) e sistema quer que vários 
processos sejam atendidos. (throughput alto). 
 38 GERÊNCIA DE TEMPO DE CPU 
 Busca democratizar a distribuição do tempo da CPU. 
 Quantum: tempo máximo que um processo pode executar sem Interrupção: 
 Muito curto: maior o overhead de escalonamento. 
 Muito longo: degenera em FCFS. 
 Múltiplas Filas com Realimentação 
 Penaliza os processos executados há mais tempo. 
 Utiliza múltiplas filas com prioridades dinâmicas**. 
 Favorece processos curtos e I/O bounded. 
 Prioridades dinâmicas. São duas: 
1º - A cada ciclo de execução a prioridade diminui. 
2º - Starvation: prioridade menor implica em quantum maior ou muita 
espera aumenta a prioridade. 
Critérios de Escalonamento 
Critério de escalonamento: conjunto de regras que indicará qual o próximo processo que será 
executado. 
FCFS - Ordem de Chegada 
 1 5 10 15 20 
P1 
P2 
P3 
P4 
P5 
 
Round Robin 
 1 5 10 15 20 
P1 
P2 
P3 
P4 
P5 
 
SJF - Processo Mais Curto 
 1 5 10 15 20 
P1 
P2 
P3 
P4 
P5 
 39 GERÊNCIA DE TEMPO DE CPU 
Atividade Proposta 
Calcule o tempo estimado de cada resposta. Para simplificar os cálculos serão desconsiderados os 
tempos de troca de contexto e a diferença de tempos entre as inserções de cada processo. 
ID do processo (em ordem) Tempo estimado 
A 200 
B 100 
C 50 
D 20 
Considerações importantes para o cálculo de tempo de resposta 
1) FCFS: Computar a soma dos tempos de espera considerando a ordem de chegada e de 
processamento . Para fins de simplificação pode-se considerar que a diferença do instante de 
criação de cada processo é nula. 
2) Prioridade: Não é utilizado sozinho. Para fins de exercício é semelhante ao FCFS porém a ordem 
de execução é dada pela prioridade e não pela ordem de chegada. 
3) SJF: Também é não-preemptivo e a ordem de execução é dada pelo tamanho estimado do 
processo (o menor primeiro). 
4) Round Robin (Circular): Os processos são atendidos na ordem de chegada mas após atingirem o 
tempo máximo permitido (fatia de tempo) são recolocados no final da fila. O retorno de uma 
operação de E/S pode alterar a ordem de execução. (Calcule do tempo de resposta para as 
estratégias FCFS, Round Robin e SJF. Para simplificar os cálculos serão desconsiderados os 
tempos de troca de contexto e a diferença de tempos entre as inserções de cada processo). 
5) Múltiplas filas com realimentação: Cada processo é inicialmente colocado na fila de maior 
prioridade e menor fatia de tempo. Ao término da fatia é recolocada na fila com prioridade 
menor que a primeira mas com uma fatia de tempo maior e assim sucessivamente (depende do 
numero de filas). Ao executar uma operação de E/S o processo retorna a fila onde estava. 
Soluções 
 FCFS 
ID do processo (em ordem) Tempo estimado Tempo de resposta 
A 200 200 
B 100 300 (esperou 200) 
C 50 350 (esperou 300) 
D 20 370 (esperou 350) 
 SJF 
ID do processo (em ordem) Tempo estimado Tempo de resposta 
D 20 20 
C 50 70 (esperou 20) 
B 100 170 (esperou 70) 
A 200 370 (esperou 370) 
 40 GERÊNCIA DE TEMPO DE CPU 
 Round Robin 
Para esta estratégia será necessário definir qual será a fatia de tempo. Neste exemplo a 
fatia de tempo será de 10 ms. 
Para facilitar a visualização, a tabela será dividida em ciclos e o tempo de resposta 
calculado somente no final. 
Execução: ciclo 1 > ciclo 2 > ciclo 3 > ciclo 4 > ciclo 5 > ... > ciclo 20 
A 10 10 10 10 10 10 10 10 10 10 ... 10 > Tempo de resposta = 370ms 
B 10 10 10 10 10 10 10 10 10 10 > Tempo de resposta = 270ms 
C 10 10 10 10 10 > Tempo de resposta = 170ms 
D 10 10 > Tempo de resposta = 80ms 
Síntese da Aula 
Você aprendeu: 
 Quais as estratégias utilizadas para alocação do processador. 
 Como avaliar uma solução de escalonamento. 
 Como estimar o tempo de resposta de um processo em função da estratégia de 
escalonamento. 
Exercícios de Fixação 
1) Cinco jobs, A, B, C, D e E, em batch, chegam ao computador com 1 segundo de intervalo entre 
eles. Seus tempos de processamento são estimados em 10, 7, 3, 4 e 5 segundos de CPU, 
respectivamente. Sendo round-robin a política de escalonamento utilizada, com um time-slice 
de 1 segundo, o tempo médio de turnaround desses processos (ignorando overheads de troca de 
contexto e interrupções e assumindo que um job recém-chegado é colocado no início da fila, ou 
seja, na frente dos outros) é: 
 25,5 segundos 
 13,1 segundos 
 10,0 segundos 
 19,6 segundos 
2) Throughput é: 
 A taxa de utilização da CPU 
 O tempo que um processo leva desde a sua admissão até o seu término 
 O número de processos executados em um determinado intervalo de tempo 
 A fração de tempo de CPU dada a um determinado processo 
3) O escalonamento de processos nos sistemas operacionais baseia-se em escalonadores 
_______________ e _____________. No primeiro caso, os escalonadores aceitam a suspensão 
_____________ da execução de um processo.No segundo caso, quando um processo obtém o 
processador, o mesmo executa até ____________, ou até que o processo peça uma operação 
que ocasione o seu bloqueio. 
Indique a opção que completa, respectivamente e de forma correta, as lacunas acima. 
 não-preemptivos, com preempção, temporária, a metade 
 com preempção, não-preemptivos, temporária, o fim 
 com preempção, não-preemptivos, definitiva, a metade 
 não-preemptivos, com preempção, definitiva, o fim 
 41 GERÊNCIA DE TEMPO DE CPU 
Soluções 
1) 19,6 segundos 
2) O número de processos executados em um determinado intervalo de tempo 
3) com preempção, não-preemptivos, temporária, o fim 
 
 
 42 GERÊNCIA DE ALOCAÇÃO DE MEMÓRIA 
7. GERÊNCIA DE ALOCAÇÃO DE MEMÓRIA 
Objetivos 
 Entender os objetivos da gerência de alocação de memória 
 Conhecer as estratégias de alocação de espaço na memória principal. 
 Entender as características de cada método de alocação. 
Conceito 
Alocar memória consiste em subdividir e alocar espaços para acomodar os processos em 
execução. É necessário que haja uma estratégia definida para esta tarefa porque: 
 Espaços são solicitados e liberados em função da execução de cada tarefa. 
 Cada processo precisar ter seu espaço protegido. 
 Pode ser necessário compartilhar informações com outros processos. 
Abordaremos, neste capítulo, as formas de organização lógica do espaço de memória. A 
organização lógica é a visão do sistema operacional em relação à alocação dos processos. 
Estratégias de Organização Lógica do Espaço de Memória 
Existem cinco estratégias de organização lógica do espaço de memória: 
 Contíguo Simples 
 Estático 
 Estático Relocável 
 Dinâmico 
 Paginado 
 Segmentado 
Contíguo Simples 
Somente uma partição da memória é criada para apenas um único processo. Parte da memória é 
ocupada pelo sistema operacional e outra parte para o processo em execução. 
Este modelo somente pode ser utilizado em sistema monotarefa que não são mais utilizados. 
 
Estático 
Implementação simples em que cada processo recebe um endereço fixo de uma partição para 
executar denominado endereço absoluto. 
 43 GERÊNCIA DE ALOCAÇÃO DE MEMÓRIA 
 
Apresenta baixo desempenho e fragmentação interna. 
 
Processos em fila externa para execução 
 
Estático Relocável 
Semelhante ao particionamento estático, porém os processos podem ser alocados em qualquer 
partição. 
Processos em fila externa para execução 
 
Dinâmico 
A estratégia de alocação dinâmica permite o particionamento sob demanda, ou seja, a partição é 
criada durante a alocação do processo exatamente do tamanho que será utilizada. 
Essa estratégia evita a fragmentação interna, mas permite a ocorrência de fragmentação externa, 
ou seja, fragmentação entre as partições. 
Cada partição recebe apenas um processo e cada 
processo somente poderá utilizar uma partição. 
As partições possuem tamanho fixo determinado na 
inicialização do sistema operacional. 
Fragmentação interna 
Espaço na utilizado dentro de uma partição 
 44 GERÊNCIA DE ALOCAÇÃO DE MEMÓRIA 
 
 
Paginado 
A memória é particionada em pedaços de tamanho igual, assim como os processos. 
Os pedaços que compõem os processos são chamados de  Páginas 
Os pedaços que compõem a memória são chamados de  Molduras de Páginas (Frames) 
Quando um processo é carregado, suas páginas são alocadas em quaisquer molduras disponíveis, não 
necessariamente contíguas. 
Estratégias de Organização Lógica do Espaço de Memória - Paginado 
 Quando um processo é carregado, suas páginas são alocadas em quaisquer molduras disponíveis, 
não necessariamente contíguas. 
 O sistema operacional precisa manter uma tabela de páginas por processo e uma lista de 
molduras disponíveis. 
 Cada processo pode ter fragmentação interna apenas na última página. 
 
Fragmentação externa 
Ocorre em função da diferença do espaço necessário para cada 
processo, permitindo que, ao reutilizar um espaço, parte dele 
não seja ocupado formando buracos. Como esse espaço pode ser 
muito pequeno, ficaria sem utilização posterior. 
Essa fragmentação é menos prejudicial, pois os espaços vazios 
contíguos serão reagrupados. 
 45 GERÊNCIA DE ALOCAÇÃO DE MEMÓRIA 
Tradução de Endereço Lógico em Endereço Físico 
Cada endereço lógico é composto por duas partes: 
Identificação da página onde está o endereço Deslocamento dentro da página 
Cada página é alocada em uma moldura, então cada página precisa estar mapeada para uma 
moldura. 
O deslocamento é o mesmo na página e na moldura já que são do mesmo tamanho. 
Exemplo: O terceiro endereço da pagina x será o terceiro endereço da moldura que recebeu a 
página. 
Considere o exemplo de tradução de endereço: 
 Cada endereço possui 16 bits, sendo 10 para deslocamento e 6 para identificação da página. 
 A quantidade de bits utilizada para o offset é a mesma para o endereço lógico e para o 
físico uma vez que página e moldura possuem o mesmo tamanho. 
 Com 10 bits de tamanho de página, podemos afirmar que cada página possui 210 endereços. 
 Se cada endereço ocupar 32 bits (4 bytes), podemos afirmar que a página ocupa 4 x 210 
bytes, ou seja, 4KB. 
 Como foram utilizados 6 bits para indicação da página, podemos afirmar que cada processo 
pode ter no máximo 26 páginas, ou seja, 64 páginas. 
 Como cada processo possui 26 páginas e cada página possui 4KB (22 x 210 bytes), o tamanho 
máximo de um processo é de 26 x 22 x 210 bytes que é igual a 28 x 210 bytes ou 256KB. 
 
Segmentado 
Cada programa é subdividido em blocos de diferentes tamanhos chamados segmentos. 
Quando um processo é carregado para a memória principal, cada segmento diferente pode ocupar 
qualquer lugar. 
O S.O. mantém uma tabela de segmentos de cada processo. Cada entrada contém: 
 O início do endereço físico daquele segmento. 
 O tamanho do segmento (por proteção). 
Apresenta fragmentação externa. 
 46 GERÊNCIA DE ALOCAÇÃO DE MEMÓRIA 
Tradução de Endereço Lógico em Endereço Físico 
Semelhante à tradução para memória paginada, exceto pela informação adicional do tamanho do 
segmento. 
 
Síntese do Capítulo 
Você aprendeu: 
 Quais as formas de alocação de memória para os processos ativos. 
 Quais as vantagens e desvantagens de cada estratégia. 
 A diferença entre endereçamento lógico e endereçamento físico. 
Exercícios de Fixação 
1) Considere um sistema baseado em memória paginada com endereço lógico de 32 bits sendo 8 
bits utilizados para identificação da página e os demais para o offset. Quantos endereços cada 
página possui? 
 16M 
 2M 
 24M 
 4K 
2) Considere um sistema baseado em memória paginada com endereço lógico de 32 bits sendo 8 
bits utilizados para identificação da página e os demais para o offset. Quantas páginas um 
processo pode ter? 
 8 
 256 
 32 
 1024 
3) Considere um sistema baseado em memória paginada com endereço lógico de 32 bits sendo 8 
bits utilizados para identificação da página e os demais para o offset. Qual o tamanho máximo 
de um processo, considerando que cada endereço ocupa 2 bytes? 
 32GB 
 32MB 
 8MB 
 8GB 
4) Em relação aos métodos de alocação, é correto afirmar que: 
 47 GERÊNCIA DE ALOCAÇÃO DE MEMÓRIA 
 Todas as estratégias apresentam fragmentação interna. 
 A estratégia de memória paginada apresenta fragmentação interna. 
 A fragmentação externa pode ser evitada em sistemas que utilizam segmentação. 
 A ocorrência de fragmentação de memória nem sempre causa desperdício de espaço. 
Soluções 
1) 16M 
2) 256 
3) 8GB 
4) A estratégia de memória paginada apresenta fragmentação interna.

Continue navegando