Você está na página 1de 63

SISTEMAS OPERACIONAIS

Universidade Estcio - Fagner Lima


fagnerlima.com.br
APRESENTAO
Bem vindos a disciplina Sistemas Operacionais. Nesta disciplina iremos estudar como funciona um
sistema operacional identificando seus componentes, problemas e caractersticas nos sistemas
modernos.
Essa disciplina aborda os fundamentos de sistemas operacionais relacionando-os a tarefas e
problemas conhecidos nas implementaes mais usuais. Essa abordagem possibilita a soluo de
problemas com fundamentao terica e um bom uso das caractersticas de cada sistema. Fornece
ainda um grau de conhecimento que diferencia profissionais com uma formao adequada dos
demais.
Fique atento(a) e bom estudo!
SUMRIO
1. INTRODUO A SISTEMAS OPERACIONAIS ....................................................................3
Objetivos .............................................................................................................3
Conceitos Fundamentais de Sistemas Operacionais ...........................................................3
Classificao de Sistemas Operacionais .........................................................................4
Estruturas dos Sistemas Operacionais Modernos...............................................................6
Interrupes .........................................................................................................8
Conceitos de Concorrncia ...................................................................................... 10
Sntese do Captulo ............................................................................................... 11
Exerccios de Reviso ............................................................................................. 11
2. PROCESSOS ...................................................................................................... 12
Objetivos ........................................................................................................... 12
Conceito ............................................................................................................ 12
Componentes ...................................................................................................... 12
Ciclo de Vida de um Processo ................................................................................... 13
Estados .............................................................................................................. 14
Tipos................................................................................................................. 15
Sntese do Captulo ............................................................................................... 15
Exerccios de Reviso ............................................................................................. 15
3. THREADS ......................................................................................................... 16
Objetivos ........................................................................................................... 16
Conceito ............................................................................................................ 16
Estrutura ............................................................................................................ 16
Tipos................................................................................................................. 18
Sntese do Captulo ............................................................................................... 20
Exerccios de Reviso ............................................................................................. 20
4. COMUNICAO ENTRE PROCESSOS .......................................................................... 21
Objetivos ........................................................................................................... 21
Motivao ........................................................................................................... 21
Entendendo uma Condio de Corrida ........................................................................ 22
Como Evitar a Ocorrncia de uma Condio de Corrida ................................................... 24
Sntese do Captulo ............................................................................................... 26
Exerccios de Reviso ............................................................................................. 26
5. SINCRONIZAO ENTRE PROCESSOS ......................................................................... 28
Objetivos ........................................................................................................... 28
Mecanismos de Excluso Mtua ................................................................................. 28
Mecanismos Baseados em Algoritmos .......................................................................... 28
Mecanismos Baseados em Caractersticas de Hardware .................................................... 29
Mecanismos Baseados em Primitivas do Sistemas Operacional ........................................... 30
Detalhando os Semforos ........................................................................................ 31
Sincronizao Condicional Utilizando Semforos ............................................................ 31
Sntese do Captulo ............................................................................................... 34
Exerccios de Reviso ............................................................................................. 34
6. GERNCIA DE TEMPO DE CPU ................................................................................. 36
Objetivos ........................................................................................................... 36
Escalonamento .................................................................................................... 36
Estratgias de Escalonamento .................................................................................. 36
Tipos de Estratgia ............................................................................................... 37
Critrios de Escalonamento ..................................................................................... 37
Critrios de Escalonamento ..................................................................................... 38
Sntese da Aula .................................................................................................... 40
Exerccios de Fixao............................................................................................. 40
7. GERNCIA DE ALOCAO DE MEMRIA ...................................................................... 42
Objetivos ........................................................................................................... 42
Conceito ............................................................................................................ 42
Estratgias de Organizao Lgica do Espao de Memria ................................................ 42
Sntese do Captulo ............................................................................................... 46
Exerccios de Fixao............................................................................................. 46
8. MEMRIA VIRTUAL .............................................................................................. 48
Objetivos ........................................................................................................... 48
O que Memria Virtual? ........................................................................................ 48
Endereamento .................................................................................................... 48
Caractersticas, Vantagens e Desvantagens .................................................................. 48
Caractersticas de Implementao ............................................................................. 49
Paginao em Memria Virtual ................................................................................. 49
Sntese do Captulo ............................................................................................... 51
Exerccios de Reviso ............................................................................................. 52
9. DISPOSITIVOS DE ENTRADA E SADA ......................................................................... 53
Objetivos ........................................................................................................... 53
Subsistemas de Entrada e Sada ................................................................................ 53
Detalhando os Componentes .................................................................................... 54
Classificao dos Dispositivos ................................................................................... 55
Sntese do Captulo ............................................................................................... 55
Exerccios de Fixao............................................................................................. 55
10. SISTEMA DE ARQUIVOS ..................................................................................... 57
Objetivos ........................................................................................................... 57
Conceitos de Arquivos e Diretrios ............................................................................ 57
Mtodos de Alocao ............................................................................................. 58
Gerncia de Espao Livre ........................................................................................ 59
Proteo de Acesso ............................................................................................... 60
Sntese do Captulo ............................................................................................... 60
Exerccios de Fixao............................................................................................. 60
INTRODUO A SISTEMAS OPERACIONAIS 3

1. INTRODUO A SISTEMAS OPERACIONAIS


Objetivos
Identificar as funes 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 importncia e o funcionamento dos mecanismos de interrupo.
Compreender os fundamentos de sistemas concorrentes.

Conceitos Fundamentais de Sistemas Operacionais


O que um sistema operacional?

Sistema Operacional um conjunto de programas (software) responsvel por:


Fazer a interface com os usurios;
Gerenciar recursos;
Fazer a interface com o hardware.

Funes adicionais: contabilizao de uso, segurana de acesso, auditoria.

O sistema operacional o intermdio entre o usurio e o hardware.

Cada parte (mdulo ou funo) de um sistema operacional responsvel pelo gerenciamento de um


recurso especfico.
Que recursos so esses?
Tempo de CPU;
Espao em memria;
Espao em disco;
Acesso aos dispositivos de comunicao;
Bibliotecas de software.
INTRODUO A SISTEMAS OPERACIONAIS 4

Gerenciar recursos garantir a utilizao compartilhada do recurso sem que ocorram erros que
possam gerar instabilidade ou falha no sistema.
Na viso do usurio, o sistema operacional fornece:
Acesso ao sistema;
Possibilidade de criar e gerir arquivos e diretrios;
Ambiente para execuo de programas;
Acesso aos dispositivos de E/S;
Acesso ao contedo de arquivos;
Deteco de erros.

Classificao de Sistemas Operacionais


A classificao utilizada como uma forma sinttica de apresentar, em poucas palavras, as
caractersticas de um sistema operacional.

Sistemas Monotarefa x Sistemas Multitarefa

Sistemas Monousurio x Sistemas Multiusurio

Sistemas Monoprocessados x Sistemas Multiprocessados

Conhecer os conceitos envolvidos em uma classificao evita o uso incorreto da nomenclatura


tcnica e sintetiza de forma unvoca as caractersticas de um sistema.

Sistemas Monotarefa x Sistemas Multitarefa


Definem a capacidade de gerenciar mais de uma tarefa ao mesmo tempo.

Ateno
Estamos falando de gerenciamento, e no de execuo.

Sistemas Monotarefa: Admite e gerencia apenas uma tarefa em execuo.


Exemplo: DOS.

Sistemas Multitarefa: Admite e gerencia vrias tarefas em processamento concorrente.


Exemplos: Windows 7, Windows XP, Lixux, MacOS.
INTRODUO A SISTEMAS OPERACIONAIS 5

Sistemas Monousurio x Sistemas Multiusurio


Definem a capacidade de gerenciar mais de um usurio ao mesmo tempo, compartilhando recursos
de software e hardware.
Sistemas Monousurio: Admite e gerencia apenas um usurio - no permite que mais de um
usurio esteja logado simultaneamente.
Exemplos: Windows XP, Windows NT (exceto verso com Terminal Server).
Sistemas Multiusurio: Admite e gerencia vrios usurios - permite que mais de um usurio
esteja logado simultaneamente.
Exemplos: Linux, VMS.

Ateno
Todo sistema operacional multiusurio obrigatoriamente multitarefa, pois cada
usurio representa, no mnimo, uma tarefa para ser executada.

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.

Nota
Sistemas com suporte a multiprocessamento podem executar mais de uma
tarefa ao mesmo tempo; uma em cada processador.

Outros Sistemas com Finalidades Especficas


Sistemas de Tempo Real: Sistemas que possuem um forte vnculo com o tempo. O resultado
s considerado correto se a execuo acontecer no tempo previsto.
O sistema deve garantir que uma tarefa possua todos os recursos necessrios para sua
execuo em um intervalo de tempo pr-definido.

Ateno
No se trata de velocidade de processamento, e sim de garantia
de tempo de resposta.

Sistemas Embarcados: Sistemas inseridos em produtos com funes especficas como, por
exemplo, telefones celulares.

Ateno
Nem todo dispositivo eletrnico possui um microcontrolador, e nem todo
aparelho com microcontrolador possui um sistema operacional.
INTRODUO A SISTEMAS OPERACIONAIS 6

Estruturas dos Sistemas Operacionais Modernos


Um velho conhecido pelos usurios 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 violao de acesso que tornava o sistema instvel.
A partir do 80386, esse problema foi solucionado em termos de hardware atravs da possibilidade
de 2 modos de execuo: o modo protegido e o modo real. Ficava a cargo do sistema operacional a
comutao entre esses dois modos por questes de compatibilidade.

A instabilidade evidenciada pela tela azul tem razes histricas. Os primeiros processadores da
linha x86 possuam um nico modo de operao: o modo real. Dessa forma, todas as operaes
poderiam ser executadas diretamente pelas aplicaes que, ao produzir erros, geravam panes no
sistema.

Modo Usurio x Modo Kernel


