Você está na página 1de 243

1

Sistemas Operacionais
Fernando Morse
morse@oi.com.br
2
Sistemas Operacionais
Sistemas Operacionais
Gerenciamento de processador: chamadas, comunicao
interprocesso, agendamento, muItiprogramao, processos
concorrentes, primitivas de sincronizao;
Gerenciamento de perifricos: hardware e software de entrada
e sada, deadIock, conteno, baIanceamento de carga
3
Sistemas Operacionais
Introduo
Caractersticas
4
Sistemas Operacionais
Definio:
O Sistema Operacional (SO) um programa que controla e
coordena todas as operaes de um sistema de computao. ,
muitas vezes, tambm chamado de Supervisor, Monitor,
Executivo ou Controlador.
um programa que atua como intermedirio entre o usurio e o
hardware de um computador com o propsito de fornecer um
ambiente para a execuo de programas.
5
Sistemas Operacionais
4
USUARIOS
SISTEMA
OPERACIOANAL
HARDWARE
6
Sistemas Operacionais
Caractersticas de Sistema OperacionaI
Sistema Operacional um conjunto de rotinas executado pelo
processador, da mesma forma que nossos programas.
SO um programa que permite s pessoas usar o Hardware do
computador (CPU, Memria e Armazenamento Secundrio).
Os usurios no do instrues diretamente ao computador. Em vez
disso, eles do instrues ao Sistema Operacional. O SO instru o
Hardware a executar as tarefas desejadas.
Kernel o nico programa que executa sempre, todo o resto so
programas aplicativos.
7
Sistemas Operacionais
Caractersticas de Sistema OperacionaI
W O Sistema Operacional responsvel por alocar recursos de
hardware e escalonar tarefas. Ele tambm deve prover uma
interface para o usurio - ele fornece ao usurio uma maneira de
acesso aos recursos do computador.
W Um Sistema Operacional pode ser definido como um gerenciador
dos recursos que compem o computador (processador,
memria, /O, arquivos, etc). Os problemas centrais que o
Sistema Operacional deve resolver so o compartilhamento
ordenado, a proteo dos recursos a serem usados pelas
aplicaes do usurio e o interfaceamento entre este e a
mquina.
8
Sistemas Operacionais
Funes que o SO deve desempenhar
Permitir que os programas armazenem e obtenham informao;
solar os programas dos detalhes especficos de hardware;
Controlar o fluxo de dados entre os componentes de um computador;
Permitir que os programas sejam executados sem a interferncia de
outros programas;
Permitir que os programas independentes cooperem periodicamente e
compartilhem informaes;
Responder aos erros ou a solicitaes dos usurios;
mpor um escalonamento entre programas que solicitam recursos;
Facilitar o acesso aos recursos do sistema.
9
Sistemas Operacionais
Busca do Setor de Boot
"uando o computador ligado, um pequeno programa
gravado no primeiro ou nos dois primeiros setores do
disco (BOOT) carregado para memria
automaticamente. Sua funo ser unicamente ler o
sistema operacional para RAM.
10
Sistemas Operacionais
BOOT
Em computao, boot o termo em ingls para o processo de iniciao
do computador que carrega o sistema operacional quando a mquina
ligada.
Muitos computadores podem executar apenas cdigos existentes na
memria de trabalho (ROM ou RAM); os sistemas operacionais
modernos so normalmente armazenados em disco rgido, CD-ROM ou
outros dispositivos de armazenamento. Logo que o computador ligado,
ele no tem um sistema operacional na memria. O computador
hardware no pode fazer as aes do sistema operacional, como
carregar um programa do disco; assim um aparente insolvel paradoxo
criado: para carregar o sistema operacional na memria, precisamos de
um sistema operacional j carregado.
11
Sistemas Operacionais
Sistema de iniciao ou Boot Ioader
A soluo para o paradoxo est na utilizao de um pequeno e
especial programa, chamado sistema de iniciao, boot loader ou
bootstrap. Este programa no tem a completa funcionalidade de
um sistema operacional, mas especialmente construdo para
que seja capaz de carregar um outro programa para permitir a
iniciao do sistema operacional. Freqentemente, boot loaders
de mltiplos estgios so usados, neste caso vrios pequenos
programas se complementam em seqncia, at que o ltimo
deles carrega o sistema operacional.
12
Sistemas Operacionais
Modo ReaI
Os programas podem acessar diretamente posies de memria,
executar operaes de E/S de baixo nvel ou acessar diretamente
o hardware de perifricos.
Os programas executados em MODO REAL podem ter o
completo controle do computador.
O processsamento em MODO REAL inaceitvel em ambiente
multiprogramao pois permite que os programas se afetem
mutuamente.
13
Sistemas Operacionais
Modo Protegido
Os programas no podem acessar diretamente posies de
memria, executar operaes de E/S de baixo nvel ou acessar
diretamente o hardware de perifricos.
O SO mantm um estrito controle de cada aplicao, protegendo
cada programa de outros programas.
O processsamento em MODO PROTEGDO aceitvel em ambiente
multiprogramao
14
Sistemas Operacionais
Estruturas de Processamento
Existem 5 estruturas basicas de processamento:
- monousuario
- multiusuario
- multitareIa
- multiprogramaco
- multiprocessamento.
15
Sistemas Operacionais
onousurio
Nesta estrutura de processamento somente um programa e executado de
cada vez e apenas por um usuario tambem de cada vez.
ultiusurio
Nesta estrutura de processamento alem de multiprogramaco varios
usuarios passam a compartilhar o mesmo computador.
A arquitetura tradicional e um computador central e varios terminais,
chamados de terminais burros por no terem capacidade de
processamento proprio.
16
Sistemas Operacionais
MuItitarefa
esta estrutura de processamento permitido a realizao de
diferentes tarefas simultaneamente.
Exemplos de tarefas que podem ser realizadas simultaneamente:
imprimir
editar um texto
gravar um programa em disco
enviar dados por modem.
a Multitarefa o processador trabalha em vrias partes de um
mesmo programa e no em vrios programas concorrentemente.
17
Sistemas Operacionais
MULTITAREFA PREEMPTIVA (Unix e Win 95 (osr2), 98, XP, VISTA)
Em um sistema Multitarefa preemptivo, cada encadeamento executado
durante um tempo determinado ou at que outro encadeamento de
prioridade maior esteja pronto para ser executado.
Como o agendamento controlado pelo sistema operacional sem a
cooperao do aplicativo, torna-se mais difcil para um programa ou
encadeamento monopolizar o processador.
Para impedir que encadeamentos de processos diferentes tenham acesso a
um recursos que no podem ser compartilhados (como uma porta serial), o
programa pode definir semforos (sinalizadores especiais utilizados pelo
programa) para bloquear este recurso at que ele termine de ser utilizado.
o Windows 95-OSR2, programas do MS-DOS e de 32 bits baseados no
Windows so Multitarefa Preemptiva.
18
Sistemas Operacionais
MULTITAREFA COOPERATIVA (Windows 95 e 3.11)
a tcnica de MULTTAREFA COOPERATVA, cada processo
controla a CPU at decidir libert-la.
Em sistema Multitarefa cooperativos, um encadeamento executado
at que voluntariamente abandone o processador.
O programa determina quando o encadeamento pra a execuo.
o Windows 95, programas de 16 bits baseados no Windows so
Multitarefa de modo cooperativo.
19
Sistemas Operacionais
MuItiprogramao
esta estrutura de processamento permitido a execuo concorrente,
ou aparentemente simultnea de mltiplos programas por um nico
computador.
MuItiprocessamento
esta estrutura o sistema multiusurio usa mltiplos processadores para
executar um ou vrios programas. Tambm chamado de
processamento paralelo.
20
Sistemas Operacionais
SO Distribuido / ParaIeIo
21
Sistema OperacionaI Distribudo
W Um sistema operacional distribudo deve se apresentar aos
usurios como um sistema operacional centralizado, mas
que, na realidade, tem suas funes executadas por um
conjunto de mquinas independentes;
W Sistemas fracamente acoplados, pois cada processador
tem a sua memria local.
W Excelente para compartilhamento de recursos
W ncrementa a velocidade de computao realiza
compartilhamento de carga.
Sistemas Operacionais
22
Sistema OperacionaI ParaIeIo
W Sistemas multiprocessados com uma ou mais CPU em comunicao
prxima.
W Sistema fortemente acoplados, processadores compartilham
memria e um clock.
WMaior throughput
Sistemas Operacionais
23
ultiprocessamento Simtrico (SP- Symmetric multiprocessing)
W Cada processador executa uma copia idntica do SO
W Muitos processos podem executar ao mesmo tempo, sem deterioraco do
desempenho
W randes parte dos sistemas operacionais modernos suportam SMP
ultiprocessamentoAssimtrico
W Acada processador e atribuida uma tareIa especiIica ;
W Principio de Iuncionamento e que um processador,denominado mestre,
aloca trabalho para o outro processador, denominado escravo.
Sistemas Operacionais
24
Sistemas Operacionais
Sistemas fortemente acopIados
W Permitem que os programas dos usurios sejam divididos em
subprogramas, para execuo simultnea em mais de um processador
W Sistemas Assimtricos
W Sistemas Simtricos
W Multiprocessamento
25
Sistemas Operacionais
Sistemas fracamente acopIados
W Permitem que as mquinas e os usurios de um sistema distribudo
sejam completamente independentes (ex: rede de PCs que compartilham
recursos, como uma impressora, via uma rede local - LA)
W Sistemas Operacionais de Rede
W Sistemas Operacionais Distribudos
26
Sistemas Operacionais
Sistema OperacionaI como Gerenciador de
Recursos
27
Sistemas Operacionais
SSTEMA OPERACOAL COMO GERECADOR DE RECURSOS
ormalmente os SOs so encarados como gerenciadores de recursos,
responsveis principalmente pela atualizao permanente do estado de
cada recurso, definio da poltica de alocao de recursos (quem
recebe, quanto e o que) e a liberao dos mesmos.
Os SOs podem ser divididos em quatro gerncias:
gerncia de memria
gerncia de processador
gerncia de perifricos
gerncia de informaes.
28
Sistemas Operacionais
Gerncia de Memria
A Gerncia de Memria tem como funo primordial manter
atualizado o estado de memria, isto , controlar as partes de
memrias que esto sendo utilizadas, identificar quem as est
usando e supervisionar as reas disponveis.
Alm disso, determina a alocao de mais memria (quando e
quanto), garante a integridade das reas de programa, impedindo
que outro processo acesse posies de memrias reservadas
para um determinado programa, e libera com facilidade as reas
de memrias quando um processo no mais delas precisa.
29
Sistemas Operacionais
Gerncia de Processador
A Gerncia de Processador, atravs de seus vrios mdulos,
responsvel pelo controle de todos os processos em andamento
num computador.
Veremos mais adiante os vrios estgios que passa um processo.
30
Sistemas Operacionais
Gerncia de Perifricos
A Gerncia de Perifricos mantm o controle dos perifricos,
canais e unidades de controle, decidindo sobre sua alocao e
iniciando operaes de entrada/sada, bem como garantindo a
segurana, isto , impedindo a utilizao indevida de um recurso
previamente alocado.
Gerncia de Informaes
A Gerncia de nformaes responsvel pelo controle do uso de
arquivos, ou seja, abre e fecha arquivos e decide se o processo
pode ou no acessar as informaes.
31
Sistemas Operacionais
KerneI
32
Sistemas Operacionais
KerneI
Kernel de um sistema operacional entendido como o ncleo. Ele
representa a camada mais baixa de interface com o Hardware,
sendo responsvel por gerenciar os recursos do Sistema
Operacional como um todo. no kernel que esto definidas
funes para operao com perifricos (mouse, disco,
impressora, interface serial/interface paralela), gerenciamento de
memria, entre outros. Resumidamente, o kernel um conjunto
de programas que fornece para os programas de usurio
(aplicativos) uma interface para utilizar os recursos do sistema.
33
Sistemas Operacionais
KerneI
"uanto sua arquitetura, o kernel pode ser monoltico monoltico - em um nico
bloco, com todas as funcionalidades carregadas na memria - ou
modular modular (micro (micro- -kernel) kernel) - com os mdulos especficos para cada tarefa
carregados opcionalmente, dinamicamente e hbrido hbrido.
O kernel a parte mais importante do sistema operacional, pois, sem ele,
a cada programa novo que se criasse seria necessrio que o
programador se preocupasse em escrever as funes de entrada/sada,
de impresso, entre outras, em baixo nvel, causando uma duplicao de
trabalho e uma perda enorme de tempo. Como o kernel j fornece a
interface para que os programas possam acessar os recursos do sistema
de um nvel mais alto e de forma transparente, fica resolvido o problema
da duplicao do trabalho.
34
Sistemas Operacionais
KerneI
"uando h perifricos ou elementos de um sistema
computacional que o kernel no cobre, ento se faz necessrio
escrever a interface para eles, os chamados device drivers.
Geralmente, os kernels oferecem uma funo para se executar
chamadas de sistema, como por exemplo a ioctl() do Linux.
Valendo-se dessa funo, podem-se escrever rotinas para
qualquer dispositivo.
35
Sistemas Operacionais
KerneI monoItico
Kernel monoltico ou mono-bloco um kernel que implementa um
interface de alto nvel para possibilitar chamadas de sistema
especficas para gesto de processos, concorrncia por parte de
mdulos dedicados que so executados com privilgios
especiais. Alguns exemplos deste tipo de kernel:
Linux;
Unix;
BSD
MS-DOS; e
Windows 95, Windows 98 e Windows ME.
36
Sistemas Operacionais
KerneI monoItico
Diagrama de interaco de um kernel monolitico
37
Sistemas Operacionais
Micro-KerneI
Micro-kerneI um termo usado para caracterizar o sistema cujas
funcionalidades do sistema saram do kernel e foram para
servidores, que se comunicam com um ncleo mnimo, usando o
mnimo possvel o "espao do sistema" (nesse local o programa
tem acesso a todas as instrues e a todo o hardware) e
deixando o mximo de recursos rodando no "espao do usurio"
(no espao do usurio, o software sofre algumas restries, no
podendo acessar alguns hardwares, nem tem acesso a todas as
instrues).
38
Sistemas Operacionais
Micro-KerneI
Diagrama de interaco de um micro-kernel
Exemplo de SO : Minix QNX
39
Sistemas Operacionais
KerneI Hbrido ou em Camadas
KerneI hbrido define um kernel baseado em micro-kernel no qual
mdulos externos a ele podem executar operaes em modo kernel
(protegido), a fim de evitar trocas de contexto e melhorar o
desempenho geral do sistema.
40
Sistemas Operacionais
Diagrama de interaco de um kernel hibrido
Exemplo de So: Microsoft Windows T, XP, 2000,
Vista.
KerneI Hbrido
ou em Camadas
41
Sistemas Operacionais
Concorrncia
42
Concorrncia
A possibilidade de o processador executar instrues em
paralelo com operaes de E/S permitem que diversas tarefas
sejam executadas concorrentemente. O conceito de
concorrncia o principio bsico para o projeto e a
implementao dos sistemas multiprogramveis.
Sistemas Operacionais
43
Concorrncia
A utilizao concorrente da UCP deve ser implementada de
maneira que, quando um programa perde o uso do processador
e depois retorna para continuar sua execuo, seu estado deve
ser idntico ao do momento em que foi interrompido. O
programa dever continuar sua execuo exatamente na
instruo seguinte quela em que havia parado, aparentando ao
usurio que nada aconteceu.
Sistemas Operacionais
44
Sistemas Operacionais
Interrupo e Exceo
45
Interrupo e exceo
Durante a execuo de um programa, alguns eventos
inesperados podem ocorrer, ocasionando um desvio forado no
seu fluxo de execuo. Estes tipos de eventos so conhecidos
por interrupo ou exceo e podem ser conseqncia da
sinalizao de algum dispositivo de hardware externo ao
processador ou da execuo de instrues do prprio programa.
A diferena entre interrupo e exceo dada pelo tipo evento
ocorrido.
Sistemas Operacionais
46
nterrupco
o mecanismo que o sistema operacional sincroniza a
execuo de todas as sua rotinas e dos programas dos
usurios, alm de controlar dispositivos.
sempre gerada por algum evento externo ao programa
e, neste caso, independe da instruo que est sendo
executada. Um exemplo de interrupo ocorre quando um
dispositivo avisa ao processador que alguma operao de E/S
est completa. este caso, o processador deve interromper o
programa para tratar o trmino da operao.
Sistemas Operacionais
47
nterrupco
Ao final da execuo de cada instruo, a unidade de
controle verifica a ocorrncia de algum tipo de interrupo.
este caso, o programa em execuo interrompido e o
controle desviado para uma rotina responsvel por tratar o
evento ocorrido, denominada rotina de tratamento de
interrupo. Para que o programa possa posteriormente voltar a
ser executado, necessrio que, no momento da interrupo,
um conjunto de informaes sobre a sua execuo seja
preservado. Essas informaes consistem no contedo
registradores, que devero ser restaurados para a continuao
do programa.
Sistemas Operacionais
48
Interrupo
As interrupes so decorrentes de eventos assncronos, ou
seja, no relacionados instruo do programa corrente. Como
por exemplo dispositivo de E/S informar ao processador que
est pronto para receber ou transmitir dados.
Sistemas Operacionais
49
Exceo
Uma exceo semelhante a uma interrupo, sendo a principal
diferena o motivo pela qual o evento gerado. A execuo resultado
direto da execuo execuo de de uma uma instruo instruo do do prprio prprio programa programa, como a
diviso de um nmero por zero ou a ocorrncia de overflow em uma
operao aritmtica.
A diferena fundamental entre exceo exceo e e interrupo interrupo que a primeira
gerada por um evento sncrono sncrono, enquanto a segunda gerada por
eventos assncronos assncronos. Um evento sncrono quando resultado direto da
execuo do programa corrente.
Sistemas Operacionais
50
Interrupo e Exceo
W nterveno do Sistema Operacional na execuo de um programa
devido a ocorrncia de um evento
W Causas da interrupo:
W Resultado da execuo de instrues de um programa (Exceo)
WGerado pelo sistema operacional (nterrupo)
W Gerado por algum dispositivo de hardware (nterrupo)
W O fluxo da execuo do programa desviado para uma rotina
especial de tratamento
Sistemas Operacionais
51
Sistemas Operacionais
nterrupco e Exceco
52
Interrupo
Genericamente as interrupes podem ser de 2 tipos:
W Interrupo de Software (System caII ou TRAP)
W Interrupo de Hardware (IRQ)
Sistemas Operacionais
53
INTERRUPO DE SOFTWARE - System CaII ou TRAP
A interrupo de software um sinal de interrupo gerado por uma
instruo especial (portanto por software) denominada chamada do
sistema (system call) ou chamada do supervisor (supervisor call).
Alguns autores tambm chamam as interrupes geradas por software
de TRAP (armadilha). Um TRAP desencadeia as mesmas aes
desencadeadas por uma interrupo de hardware, isto , o programa
em execuo suspenso, informaes so salvas e uma rotina
especfica do SO executada.
Sistemas Operacionais
54
System CaII ou TRAP
Resumindo: Em computao, uma chamada de sistema
(88tem call) o mecanismo usado pelo programa para
requisitar um servio do sistema operacional, ou mais
especificamente, do kernel do sistema operacional.
Sistemas Operacionais
55
Sistemas Operacionais
System CaII ou TRAP
A a interface entre os programas dos usurios e o Sistema Operacional
56
Interrupo de Hardware
Uma interrupo de hardware um sinaI originado em aIgum dispositivo fsico,
que faz com que a UCP suspenda a execuo do programa que vinha executando
(guardando informaes para continuar a execuo desse programa, mais tarde) e
passe a executar uma rotina especfica que trate da interrupo ocorrida.
Interrupes de hardware so geradas peIos diversos perifricos (discos, tecIados,
impressoras etc.) ou peIo reIgio. O reIgio (timer) timer) um dispositivo que
decrementa automaticamente o contedo de um registrador, com uma freqncia
constante, e interrompe a CPU quando o vaIor do registrador atinge zero.
Sistemas Operacionais
57
Interrupo de Hardware
Uma IRQ (abreviao para Interrupt Request) a forma pela
qual componentes de hardware requisitam tempo computacional
da CPU. Uma R" a sinalizao de um pedido de interrupo
de hardware.
Sistemas Operacionais
58
Interrupo de Hardware
Os computadores modernos compatveis com o BM PC possuem
16 designaes de R" (0-15), cada uma delas representando
uma pea fsica (ou virtual) de hardware. Por exemplo, a R"0
reservada para o temporizador do sistema, enquanto a R"1
reservada para o teclado. "uanto menor for o nmero da R",
mais crtica sua funo.
Sistemas Operacionais
59
Tratamento de Interrupes de Dispositivos de E/S
O dispositivo de E/S interromper a CPU assim que terminar de atender
uma I/O request
"uando um pedido de E/S iniciado o SO varre a tabela de status dos
dispositivos (device status tabIe) para saber o status do dispositivo
(ocupado, livre, no disponvel).
o caso de ocupado o SO adiciona o pedido na lista de pedidos
pendentes - processo "Bloqueado Bloqueado
Sistemas Operacionais
60
Tratamento de Interrupes de Dispositivos de E/S
"uando um dispositivo acaba sua tarefa interrompe a CPU, avisando o
trmino do tratamento de E/S.
O SO identifica qual dispositivo fez a interrupo, consulta a lista de
pedidos pendentes e trata o prximo pedido (Bloqueado Bloqueado -> Espera Espera)
O processo que estava em Espera aguardando o trmino da E/S
colocado na lista de processos prontos. (Espera Espera -> Pronto Pronto)
Sistemas Operacionais
61
Proteo do Sistema
WObjetivo: garantir a integridade dos dados pertencentes a cada usurio.
WVrios programas ocupam a memria simultaneamente e cada usurio
possui uma rea onde dados e cdigos so armazenados => o SO deve
preservar as informaes contra acessos indevidos (confiabilidade)
WProteo aos recursos compartilhados do sistema: memria, dispositivos
de E/S e CPU
W"uando o programa tenta acessar uma posio de memria fora de sua
rea enderevel (erro de violao de acesso) o programa encerrado.
Sistemas Operacionais
62
Proteo do Sistema
Wo estado usurio somente so executadas instrues no priviIegiadas
(no afetam diretamente outros programas)
WCaso um programa tente executar uma instruo priviIegiada, sem estar
no modo supervisor, uma interrupo gerada e o programa encerrado.
WO estado de execuo de um processo determinado por um conjunto de
bits, localizado em um registrador especial da CPU (PSW - Process Status
Word) - indica se uma instruo pode ou no ser executada.
Sistemas Operacionais
63
Proteo do Sistema
Diviso da rea de memria do SO:
WEspao de Endereamento do Sistema (EES) : parte de endereos
mais baixa, reservada para o prprio SO
WEspao de Endereamento do Usurio (EEU) : parte de endereos
mais altos, reservada para os programas dos usurios.
Sistemas Operacionais
64
Proteo do Sistema
WProgramas dos usurios s podem ter acesso ao EES (rea reservada do
SO) via "systems call, que invocado sempre que um processo precisa
ter acesso a algum servio disponvel.
Sistemas Operacionais
65
EES
Acesso
PriviIegiado
EEU
Usurio
Sistemas Operacionais
System call
66
Sistemas Operacionais
System Call
67
Sistemas Operacionais
Entrada e Sada
68
Sistemas Operacionais
Gerenciamento de Entrada e Sada
Uma das principais funes de um sistema operacional controlar
todos os dispositivos de E/S.
Ele deve enviar comandos para os dispositivos, capturar
interrupes e tratar erros.
Tambm deve oferecer uma interface entre os dispositivos e o
restante do sistema que seja simples e fcil de usar.
a medida do possvel, a interface deve ser a mesma para todos os
dispositivos. (Tanenbaum Tanenbaum)
69
Sistemas Operacionais
Gerenciamento de Entrada e Sada
os primeiros sistemas computacionais, a comunicao entre o
processador e os perifricos era controlada por um conjunto de
instrues especiais, denominadas instrues de entrada/sada,
executadas pelo prprio processador. O surgimento do controlador
de interface permitiu ao processador agir de maneira independente
dos dispositivos de E/S. Com esse novo elemento, o processador
no mais se comunicava diretamente com os perifricos, mas sim
atravs do controlador. sso simplificou as instrues de E/S, por no
mais ser necessrio especificar detalhes de operao dos
perifricos, tarefa esta realizada pelo controlador.
70
Sistemas Operacionais
71
Sistemas Operacionais
Dispositivos de E/S
Os dispositivos de E/S podem ser divididos em duas
categorias:
Dispositivos de Blocos; e
Dispositivos de Caractere.
72
Sistemas Operacionais
Dispositivo de BIoco
Um dispositivo de bloco, armazena as informaes em blocos
de tamanho fixo, cada um com seu prprio endereo. A
propriedade essencial de um dispositivo de bloco que
possvel ler ou gravar cada bloco independente de todos os
outros. Os Discos so os dispositivos de blocos mais comuns.
enderevel e possui operaes de busca (Exemplo: Busca
de um dado no disco rgido).
73
Sistemas Operacionais
Dispositivo de Caractere
o dispositivo que entrega ou aceita um fluxo de caracteres
sem considerar qualquer estrutura de bloco. Ele no
enderevel e tampouco tem qualquer operao de busca.
Exemplos: mpressoras, interfaces de rede, mouse.
74
Sistemas Operacionais
No dispositivo BIoco ou Caractere
Os relgios no so endereveis por bloco, tampouco
aceitam fluxo de caracteres.
Tudo que fazem gerar interrupes em intervalos bem
definidos.
75
Sistemas Operacionais
ControIe das Operaes de Entrada e Sada:
E/S controlada por programa;
E/S controlada por Pooling; e
E/S Controlada por nterrupo;
76
Sistemas Operacionais
E/S controIada por programa
este tipo de operao, o processador sincronizava-se com o
perifrico para o incio da transferncia de dados e, aps iniciada a
transferncia, o sistema ficava permanentemente testando o estado
do perifrico para saber quando a operao chegaria ao seu final.
Este controle, chamado e E/S controlada por programa, mantinha o
processador ocupado at o trmino da operao de E/S (busy wait).
Como o processador executa uma instruo muito mais rapidamente
que a realizao de uma operao de E/S pelo controlador, havia um
enorme desperdcio de tempo da UCP.
77
Sistemas Operacionais
E/S controIada por PooIing
A evoluo do modelo anterior foi permitir que, aps o incio da
transferncia dos dados, o processador permanecesse livre para
realizar outras tarefas. Assim, em determinados intervalos de tempo,
o sistema operacional deveria testar cada dispositivo para saber do
trmino da operao de E/S (polling). Esse tipo de operao
introduziu certo grau de paralelismo, visto que um programa poderia
ser processado, enquanto outro esperava pelo trmino de uma
operao de E/S. sso permitiu o surgimento dos primeiros sistemas
multiprogramveis, onde vrios programas poderiam ser executados
concorrentemente, j que o tempo de uma operao de E/S
relativamente grande.
78
Sistemas Operacionais
E/S ControIada por Interrupo
Com a implementao do mecanismo de interrupo, as
operaes de E/S puderam ser realizadas de uma forma mais
eficiente. Em vez de o sistema periodicamente verificar o
estado de uma operao pendente, o prprio controlador
interrompia o processador para avisar do trmino da
operao. Com esse mecanismo, denominado E/S E/S controlada controlada
por por interrupo interrupo, o processador, aps a execuo de um
comando de leitura ou gravao, permanece livre para o
processamento de outras tarefas.
79
Sistemas Operacionais
E/S ControIada por Interrupo
A operao de E/S controlada por interrupo muito mais eficiente
que a controlada por programa, j que elimina a necessidade de o
processador esperar pelo trmino da operao, alm de permitir que
vrias operaes de E/S sejam executadas simultaneamente.
Apesar disso, a transferncia de grande volume de dados exige
muitas intervenes do processador, reduzindo sua eficincia. A
soluo para esse problema foi a implementao de uma tcnica de
transferncia de dados denominada DMA (Direct Memory Access).
80
Sistemas Operacionais
ControIadora
Uma placa controladora uma parte do hardware de
computadores que comanda outras partes da mquina.
ormalmente conectada na placa-me atravs de slots
apropriados de acordo com o barramento relativo placa.
81
Sistemas Operacionais
Device driver
Device driver (Controlador de Dispositivo) uma camada de
software que implementa um conjunto de funes que realiza a
comunicao com o dispositivo.
Device driver o comando de um dispositivo ou programa. a
forma a partir da qual uma unidade perifrica cria uma interface
com o sistema operacional para se conectar com o dispositivo do
hardware.
82
Sistemas Operacionais
83
Sistemas Operacionais
DMA
84
Sistemas Operacionais
DMA
Est tcnica permite que um bloco de dados seja transferido entre a
memria principal e dispositivos de E/S; sem a interveno do
processador, exceto no incio e o final da transferncia.
"uando o sistema deseja ler ou gravar um bloco de dados, o
processador informa ao controlador sua localizao, o dispositivo de
E/S, a posio inicial da memria de onde os dados sero lidos ou
gravados e o tamanho do bloco.
85
Sistemas Operacionais
DMA
Com estas informaes, o controlador realiza a transferncia entre o
perifrico e a memria principal, e o processador interrompido
somente no incio e no final da operao. A rea de memria
utilizada pelo controlador na tcnica de DMA chamada de buffer buffer de
entrada/sada.
o momento em que uma transferncia de dados atravs da tcnica
de DMA realizada, o controlador deve assumir,
momentaneamente, o controle do barramento.
86
Sistemas Operacionais
CanaI de Entrada e Sada
87
Sistemas Operacionais
CanaI de Entrada e Sada
A extenso do conceito de DMA possibilitou o surgimento do canal
de entrada/sada.
O canal um processador com capacidade de executar programas
de E/S, permitindo o controle total sobre operaes de E/S. As
instrues de E/S so armazenadas na memria principal pelo
processador, porm o canal responsvel pela sua execuo.
Assim, o processador realiza uma operao de E/S, instruindo o
canal para executar um programa localizado na memria (programa
de canal).
88
Sistemas Operacionais
CanaI de Entrada e Sada
Este programa especifica os dispositivos para transferncia, buffers
e aes a serem tomadas em caso de erros.
O canal de E/S realiza a transferncia e, ao final, gera uma
interrupo, avisando do trmino da operao. Um canal de E/S
pode controlar mltiplos dispositivos atravs de diversos
controladores.
Cada dispositivo, ou conjunto de dispositivos, manipulado por um
nico controlador. O canal atua como um elo de ligao entre o
processador e o controlador.
89
Sistemas Operacionais
90
Sistemas Operacionais
CanaI de Entrada e Sada
A evoluo do canal permitiu que este possusse sua prpria
memria, eliminando a necessidade de os programas de E/S
serem carregados para a memria principal. Com essa nova
arquitetura, varias funes de E/S puderam ser controladas
com mnima interveno da UCP. Esse estgio do canal
tambm denominado processador de entrada/sada.
91
Sistemas Operacionais
Buffering
92
Sistemas Operacionais
Buffering
A tcnica de buffering consiste na utilizao de uma rea na
memria principal, denominada buffer, para a transferncia de dados
entre os dispositivos de E/S e a memria. Essa tcnica permite que
uma operao de leitura o dado seja transferido primeiramente para
o buffer, liberando imediatamente o dispositivo de entrada para
realizar uma nova leitura.
O objetivo principal desta tcnica minimizar o problema da
disparidade da velocidade de processamento existente entre a UCP
e os dispositivos de E/S, mantendo-os ocupados na maior parte do
tempo.
93
Sistemas Operacionais
Buffering
94
Sistemas Operacionais
SpooIing
95
Sistemas Operacionais
SpooIing
A tcnica de spooling (simultaneous peripheral operation on-
line), semelhante tcnica de buffering, utiliza uma rea em
disco como se fosse um grande buffer. este caso, dados
podem ser lidos ou gravados em disco, enquanto programas
so executados concorrentemente.
Atualmente essa tcnica est presente na maioria dos
sistemas operacionais, sendo utilizada no gerenciamento de
impresso.
96
Sistemas Operacionais
SpooIing
o momento em que um comando de impresso
executado, as informaes que sero impressas so
gravadas antes em um arquivo em disco, conhecido
como arquivo de spool, liberando imediatamente o
programa para outras atividades. Posteriormente, o
sistema operacional encarrega-se de direcionar o
contedo do arquivo de spool para a impressora.
97
Sistemas Operacionais
SpooIing
98
Sistemas Operacionais
Reentrncia
99
Sistemas Operacionais
Reentrncia
a capacidade de um cdigo executvel (cdigo reentrante)
ser compartilhado por diversos usurios, exigindo que apenas
uma cpia do programa esteja na memria.
A reentrncia permite que cada usurio possa estar em um
ponto diferente do cdigo reentrante, manipulando dados
prprios, exclusivos de cada usurio.
100
Sistemas Operacionais
Reentrncia
101
Sistemas Operacionais
PipeIine
102
Sistemas Operacionais
PipeIine
uma tcnica que permite ao processador executar mltiplas
instrues paralelamente em estgios diferentes.
PipeIine uma tcnica de hardware que permite que a CPU realize
a busca de uma ou mais instrues alm da prxima a ser
executada. Estas instrues so colocadas em uma fila de memria
(dentro da CPU) onde aguardam o momento de serem executadas.
A tcnica de pipeline utilizada para acelerar a velocidade de
operao da CPU, uma vez que a prxima instruo a ser executada
est normalmente armazenada dentro da CPU e no precisa ser
buscada da memria, normalmente muito mais lenta que a CPU.
103
Sistemas Operacionais
Chamadas de Sistemas
104
Sistemas Operacionais
Chamadas de Sistemas
a interface entre o Sistema operacional e seus programas
aplicativos.
Em computao, uma chamada de sistema (88tem call) o
mecanismo usado pelo programa para requisitar um servio
do sistema operacional, ou mais especificamente, do kernel do
sistema operacional.
105
Sistemas Operacionais
Chamadas de Sistemas
Podem ser:
Gerenciamento de Processos;
Gerenciamento de Sinalizao;
Gerenciamento de Arquivos;
Gerenciamento de Diretrios e Sistemas de Arquivos; e
Gerenciamento de Tempo.
106
Sistemas Operacionais
Gerenciamento de Processo
Trata os estados que o processo passa, deste a sua criao
(running, ready, wait, blocked).
Subprocesso e Thread.
Ser coberto no tpico PROCESSO, adiante......
107
Sistemas Operacionais
108
Sistemas Operacionais
Gerenciamento de SinaIizao
Em alguns casos necessrio intervir na execuo de um processo,
seja por motivos planejados ou por instrues ilegais passadas ao
sistema (falhas).
Por exemplo se um usurio instrui um editor de texto a imprimir o
contedo deste arquivo, e ento verifica que no quer mais imprimir,
dever haver uma maneira de interromper o editor e eliminar o
processo, neste caso utilizado a chamada kill.
109
Sistemas Operacionais
110
Sistemas Operacionais
Gerenciamento de Arquivo
Muitas chamadas de sistemas esto relacionadas com o sistema de
arquivos e os seus mtodos de acesso, como por exemplo,
solicitaes de: criao, leitura e excluso de arquivos.
A criao de um arquivo pode ser definida como uma chamada
creat("abc,751), assim um novo arquivo denominado abc abc seria
gerado com permisses 7 7 ler, gravar e executar para o proprietrio;
5 5 - ler e executar para o grupo e 1 1 - apenas executar para os outros.
(RWX).
111
Sistemas Operacionais
112
Sistemas Operacionais
Gerenciamento de Diretrios e Sistemas de Arquivos
So as chamadas que se relacionam com diretrios ou com o
sistema de arquivos, como um todo, em vez de um arquivo
especfico.
Em se tratando de gerenciamento de diretrios, as duas chamadas
mais importantes seriam: mkdir mkdir e rmdir rmdir, que permitem a criao e
remoo de diretrios.
Outra chamada importante neste grupo so aquelas que tratam
"montar montar um dispositivo para permitir o acesso aos seus diretrios e
arquivos, como exemplo o comando "mount mount para disponibilizar e
"umount umount para interromper o seu uso.
113
Sistemas Operacionais
114
Sistemas Operacionais
Gerenciamento de Tempo
Basicamente trata-se de chamadas de sistema que envolvem o
tempo de relgio convencional. Entre as possibilidades esto,
exemplo:
Time: que retorna a hora do sistema;
Stime: Relgio possa ser configurado pelo Superusurio;
Utime: Permite que o arquivo tenha definido os atributos de data e
hora de criao e modificao; e
TimeS: Retorne o tempo de utilizao da CPU.
115
Sistemas Operacionais
116
Sistemas Operacionais
Processo
117
Sistemas Operacionais
Processo
Em Sistemas Operacionais, processo um mdulo executvel
nico, que roda concorrentemente com outros mdulos
executveis. Por exemplo, em um ambiente multi-tarefa (como o
Unix) que suporta processos, um processador de texto, um
navegador e um sistema de banco de dados so processos
separados que podem rodar concomitantemente. Processos so
mdulos separados e carregveis, ao contrrio de threads, que
no podem ser carregadas. Mltiplas threads de execuo podem
ocorrer dentro de um mesmo processo. Alm das threads, o
processo tambm inclui certos recursos, como arquivos e
alocaes dinmicas de memria.
118
Sistemas Operacionais
Pr ograma
Contexto de
Softwar e
prioridade de
execuo
registrador PC
data/ hora
de criao
tempo de
processador
registrador SP
quotas
priviIgios
endereos de memria
principaI aIocados
registrador
de status
owner (UID)
PID
nome
registradores
gerais
Contexto de
Har dwar e
Espao de
Endereamento
119
Sistemas Operacionais
Processo
Um processo basicamente um programa em execuo,
sendo constitudo do cdigo executvel, dos dados
referentes ao cdigo, alm de outras informaes
necessrias execuo do programa.
120
Sistemas Operacionais
Processo
Um processo, em um sistema multiprogramvel, no executado todo o
tempo pelo processador. Durante sua existncia, passa por uma srie de
estados. Basicamente existem trs:
Execuo (running): quando est sendo processado pela UCP.
Pronto (ready): quando apenas aguarda uma oportunidade para
executar, ou seja, espera que o SO aloque a UCP para sua
execuo. O SO responsvel por determinar a ordem pela qual os
processos em estado de pronto devem ganhar a UCP. ormalmente
existem vrios processos no estado de pronto.
121
Sistemas Operacionais
Processo
Espera (wait): quando aguarda algum evento externo ou por
algum recurso para poder prosseguir seu processamento. Ex.: o
trmino de uma operao de E/S ou a espera de uma
determinada data para poder continuar sua execuo.
"uando o processo espera por um recurso do sistema que no se
encontra disponvel, dito que o processo est no estado de
bIoqueado (bIocked) em vez de espera (wait).
122
Sistemas Operacionais
Processo
W A diferena bsica entre o estado de bloqueado e o de espera
que um processo bloqueado espera ser autorizado a utilizar um
recurso, enquanto o processo em estado de espera aguarda pela
concluso de uma operao em um recurso que j foi garantido.
W Um processo em estado de pronto ou de espera pode no se
encontrar, momentaneamente, na memria principal, ou seja,
armazenado na memria secundria. Uma tcnica denominada
Swapping pode retirar processos da mamria principal quando
no existe espao suficiente para todos os processos.
123
Sistemas Operacionais
Processo
W O SO gerencia os processos atravs de listas, so estas: listas de
processos em estado de pronto e listas de processos no estado
de espera.
W Um processo muda de estado diversas vezes, durante seu
processamento, em funo de eventos originados por ele prprio
(eventos voluntrios) ou pelo sistema operacional (eventos
involuntrios)
124
Sistemas Operacionais
Processo
W Eventos originados pelo prprio processo: operao de E/S (SVC) ou
qualquer chamada a uma rotina do sistema, requisitando algum tipo de
servio
W Eventos que se originem do SO tm a inteno de permitir maior
compartilhamento dos recursos do sistema (Ex.: se um programa est
em looping, o sistema deve intervir para que o processador no fique
dedicado eternamente ao processo onde o programa est sendo
executado.
125
Sistemas Operacionais
Basicamente, existem 4 mudanas de estado que podem ocorrer a um
processo (Diagrama de Transio de Estado):
1 . Pronto - Execuo: quando um processo criado, o sistema o
coloca em uma lista de processos no estado de pronto, onde aguarda
uma oportunidade para ser executado. Cada SO tem seus prprios
critrios e algoritmos para a escolha da ordem em que os processos
sero executados (escalonamento ou schedulling)
2 . Execuo - Espera: um processo em execuo passa para o
estado de espera por eventos gerados pelo prprio processo, como
por exemplo, uma operao de E/S. esse caso o processo ficar
nesse estado esperando pela concluso do evento solicitado.
126
Sistemas Operacionais
3 . Espera - Pronto: um processo em espera passa para pronto
quando a operao solicitada atendida ou o recurso esperado
concedido. Um processo em espera sempre ter de passar pelo
estado de pronto antes de poder ser novamente selecionado para
execuo. o existe a mudana do estado de espera para o estado
de execuo diretamente.
4 . Execuo - Pronto : um processo em execuo passa para o
estado de pronto por eventos gerados pelo sistema, como por
exemplo, o fim da fatia de tempo que o processo possui para sua
execuo. esse caso, o processo volta para a fila de processos
prontos, onde aguarda uma nova oportunidade para continuar seu
processamento.
127
Sistemas Operacionais
Criao
Pronto
Espera
Execuco
Despacho
Interrupo
Time-SIice
Servio
Fim AnormaI
Fim NormaI
Perifricos
Recurso Atendido
Processo
ou BLOQUEADO
128
Sistemas Operacionais
Principais fiIas de processos
Fila de Pronto(Ready): "uando um processo criado, o sistema o
coloca em uma fila de processos no estado de pronto, onde
aguarda uma oportunidade para ser executado.
Fila de Espera(Wait): "uando aguarda algum evento externo ou
por algum recurso para poder prosseguir seu processamento.
Fila de Bloqueado(Blocked): "uando o processo espera por um
recurso do sistema que no se encontra disponvel.
129
Sistemas Operacionais
Processo
Quando um processo passa a maior parte do temp no estado de execuco,
a este chamamos de CPU BOUND. Este tipo de processo e muito
comum em aplicaces matematicas, cientiIicas e graIicas por eIetuarem
muitos calculos.
Quando o processo passa a maior parte do tempo em estado de espera e
realizando muitas operaces de I/O, a este chamamos de O BOUND. E
o processo mais comum em aplicaces comerciais.
130
Sistemas Operacionais
Subprocesso e Thread
131
SUBPROCESSO
Um processo pode criar outros processos de forma hierrquica.
W"uando um processo (processo pai) cria outro processo, chamamos de
subprocesso ou processo fiIho.
WO subprocesso pde criar outros subprocessos.
WComo conseqncia dessa estrutura, caso um processo deixe de existir, os
subprocessos subordinados so eliminados.
Sistemas Operacionais
132
SUBPROCESSO
WA utilizao de subprocessos permite dividir uma aplicao em partes que
podem trabalhar de forma concorrente.
Com o uso de subprocessos, cada solicitao implicaria a criao de um novo
processo para atend-la, aumentando o throughput da aplicao e,
conseqentemente, melhorando seu desempenho.
WO uso de subprocessos no desenvolvimento de aplicaes concorrentes
demanda consumo de diversos recursos do sistema.
WSempre que um novo processo criado (no Unix isto feito pela system call
fork), o SO deve alocar recursos (contexto de HW, contexto de SW e espao
de endereamento) para cada processo alm de consumir tempo de UCP
neste trabalho.
Sistemas Operacionais
133
THREAD
Thread, ou Iinha de execuo em portugus, uma forma de um
processo dividir a si mesmo em duas ou mais tarefas que podem ser
executadas simultaneamente. O suporte thread fornecido pelo
prprio sistema operacional (SO).
Uma linha de execuo permite que o usurio de programa, por
exemplo, utilize uma funcionalidade do ambiente enquanto outras
linhas de execuo realizam outros clculos e operaes.
Sistemas Operacionais
134
THREAD
Em hardwares equipados com uma nica CPU, cada linha de
execuo(Thread) processada de forma aparentemente simultnea,
pois a mudana entre uma linha e outra feita de forma to rpida
que para o usurio isso est acontecendo paralelamente.
Em hardwares com multiplos CPUs ou milti-cores as linhas de
execuo(Threads) podem ser realizadas realmente de forma
simultnea;
Os sistemas que suportam apenas uma nica linha de execuo so
chamados de monothread e aqueles sistemas que suportam mltiplas
linhas de execuo so chamados de multithread.
Sistemas Operacionais
135
THREAD
WThreads compartilham o processador da mesma maneira que
processos.
WCada linha de execuo tem o mesmo contexto de 8oftware e
compartilha o mesmo espao de memria (endereado a um mesmo
processo pai), porm o contexto de hardware diferente. Sendo
assim o overhead causado pelo escalonamento de linha de execuo
muito menor do que o escalonamento de processos, entretanto, no
h acesso protegido a memria nativamente (sua implementao fica
a cargo do programador) devido ao compartilhamento do espao de
memria.
Sistemas Operacionais
136
THREAD
Basicamente uma Iinha de execuo pode assumir os seguintes
estados:
Criao este estado, o processo pai est criando a thread que levada a
fila de prontos;
Execuo este estado a linha de execuo est usando a CPU;
Pronto este estado a linha de execuo avisa a CPU que pode entrar no
estado de execuo e entra na fila de prontos;
Bloqueado este estado, por algum motivo, a CPU bloqueia a linha de
execuo, geralmente enquanto aguarda algum dispositivo de /O;
Trmino este estado so desativados os contextos de hardware e a pilha
deslocada
Sistemas Operacionais
137
Sistemas Operacionais
MuItiprogramao
138
Sistemas Operacionais
MuItiprogramao
um sistema multiprogramado, mesmo que s exista um
processador possvel vrios processos estarem activos
simultaneamente
Contudo, em cada instante temporal, apenas um deles pode utilizar o
processador
A esta iluso de vrios processos correrem aparentemente em
paralelo, d-se o nome de pseudo-paraIeIismo
139
Sistemas Operacionais
MuItiprogramao
Depois de uma comutao do processador, o prximo processo a
utiliz-lo escolhido pelo sequenciador de processos do SO
(Escalonador).
Concorrncia
Os vrios processos "competem entre si pela
ateno do processador.
140
Sistemas Operacionais
MuItiprogramao
Cooperao
Processos podem trabalhar em conjunto para a
realizao de tarefas mais complexas.
Esta cooperao exige ao SO a existncia de
mecanismos de sincronizao e comunicao entre
processos
141
Sistemas Operacionais
Comunicao Interprocesso
142
Sistemas Operacionais
Comunicao Interprocessos
A comunicao entre processos, em ingls Inter-Process
Communication (PC), o grupo de mecanismos que permite
aos processos transferirem informao entre si.
143
Sistemas Operacionais
Comunicao Interprocessos
Deveremos verificar 3 questes envolvidas neste processo de
comunicao (Regras para programao concorrente):
1 Como um processo pode passar informaes para outro
processo;
2 Dever ser certificado que dois ou mais processos no interfiram
um com outro quando envolvidos em atividades crticas;
3 O seqenciamento adequado quando esto presentes
dependncias: Se o processo A produz dados e o processo B os
imprime, B tem de esperar ate que A tenha produzido alguns dados
antes de comear a imprimir.
144
Sistemas Operacionais
Condies de Corrida
Situao onde dois ou mais processos esto acessando dados
compartilhados e o resultado do processamento depende de quem
roda quando.
"uando um processo quer imprimir um arquivo, ele insere o nome
deste arquivo em um diretrio de spooler. O servidor de impresso
verifica periodicamente se h qualquer arquivo a ser impresso e, se
houver ele os imprime e, ento remove seus nomes do diretrio de
spooler.
145
Sistemas Operacionais
Condies de Corrida
magine que nosso diretrio de spooler esteja vazio, com nmeros
de entradas seqenciais 0,1,2..., cada uma capaz de armazenar um
arquivo a ser impresso, imagine tambm que existem 2 variveis
OUT OUT que aponta para o prximo arquivo a ser impresso e que
aponta para a prxima entrada livre no diretrio de spooler.
Em nosso exemplo OUT = = 0 (zero), ou seja, no, existem
arquivos no spooler.
146
Sistemas Operacionais
Condies de Corrida
Mais ou menos simultaneamente os processos A e B, decidem
que querem colocar um arquivo na fila de impresso (spooler).
O processo A l a varivel e armazena o valor 0 (zero), em
uma varivel local de controle (next_free_slot), s que
acontece uma interrupo de relgio, e a CPU decide que o
processo A executou por tempo suficiente (Time Slice) e ento
alterna para o processo B .
147
Sistemas Operacionais
Condies de Corrida
148
Sistemas Operacionais
Condies de Corrida
O processo B tambm l a varivel e tambm recebe 0
(zero) e escreve o nome do seu arquivo na posio 0 (zero) do
spooler.
149
Sistemas Operacionais
Condies de Corrida
150
Sistemas Operacionais
Condies de Corrida
Por fim o processo executa novamente, iniciando do lugar que parou,
ela examina a sua varivel de controle (next_free_slot) e encontra o
valor 0 (zero), ento escreve o nome do arquivo na posio zero do
spooler, sobrescrevendo o nome do arquivo que o processo B
acabou de colocar ali.
Ele ento calcula next_free_slot+1 e armazena em (1).
O processo B numca realizar qualquer sada, aps esta situao.
Para Para evitar evitar as as condies condies de de corrida, corrida, precisamos precisamos implementar implementar
algoritmos algoritmos de de excluso excluso mtua mtua de de execuo execuo e, e, para para tanto, tanto, definimos definimos
as as regies regies crticas crticas do do processo processo..
151
Sistemas Operacionais
Condies de Corrida
152
Sistemas Operacionais
Sees Criticas ou Regies Crticas
Como evitamos a condio de corrida ?
A chave para prevenir problemas aqui e em muitas outras situaes
envolvendo memria compartilhada, arquivos compartilhados e tudo
mais compartilhado encontrar alguma maneira de proibir que mais
de um processo leia e grave os dados compartilhados ao mesmo
tempo.
Dito em outras palavras precisamos de uma excIuso excIuso mtua mtua
uma maneira de certificarmo-nos de que se um processo esta
utilizando um arquivo ou uma varivel compartilhada, ou outros
processos sero impedidos de fazer a mesma coisa.
153
Sistemas Operacionais
Sees Criticas
A dificuldade do exemplo anterior ocorria porque o processo B B
comeava utilizando uma das variveis compartilhadas antes
de o processo A A ter acabado de ter trabalhado com ela.
AA parte parte do do programa programa cujo cujo processamento, processamento, por por manipular manipular
dados dados compartilhados, compartilhados, pode pode levar levar ocorrncia ocorrncia de de condies condies
de de corrida corrida chamada chamada REGO REGO CRTCA CRTCA..
154
Sistemas Operacionais
Sees Criticas
Objetivo: nunca permitir que dois processos entrem simultaneamente
em suas regies crticas correspondentes (i.e. referentes mesma
varivel compartilhada).
Condies para uma boa soluo ao problema:
1) Dois ou mais processos no podem estar simultaneamente dentro
de suas regies crticas correspondentes.
2) enhum processo rodando fora de sua regio crtica pode
bloquear a execuo de outro processo.
155
Sistemas Operacionais
Sees Criticas
Condies para uma boa soluo ao problema:
3) enhum processo pode ser obrigado a esperar indefinidamente
para entrar em sua regio crtica.
4) enhuma considerao pode ser feita a respeito da velocidade
relativa dos processos, ou a respeito do nmero de processadores
do sistema.
156
Sistemas Operacionais
Sees Criticas ou Regies Crticas
Resumo:
seo do programa onde so efectuados acessos
(para leitura e escrita) a recursos partilhados por
dois ou mais processos.
necessrio assegurar que dois ou mais
processos no se encontrem simultaneamente na
regio crtica.
157
Sistemas Operacionais
ExcIuso Mtua
(Mecanismos de Sincronizao)
158
Sistemas Operacionais
ExcIuso Mtua
Espera Ativa (ou Ocupada)
159
Sistemas Operacionais
Desativando Desativando as as nterrupes nterrupes
O processo desativa todas as interrupes logo aps entrar em uma
regio crtica, e as habilita ao sair. Assim, o processo no poder ser
interrompido mesmo aps acabar o seu tempo de execuo.
Com as interrupes desativadas, nenhuma interrupo de relgio
pode ocorrer, com isso a CPU no poder alternar de um processo
para outro.
Sendo assim aps o processo desativar as interrupes, ele pode
examinar e atualizar a memria compartilhada, sem medo de outro
processo intervir.
160
Sistemas Operacionais
Desativando Desativando as as nterrupes nterrupes
Problemas:
o boa prtica dar ao usurio a capacidade de ativar
interrupes;
O processo pode desativar as interrupes e nunca mais ativ-las;
Se o sistema multiprocessado (com 2 ou mais CPUs), desativar
as interrupes afeta apenas a CPU que executou a instruo de
desativamento.
161
Sistemas Operacionais
Desativando Desativando as as nterrupes nterrupes
Concluso:
Desativar interrupes freqentemente uma tcnica til dentro do
sistema operacional em si, mas no apropriada como um
mecanismo geral de excluso mtua para processos de usurio.
162
Sistemas Operacionais
Variveis Variveis de de Bloqueio Bloqueio
Como uma segunda tentativa, vamos procurar uma soluo de
software. Considere ter uma varivel nica compartilhada de nome
bIoqueio bIoqueio (inicialmente com o valor Zero) que pode assumir os
seguintes valores/situao:
Varivel compartilhada:
0: ningum est na regio crtica;
1: existe algum na regio crtica.
163
Sistemas Operacionais
Variveis Variveis de de Bloqueio Bloqueio
"uando um processo quer entrar na sua regio crtica, ele primeiro
testa o bloqueio. Se o bloqueio for 0, o processo passa o bloqueio
para 1 e entra na regio crtica.
Se o bloqueio j for 1, ele espera at o bloqueio ir para 0.
164
Sistemas Operacionais
Variveis Variveis de de Bloqueio Bloqueio
Problema:
Contm o mesmo erro fatal, visto no spooler spooler. Suponha que o
processo P1 leia o bloqueio e veja que ele 0, porm antes de ele
poder definir o bloqueio como 1, outro processo P2 agendado,
executa e define o bloqueio como 1, quando P1 executa novamente,
ele tambm definir o bloqueio igual a 1, e os dois processos estaro
em suas regies crticas ao mesmo tempo.
165
Sistemas Operacionais
Alternncia Alternncia Estrita Estrita ou ou Turno Turno
"vez vez": varivel compartilhada, inicialmente valendo 0. Se h dois
processos (A) e (B), sendo que vez==0 indica a vez do processo (A)
entrar em sua regio crtica e vez==1, a vez do processo (B).
166
Sistemas Operacionais
Alternncia Alternncia Estrita Estrita
Problemas:
Espera ocupada (teste contnuo da varivel compartilhada "vez"):
consumo desnecessrio do tempo do processador (espera espera ativa ativa).
Um processo s ter vez se o outro entrar e sair da sua regio
crtica. sto representa uma vioIao vioIao da da condio condio 2 2 acima.
(enhum processo rodando fora de sua regio crtica pode bloquear
a execuo de outro processo. )
Este esquema para excluso mtua muito inadequado quando um
dos processos mais lento que o outro.
167
Sistemas Operacionais
ATENO ATENO
Testar continuamente uma varivel at que algum valor aparea
chamado de espera espera ativa ativa.. ormalmente deve ser evitado, uma vez
que desperdia tempo de CPU.
Somente quando existe uma expectativa de que a espera ser curta
que a espera ativa ser utilizada.
168
Sistemas Operacionais
A soIuo de Peterson
Combinando a idia de turnos com a de variveis de bloqueio e
variveis de aviso, foi projetado a primeira soIuo soIuo de de software software
para o problema da excluso mtua que no requer alternncia
estrita.
Antes de utilizar as variveis compartilhadas(antes de entrar na sua
regio crtica), cada processo chama a rotina enter_region enter_region com o
seu prprio nmero de processo (nosso exemplo apenas 2
processos P1 pid 0 e P2 pid 1), como parmetro. Essa chamada
poder causar espera, se necessrio, at que seja seguro entrar.
169
Sistemas Operacionais
SoIuo de Peterson
170
Sistemas Operacionais
A soIuo de Peterson
Depois que terminou de trabalhar com as variveis
compartilhadas, o processo chama a rotina Ieave_region Ieave_region
para indicar que terminou e permitir que o outro processo
entre, se ele, ento quiser.
nicialmente nenhum processo est em sua regio crtica.
Agora o processo P1 (pid 0) chama enter_region enter_region. Ele
indica seu interesse, configurando turn turn com 0, nesta
estapa o P2 no possui interesse em sua regio crtica,
ento teremos para P1 os seguintes valores em
enter_region, enter_region, a saber:
171
Sistemas Operacionais
P1 pid 0 ento:
Process = 0
Other = 1
nterested[0] = True
nterested[1] = False
Turn=0
While(0==0 and
interested[1]== TRUE)
Sair do loop
enter_region P1 enter_region P1
172
Sistemas Operacionais
A soIuo de Peterson
Se o processo P2 (pid 1) chamar agora enter_region enter_region,
ele ficar parado at que interested[0] seja FALSE,
evento que s acontece quando o processo P1 (pid 0)
chama Ieave_region Ieave_region para sair da regio crtica.
173
Sistemas Operacionais
P2 pid 1 ento:
Process = 1
Other = 0
nterested[0] = True
nterested[1] = True
Turn=1
While(1==1 and
interested[0] == TRUE)
Somente sair do loop
quando P1 (pid 0) chamar
Ieave_region Ieave_region
enter_region P2 enter_region P2
Ieave_region Ieave_region
P1 pid 0
Sair Sair do do Loop Loop
174
Sistemas Operacionais
A soIuo de Peterson
Agora considere o caso em que os 2 processos P1(pid 0)
e P2 (pid 1), chamam a enter_region enter_region quase
simultaneamente. Ambos armazenaro os seus nmeros
de processos em turn. "ualquer que seja o
armazenamento feito por ltimo, este que conta, o
primeiro perdido (spooler).Suponha que o processo 1
armazene por ltimo, assim turn 1. "uando ambos os
processos chegam na declarao while, o processo P1
(pid 0) entra em loop e no entra em sua regio crtica.
175
Sistemas Operacionais
P2 pid 1 e turn = 1 ento:
Process = 1
Other = 0
nterested[0] = False
nterested[1] = True
Turn=1
While(1==1 and
interested[0] == TRUE)
Sai do loop
enter_region P1 e P2 enter_region P1 e P2
P1 pid 0 ... Process =0 .... Other = 1
nterested[0] = True interested[1] = True
Turn=0
While (0=0 and interested[1] == True)
Entra em loop, somente sai P2 Ieave_region Ieave_region
176
Sistemas Operacionais
Instruo Instruo TSL TSL (Test (Test and and Set Set Lock) Lock)
A instruo TSL uma chamada de sistema que bloqueia o acesso a
memria (bloqueia o barramento) at o trmino da execuo da
instruo. Funciona monitorando uma varivel compartilhada para
coordenar o acesso de Leitura e Escrita na memria, semelhante a
soluo de Peterson.
177
Sistemas Operacionais
ExcIuso Mtua
Espera BIoqueada
178
Sistemas Operacionais
Bloqueio Bloqueio e e Desbloqueio Desbloqueio:: Primitivas Primitivas Sleep/Wakeup Sleep/Wakeup
As solues por espera ocupada possuem a srie deficincia de
consumirem muito tempo do processador. Outro problema o
probIema probIema de de inverso inverso de de prioridade prioridade, cuja descrio dada a
seguir:
1) Dois processos L e H, de baixa e alta prioridade;
2) H esta bloqueado e L esta na sua regio crtica;
3) Acaba o time slot de L e ele suspenso;
4) H esta em estado Ready;
179
Sistemas Operacionais
Bloqueio Bloqueio e e Desbloqueio Desbloqueio:: Primitivas Primitivas Sleep/Wakeup Sleep/Wakeup
5) Como H tem maior prioridade que L, ento H executado antes;
6) Entretanto, H deseja entrar em sua regio crtica. Como L est na
sua regio crtica, H entra em loop para verificar se pode entrar em
regio crtica at esgotar o seu time slot de tempo;
7) o entanto, tanto H como L esto em estado de Ready e sempre
H vai ser escolhido para a execuo;
8) Dessa maneira, L nunca ser executado e deixar sua regio
crtica e H ficar em loop eterno.
180
Sistemas Operacionais
Bloqueio Bloqueio e e Desbloqueio Desbloqueio:: Primitivas Primitivas Sleep/Wakeup Sleep/Wakeup
A metodologia de Bloqueio e Desbloqueio de processos, prope o
seguinte algoritmo bsico:
1) Dois processos H e L;
2) H entra em sua regio crtica;
3) H suspenso pois, terminou seu time slot;
4) L deseja entrar em sua regio critica. Ao invs de entrar em loop,
onde ficar verificando se o acesso a regio crtica est livre at
esgotar o seu time slot, ele ser bloqueado (blocked) e o
processador liberado;
181
Sistemas Operacionais
Bloqueio Bloqueio e e Desbloqueio Desbloqueio:: Primitivas Primitivas Sleep/Wakeup Sleep/Wakeup
A metodologia de Bloqueio e Desbloqueio de processos, prope o
seguinte algoritmo bsico:
5) H sai de sua regio crtica e desbloqueia L (estava aguardando o
recurso), L ento entra em estado de Ready e aguarda atendimento
para entrar em sua regio crtica.
O mecanismo de bloqueio e desbloqueio utiliza 2 primitivas:
Sleep Bloqueia o processo que chamou; e
Wakeup Desbloqueia um processo pelo PD.
182
Sistemas Operacionais
Bloqueio Bloqueio e e Desbloqueio Desbloqueio:: Primitivas Primitivas Sleep/Wakeup Sleep/Wakeup
A utilizao de sleep e wakeup evita esperas ativas, e em conjunto
com outros mecanismos (e.g. TSL, Peterson) consegue-se garantir
a excluso mtua
Problema :
lost Wakeup signal um processo manda "acordar o
outro sem este ter "adormecido ainda
183
Sistemas Operacionais
ProbIema do Produtor e Consumidor (SIeep e Wakeup)
Exemplo de como as primitivas (sleep e wakeup) podem ser
utilizadas. Este problema tambm conhecido como o
problema do buffer limitado.
Assume-se a existncia de 2 processos que compartilham um
determinado buffer buffer de tamanho fixo, nmero de itens do buffer
count count (c) (c), um chamado Produtor Produtor que cria dados e aloca no
buffer buffer, e um outro processo chamado Consumidor Consumidor que retira
dados do buffer buffer .
184
Sistemas Operacionais
ProbIema do Produtor e Consumidor (SIeep e Wakeup)
185
Sistemas Operacionais
ProbIema do Produtor e Consumidor (SIeep e Wakeup)
Problema:
1) O buffer est cheio e o Produtor deseja colocar mais dados no
buffer.
Soluo Soluo:: Bloquear Bloquear o o Produtor Produtor e e convocar convocar o o Consumidor Consumidor;;
2) O buffer est vazio e o Produtor deseja retirar um dado do buffer.
Soluo Soluo:: Bloquear Bloquear o o Consumidor Consumidor e e convocar convocar o o Produtor Produtor;;
186
Sistemas Operacionais
ProbIema do Produtor e Consumidor (SIeep e Wakeup)
"uando o buffer enche o Produtor executa sleep e vai dormir
esperando que o consumidor o acorde (wakeup pid do Produtor).
Um Um wakeup wakeup executado executado pelo pelo consumidor consumidor ao ao consumir consumir um um dado dado
acorda acorda o o Produtor Produtor..
"uando o buffer esta vazio o Consumidor executa sleep e vai dormir
esperando que o Produtor o acorde (wakeup pid do Consumidor).
Um Um Wakeup Wakeup executado executado pelo pelo Produtor Produtor ao ao produzir produzir um um dado dado acorda acorda
o o Consumidor Consumidor..
187
Sistemas Operacionais
ProbIema do Produtor e Consumidor (SIeep e Wakeup)
Ainda Ainda assim assim pode pode haver haver condio condio de de corrida corrida::
1) Fila vazia (cont == 0);
2) Consumidor testou se cont == 0, mas ainda no dormiu (sleep);
3) nterrupo;
4) Produtor coloca item na fila e tenta acordar o consumidor, sem
que este esteja dormindo (wakeup sem trmino do sleep - perde-se o
wakeup).
5) Consumidor volta a executar e dorme (sleep);
6) Produtor enche a fila e dorme (sleep).
SISTEMA TRAVADO! SISTEMA TRAVADO!
188
Sistemas Operacionais
ProbIema do Produtor e Consumidor (SIeep e Wakeup)
O problema chamado de : Problema Problema de de Mensagem Mensagem perdida perdida
A essncia deste problema esta no fato de enviarmos um sinal para acordar
(wakeup) para um processo que ainda no esta dormindo.
Soluo: Adicionar um bit bit de de espera espera por por despertar despertar. "uando um sinal para
acordar enviado para um processo que ainda esta acordado, esse bit
ativado. Mais tarde, quando o processo tenta ir dormir, se o bit de espera
estiver ativado, ele ser desativado, mas o processo permanecer acordado.
Esta soluo paliativa quando pensamos em vrios processos esse bit
crescer e o problema em princpio continuar a existir.
189
Sistemas Operacionais
Semforos
Uma soluo para o problema da Mensagem Mensagem Perdida Perdida foi a proposta
de uso de uma varivel inteira para contar o nmero de sinais de
acordar e salv-los para uso futuro. Esta varivel recebeu o nome de
Semforo Semforo e usada para sincronizar processos. Seu objetivo
coordenar o acesso a regio crtica e evitar os problemas que levam
a condio de corrida. Esta varivel pode armazenar o valor zero
(indicando que nenhum sinal de acordar foi salvo wakeup) ou outro
valor positivo caso 1 ou mais sinais de acordar estejam pendentes.
Alm disso foi proposto as seguintes operaes sobre esta varivel
chamada semforo:
190
Sistemas Operacionais
Semforos
Down Down (Correspondente ao sleep): verifica se o valor do semforo
maior que 0, se for decrementa o valor do semforo e prossegue.
Caso semforo = 0 o processo ir dormir (blocked) sem terminar de
executar o DOW (por enquanto).
As operaes, verificar valor do semforo e alterar seu contedo so
tarefas executadas como uma ao atmica e indivisvel. Com isso,
evitamos o problema de uma interrupo entre essas duas
atividades.
191
Sistemas Operacionais
Semforos
UP UP (Correspondente ao wakeup): esta operao incrementa o valor
do semforo que esto dormindo associado ao semforo em
questo. Se houver algum ou alguns processos bloqueados,
impedidos de chamar a primitiva DOW, um deles escolhido para
desbloqueio (aleatoriamente) e dado a permisso de terminar a
execuo da operao DOW que ele havia comeado
anteriormente, com isso o processo acordado que estava bloqueado
ir decrementar o valor do semforo, fazendo com que ele
permanea em zero. o entanto existir um processo a menos
dormindo no semforo.
192
Sistemas Operacionais
Semforos
As operaes de semforos so atmicas,ou seja, no podem ser
interrompidas. As operaes sobre semforos so feitas via chamadas de
SO (sistema operacional) , onde o SO desativar as interrupes enquanto o
semforo estiver seno utilizado.
garantido que aps o incio de uma operao de semforo, nenhum outro
processo acesse o semforo at que a operao tenha se completado.
Semforo Mutex Mutex binrio (assume 0 ou 1) e responsvel por garantir a
excluso mtua. Mutex_lock mpedido 0 e Mutex_unlock Desimpedido
1
193
Sistemas Operacionais
ProbIema do Produtor e Consumidor (Semforo)
Ainda Ainda assim assim pode pode haver haver condio condio de de corrida corrida::
1) Fila vazia (cont == 0);
2) Consumidor testou se cont == 0, Down (bloqueado), semforo+1;
3) nterrupo;
4) Produtor coloca item na fila e tenta acordar o consumidor, executa
UP
5) Consumidor sai de bloqueado, continua a executar o Down,
semforo-1 acorda Consumidor ;
6) Consumidor retira dados da fila...Produto coloca dados na fila
SISTEMA NO IR TRAVAR! SISTEMA NO IR TRAVAR!
194
Sistemas Operacionais
Monitores
uma primitiva de sincronizao de alto nvel. Um Monitor Monitor
uma coleo de variveis de procedimentos e de estruturas de
dados ou so agrupados em um tipo especial de mdulo ou de
pacote. Os processos podem chamar os procedimentos em
um monitor sempre que quiserem, mas eles no podem
acessar diretamente as estruturas de dados internas do
monitor a partir de procedimentos declarados fora do monitor.
195
Sistemas Operacionais
RESUMO RESUMO::
Mecanismos Mecanismos de de espera espera ativa ativa::
Desabilitar nterrupo
Variveis de Bloqueio
Alternncia Estrita
Soluo de Peterson
nstruo TSL
Mecanismos Mecanismos de de espera espera bloqueada bloqueada::
Sleep/Wakeup
Semforos
Mutex
Monitores
196
Sistemas Operacionais
EscaIonamento ou
Agendamento
197
Sistemas Operacionais
Agendamento de Processo ou EscaIonamento
Para implementar o compartilhamento da CPU entre diversos processos,
um sistema operacional multiprogramavel deve possuir um criterio para
determinar, entre os diversos processos no estado pronto, qual o proximo
processo a executar.
Esse procedimento de seleco e realizado por um importante componente
do sistema operacional denominado escalonador, e, por isso, recebe o
nome de Escalonamento Escalonamento de de Processos Processos ou ou Agendamento Agendamento de de Processos Processos
198
Sistemas Operacionais
%ipos de escalonamento:
No-preemptivo: processo que esta executando no pode ser interrompido.
Presente nos primeiros sistemas multiprogramaveis, onde predominava o
processamento em batch. As politicas que implementam escalonamento no-
preemptivo no so aplicaveis a sistemas de tempo compartilhado, pois em
processos interativos e necessario um tempo de resposta ao usuario razoavel.
Preemptivo: o processador pode ser retirado do processo que esta executando.
Permite atenco imediata aos processos mais prioritarios (tempo real), melhores
tempos de resposta (tempo compartilhado), compartilhamento uniIorme do
processador.
199
Sistemas Operacionais
EscaIonamento
W A principal funo do escalonamento decidir qual dos processos
prontos para execuo deve ser alocado CPU.
W Cada SO necessita de um algoritmo de escalonamento adequado a seu
tipo de processamento. Os principais critrios que o escalonamento tenta
otimizar:
W UtiIizao da CPU: deseja-se que a CPU fique a maior parte do
tempo ocupada, sendo dividida de forma imparcial entre os
processos. Uma faixa de utilizao de 90% indica um sistema
bastante ocupado, prximo de sua capacidade ideal.
200
Sistemas Operacionais
EscaIonamento
W Throughput: representa o nmero de processos (tarefas)
executados em um determinado intervalo de tempo. "uanto maior o
Throughout , maior o nmero de tarefas executadas em funo do
tempo.
W Tempo de turnaround: o tempo que um processo leva desde sua
admisso at o seu trmino, levando-se em considerao o tempo de
espera para alocao de memria, espera na fila de processos
prontos, processamento na CPU e operaes de E/S.
201
Sistemas Operacionais
EscaIonamento
W Tempo de resposta: em sistemas interativos, este tempo o tempo
decorrido do momento da submisso do pedido at a primeira
resposta produzida. O tempo de resposta no o tempo utilizado no
processamento total de uma tarefa, e sim o tempo decorrido at que
uma resposta seja apresentada.
W De uma maneira geral, qualquer algoritmo de escalonamento busca
otimizar a utiIizao da CPU e o Throughput , enquanto tenta diminuir
os tempos de turnaround e de resposta .
202
Sistemas Operacionais
EscaIonamento
W O algoritmo de execuo no o nico responsvel pelo tempo de
execuo de um processo. Outros fatores, como o tempo de
processamento (tempo de CPU) e de espera em operaes de E/S
devem ser considerados no tempo total da execuo (tempo de parede
ou eIapsed time ou waII cIock time).
W O escalonamento somente afeta o tempo de espera de processos na fila
de pronto.
203
EscaIonamentos No Preemptivos
Wos primeiros Sistemas Operacionais Multiprogramveis, onde predominava
tipicamente o processo batch, o escalonamento implementado era do tipo o
Preemptivo .
Weste tipo de escalonamento, quando um processo ganha o direito de utilizar
a CPU nenhum outro processo pode lhe tirar este recurso.
WPodem ser:
WEscalonamento Circular Simples - FFO
WEscalonamento Shortest Job First - SJF
WEscalonamento Cooperativo
Sistemas Operacionais
204
EscaIonamento CircuIar SimpIes - FIFO
WH uma fila nica de processos prontos
WO primeiro processo da fila (first-in) o primeiro a ser selecionado para
execuo (first-out)
WO processo selecionado pode usar a CPU indefinidamente
Wovos jobs so encaminhados para o fim da fila
W"uando um processo bloqueia, o prximo da fila selecionado
WProcessos que passaram do estado bloqueado para pronto so colocados no
fim da fila
WFcil de implementar
WA falta de preempo pode trazer desvantagens
Sistemas Operacionais
205
EscaIonamento Shortest Job First - SJF
Weste escalonamento cada processo tem associado o seu tempo de
execuo. Desta forma quando a CPU est livre o processo em estado de
pronto que tiver menor tempo de execuo ser selecionado para execuo.
WO escalonamento SJF favorece os processos que executam processos
menores, alm de reduzir o tempo mdio de espera (na fila de processos
prontos) em relao ao escalonamento FFO.
WA dificuldade determinar, exatamente, quanto tempo de CPU cada processo
necessita para terminar seu processamento.
Sistemas Operacionais
206
EscaIonamento Cooperativo
Weste escalonamento alguma poltica no-preemptiva deve ser adotada. A
partir do momento que um processo est em execuo, este voluntariamente
libera o processador, retornando para a fila de pronto.
WEste tipo de escalonamento permite a implementao de sistemas
multiprogramveis com uma melhor distribuio do uso do processador entre
os processos.
WSua principal caracterstica est no fato de a liberao do processador ser
uma tarefa realizada exclusivamente pelo processo em execuo, que de
maneira cooperativa libera a CPU para um outro processo.
Sistemas Operacionais
207
EscaIonamento Cooperativo
Wo escalonamento cooperativo, no existe nenhuma interveno do SO na
execuo do processo. sto pode ocasionar srios problemas na medida em
que um programa pode no liberar o processador ou um programa mal escrito
pode entrar em Iooping, monopolizando dessa forma o processados.
WUm exemplo deste tipo de escalonamento pode ser encontrado nos sistemas
Windows 3.1 e 3.11, sendo conhecido como MuItitarefa Cooperativa . estes
sistemas as aplicaes verificam uma fila de mensagens periodicamente para
determinar se existem outras aplicaes que desejam usar a UCP. Caso uma
aplicao no verifique a fila de mensagens as outras tarefas no tero chance
de ser executadas at o trmino do programa.
Sistemas Operacionais
208
EscaIonamentos Preemptivos
WUm algoritmo de escalonamento dito preemptivo quando o sistema
pode interromper um processo em execuo, para que outro utilize o
processador.
WO escaIonamento preemptivo permite que o sistema d ateno
imediata a processos mais prioritrios, como no caso de sistemas de
tempo real, alm de proporcionar melhores tempos de resposta em
sistemas de tempo compartilhado.
WOutro benefcio deste tipo de escalonamento o compartilhamento do
processador de uma maneira mais uniforme entre os processos.
Sistemas Operacionais
209
EscaIonamentos Preemptivos
WA troca de um processo por outro na CPU (troca de contexto), causada
pela preempo, gera um overhead ao sistema.
WPara isto no se tornar crtico, o sistema deve estabelecer
corretamente os critrios de preempo.
Sistemas Operacionais
210
EscaIonamentos Preemptivos
WPodem ser:
WRound-Robin
WPrioridades
WFilas Mltiplas
WMltiplos Processadores
Sistemas Operacionais
211
EscaIonamento CircuIar - Round Robin
Um dos algoritmos mais simples, mais antigo e mais amplamente
utilizado. A cada processo atribuido um intervalo de tempo, chamado
de quantum durante o qual lhe permitido executar.
Caso o processo ainda esteja executando ao final do quantum, feita a
troca do mesmo por outro processo que esteja pronto para a fase de
execuo.
Se o processo bloqueou ou terminou antes de o quantum ter acabado,
a troca por outro processo realizada no exato momento do bloqueio
ou do trmino da operao do processo.
Sistemas Operacionais
212
Sistemas Operacionais
TIME-SLICING ou QUANTUM
Para evitar que um processo monopolize o sistema, a tcnica de TME-
SLCG ou "UATUM divide o tempo de processamento de cada um
em fatias (slice). "uantum o tempo limite de uso da CPU pelo
processo.
Um processo do usurio, uma vez interrompido por trmino do seu
quantum, volta fila de pronto para executar e permite o escalonamento
de outro processo.
213
EscaIonamento CircuIar - Round Robin
A nica coisa que pode dar um pouco de trabalho na implementao
do Round Robin a determinao do tamanho do quantum.
Um quantum de tamanho muito pequeno, causa sucessivas troca de
contexto, baixando a eficincia do processador.
Um quantum de tamanho muito grande pode levar a um tempo de
resposta no aceitvel para usurios interativos.
Sistemas Operacionais
214
EscaIonamento CircuIar - Round Robin
WO algoritmo semelhante ao FFO, porm, quando um processo passa para o
estado de execuo, existe um tempo limite para a sua utilizao de forma
contnua. "uando este tempo (time-slice ou quantum) expira sem que antes a
CPU seja liberada pelo processo, este volta ao estado de pronto (preempo
por tempo), dando a vez a outro processo.
WA fila de processos tratada como uma fila circular.
A
UCP
C
Processos
prontos
E/S
Fim
Processamento
Fim de
time-slice
Sistemas Operacionais
215
EscaIonamento por Prioridades
O escalonamento Round Robin assume de forma implcita que todos
os processos so igualmente importantes.
A necessidade de se considerar fatores externos para a escolha do
prximo processo que vai ganha o processador denominada
escalonamento escalonamento por por prioridade prioridade..
Cada processo associado uma prioridade, e o processo pronto com
maior prioridade ser aquele que vai rodar primeiro.
Sistemas Operacionais
216
EscaIonamento por Prioridades
A prioridade uma caracterstica do contexto de SW do processo,
podendo ser esttica ou dinmica .
A prioridade dita esttica quando no modificada durante a
existncia do processo.
a prioridade dinmica a prioridade do processo pode ser ajustada de
acordo com o tipo de processamento realizado pelo processo e/ou pela
carga do sistema.
Sistemas Operacionais
217
EscaIonamento por Prioridades
Toda vez que um processo for para a fila de processos prontos com prioridade
superior ao processo em execuo, o SO dever interromper o processo
corrente, coloc-lo como pronto e escalonar o processo de maior prioridade
para execuo ( preempo por prioridade )
Assim como na preempo por tempo a preempo por prioridade
implementada mediante um clock, que interrompe o processador em
determinados intervalos de tempo, para que a rotina de EscaIonamento
reavalie as prioridades e, possivelmente, escalone outro processo.
Para evitar que processos com alta prioridade monopolizem o processador
(evitando o starvation), o escalonador dever decrementar a prioridade do
processo que esta monopolizando a CPU, a cada interrupo de tempo.
Sistemas Operacionais
218
EscaIonamento por Prioridades
Os processos podero ser agrupados em classes de prioridade e usar
o escalonamento de prioridades entre as classes e o Round Robin
dentro de cada classe. Conforme figura abaixo:
Sistemas Operacionais
219
EscaIonamento por Prioridades
AIgoritmo: enquanto houver processos com prioridade 4: round-robin na
classe (processos em outras classes no so escolhidos). Se prioridade 4
vazia, round-robin na prioridade 3 e assim por diante. Cada vez que o processo
recebe o tempo para executar, a sua prioridade decrementada. "uando todos
os processos se encontrarem no mesmo nvel, as prioridades iniciais so
restauradas.
Sistemas Operacionais
220
EscaIonamento por FiIas MItipIas
WProcessos no permanecem numa mesma classe de prioridade at o
fim de sua execuo
W"uando seu quantum expira, ele vai para uma fila de prioridade mais
baixa/quantum mais alto
WFilas de prioridades diferentes tm quantum diferentes
WDiminuio de prioridade X aumento de quantum
WReduzir a quantidade de trocas de contexto para processos grandes
Sistemas Operacionais
221
EscaIonamento FiIas MItipIas
Sistemas Operacionais
222
EscaIonamento Garantido
Cada processo tem direito a 1/n tempo da CPU, sendo n o nmero de
processos.
Para isso a CPU deve saber quanto tempo cada processo j usou.
Dividindo o tempo que j usou pelo tempo que deveria ter para
completar a operao (Tempo prometido), obtm-se uma razo entre
ambos, onde:
Se essa razo for menor do que 1, ento o processo ter
direito a mais tempo de CPU;
Se essa razo for maior do que 1, ento o processo ter
menos tempo de CPU do que os outros processos.
Sistemas Operacionais
223
EscaIonamento em 2 nveis
Caso no haja memria disponvel para todos os processos,
alguns destes devero ser mantidos em disco.
Esta situao tem grande impacto sobre o escalonamento, uma
vez que o tempo gasto na troca de contexto envolvendo o disco
algumas ordens de magnitude maior do que quando ambos os
processos esto na memria principal.
Sistemas Operacionais
224
EscaIonamento em 2 nveis
WUma forma mais prtica de tratar com o swap de processos
usando um escalonador de 2 nveis.
WUm subconjunto de processos prontos carregado na memria
principal, e outro subconjunto mantido em disco.
WUm escalonador, denominado escalonador de nvel mais baixo,
se restringe a escolher processos somente da memria,
utilizando qualquer qualquer uma uma das das polticas polticas de de escalonamento escalonamento.
Sistemas Operacionais
225
EscaIonamento em 2 nveis
WUm outro escalonador de nvel mais alto invocado para remover
processos que esto na memria h bastante tempo, e trazer para a
memria aqueles processos que esto em disco h muito tempo.
W"uando esta troca for feita, o escalonador de nvel mais baixo se
restringe, novamente, a escolher processos que esto na memria
para serem executados.
WEsta soluo faz com que o escalonador de baixo nvel se preocupe
em escalar os processos que esto na memria enquanto que o de alto
nvel em trazer e levar processos entre a memria e o disco (swap).
Sistemas Operacionais
226
EscaIonamento em 2 nveis
O escalonador de alto nvel pode usar um dos seguintes critrios de
escolha de processos:
"ual o tempo decorrido desde que o processo foi trazido para a
memria e levado de volta para o disco;
"uando tempo de CPU o processo teve;
"ual o tamanho do processo;
"ual a prioridade do processo.
Poderemos utilizar o Round Robin, prioridade, ou qualquer outro
mtodo de escalonamento, para programar o escalonador de alto nvel.
Sistemas Operacionais
227
EscaIonamento de Sistemas de Tempo ReaI
W estes sistemas o fator tempo crtico.
WDiferentemente dos sistemas de tempo compartilhado, onde um
pequeno tempo de resposta desejado porm no obrigatrio, todo
processamento em tempo real deve ser realizado dentro de limites
rgidos de tempo ou, caso contrrio, todo sistema pode ficar
comprometido.
Sistemas Operacionais
228
Sistemas Operacionais
DeadLock
229
DeadIock
Deadlock (blocagem, impasse), no contexto do sistemas operacionais
(SO), caracteriza uma situao em que ocorre um impasse e dois ou
mais processos ficam impedidos de continuar suas execues, ou seja,
ficam bloqueados.
O deadlock ocorre com um conjunto de processos e recursos no-
preemptveis, onde um ou mais processos desse conjunto est
aguardando a liberao de um recurso por um outro processo que, por
sua vez, aguarda a liberao de outro recurso alocado ou dependente
do primeiro processo.
Sistemas Operacionais
230
DeadIock
A definio textual de deadlock normalmente, por ser muito abstrata,
mais difcil de se compreender do que a representao por grafos, que
ser resumida mais adiante. o entanto, algumas observaes so
pertinentes:
O deadlock pode ocorrer mesmo que haja somente um processo no
SO, considerando que este processo utilize mltiplos threads e que tais
threads requisitem os recursos alocados a outros threads no mesmo
processo;
Sistemas Operacionais
231
DeadIock
O deadlock independe da quantidade de recursos disponveis no
sistema;
ormalmente o deadlock ocorre com recursos como dispositivos,
arquivos, etc. Apesar da CPU ser considerada como recurso para o
SO, em geral um recurso facilmente preemptvel, pois existem os
escalonadores para compartilhar o processador entre os diversos
processos, quando trata-se de um ambiente multitarefa.
Sistemas Operacionais
232
DeadIock - Condies necessrias para a ocorrncia de deadlock
comum dizer que o deadlock ocorre naturalmente em alguns
sistemas. o entanto, necessrio ressaltar que tais sistemas
precisam obedecer a algumas condies para que uma situao de
deadlock se manifeste.
Essas condies esto listadas abaixo, onde as trs primeiras
caracterizam um modelo de sistema, e a ltima o deadlock
propriamente dito:
processos que estejam de posse de recursos obtidos anteriormente
podem solicitar novos recursos. Caso estes recursos j estejam
alocados a outros processos, o processo solicitante deve aguardar pela
liberao do mesmo;
Sistemas Operacionais
233
DeadIock - Condies necessrias para a ocorrncia de deadlock
1 - Condio de excIuso mtua: Cada recurso ou est alocado a
exatamente um processo ou est disponvel;
2 - Condio de posse-e-espera: Processos que estejam de posse de
recursos obtidos anteriormente podem solicitar novos recursos;
Sistemas Operacionais
234
DeadIock - Condies necessrias para a ocorrncia de deadlock
3 - Condio de no-preempo: recursos j alocados a processos
no podem ser tomados a fora. Eles precisam ser liberados
explicitamente pelo processo que detm a sua posse;
4 - Condio de espera circuIar: deve existir uma cadeia circular de
dois ou mais processos, cada um dos quais esperando por um recurso
que est com o prximo membro da cadeia.
Sistemas Operacionais
235
DeadIock - Representao de deadlock em grafos
O deadlock tambm pode ser representado na forma de grafos
dirigidos, onde o processo representado por um crculo e o recurso,
por um quadrado. "uando um processo solicita um recurso, uma seta
dirigida do crculo ao quadrado. "uando um recurso alocado a um
processo, uma seta dirigida do quadrado ao crculo.
a figura seguinte, podem-se ver dois processos diferentes (A e B),
cada um com um recurso diferente alocado (R1 e R2). esse exemplo
clssico de deadlock, facilmente visvel a condio de espera
circuIar em que os processos se encontram, onde cada um solicita o
recurso que est alocado ao outro processo.
Sistemas Operacionais
236
DeadIock
Sistemas Operacionais
237
DeadIock - Tratamento de deadlock
As situaes de deadlock podem ser tratadas ou no em um sistema, e
cabe aos desenvolvedores avaliar o custo/benefcio que essas
implementaes podem trazer.
ormalmente, as estratgias usadas para detectar e tratar as situaes
de deadlocks geram grande sobrecarga, podendo at causar um dano
maior que a prpria ocorrncia do deadlock, sendo, s vezes, melhor
ignorar a situao.
Sistemas Operacionais
238
DeadIock - Tratamento de deadlock
Existem trs estratgias para tratamento de deadlocks:
1) gnorar a situao;
2) Detectar o deadlock e recuperar o sistema; e
3) Evitar o deadlock;
Sistemas Operacionais
239
DeadIock
Sistemas Operacionais
Ou seja, o Processo 1 reserva para si o Recurso 1, por sua vez o Processo
2 e o Processo 3 reservam respectivamente para si o Recurso 2 e o
Recurso 3. Por exemplo se um dos outros processos necessitar de um dos
recursos anteriormente reservados por outros processos, como acontece
no diagrama da figura anterior entramos numa situao de Deadlock.
ExempIo 1
240
Os recursos so de 2 tipos :
W Preemptveis e;
W o-preemptveis.
Um recurso preemptvel aquele que pode ser tomado do processo
que estiver usando o recurso, sem nenhum prejuzo para o processo.
A memria um exemplo de recurso preemptvel.
Sistemas Operacionais - DeadLock
241
RECURSOPREEMPTVEL:
Considere um sistema com 512 Kb de memria disponvel para usurios, uma
impressora e 2 processos de 512 Kb (P1 e P2) cada. Estes processos
desejam imprimir alguma coisa.
O processo P1 carregado na memria e requisita e obtm acesso a
impressora, este ento inicia o processamento de impresso (clculos,lay-out
etc), porm antes de terminar P1 excede o seu tempo (time slice) e retirado
da memria (sai de EXECUTADO e vai para PROTO).
O processo P2 comea ento o seu processamento e tenta obviamente sem
sucesso, garantir para si o uso da impressora.
Sistemas Operacionais - DeadLock
242
RECURSOPREEMPTVEL:
Potencialmente temos configurado uma situao de DEADLOCK, pois
P1 tem a impressora e P2 tem a memria, e nenhum dos dois pode
prosseguir sem o recurso que esta com o outro.
Felizmente possvel tomar a memria de P2 (vai para BLOCKED),
copiando P1 (swapp) do disco para a memria agora P1 pode
executar, realizar a impresso e liberar a impressora, que quando
liberada ser entregue a P2 (sai de BLOCKED e vai para PROTO),
para que este termine o seu processamento.
este caso no vai ocorrer DEADLOCK.
Sistemas Operacionais - DeadLock
243
RECURSONO-PREEMPTVEL:
Em contrapartida um recurso no-preemptvel aquele que no pode
ser tomado de seu proprietrio atual sem causar problemas no
processamento corrente.
Por exemplo se um processo iniciou a impresso de resultados, a
impressora no poder ser tomada dele e entregue a outro processo,
sem que haja um prejuzo considervel no processo.
Para recurso no-preemptvel ocorrer DEADLOCK.
Sistemas Operacionais - DeadLock