As aplicaes so executadas em modo usurio, ou seja, modo que no possui privilgios para
operaes que coloquem o sistema em risco tais como escrever no disco, criar novas tarefas etc.
Quando essas aplicaes precisam executar tarefas crticas, necessrio que haja uma mudana
para modo Kernel (ncleo do sistema operacional, responsvel pelas tarefas crticas do sistema).
Essa mudana ocorre atravs de uma system call ou chamada ao sistema.

Chamadas ao sistema (System Call)


Mecanismo responsvel pela mudana de modo usurio para modo kernel. Ao invs de executar
diretamente funes do kernel a aplicao executa uma funo intermediria que verifica se o
acesso ao kernel seguro e, s ento, completa a operao.

Voltando tela azul: As aplicaes podiam executar diretamente as funes do kernel sem a
proteo da mudana de modo, ou seja, o erro acontecia aps a execuo de uma funo do kernel.
Com a mudana de modo, se a execuo no for segura, a aplicao ser impedida de continuar a
execuo e o sistema permanecer estvel.

Tipos de Estrutura
Os sistemas so classificados em relao s atribuies do kernel e a relao entre seus mdulos em
monolticos, camadas e microkernel.
Os sistemas modernos so divididos em dois grandes grupos: arquitetura monoltica e microkernel. A
diferena entre elas est nas atribuies do ncleo do sistema operacional, denominado KERNEL.
INTRODUO A SISTEMAS OPERACIONAIS 7

Essa caracterstica muito importante no projeto de um Sistema Operacional e foi alvo de discusso
entre dois grandes nomes da computao: Andrew Tanenbaum e Linus Torvalds.
Para mais informaes sobre o motivo da discusso, leia o texto a seguir: Tanenbaum x Torvalds.
De um lado, Torvalds defendia um kernel monoltico por ser mais rpido e, de outro, Tanenbaum
defendia o microkernel pela elegncia e facilidade de adaptao e substituio de mdulos. Quem
ganhou? Os dois.

Andrew Tanenbaum (Microkernel) x Torvalds (Monoltico)

Arquitetura Monoltica
Todo o kernel compilado e linkado em um nico bloco, tornando o cdigo eficiente, porm de
difcil manuteno. A incluso de um mdulo requer que todo o kernel seja recriado.

Nota
O kernel do Linux incorporou caractersticas modulares.

Arquitetura Microkernel
Somente as funes crticas fazem realmente parte do kernel. Demais funes so tratadas como
tarefas e executam em modo usurio fazendo chamadas ao kernel quando necessrio.
Essa arquitetura simplifica a manuteno, incluso e excluso de mdulos do sistema operacional,
no sendo necessrio gerar um novo kernel a cada modificao e nem mesmo reiniciar o
computador para ativao e desativao do mdulo.
INTRODUO A SISTEMAS OPERACIONAIS 8

Interrupes
So sinais de hardware fundamentais para a existncia de sistemas multitarefa, pois provocam a
suspenso da tarefa em execuo pela ocorrncia de um evento externo permitindo que outras
tarefas compartilhem o tempo de uso do processador.

Ateno
Neste caso, o que est sendo compartilhado o TEMPO DE USO do processador, e
no o processador em si. Cada tarefa utiliza 100% do processador.

Parte do mecanismo executada pelo hardware (identificao do dispositivo, empilhamento dos


registradores de sistema) e parte feita por software atravs da rotina de tratamento da
interrupo (interrupt handler).
INTRODUO A SISTEMAS OPERACIONAIS 9

Tipos de Interrupes
As interrupes so geradas por dispositivos de hardware e podem ocorrer de forma sncrona ou
assncrona.
Relgio (temporizador) sncrona
Dispositivos de E/S (sinalizao de concluso) assncrona
Falha de hardware (paridade de memria, erro de disco, etc.) assncrona

O termo interrupo muitas vezes para qualquer atividade que suspenda a execuo de uma
tarefa, mesmo que seja solicitada pelo prprio programa. Utilizaremos, para este fim, o termo
estado de exceo.

Estados de Exceo: so provocados pela prpria aplicao.

Estouro aritmtico;
Diviso por zero;
Instruo ilegal;
Acesso no permitido;
Chamadas ao sistema.

Ateno
Mascaramento de interrupes: Capacidade de inibir a ao de uma
interrupo. As interrupes de segurana no podem ser mascaradas.

As interrupes podem acontecer de forma sequencial ou em cascata.


Sequencial: Uma interrupo s poder ser atendida se nenhuma outra estiver em
atendimento.
A Rotina de Servio desabilita as interrupes.
Uma nova interrupo s tratada aps o retorno.
A interrupo pode demorar a ser tratada, o que pode, eventualmente, ocasionar
uma perda de dados.
Finalizada a Rotina de Servio de interrupo, o processador verifica por
interrupes adicionais.
INTRODUO A SISTEMAS OPERACIONAIS 10

Cascata: Uma interrupo pode interromper a ao de uma rotina de tratamento de outra


interrupo.
Interrupes tm prioridade.
Interrupes com alta prioridade interrompem rotinas de servio de interrupes de
menor prioridade.
Exemplos de prioridade:
Impressora -
Disco
Comunicao +

Conceitos de Concorrncia
Compartilhar recursos significa que diferentes usurios ou programas usam os recursos de forma
concorrente.

Como administrar recursos compartilhados?


Os recursos so limitados e, assim, o uso dos mesmos pelos diferentes programas ou usurios precisa
ser controlado e administrado de forma a evitar possveis conflitos ou uma alocao por tempo
indeterminado de algum recurso.

Concorrncia:
a capacidade de execuo concorrente de
tarefas permitindo um melhor aproveitamento
de recursos.
INTRODUO A SISTEMAS OPERACIONAIS 11

Uma tarefa pode deixar a CPU por vontade prpria, quando precisa aguardar por um
recurso, ou por uma interrupo.
Em particular, uma interrupo de temporizador provoca a substituio da tarefa em
execuo criando uma alternncia entre as tarefas.

Ateno
A alternncia entre as tarefas pode dar a impresso de execuo
simultnea de tarefas, mas no o que ocorre.

Sntese do Captulo
Voc aprendeu:

O que um sistema operacional e quais so suas funes.


Como os sistemas operacionais esto classificados.
Como so as estruturas dos sistemas operacionais modernos.
O que so modos de execuo.
A importncia das interrupes nos sistemas operacionais modernos.
O que compartilhamento.

Exerccios de Reviso
1) So funes do sistema operacional:
Gerenciar recursos de hardware e fornecer um aplicativo para navegao na internet.
Gerenciar recursos de hardware e interface com o usurio.
Interface com o usurio e correo ortogrfica.
Gerenciar recursos de software e interromper uma tarefa em execuo.

2) Para que uma aplicao execute instrues privilegiadas dever executar um(a):
Arquivo especfico para gerenciamento de hardware.
Interrupo de hardware.
Solicitao ao administrador do sistema.
Chamada ao sistema.

Solues
1) Gerenciar recursos de hardware e interface com o usurio.
2) Chamada ao sistema.
PROCESSOS 12

2. PROCESSOS
Objetivos
Compreender os conceitos de processos;
Identificar os estados de um processo;
Compreender como acontece a mudana de estado.

Conceito
Processo a instncia de um programa em execuo. a unidade de
carga e alocao de uma tarefa.

Em sistemas mais antigos, tambm considerado a unidade de


execuo, mas veremos, na prxima aula, que isso no verdade nos
sistemas modernos.

Cada processo nico em um sistema


O processo criado quando o programa carregado para a
memria principal para ser executado.
Um programa carregado para a memria onde aloca uma
determinada rea para cdigo e dados.

Componentes
Um processo dividido em partes que so armazenadas na memria em uma estrutura denominada
PCB (Process Control Block).

Identificao Programa
Registrador SP
Registrador PC
Registradores de uso geral
Informaes de escalonamento
Relao de arquivos abertos
Privilgios
Espao de endereamento de memria

Programa: cdigo executvel.


Contexto de hardware: caractersticas da execuo. Armazena o contedo dos
registradores responsveis pelo controle dos registradores responsveis pelo controle de
execuo do programa.
Contexto de software: caractersticas e limites do ambiente onde o programa ser
executado. Fazem parte do contexto de software: identificao, quotas, privilgios,
identificao do usurio dono do processo.
Espao de endereamento de memria: rea de memria alocada para execuo do
programa.
PROCESSOS 13

Ciclo de Vida de um Processo

Criao -> Execuo -> Trmino

Criao
Quando um processo criado?

Quando executamos um programa.


Quando um usurio 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 criao:

Atribui um identificador nico.


Aloca uma entrada na tabela de processos.
Aloca espao para o processo.
Inicializa o PCB (Process Control Block).
Coloca o processo na fila apropriada.
Cria estruturas auxiliares.

Execuo
A execuo concorrente de processos leva s seguintes situaes:

Troca de contexto;
Troca de modo de execuo.

Trocas de Contexto
Substituio do processo em execuo.
Causas:

Interrupo: Reao a um evento assncrono.


Trap: Associado a erro na execuo de uma instruo.
System Call: Requisio explcita.
Aes:

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 memria.
Restaura o estado do processador.

Trocas de Modo de Execuo


uma troca menor e mais rpida que a troca de contexto. O estado do processo corrente no
alterado.
PROCESSOS 14

Ocorre geralmente quando o processador, ao final de um ciclio de interrupo, detecta a existncia


de interrupo pendente. Nesses casos, o processador realiza os seguintes passos:

Salva o contexto do processo em execuo.


Carrega o PC com o endereo inicial da rotina de interrupo.
Troca o modo de execuo de usurio para kernel (privilegiado) para que a instrues
privilegiadas do tratador de interrupes possam ser executadas.

Trmino
Quando acaba o programa que est em execuo.
Quando ocorre um erro.
Quando forado pelo usurio 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 intermedirios. Observe-o abaixo:

Novo: Estado de admisso onde so geradas as estruturas de dados e alocado espao para o
processo. O processo recm-criado configurado como "pronto".
Pronto: Aps a admisso, o processo est pronto para ser executado, mas aguarda sua vez.
Executando: Apenas um processo por vez pode estar nesse estado. Aps ser selecionado, o
processo recupera seu contexto que guardado aps ter sua execuo interrompida.
Bloqueado: Um processo bloqueado quando precisa aguardar um recurso. Esse bloqueio
sncrono, ou seja, sempre que o programa executar um determinado trecho, o bloqueio
acontecer. (Exemplo: acesso a disco)
Fim: Ao terminar a execuo do processo, as estruturas criadas so removidas e a rea
alocada liberada.

Ateno
A substituio do processo em execuo denominada troca de contexto. Quando o
processo interrompido, seu contexto armazenado. Quando o processo retorna
para o estado de execuo, seu contexto recuperado.

Ateno
O sistema operacional no pode provocar troca de contexto, uma vez que um
software e para gerar uma ao precisaria estar em execuo.
PROCESSOS 15

Ateno
No possivel haver mudana de estado entre pronto e bloqueado. Se o processo
est em estado de pronto, no est executando, logo, no poder fazer nenhuma
requisio.

Tipos
Os processos podem ser classificados em funo de caractersticas de execuo:
Processos CPU-Bound: So processos que passam a maior parte do tempo em estado de
execuo ou pronto. Realiza poucas operaes de E/S.
Processos I/O-Bound: So processos que passam a maior parte do tempo em estado de
espera, pois realizam um elevado nmero de operaes de E/S.
Processos em Foreground: Permitem a comunicao direta do processo com o usurio
durante sua execuo. Em geral, o canal de entrada est associado ao teclado/mouse e de
sada a um monitor.
Processos em Background: Processos em que no existe interao direta com o usurio.

A estratgia utilizada para ordenar a execuo de processos pode variar em funo dos tipos de
processo em um sistema.

Sntese do Captulo
Voc aprendeu:

O que um processo.
Quais os componentes de um processo.
Quais so os estados de um processo.
Como ocorre a mudana de estado de um processo.

Exerccios de Reviso
1) Sobre o conceito de processos, marque a afirmao verdadeira.
Processo a mesma coisa que programa.
Processo um programa que est em execuo.
Processo uma caracterstica do processador.
Processo um programa armazenado no disco.

2) Pode ser responsvel pela troca de contexto.


Operao aritmtica.
Interrupo por tempo provocada pelo temporizador.
Sistema operacional.
Outro programa que quer executar.

Solues
1) Processo um programa que est em execuo.
2) Interrupo por tempo provocada pelo temporizador.
THREADS 16

3. THREADS
Objetivos
Compreender os conceitos de threads.
Entender as diferenas 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 so fluxos de execuo distintos dentro de um mesmo processo, um executvel.

Atualmente, uma thread considerada a unidade de execuo de um sistema ao invs 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
especficos para cada thread que contm uma estrutura de contexto de software e uma estrutura de
contexto de hardware.

Cada thread possui contextos prprios de hardware e software, porm compartilham o mesmo
espao de endereamento alocado ao processo.
THREADS 17

Vamos entender melhor. Pense em funes de um mesmo processo, onde todas as funes so
capazes, por exemplo, de ver e alterar o contedo de variveis globais.
Vamos exemplificar com o seguinte trecho de programa:

Como a varivel x visvel por todas as funes, o valor final da varivel x ser 12. As funes
enxergam a mesma rea de memria.

Nem toda funo uma thread. Quando utilizamos uma funo, o mdulo que fez a chamada deve
aguardar o trmino da funo para continuar. No exemplo, o resultado abaixo somente ser exibido
aps o retorno da funo.

Se fosse uma thread (veremos mais tarde como criar uma), a exibio poderia ocorrer antes que a
funo terminasse.

Ateno
Pode gerar erros? A exibio poderia mostrar o resultado antes da funo terminar.
Esse tipo de problema ser tratado em Comunicao entre Processos e conhecido
como condio de corrida. Calma! Tem soluo.

Uma thread pode ser imaginada como uma funo de um programa que tem "vida prpria" para a
execuo, mas no pode ser criada isoladamente.
Para mais informaes, leia o texto a seguir (Motivao para o uso de threads).

Motivao Para o Uso de Threads


Imagine a seguinte situao:

Precisamos armazenar os tijolos produzidos por um equipamento que, ao trmino da fabricao de


um tijolo, espera que haja algum no final da esteira para peg-lo.

Se o procedimento de pegar o tijolo e lev-lo at o depsito for feito por uma nica pessoa,
provavelmente diversos tijolos caram no cho enquanto essa pessoa leva um dos tijolos para o
depsito.

O que fazer? Se houver uma pessoa que fique na sada da esteira retirando os tijolos e os
entregando para seus assistentes, a chance de que um tijolo caia no cho ser muito reduzida, pois
cada tijolo ser entregue em um perodo de tempo constante ao assistente que o levar ao
THREADS 18

depsito. 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 no
suficiente para a demanda.

Pensando agora em uma aplicao, como um servidor para transferncias de arquivos. Uma
threadfica a postos para receber requisies que sero entregues a novas threadscriadas sob
demanda para atender a cada uma das requisies. A cada requisio, uma nova thread criada e a
threadprincipal retorna imediatamente para aguardar novas requisies, evitando (ou reduzindo
muito) o descarte de mensagens. Poderemos ter vrias threadssendo executadas concorrentemente,
podendo gerar um tempo de resposta maior, mas as requisies no sero 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 execuo do processo continue


mesmo que algumas de suas Threads estejam bloqueadas.
Compartilhamento de Recursos: Threadscompartilham memria e outros recursos do
processo.
Economia de tempo de gerenciamento: Threadsso mais econmicas de serem criadas e o
custo da troca de contexto menor. Todas as threadsde um mesmo processo compartilham
o mesmo espao de endereamento.
Utilizao de Mltiplos 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 so criadas e gerenciadas pelo kernel do sistema
operacional, mas no podem ser diretamente utilizadas pelo usurio.
O suporte a mltiplas threads uma caracterstica do sistema operacional.
Threads de Usurio: As threads de usurio facilitam aspectos de portabilidade e so criadas
e gerenciadas por uma biblioteca no nvel do usurio.
O Kernel no enxerga essas threads e, por esse motivo, no podem ser gerenciadas
individualmente.

Exemplos de bibliotecas de threads


POSIX Pthreads, Win32 threads, Java threads.

Processo Leve ou LWP


A combinao entre os dois tipos de threads promove uma associao entre threads de usurio e de
Kernel, porm a forma de associao depende do sistema operacional.
THREADS 19

Ateno
Esta a soluo mais utilizada nos sistemas modernos.
Pois o uso combinado de threads de usurio e de Kernel permite melhor
aproveitamento do tempo de CPU, possibilidade de paralelismo e facilidade de
programao.

Vamos conhecer agora os modelos de associao entre threads de usurio e de kernel.

Muitos para um:


Gerenciamento da thread feito no espao do
usurio;
Usadas em sistemas que no suportam threads;
Uma thread bloqueada bloqueia todo o
processo.

Um para um:
Cada thread de usurio mapeada para uma
Kernel thread;
Criar uma user thread requer a criao de uma
thread de Kernel;
Algumas implementaes restringem o nmero
de threads suportada pelo sistema;
utilizada pelo Windows e pelo Linux.
THREADS 20

Muitos para muitos:


Permite que vrias threads de usurio sejam
mapeadas para um nmero menor ou maior de
threads de Kernel dinamicamente;
Permite que o SO crie um nmero suficiente de
threads de Kernel.

Sntese do Captulo
Voc aprendeu:
O que uma thread.
Quais os tipos de threads disponveis e suas caractersticas.
As vantagens e desvantagens do uso de threads.

Exerccios de Reviso
1) Uma thread a execuo de um fluxo de processamento, isto significa que um processo pode
ser composto por vrias threads. Neste contexto correto afirmar que:
Uma thread equivalente a um processo filho, pois a execuo de cada thread
independente.
Uma thread pode ser compartilhada por vrios processos, pois o espao de endereamento
compartilhado.
Uma thread pode existir sem estar associada a um processo.
Threads de um mesmo processo podem ter suas execues independentes e compartilham
espao de endereamento de memria.
2) Considere uma aplicao baseada em threads em um sistema operacional com suporte a
threads. Se uma das threads for bloqueada por solicitar uma operao de E/S, as demais threads
do mesmo processo:
Podero continuar executando se no dependerem da thread que foi bloqueada.
Sero bloquedas tambm.
No sero bloqueadas, mas ficaro aguardando o desbloqueio da thread que executou a
operao de E/S.
Sero interrompidas, provocando um erro no processo.

Solues
1) Threads de um mesmo processo podem ter suas execues independentes e compartilham
espao de endereamento de memria.
2) Podero continuar executando se no dependerem da thread que foi bloqueada.
COMUNICAO ENTRE PROCESSOS 21

4. COMUNICAO ENTRE PROCESSOS


Objetivos
Compreender o conceito de concorrncia em sistemas multitarefa;
Entender os problemas gerados pelo compartilhamento de recursos;
Entender o conceito de condio de corrida;
Identificar regies crticas em um programa;
Entender o que excluso mtua e seus mecanismos;
Entender os conceitos de deadlock e starvation identificando a possibilidade de ocorrncia
dessas duas situaes.

Motivao
Processos e threads em sistemas multitarefa compartilham recursos.

Aprendemos nos captulos anteriores que processos e threads no executam direto, ou seja, desde o
inicio at ao fim. Durante o tempo de execuo, sofrem interrupes 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 execuo e poder querer


utilizar o mesmo recurso que estava sendo utilizado por P1.
E agora?

Entendendo o exemplo
Considere que as variveis A e B, ambas iniciadas com o valor 1, so 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 sero as formas possveis de execuo?


COMUNICAO ENTRE PROCESSOS 22

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 linha 1 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 funo
da ordem em que os processos ocorrem. Esse efeito denominado condio de corrida.

Condio de corrida
Conjunto de eventos que geram resultados no determinsticos e deve
ser evitada.
O termo condio de corrida vem do fato da no previsibilidade do
resultado de uma corrida onde a velocidade de execuo de um
processo no pode ser prevista, pois depende das atividades dos outros
processos, da forma como o SO trata as interrupes e das estratgias
de escalonamento adotadas.

H condio de corrida quando existem recursos compartilhados entre duas ou mais threads ou
entre dois ou mais processos sem as devidas precaues.

Entendendo uma Condio de Corrida


O trecho do cdigo que trata recursos compartilhados denominado regio crtica.

No exemplo, ambas as threads utilizavam as variveis A e B compartilhadas, ento as duas linhas


apresentadas formam uma regio crtica.

Regio crtica
Parte do cdigo que trata recursos compartilhados e
deve ser protegida de forma a garantir acesso
exclusivo a um processo ou uma thread.

Repare que, no exemplo, a ordem de execuo das threads, mesmo sem interrupo, j suficiente
para permitir resultados diferentes.
A garantia de ordem de execuo ser alvo da prxima sesso deste captulo.
COMUNICAO ENTRE PROCESSOS 23

Exemplo Prtico
Esse problema aconteceu realmente em um sistema operacional bem conhecido que utiliza uma fila
de impresso para armazenar temporariamente os documentos que seriam impressos. Essa fila
implementada em uma rea de memria 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):

1 2 3
Ler posio livre da Incluir o arquivo na Atualizar prxima
fila posio indicada posio livre

API (Application Programming Interface)


um conjunto de rotinas para serem utilizadas por
programas aplicativos sem que estes conheam
detalhes de sua implementao.

Considere a seguinte situao: Processo 0 est sendo impresso e, em um determinado momento, o


processo 1 tambm ir imprimir.
1 passo: API ir ler a primeira posio livre da fila (ser 1).
2 passo: API ir incluir o arquivo na posio 1 da fila.
3 passo: API ir atualizar a posio livre para 2.
Voltamos para a situao inicial, s que agora utilizaremos dois processos concorrentes: Processo 0
est sendo impresso e, em um determinado momento, o processo 1 tambm ir imprimir.
1 passo: API ir ler a primeira posio livre da fila (ser 1).
2 passo: API ir incluir o arquivo na posio 1 da fila.
3 passo: A fatia de tempo expira e ocorre uma troca de contexto, deixando a situao
abaixo:
COMUNICAO ENTRE PROCESSOS 24

Aps a troca de contexto, o processo 2 selecionado e tambm ir imprimir. Processo 2 executa a


API de impresso para enviar um documento para a fila.
1 passo: API ir ler a primeira posio livre da fila (ser 1).
2 passo: API ir incluir o arquivo na posio 1 da fila.
3 passo: API ir atualizar a posio livre para 2.

Para o processo 2, est tudo ok. Para o sistema operacional e para o gerenciador de impresso, est
tudo ok, pois a primeira posio livre realmente a posio 2. Para o processo 1, tambm est tudo
ok no houve erro; logo, no haver registro de erro.

Se est tudo certo, onde est o papel impresso do processo 1? "O gato comeu".

Simplesmente sumiu sem deixar registros. Algum j passou por isso? Se sim, agora j sabe que no
foi culpa do usurio. erro no cdigo!

Onde est o erro?


Tanto a fila de impresso quanto a varivel entrada so recursos compartilhados e este
compartilhamento no est sendo tratado, fazendo com que em determinadas sequncias de
eventos o resultado no seja o esperado.

Como Evitar a Ocorrncia de uma Condio de Corrida


Para garantir o acesso exclusivo a uma regio crtica, ser necessrio utilizarmos mecanismos que
garantam a excluso mtua entre processos e/ou threads.

Mecanismo de Excluso Mtua


Soluo que impede que dois ou mais processos tenham acesso a uma
mesma regio crtica, ou seja, impede acesso simultneo a um
determinado recurso.
Nota: acesso simultneo a regio crtica no a mesma coisa que
execuo simultnea.

Para implementao de um mecanismo de excluso mtua, utilizaremos um protocolo de acesso e


um protocolo de sada de uma regio crtica. Esse protocolo poder ser baseado em solues
algortmicas, em caractersticas do processador ou em primitivas do sistema operacional.
O cdigo da estrutura ficaria:

ENTRAR_RC()
Cdigo da regio crtica
SAIR_RC()

De acordo com o exemplo anterior:


COMUNICAO ENTRE PROCESSOS 25

ENTRAR_RC()
Ler posio livre da fila
Incluir o arquivo na posio indicada
Atualizar prxima posio livre
SAIR_RC()

Os mecanismos que implementam a excluso mtua podem colocar o processo que no deve ter
acesso ao recurso em espera ocupada (busy wait) ou bloque-lo ao executar a funo
ENTRAR_RC e dever permitir o acesso ou desbloque-lo ao executar a funo SAIR_RC.

Espera Ocupada
O processo em espera ocupada continua no estado de pronto e, a cada
execuo, tenta continuamente o acesso regio crtica. Esse
procedimento consome tempo de CPU desnecessariamente.

Bloqueio
O processo ser bloqueado e, acordado quando
o acesso a regio crtica estiver liberado.

Para que um mecanismo de excluso mtua seja efetivo, deve garantir que:

Somente um processo por vez possa executar uma regio crtica.


Um processo interrompido fora de uma regio crtica no possa impedir que outro processo
tenha acesso a essa regio crtica.
No possa haver nem deadlock nem starvation.
Quando no houver processo executando uma regio crtica, qualquer processo que solicitar
acesso dever obt-lo imediatamente.
Um processo deve permanecer executando uma regio crtica por tempo finito.
Nada possa ser assumido sobre a velocidade relativa e dos processos nem o nmero de
processadores.

Deadlock
(Impasse) Situao em que dois ou mais processos entram em um impasse
aguardando um recurso que nunca estar disponvel. Essa situao s
desfeita por um agente externo (Exemplo: interromper um dos processos).

Starvation
Condio em que no h garantia de execuo de um processo.
A execuo pode ser adiada por um tempo indeterminado.

Ateno
Ateno para as condies de
ocorrncia de deadlock
COMUNICAO ENTRE PROCESSOS 26

Condies necessrias:
Excluso mtua;
Posse e espera (hold & wait);
No preempo.

Condio 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 no executar enquanto no obtiver R2; logo,
no liberar R1.
P2 est de posse de R2 e aguardando R1. P2 no executar enquanto no obtiver R1; logo,
no liberar R2.

Sntese do Captulo
Voc aprendeu:
O que concorrncia entre processos.
Quais os efeitos de uma condio de corrida.
Como uma condio de corrida pode ser evitada.
Os conceitos de deadlock e starvation

Exerccios de Reviso
1) A condio de corrida derivada de:
Aplicaes concorrentes que no garantem excluso mtua s regies crticas.
Aplicaes baseadas em threads.
Sistemas operacionais sem suporte mltiplas threads.
Aplicaes em sistemas monotarefa que tentam executar ao mesmo tempo.
COMUNICAO ENTRE PROCESSOS 27

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 no estava sobre a mesa. No sabia
quem era o outro professor ento fiquei esperando que fosse devolvido. Como iria ter aula no
segundo tempo, resolvi guardar o giz e esperar o apagador. Esta situao retrata:
Uma condio de corrida.
Um deadlock em funo da excluso mtua 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 mo
do professor.

Solues
1) Aplicaes concorrentes que no garantem excluso mtua s regies crticas.
2) Um deadlock em funo da excluso mtua no acesso aos dois recursos.
SINCRONIZAO ENTRE PROCESSOS 28

5. SINCRONIZAO ENTRE PROCESSOS


Objetivos
Aprender o funcionamento dos principais mecanismos de excluso mtua para acesso a uma
regio crtica.
Aprender como processos podem ser sincronizados para garantir uma determinada ordem de
execuo.
Entender o problema do produtor/consumidor

Mecanismos de Excluso Mtua


A utilizao de mecanismos de excluso mtua necessria para impedir o acesso a uma regio
crtica por mais de um processo evitando, assim, condies de corrida.
Os mecanismos esto divididos em trs categorias baseados em:

Algoritmos;
Caractersticas de hardware;
Primitivas do sistema operacional.

A implementao de um mecanismo de excluso mtua implica a utilizao de um protocolo de


acesso regio crtica e um protocolo de sada da regio crtica.

ENTRAR_RC
Acesso ao recurso compartilhado
SAIR_RC

Mecanismos Baseados em Algoritmos


A primeira abordagem baseada em algoritmos possui uma estrutura muito simples onde uma varivel
compartilhada determina se a regio crtica est ou no livre. Essa soluo possui diversas
limitaes, como veremos a seguir.

Considere a varivel global vez e os processos P0 e P1 disputando uma regio crtica:

Processo 0 Processo 1
while turn = 0 do { } while turn = 1 do { } ENTRAR_RC
<RC> <RC>
vez = 1 vez = 0 SAIR_RC

Um dos processos permanece em espera ocupada at que o outro saa da regio crtica executando,
altere o valor da varivel vez permitindo que o outro processo saia do loop e execute a regio
crtica.

Essa abordagem possui diversos incovenientes:


baseada em espera ocupada.
Processos se alternam no uso de suas respectivas RCs, fazendo com que o tempo de
execuo seja ditado pelo processo mais lento.
Somente pode ser utilizada por dois processos.
SINCRONIZAO ENTRE PROCESSOS 29

Se um dos processos falhar (abortar, por exemplo), o outro jamais poder entrar em sua RC
novamente, pois a varivel vez no ser alterada, contrariando uma das regras de
implementao de mecanismos de excluso mtua.
Diversos algoritmos foram propostos, porm, at a quarta verso, esses algoritmos apresentavam
problemas que feriam os princpios de excluso mtua.

A primeira soluo que garantiu a excluso mtua entre dois processos foi proposta por Dekker e
possui uma lgica bastante complexa. Esse algoritmo foi simplificado posteriormente por Peterson
generalizando o cdigo para n processos.

Veremos a seguir o Algoritmo de Peterson.

Algoritmo de Peterson
Apresenta uma soluo para dois processos que pode ser generalizada para N processos.
1. Antes de acessar a regio crtica, o processo sinaliza esse desejo atravs de uma varivel
booleana flag.
2. Porm o processo cede o uso do recurso ao outro processo indicado pela varivel vez.
3. Em seguida, o processo executa um loop at a obteno da varivel vez.

Processo 0 Processo 1
flag[0] = true flag[1] = true
vez = 1 vez = 0
while flag[1] and vez = 1 { } while flag[0] and vez = 0 { } ENTRAR_RC
<RC> <RC>
flag[0] = false flag[1] = false SAIR_RC

Mecanismos Baseados em Caractersticas de Hardware


So mecanismos que utilizam determinadas instrues do processador para a implementao de
excluso mtua. Iremos estudar duas solues.

Inibir Interrupes
a soluo mais simples para o problema de excluso mtua, pois permite que um processo
desligue o recebimento de interrupes antes da execuo de uma regio crtica, impedindo a troca
de contexto. As interrupes so novamente habilitadas aps o trmino da regio crtica.
Nesse exemplo, sero utilizadas as instrues da famlia de processadores x86 para desligar (cli) e
ligar(sti) as interrupes:

CLI ENTRAR_RC
<RC>
STI SAIR_RC

Essa soluo apresenta alguns problemas:

No habilitar as interrupes por erro de programao (s desligando o computador!);


Como somente as interrupes do processador que executou a instruo so desabilitadas, no
garante excluso mtua em sistemas multiprocessados.
Uma aplicao de usurio no deve ter privilgios para executar essa operao.
SINCRONIZAO ENTRE PROCESSOS 30

Instrues TSL
So instrues atmicas que executam a leitura de uma varivel utilizada para lock, armazenando
temporariamente seu valor em um registrador.
Sem sofrer interrupo, essa instruo valida o contedo da varivel e faz a alterao se necessrio.
Veja a implementao dessa instruo:

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 regio crtica 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 varivel seja configurado para 0 (zero) pela execuo de SAIR_RC.

Essa implementao apresenta as seguintes caractersticas:


Utiliza espera ocupada;
Possibilidade de starvation;
Seleo arbitrria;
Deve garantir exclusividade no uso do barramento para multiprocessadores.

Mecanismos Baseados em Primitivas do Sistemas Operacional


Nessa categoria, esto includas trs implementaes:

Semforos
Um processo suspenso enquanto no obtm acesso a regio crtica.
O processo bloqueado acordado atravs de um sinal.
Monitores
O monitor composto de vrias rotinas cujas variveis somente so 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 tambm em sistemas distribudos.
Utiliza primitivas send e receive para o envio e recebimento de mensagens.
As primitivas podem ou no bloquear o processo.
Considere um receive bloqueante e um send no bloqueante. O processo deve aguardar
um send para liberar o processo bloqueado na instruo receive.
Os semforos sero alvo de estudo mais detalhado.
SINCRONIZAO ENTRE PROCESSOS 31

Detalhando os Semforos
O conceito de semforo foi proposto por Dijkstra para implementao de excluso mtua e
sincronizao condicional entre processos.

Para liberar um semforo "s" o


Um processo suspenso
processo deve executar uma
enquanto no obtm permisso
primitiva signal(s) e para obter
para executar uma RC e
acesso a RC, via o semforo "s",
automaticamente "acordado"
o processo deve executar uma
atravs de um sinal.
primitiva wait(s).

Ateno
Um semforo uma estrutura de dados composta por um
contador e uma fila que registra os processos pendentes em
ordem de solicitao.
O semforo possui regras de acesso.

Regras de acesso do semforo:

O semforo deve ser inicializado com um valor no negativo.


A operao wait decrementa o semforo; se o valor ficar negativo o processo bloqueado.
A operao signal incrementa o semforo; se o valor no ficar positivo o processo bloqueado
pela operao wait desbloqueado.

Vamos ver um exemplo:

Considere P0, P1 e P2 trs processos que desejam acesso a uma regio crtica e s o semforo que
controla esse acesso, inicializado com 1.

O acesso regio crtica dado por:

Wait(s)
Regio Crtica
Signal(s)

P0 P1 P2
Executa wait(s) ento s = 0 Executa wait(s) ento s = -1 Executa wait(s) ento s = -2
Regio Crtica BLOQUEIO BLOQUEIO

Regio Crtica
Executa signal(s) ento s = -1 Regio Crtica
Executa signal(s) ento s = 0
Desbloqueia P1 Executa signal(s) ento s = 1
Desbloqueia P2

Sincronizao Condicional Utilizando Semforos


Alm de permitirem a implementao de excluso mtua, os semforos tambm podem ser
utilizados para sincronizao condicional entre processos.
SINCRONIZAO ENTRE PROCESSOS 32

Sincronizao Condicional
Um processo precisa de um resultado de outro processo
para que possa continuar sua execuo.

Um problema clssico que exemplifica essa funo 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 restries. Existe uma capacidade mxima para produo, 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, sero utilizados dois semforos:

s - excluso mtua
n - controle de consumo

Inicialmente s = 1 e n = 0

(Regio crtica liberada e no 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()
}
}

Execuo
1. Se o consumidor executar primeiro: ao executar wait(n), decrementar o valor de n (que
zero), ficando negativo. O processo ser bloqueado.
SINCRONIZAO ENTRE PROCESSOS 33

2. Quando um produtor executar, obter acesso regio crtica incluindo um item no buffer e
sinalizando que h itens produzidos incrementando o valor de n (signal n). Pelo algoritmo da
funo signal, o processo que est bloqueado ser acordado.

Rotina Ao Valor de N Valor de S Resultado


C wait(n) -1 1 Bloqueado
P wait(s) -1 0 Acessa RC
signal(s) -1 1 Sada 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, porm ser necessrio outro semforo de sincronizao
que controle os espaos vazios no buffer. Tm-se ento trs semforos:

s - excluso mtua
n - controle de consumo
v - controle de espaos vazios

Inicialmente s = 1, n = 0 e v = tamanho do buffer

(Regio crtica liberada, no h itens para consumo e todos os espaos esto 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)
}
}

Execuo
O produtor executar v vezes at que o buffer esteja cheio. Ao tentar executar mais uma vez,
ficar bloqueado.
SINCRONIZAO ENTRE PROCESSOS 34

Quando um consumidor executar, obter acesso a regio crtica removendo um item no buffer e
sinalizando que h espao disponvel incrementando o valor de v (signal v). Pelo algoritmo da
funo signal, o processo que est bloqueado ser acordado.
Suponha que o buffer possua trs posies (v=3):

Rotina Ao Valor de N Valor de S Valor de V Resultado


P wait(v) 0 1 2 Diminui os espaos 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 espaos 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 espaos 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

Sntese do Captulo
Voc aprendeu:
Como funciona uma soluo baseada em algoritmo e os problemas encontrados.
Como caractersticas do processador podem ser utilizadas na implementao de excluso
mtua.
O que so semforos e como utiliz-los para garantir excluso mtua.

Exerccios de Reviso
1) Considere o problema do produtor/consumidor com buffer infinito (caso 1). O que acontece se
trocarmos de posio as linhas wait(n) e wait(s) na rotina consumidor?
Deadlock
Condio de corrida
Starvation do produtor
No faz diferena a ordem em que estas linhas so executadas
SINCRONIZAO ENTRE PROCESSOS 35

2) Considerando o problema do produtor/consumidor com buffer finito (caso 2), o que acontece se
trocarmos de posio as linhas signal(n) e signal(s) na rotina produtor?
Condio de corrida.
Deadlock.
Starvation do consumidor.
No faz diferena a ordem em que estas linhas so executadas.

Solues
1) Deadlock.
2) No faz diferena a ordem em que estas linhas so executadas.
GERNCIA DE TEMPO DE CPU 36

6. GERNCIA DE TEMPO DE CPU


Objetivos
Entender os objetivos da gerncia de um recurso.
Entender o que so estratgias de alocao (escalonamento) de processador.
Conhecer as estratgias de alocao usuais.
Conhecer os critrios de avaliao de desempenho de uma estratgia de escalonamento.

Escalonamento
Escalonar uma funo 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 importncia em sistemas multitarefa.

Estratgias de Escalonamento
A estratgia de escalonamento adotada dever:

Manter o processador ocupado a maior parte do tempo possvel


Balancear o tempo de CPU entre as tarefas
Oferecer tempos de resposta razoveis
Maximizar a taxa de atendimento (vazo) do sistema (throughput)

Ateno:
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 denominado escalonador
(scheduler).

Escalonador
Processo do sistema operacional responsvel por
indicar o prximo processo que ser executado dos
que estiverem prontos para execuo segundo uma
estratgia pr-definida.
GERNCIA DE TEMPO DE CPU 37

Dispatcher
Processo do sistema operacional responsvel
pela troca de contexto.

Ateno
Pode haver conflito de interesses: Usurio quer
que seu processo termine logo (tempo de
resposta baixo) e sistema quer que vrios
processos sejam atendidos. (throughput alto).

Tipos de Estratgia
As polticas de escalonamento podem ser classificadas segundo a possibilidade do Sistema
Operacional permitir ou no a interrupo de um processo em execuo e substitu-lo por outro.

Escalonamento Preemptivo: O escalonamento preemptivo permite que um evento


externo posso interromper o processo em execuo e coloc-lo no estado de pronto para
que outro processo possa ter direito a execuo.
Escalonamento NO Preemptivo: O escalonamento no preemptivo utilizado
tipicamente me processamento em batch. Quando um processo est em execuo
nenhum evento externo poder interrompe-lo. O processo s deixa o estado de
execuo se terminar ou se executar alguma instruo que o coloque em bloqueio.

Critrios de Escalonamento
Existem 5 critrios de escalonamento:

FCFS
Sem preempo
Processos so 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 vrias filas pronto, uma para cada nvel de prioridade.
Processos de baixa prioridade podem sofrer Starvation.
Uma soluo possvel mudar dinamicamente a prioridade de acordo com a idade
ou o histrico de execuo do processo.
SJF
Poltica sem preempo.
Baseado em estimativa do tempo de execuo.
Processo com o tempo esperado de execuo menor selecionado primeiro.
Favorece processos curtos em detrimento dos longos.
Utilizado em sistemas batch.
Round Robin (Circular)
Usa preempo baseado num Quantum(time slice, fatia de tempo).
GERNCIA DE TEMPO DE CPU 38

Busca democratizar a distribuio do tempo da CPU.


Quantum: tempo mximo que um processo pode executar sem Interrupo:
Muito curto: maior o overhead de escalonamento.
Muito longo: degenera em FCFS.
Mltiplas Filas com Realimentao
Penaliza os processos executados h mais tempo.
Utiliza mltiplas filas com prioridades dinmicas**.
Favorece processos curtos e I/O bounded.
Prioridades dinmicas. So duas:
1 - A cada ciclo de execuo a prioridade diminui.
2 - Starvation: prioridade menor implica em quantum maior ou muita
espera aumenta a prioridade.

Critrios de Escalonamento
Critrio de escalonamento: conjunto de regras que indicar qual o prximo 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
GERNCIA DE TEMPO DE CPU 39

Atividade Proposta
Calcule o tempo estimado de cada resposta. Para simplificar os clculos sero desconsiderados os
tempos de troca de contexto e a diferena de tempos entre as inseres de cada processo.

ID do processo (em ordem) Tempo estimado


A 200
B 100
C 50
D 20

Consideraes importantes para o clculo de tempo de resposta

1) FCFS: Computar a soma dos tempos de espera considerando a ordem de chegada e de


processamento . Para fins de simplificao pode-se considerar que a diferena do instante de
criao de cada processo nula.
2) Prioridade: No utilizado sozinho. Para fins de exerccio semelhante ao FCFS porm a ordem
de execuo dada pela prioridade e no pela ordem de chegada.
3) SJF: Tambm no-preemptivo e a ordem de execuo dada pelo tamanho estimado do
processo (o menor primeiro).
4) Round Robin (Circular): Os processos so atendidos na ordem de chegada mas aps atingirem o
tempo mximo permitido (fatia de tempo) so recolocados no final da fila. O retorno de uma
operao de E/S pode alterar a ordem de execuo. (Calcule do tempo de resposta para as
estratgias FCFS, Round Robin e SJF. Para simplificar os clculos sero desconsiderados os
tempos de troca de contexto e a diferena de tempos entre as inseres de cada processo).
5) Mltiplas filas com realimentao: Cada processo inicialmente colocado na fila de maior
prioridade e menor fatia de tempo. Ao trmino 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 operao de E/S o processo retorna a fila onde estava.

Solues
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)
GERNCIA DE TEMPO DE CPU 40

Round Robin
Para esta estratgia ser necessrio definir qual ser a fatia de tempo. Neste exemplo a
fatia de tempo ser de 10 ms.
Para facilitar a visualizao, a tabela ser dividida em ciclos e o tempo de resposta
calculado somente no final.
Execuo: 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

Sntese da Aula
Voc aprendeu:

Quais as estratgias utilizadas para alocao do processador.


Como avaliar uma soluo de escalonamento.
Como estimar o tempo de resposta de um processo em funo da estratgia de
escalonamento.

Exerccios de Fixao
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 so estimados em 10, 7, 3, 4 e 5 segundos de CPU,
respectivamente. Sendo round-robin a poltica de escalonamento utilizada, com um time-slice
de 1 segundo, o tempo mdio de turnaround desses processos (ignorando overheads de troca de
contexto e interrupes e assumindo que um job recm-chegado colocado no incio 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 utilizao da CPU
O tempo que um processo leva desde a sua admisso at o seu trmino
O nmero de processos executados em um determinado intervalo de tempo
A frao 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 suspenso
_____________ da execuo de um processo. No segundo caso, quando um processo obtm o
processador, o mesmo executa at ____________, ou at que o processo pea uma operao
que ocasione o seu bloqueio.
Indique a opo que completa, respectivamente e de forma correta, as lacunas acima.
no-preemptivos, com preempo, temporria, a metade
com preempo, no-preemptivos, temporria, o fim
com preempo, no-preemptivos, definitiva, a metade
no-preemptivos, com preempo, definitiva, o fim
GERNCIA DE TEMPO DE CPU 41

Solues
1) 19,6 segundos
2) O nmero de processos executados em um determinado intervalo de tempo
3) com preempo, no-preemptivos, temporria, o fim
GERNCIA DE ALOCAO DE MEMRIA 42

7. GERNCIA DE ALOCAO DE MEMRIA


Objetivos
Entender os objetivos da gerncia de alocao de memria
Conhecer as estratgias de alocao de espao na memria principal.
Entender as caractersticas de cada mtodo de alocao.

Conceito
Alocar memria consiste em subdividir e alocar espaos para acomodar os processos em
execuo. necessrio que haja uma estratgia definida para esta tarefa porque:

Espaos so solicitados e liberados em funo da execuo de cada tarefa.


Cada processo precisar ter seu espao protegido.
Pode ser necessrio compartilhar informaes com outros processos.

Abordaremos, neste captulo, as formas de organizao lgica do espao de memria. A


organizao lgica a viso do sistema operacional em relao alocao dos processos.

Estratgias de Organizao Lgica do Espao de Memria


Existem cinco estratgias de organizao lgica do espao de memria:

Contguo Simples
Esttico
Esttico Relocvel
Dinmico
Paginado
Segmentado

Contguo Simples
Somente uma partio da memria criada para apenas um nico processo. Parte da memria
ocupada pelo sistema operacional e outra parte para o processo em execuo.
Este modelo somente pode ser utilizado em sistema monotarefa que no so mais utilizados.

Esttico
Implementao simples em que cada processo recebe um endereo fixo de uma partio para
executar denominado endereo absoluto.
GERNCIA DE ALOCAO DE MEMRIA 43

Cada partio recebe apenas um processo e cada


processo somente poder utilizar uma partio.
As parties possuem tamanho fixo determinado na
inicializao do sistema operacional.

Apresenta baixo desempenho e fragmentao interna.

Fragmentao interna
Espao na utilizado dentro de uma partio

Processos em fila externa para execuo

Esttico Relocvel
Semelhante ao particionamento esttico, porm os processos podem ser alocados em qualquer
partio.

Processos em fila externa para execuo

Dinmico
A estratgia de alocao dinmica permite o particionamento sob demanda, ou seja, a partio
criada durante a alocao do processo exatamente do tamanho que ser utilizada.
Essa estratgia evita a fragmentao interna, mas permite a ocorrncia de fragmentao externa,
ou seja, fragmentao entre as parties.
GERNCIA DE ALOCAO DE MEMRIA 44

Fragmentao externa
Ocorre em funo da diferena do espao necessrio para cada
processo, permitindo que, ao reutilizar um espao, parte dele
no seja ocupado formando buracos. Como esse espao pode ser
muito pequeno, ficaria sem utilizao posterior.
Essa fragmentao menos prejudicial, pois os espaos vazios
contguos sero reagrupados.

Paginado
A memria particionada em pedaos de tamanho igual, assim como os processos.

Os pedaos que compem os processos so chamados de Pginas

Os pedaos que compem a memria so chamados de Molduras de Pginas (Frames)

Quando um processo carregado, suas pginas so alocadas em quaisquer molduras disponveis, no


necessariamente contguas.

Estratgias de Organizao Lgica do Espao de Memria - Paginado


Quando um processo carregado, suas pginas so alocadas em quaisquer molduras disponveis,
no necessariamente contguas.
O sistema operacional precisa manter uma tabela de pginas por processo e uma lista de
molduras disponveis.
Cada processo pode ter fragmentao interna apenas na ltima pgina.
GERNCIA DE ALOCAO DE MEMRIA 45

Traduo de Endereo Lgico em Endereo Fsico


Cada endereo lgico composto por duas partes:

Identificao da pgina onde est o endereo Deslocamento dentro da pgina

Cada pgina alocada em uma moldura, ento cada pgina precisa estar mapeada para uma
moldura.
O deslocamento o mesmo na pgina e na moldura j que so do mesmo tamanho.

Exemplo: O terceiro endereo da pagina x ser o terceiro endereo da moldura que recebeu a
pgina.
Considere o exemplo de traduo de endereo:

Cada endereo possui 16 bits, sendo 10 para deslocamento e 6 para identificao da pgina.
A quantidade de bits utilizada para o offset a mesma para o endereo lgico e para o
fsico uma vez que pgina e moldura possuem o mesmo tamanho.
Com 10 bits de tamanho de pgina, podemos afirmar que cada pgina possui 210 endereos.
Se cada endereo ocupar 32 bits (4 bytes), podemos afirmar que a pgina ocupa 4 x 210
bytes, ou seja, 4KB.
Como foram utilizados 6 bits para indicao da pgina, podemos afirmar que cada processo
pode ter no mximo 26 pginas, ou seja, 64 pginas.
Como cada processo possui 26 pginas e cada pgina possui 4KB (22 x 210 bytes), o tamanho
mximo 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 memria principal, cada segmento diferente pode ocupar
qualquer lugar.

O S.O. mantm uma tabela de segmentos de cada processo. Cada entrada contm:
O incio do endereo fsico daquele segmento.
O tamanho do segmento (por proteo).
Apresenta fragmentao externa.
GERNCIA DE ALOCAO DE MEMRIA 46

Traduo de Endereo Lgico em Endereo Fsico


Semelhante traduo para memria paginada, exceto pela informao adicional do tamanho do
segmento.

Sntese do Captulo
Voc aprendeu:

Quais as formas de alocao de memria para os processos ativos.


Quais as vantagens e desvantagens de cada estratgia.
A diferena entre endereamento lgico e endereamento fsico.

Exerccios de Fixao
1) Considere um sistema baseado em memria paginada com endereo lgico de 32 bits sendo 8
bits utilizados para identificao da pgina e os demais para o offset. Quantos endereos cada
pgina possui?
16M
2M
24M
4K

2) Considere um sistema baseado em memria paginada com endereo lgico de 32 bits sendo 8
bits utilizados para identificao da pgina e os demais para o offset. Quantas pginas um
processo pode ter?
8
256
32
1024

3) Considere um sistema baseado em memria paginada com endereo lgico de 32 bits sendo 8
bits utilizados para identificao da pgina e os demais para o offset. Qual o tamanho mximo
de um processo, considerando que cada endereo ocupa 2 bytes?
32GB
32MB
8MB
8GB

4) Em relao aos mtodos de alocao, correto afirmar que:


GERNCIA DE ALOCAO DE MEMRIA 47

Todas as estratgias apresentam fragmentao interna.


A estratgia de memria paginada apresenta fragmentao interna.
A fragmentao externa pode ser evitada em sistemas que utilizam segmentao.
A ocorrncia de fragmentao de memria nem sempre causa desperdcio de espao.

Solues
1) 16M
2) 256
3) 8GB
4) A estratgia de memria paginada apresenta fragmentao interna.
MEMRIA VIRTUAL 48

8. MEMRIA VIRTUAL
Objetivos
Entender a necessidade de memria virtual.
Entender os princpios de funcionamento de memria virtual e o impacto do uso em um sistema.
Conhecer os principais mecanismos de substituio de pginas na memria.

O que Memria Virtual?


Consiste na utilizao de espaos do disco rgido como extenso lgica da memria
primria.
transparente para o programador e para o processador.
Expande o tamanho da memria primria limitada ao tamanho da unidade de
armazenamento.

O que ganhamos? Flexibilidade.


O que perdemos? Desempenho.

Endereamento
Todas as referncias memria so feitas utilizando endereos lgicos virtuais (referncia
utilizada pelo programa) que so traduzidos em endereos fsicos (endereo real na memria
utilizado pela CPU) em tempo de execuo.

Essa operao denominada MAPEAMENTO.

Com a memria virtual, acaba a necessidade de todas as partes de um processo estarem


carregadas em memria primria.
Uma tarefa pode ocupar diferentes reas de memria durante a sua execuo.

Caractersticas, Vantagens e Desvantagens

Vantagens
Mais processos mantidos na memria principal:
Os processos so carregados parcialmente.
Maior eficincia na utilizao do processador.

Processos podem ser maiores que a memria principal:

Todo programador tem disponvel uma memria de trabalho (virtual) de tamanho igual a
todo espao de endereamento disponvel.

Desvantagens
Maior tempo de resposta para as referncias memria.
Maior complexidade do hardware e do esquema de gerenciamento.
Impossibilidade de estimar, de forma precisa e segura, o tempo a ser gasto em qualquer
referncia memria.
Para utilizao de memria virtual necessrio que haja suporte de hardware e do sistema
operacional.
MEMRIA VIRTUAL 49

Suporte de Hardware
Traduo (mapeamento) eficiente de endereos.
Movimentao eficaz dos trechos de informao entre a memria virtual e a fsica.

Sistema Operacional
O S.O. se encarrega de trazer para a memria fsica as partes necessrias para a execuo
do programa.
Re-alocao eficiente da memria fsica.
Implementao do Princpio da Localidade.
Reduo de Trashing.

Princpio da Localidade
- As referncias de memria tendem a ser agrupadas em termos espaciais
e/ou temporais.
- Em um programa bem construdo, a probabilidade mdia da prxima
instruo a ser executada ser a seguinte ou estar nas redondezas da
instruo corrente mais elevada do que outras hipteses.
- Somente alguns trechos do cdigo so necessrios para a execuo num
curto espao de tempo.
- possvel ter uma razovel noo dos trechos de cdigo que sero
utilizados num futuro prximo, reduzindo os riscos de trashing.

Reduo de Trashing
- Poderia ser traduzido como fazendo lixo
- Ocorre quando o sistema passa a maior parte do tempo removendo e
trazendo partes de processos ao invs de executar instrues dos
mesmos.
- A memria normalmente est toda ocupada com partes de diversos
processos; ento, quando o SO precisa carregar uma nova parte, outra
parte precisar ser removido para abrir espao.
- Se for removida uma parte que seja referenciada logo a seguir, esta
precisar ser carregada novamente.

Caractersticas de Implementao
A organizao lgica da memria se divide em trs tipos:

Paginada
Segmentada
Segmentada com Paginao

Estudaremos a organizao Paginada por ser a implementao mais usual de memria virtual.

Paginao em Memria Virtual


MEMRIA VIRTUAL 50

Cada processo tem sua prpria tabela de pginas.


Cada entrada na tabela de pginas contm um bit de presena (P) indicando se a pgina se
encontra na memria fsica ou no.
Se a pgina est na MP, a entrada contm o endereo inicial da moldura da pgina
correspondente.
Cada entrada tambm contm um bit de modificao (M). Pginas no modificadas no
precisam ser gravadas em disco quando removidas.

Como Funciona a Paginao em Memria Virtual?


Quando um endereo referenciado, o sistema operacional verifica na tabela de pginas se a
pgina que contm o endereo est ou no na memria:

Pgina encontrada - Page Hit


Pgina no encontrada - Page fault
Esta ao chamada de paginao.

Qual o Tamanho Ideal de uma Pgina?


Quanto menor a pgina:
Menor a fragmentao interna.
Mais pginas por processo:
Maior a tabela de pginas.
Mais tabelas na memria secundria.
Mais ocorrncia de page faults (menos endereos disponveis).

O nmero de falta de pginas (page faults):

Diminui medida que o tamanho da pgina aumenta at certo ponto.


Depois deste ponto, comea a diminuir (saturao).

Quando as Pginas So Trazidas Para a Memria?


Por demanda:
Somente traz as pginas referenciadas.
Existem muitas faltas de pgina quando o processo comea.

Por carga antecipada:

Traz mais pginas do que o necessrio.


mais eficiente trazer vrias pginas contguas em disco do que cada uma individualmente.
Torna-se ineficiente se forem trazidas pginas que no sero referenciadas.

Onde Cada Pgina Ser Carregada?


A eficincia do hardware a mesma para qualquer combinao pgina-moldura; logo, a estratgia
baseada apenas na disponibilidade.
Se, no entanto, no houver pginas disponveis, uma pgina dever ser escolhida para ser
substituda.

Que pgina Ser substituda?


A pgina substituda pode ser:
MEMRIA VIRTUAL 51

Uma das pginas residentes do prprio processo (local).


Qualquer pgina residente.

Ateno
Algumas molduras podem ser marcadas como no
removveis (locked ou pinned), como:
- cdigo do kernel
- estruturas crticas do S.O.
- buffers de E/S

Existem alguns algoritmos de estratgia de substituio de pginas. Os algoritmos bsicos so:


Algoritmo timo (terico):
Seleciona a pgina cuja prxima referncia ser a mais distante. Como no podemos
saber antecipadamente que pgina ser utilizada, esse algoritmo apenas de
referncia.
Algoritmo FIFO:
Algoritmo muito simples que substitui a pgina carregada h mais tempo.
No h nenhuma garantia que a pgina escolhida no est sendo referenciada.
Algoritmo LRU (Least Recent Used):
Substitui a pgina que no referenciada h mais tempo.
Pelo princpio de localidade, essa deve ser a pgina com menos probabilidade de ser
referenciada no futuro prximo.
Implementao cara por ser necessrio manter a referncia ao ltimo acesso de
cada moldura.
Algoritmo do Relgio:
Requer um bit adicional na tabela de pginas: o bit de referncia.
Quando a pgina carregada, o bit de referncia ligado.
Quando a pgina referenciada, o bit de referncia ligado.
Para identificar a pgina a ser removida, feita uma busca no sentido horrio e a
primeira pgina que for encontrada com o bit de referncia igual a zero (desligado)
removida.
Durante a busca da pgina a ser removida, os bits de referncia das pginas
analisadas so desligados.
Exemplo:

Sntese do Captulo
Voc aprendeu:
Quais as formas de alocao de memria para os processos ativos.
MEMRIA VIRTUAL 52

Quais as vantagens e desvantagens de cada estratgia.


A diferena entre endereamento lgico e endereamento fsico.

Exerccios de Reviso
1) Considerando a sequncia de referncia de pginas abaixo e a utilizao de 6 molduras
(frames). A situao das molduras, imediatamente antes do incio da sequncia, inseridas nesta
ordem (moldura 1, 2,3...6), :

T1
Moldura 1 1
Moldura 2 12
Moldura 3 11
Moldura 4 9
Moldura 5 6
Moldura 6 3

A sequncia: 1,3,4,7,12,6,5, 2,3


Qual a situao final das molduras utilizando a estratgia de substituio das pginas FIFO?
4 - 7 - 12 - 5 - 2 - 3
5 - 3 - 7 - 12 - 6 - 2
4 - 7 - 11 - 12 - 2 - 3
5-4-7-9-6-3

2) Qual a situao final das molduras utilizando a estratgia de substituio das pginas LRU?
4 - 7 - 12 - 5 - 2 - 3
5 - 3 - 7 - 12 - 6 - 2
4 - 7 - 11 - 12 - 2 - 3
5-4-7-9-6-3

3) Quantas falhas de pgina aconteceram utilizando as estratgias FIFO e LRU respectivamente?


5e6
6e5
5e5
6e6

Solues
1) 4 - 7 - 12 - 5 - 2 - 3
2) 5 - 3 - 7 - 12 - 6 - 2
3) 5 e 6
DISPOSITIVOS DE ENTRADA E SADA 53

9. DISPOSITIVOS DE ENTRADA E SADA


Objetivos
Identificar os componentes do subsistema de E/S.
Entender o significado de dispositivos controladores.
Conhecer os componentes de hardware de E/S.
Conhecer os componentes de software de E/S.

Subsistemas de Entrada e Sada


As operaes de E/S devem ser o mais simples e transparente possvel. O subsistema de E/S de
um sistema operacional deve isolar a complexidade de operaes especficas para cada tipo de
dispositivo.
composto por um conjunto de rotinas que possibilita a comunicao com qualquer dispositivo
conectado ao computador sem que o usurio se preocupe com os detalhes do dispositivo.
Uma tarefa de E/S executada ento:
Pelo prprio hardware.
Pelo sistema operacional acionado pela aplicao pelas rotinas de E/S.

E/S Nvel do Usurio

Sistema Operacional
- E/S independente do dispositivo.
- Interface padro (API).
- Driver (mecanismos de acesso ao dispositivo fornecendo uma viso uniforme)

Hardware

O subsistema de E/S dividido em trs camadas:


Interface com o usurio
Implementao do S.O.
Hardware.
DISPOSITIVOS DE ENTRADA E SADA 54

Detalhando os Componentes

Componentes de Hardware
Perifrico ou Dispositivo de E/S: Dispositivo conectado a um computador para permitir a
comunicao com o mundo externo.
Interface: Componente que conecta o perifrico aos barramentos do computador.
Controlador: Componente que implementa as operaes (l, escreve...) e faz parte da
interface.

Componentes de Software
Perifrico ou dispositivo de E/S: Endereo de referncia no sistema de E/S. Utiliza um
conjunto de registradores internos ao controlador que recebem ordens do processador e
fornecem o status de uma operao. Os registradores so associados a endereos.
A referncia depende da arquitetura do processador e implementada de duas formas:
Em espao de memria: Na fase de projeto do computador definida uma zona de
endereamento de memria que ser utilizada para dispositivos de E/S. Utilizam a
mesma instruo para acesso a um dispositivo ou para um endereo de memria
(mov).
Em espao de E/S: Instrues especiais para manipulao de dispositivos. No
projeto do processador so definidos dois espaos distintos de endereamento.
Utilizam instrues distintas para acesso a endereos de E/S (in, out) e para acesso
memria (mov).
E/S independente do dispositivo: Funes de gerenciamento de alocao e uso do
dispositivo e no dependem de caractersticas do hardware, tais como:
Escalonamento de E/S: define a ordem de atendimento s requisies.
Denominao: prov associao de um nome a um perifrico.
Buferizao: buffer uma rea de armazenamento temporrio utilizado para
transferncia de dados entre dois elementos. So utilizados para compatibilizar a
DISPOSITIVOS DE ENTRADA E SADA 55

comunicao entre dispositivos com velocidades e unidades de transferncia


diferentes.
Cache de dados: armazena em memria os dados mais recentes.
Alocao e liberao de uso
Direitos de acesso
Tratamento de erros
Device Driver: Implementa a comunicao do subsistema de E/S com um dispositivo
especfico. Responsvel pela traduo do que solicitado pela aplicao para o que
entendido pelo dispositivo. Recebem comandos gerais e os transforma e comandos
especficos para o dispositivo.

Classificao dos Dispositivos

Quanto a Comunicao
Comunicao com o usurio
Comunicao com o equipamento
Comunicao com dispositivos

Quanto a Transferncia de Dados


Orientado a bloco (ex. disco)
Orientado a caractere (ex. terminal)

Forma de Comunicao
Programmed I/O: Tratamento de acesso de responsabilidade do programador, fazendo com
que a aplicao aguarde o trmino da operao de E/S.
Interrupt-driven I/O: O processo que executou a operao permanece bloqueado at que a
operao se complete. O Processador interrompido quando a operao de E/S termina
colocando o processo no estado de pronto.
Direct memory Access (DMA): Transferncia dos dados diretamente para a memria sem
interferncia do processador.

Sntese do Captulo
Voc aprendeu:
O que um subsistema de E/S.
Os tipos de dispositivos e suas caractersticas.

Exerccios de Fixao
1) Quais dos itens abaixo so componentes de software em um sistema de entrada e sada?
Drivers e controladores
Drivers e interface
Drivers e APIs
Controladores e interface

2) Quais dos tarefas abaixo so de responsabilidade do device driver?


Escrever comandos nos registradores do dispositivo e calcular trilha e setor para uma leitura
do disco.
DISPOSITIVOS DE ENTRADA E SADA 56

Calcular trilha e setor para uma leitura do disco e verificar as permisses de acesso para um
dispositivo.
Verificar as permisses de acesso para um dispositivo e fornecer APIs.
Fornecer APIs e gerenciar o buffer do dispositivo.

Solues
1) Drivers e APIs
2) Escrever comandos nos registradores do dispositivo e calcular trilha e setor para uma leitura do
disco.
SISTEMA DE ARQUIVOS 57

10. SISTEMA DE ARQUIVOS


Objetivos
Entender o conceito de arquivos.
Conhecer as organizaes de arquivos mais comuns.
Conhecer algumas formas de proteo de acesso.

Conceitos de Arquivos e Diretrios


Antes de iniciarmos importante ressaltar alguns conceitos:
Um arquivo constitudo por informaes logicamente relacionadas que podem representar
instrues (executvel) ou dados (texto).
Diretrios so arquivos que contm informaes sobre outros arquivos.

Caractersticas de um Arquivo
Persistncia: Arquivos so armazenados em discos, ou em outro meio de armazenamento
no voltil, e no desaparecem ao trmino da sesso.
Compartilhamento: Arquivos podem ser compartilhados por processos diferentes.
Estrutura: Possuem uma organizao interna em funo do tipo de informao que
armazena.

Atributos de um Arquivo
Nome: Representao utilizada para o usurio.
Tipo: Necessrio em sistemas que utilizam mais de um tipo de arquivo.
Localizao: Identificao da posio de um arquivo em um dispositivo especfico.
Tamanho: Registro do tamanho atual do arquivo.
Proteo: Informaes de controle de acesso.
Usurio: Identificao do criador do arquivo.
Data e hora: Registro da criao, ltimo acesso e ltima modificao.
Os arquivos podem ser armazenados em diferentes dispositivos fsicos como discos magnticos,
ticos, pen drive, fitas magnticas etc.
A forma como o arquivo nomeado, armazenado e recuperado definida pelo sistema de arquivos
do sistema operacional.

Funcionalidades de um Sistema de Arquivo


Atender as requisies de armazenamento e recuperao de informaes.
Garantir a validade do arquivo.
Prover rotinas para acesso.
Prover acesso a dispositivos diferentes.
Prover acesso a mltiplos usurios.

Critrios Para Escolha de uma Organizao de Arquivo


Menor tempo de acesso.
Facilidade de atualizao.
Economia em armazenamento.
SISTEMA DE ARQUIVOS 58

Facilidade de manuteno.
Confiabilidade.

Operaes Sobre Arquivos


Criao.
Gravao de dados.
Leitura dos dados.
Excluso.

Organizaes
Sem estrutura: No h nenhuma estrutura lgica. A aplicao deve ser uma sequncia de
bytes e fazer as interpretaes necessrias.
Registros: uma estrutura em que cada elemento possui um conjunto de campos. Esses
campos podem ou no ter um tamanho fixo. Ex: Registros de um estudante contendo
campos de tamanho fixo: nome, telefone e CPF.

Mtodos de Alocao
Vamos estudar trs mtodos de alocao. So eles:

Contgua
Encadeada
Indexada

Contgua
Conjunto contguo de blocos alocados na criao.
Tabela de alocao contm uma entrada (inicio e tamanho) para cada arquivo.
Necessrio pr-alocao.

Encadeada
Cada bloco contm um ponteiro para o prximo.
Tabela de alocao contm uma entrada para o primeiro bloco.
Adequada para arquivos de acesso sequencial.
Para ter acesso a um determinado bloco, necessrio percorrer a lista at o bloco desejado.
SISTEMA DE ARQUIVOS 59

Indexada
A tabela de alocao contm um ndice para cada arquivo.

Gerncia de Espao Livre


Tabela de bits: Utiliza um bit para cada bloco onde 0 corresponde ao bloco livre e 1 ao bloco
em uso.
Encadeada: Cada bloco livre tem um ponteiro para o prximo.
Indexado: Trata espao como um arquivo.
SISTEMA DE ARQUIVOS 60

Proteo de Acesso

Motivao
Compartilhamento do meio de armazenamento por diversos usurios.

Implementaes
Senhas de acesso a um arquivo.
Criptografia.
Concesso de direitos de acesso a cada usurio ou a usurios de um mesmo grupo. Esses direitos
podem ser para leitura, escrita ou execuo de um programa.

Sntese do Captulo
Voc aprendeu:
Como os arquivos so armazenados.
Como um determinado tipo de arquivo acessado pelo sistema operacional.
A ltima funo de gerenciamento de um sistema operacional estudada neste curso.

Exerccios de Fixao
1) So funes do sistema de arquivos:
Gerenciar permisses de acesso e a alocao do arquivo em disco.
Gerenciar alocao em disco e verificar a ortografia do contedo dos documentos.
Gerenciar espaos livres e o posicionamento das cabeas de leitura e gravao do disco.
Gerenciar permisses de acesso e ajustar a velocidade de rotao do disco.

2) Analise as sentenas sobre mtodos de alocao em sistema de arquivos e, em seguida, assinale


a alternativa correta:
I. So estratgias de alocao: Contgua, Encadeada e Indexada.
II. A estratgia Indexada permite a utilizao de mais de um nvel de ndice, permitindo
gerenciamento de arquivos maiores quando comparados a apenas um nvel.
III A alocao encadeada garante que todos os blocos de um arquivo so alocados de forma
contgua.
Somente I est correta.
Somente II est correta.
I e II esto corretas.
I e III esto corretas.

Solues
1) Gerenciar permisses de acesso e a alocao do arquivo em disco.
2) I e II esto corretas.