Вы находитесь на странице: 1из 201

Arquitetura de Sistemas

Operacionais
Prof. Mrcio

Cap 05 Processo

Processo

Sumrio

Introduo
Estrutura do processo
Estados do processo
Mudanas de estado do processo
Criao e eliminao de processos
Processos independentes, subprocessos e
threads
Processos foreground e background
Processos do sistema operacional
Processos CPU-bound e I/O-bound
Sinais

Processo

Introduo
O conceito de processo a base para a
implementao de um sistema
multiprogramvel.
A gerncia de processos uma das
principais funes de um sistema
operacional, possibilitando aos
programas alocar recursos,
compartilhar dados, trocar informaes
e sincronizar suas execues.

Processo

Estrutura do Processo
Estrutura do processo

Contexto de
Software

Contexto de
Hardware

Programa
Espao de
Endereamento

Processo

Entendido como um programa em


execuo. Estrutura responsvel pela
manuteno de todas as informaes
necessrias execuo de um
programa, como contedo de
registradores e espao de memria.
O processo pode ser dividido em 5
elementos bsicos:

Processo

Contexto de Hardware
Mudana
de
contexto

Sistema Operacional

Processo A

Processo B

executando

Salva registradores do
Processo A

Carrega registradores do
Processo B

executando

Salva registradores do
Processo B

Carrega registradores do
Processo A

executando

Processo

Constitui-se, basicamente do contedo


de registradores: program counter
(pc), stack pointer (sp) e bits de
estado.
Ao estar em execuo o contexto de
hardware de um processo est
armazenado nos registradores do
processador e ao perder a utilizao ca
UCP, o sistema salva suas informaes
no seu contexto de hardware.
Processo

Fundamental para a implementao


dos sistemas de tempo compartilhado
(time-sharing), onde os processos se
revezam na utilizao do processador
A troca de um processo por outro na
UCP, denominada mudana de
contexto (context swithching), que
consiste em salvar o contedo dos
registradores da UCP.

Processo

Contexto de Software
So especificados limites e
caractersticas dos recursos que podem
ser alocados pelo processo, como o
nmero mximo de arquivos abertos
simultaneamente, prioridade de
execuo, etc.
A maior parte das informaes do
contexto de software provm de um
arquivo do SO, conhecido como
arquivo de usurios.
Processo

Contexto de Software
Identificao
Quotas
Privilgios

Processo

10

Contexto de Software
Especifica caractersticas do processo
que vo influir na execuo de um
programa.
Define 3 grupos de informaes:
Identificao cada processo criado
pelo sistema recebe uma identificao
nica (PID process identification),
representada por um nmero.

Processo

11

Contexto de Software
O processo tambm possui a
identificao do usurio ou processo
que o criou (owner). Cada usurio
possui uma identificao nica do
sistema (UID user identification),
atribuda ao processo no momento de
sua criao.

Processo

12

Contexto de Software
Quotas so os limites de cada
recurso do sistema que um processo
pode alocar .
Exemplos:
nmero mximo de arquivos abertos
simultaneamente.
nmero mximo de operaes de E/S
pendentes
Nmero mximo de processos,
subprocessos e threads que podem ser
criados.
Processo

13

Contexto de Software
Privilgios definem o que o processo
pode ou no fazer em relao ao
sistema e aos outros processos.
Os privilgios podem afetar o prprio
processo quanto outros processos,
alterando suas caractersticas.

Processo

14

Espao de Enderaamento
Estrutura de um processo
nome
PID
owner (UID)

registradores
gerais

prioridade de
execuo
data/ hora
de criao

registrador PC

Contexto de
Software

Contexto de
Hardware

registrador SP

tempo de
processador
quotas
Programa

privilgios

registrador
de status

Espao de
Endereamento

endereos de memria
principal alocados

Processo

15

Espao de Endereamento
rea de memria do processo onde o
programa ser executado, alm do
espao para os dados utilizados por
ele.
Cada processo possui seu prprio
espao de endereamento,que deve
ser devidamente protegido do acesso
dos demais processos.

Processo

16

Bloco de Controle do Processo


PCB
o proceso
implementado
pelo SO
atravs de
uma estrutura
de dados
chamada PCB

ponteiros
Estado do processo
Nome do processo
Prioridade do processo
Registradores

Limites de memria
Lista de arquivos abertos
..
..
..
..

Processo

17

Bloco de Controle do Processo


O PCB, mantm todas as informaes
sobre o processo, como sua
identificao, prioridade, estado
corrente, recursos alocados por ele e
informaes sobre o programa em
execuo.
Os PCBs de todos os processos ativos
residem na memria principal em uma
rea exclusiva do SO.

Processo

18

Processo

19

Estados do Processo
Execuo (running)
Pronto (ready)
Espera (wait)

Processo

20

Estados do Processo
Durante a existncia de um processo, ele
pode passar por uma srie de estados.
Execuo est em processamento pela
CPU.
Pronto est aguardando a oportunidade
para executar, ou seja, espera que o SO
aloque a CPU para sua execuo.
Espera est aguardando algum evento
externo ou por algum recurso para poder
prosseguir seu processamento.
Processo

21

Mudanas de Estado
Mudanas de estado do processo
Estado de Execuo

b
a

Estado de Espera
Processo

Estado de Pronto
22

Mudanas de Estado
Pronto-execuo quando o processo
criado ele vai para o estado de
pronto. Aguarda para ser executado.
Execuo-espera ocorre por evento
gerado pelo prprio processo, como
uma operao de E/S.
Espera-pronto quando a operao
solicitada atendida ou o recurso
esperado atendido.

Processo

23

Mudanas de Estado
Execuo-pronto ocorre por evento
gerado pelo prprio sistema, como fim
da fatia de tempo que o processo
possui para sua execuo.
Obs.: no existe mudana do estado
de espera para o estado de execuo
diretamente.
Obs1.: os estados de espera e pronto
podem estar residentes ou no
residentes na memria principal.
Processo

24

Criao e eliminao de
processos
Um processo dito no estado de
criao quando o SO j criou um novo
PCB, porm no pode coloc-lo na lista
de processos do estado de pronto.
h limitaes no nmero de processos
ativos em funo dos recursos
disponveis ou de desempenho.

Processo

25

Criao e eliminao de
processos
Um processo no estado de terminado
no poder ter mais nenhum programa
executado no seu contexto, porm o
sistema operacional ainda mantm
suas informaes de controle presentes
na memria.
Alguns razes para o trmino:
trmino normal de execuo
Eliminao por um outro processo
Eliminao forada por ausncia de
recursos disponveis no sistema
Processo

26

Criao e eliminao de
processos
Estado de Execuo

Estado de Trmino

b
a

Estado de Espera
Processo

Estado de Pronto

Estado de Criao
27

Processos Independentes,
Subprocessos e Threads
Estrutura de processos e subprocessos
Processo A

Processo C

Processo B

Processo D

Processo

Processo E

28

Processos Independentes,
Subprocessos e Threads
Processos independentes,
subprocessos e threads so maneiras
diferentes de implementar a
concorrncia dentro de uma aplicao.
Processos independentes so a
maneira mais simples de implementar
a concorrncia em sistemas
multiprogramveis.
No existe vnculo do processo criado
com o seu criador.
Processo

29

Processos Independentes,
Subprocessos e Threads
Um subprocesso (processo pai) pode
criar um outro processo (processo
filho), que por sua vez pode criar
outros subprocessos. Caso um
processo deixe de existir, os
subprocessos subordinados sero
eliminados.

Processo

30

Processos Independentes,
Subprocessos e Threads
Subprocesso permite dividir uma
aplicao em partes que podem trabalhar
de forma concorrente, porm demanda
consumo de diversos recursos do sistema,
pois sempre que um novo processo
criado h a alocao de recursos
(contexto de hardware, contexto de
software e espao de endereamento)
para cada processo e ao terminar tambm
dispensa tempo para desalocar recursos
previamente alocados.
Processo

31

Outro problema a comunicao e a


sincronizao entre processos
considerados pouco eficientes, visto
que cada processo possui seu prprio
espao de enderaamento.

Processo

32

Processos Independentes,
Subprocessos e Threads
Processo multithread

Contexto
de hardware

Contexto
de hardware

Thread 1

Thread 2

Thread 3

Contexto de
software

Contexto
de hardware

Espao de
endereamento

Processo

33

Processos Independentes,
Subprocessos e Threads
Threads
Criado para diminuir o tempo gasto na
criao/eliminao de processos e
economizar recursos do sistema como
um todo.
No ambiente multithread, cada
processo pode responder a vrios
solicitaes concorrentemente ou
mesmo silmultaneamente, caso haja
mais de um processador.
Processo

34

Processos Independentes,
Subprocessos e Threads
Trabalham da mesma forma que os
processos.
Diferena est entre os espaos de
enderaamento
Subprocessos possuem cada um
espaos independentes e protegidos,
enquanto threads compartilham o
mesmo espao de endereamento do
processo.

Processo

35

Processos Foreground e
Background
Processos foreground e background
(a) Processo Foreground
entrada

sada

terminal

terminal

(b) Processo Background


entrada

arquivo
de entrada

Processo

sada

arquivo
de sada

36

Processos Foreground e
Background
Foreground aquele que permite a
comunicao direta do usurio com o
processo durante o seu
processamento.
Background aquele onde no existe
a comunicao com o usurio durante
o seu processamento. O
processamento do tipo batch
realizado atravs de processos
background.
Processo

37

Processo Foreground e
Background
Pipe

sada do
Processo A
entrada do
Processo A

sada do
Processo B
entrada do
Processo B
Processo A

Processo

Processo B

38

Processos Foreground e
Background
Associao do canal de sada de um
processo ao canal de entrada de um
outro processo.
Existe um pipe ligando os dois
processos.

Processo

39

Processos CPU e IO Bound


Processos CPU x IO Bound

E/ S

E/ S

UCP

UCP

tempo
(a) CPU-bound

Processo

tempo
(b) I/ O-bound

40

Processos CPU e IO Bound


CPU-bound quando passa a maior
parte do tempo no estado de execuo,
ou seja, utilizando o processador.
Realiza poucas operaes de
E/S.Aplicaes matemticas ou
cientifcas.

Processo

41

Processos CPU e IO Bound


I/O-bound quando passa a maior
parte do tempo no estado de espera,
pois realiza um elevado nmero de
operaes de E/S. Se baseiam em
leitura, processamento e gravao.
Aplicaes comerciais baseadas em
leitura, processamento e gravao.

Processo

42

Exerccios
Defina o conceito de processo.
Por que o conceito de processo to
importante no projeto de sistemas
multiprogramveis?
Quais as partes que compem um processo?
Defina os 5 estados possveis de um
processo.
Explique a diferena entre processos
foreground e background..
D exemplos de aplicaes CPU-bound e
I/O-bound
Processo

43

Arquitetura de Sistemas
Operacionais
Prof. Mrcio

Cap 06 Thread

Thread

44

Sumrio

Introduo
Ambiente monothread
Ambiente multithread
Arquitetura e implementao

Thread

45

Introduo
At o final da dcada de 70, os SOs
suportavam apenas processos com um nico
thread, ou seja, um processo com apenas um
nico programa fazendo parte do seu
contexto.
A partir do conceito de multithread possvel
projetar e implementar aplicaes
concorrentes de forma eficiente, pois um
processo poder ter diferentes partes do seu
cdigo sendo executadas em paralelo, com
um menor overhead do que utilizam
mltiplos processos
Thread

46

Introduo
O desenvolvimento de programas que
exploram os benefcios da
programao multithread no so
simples.
Introduz um novo conjunto de
problemas como a comunicao e
sincronizao de threads.

Thread

47

Ambiente Monothread
Em um ambiente monothread, um
processo suporta apenas um programa
no seu espao de endereamento.
Neste ambiente, aplicaes
concorrentes so implementadas
apenas com o uso de mltiplos
processos independentes ou
subprocessos.
Utilizao de processos independentes
e subprocessos.
Ex.: software de gerenciamento de
emails.
Thread

48

Ambiente Monothread
Problemas:
Uso de processos no desenvolvimento
de aplicaes concorrentes demanda
consumo de diversos recursos do
sistema.
Compartilhamento do espao de
endereamento. Como processo possui
seu prprio espao de
endereamento,a comunicao entre
processos torna-se difcil e lenta.
Thread

49

Ambiente Monothread
Ex.:
Microsoft MS-DOS e as primeiras
verses do MS-Windows.

Thread

50

Ambiente Monothread
Concorrncia com processos

Subprocessos

Thread

Processos Independentes

51

Ambiente Multithread
Neste ambiente no existe a idia de
programas associados a processos,
mas sim, a threads.
O processo neste ambiente, tem pelo
menos um thread de execuo, mas
pode compartilhar o seu espao de
endereamento com inmeros outros
threads.

Thread

52

Ambiente Multithread
Ambiente monothread

Thread

Thread

Thread

Thread

53

Ambiente Multithread
Um thread pode ser definido como uma
sub-rotina de um programa que pode
ser executada de forma assncrona, ou
seja, executada paralelamente ao
programa chamador.
A grande vantagem no uso de threads
a possibilidade de minimizar a
alocao de recursos do sistema, alm
de minimizar o overhead na criao,
troca e eliminao de processos.
Thread

54

Ambiente Multithread
Threads compartilham o processador
da mesma maneira que processos e
passam pelas mesmas mudanas de
estado.
Dentro de um mesmo processo,
threads compartilham o mesmo
contexto de software e espao de
endereamento com os demais, porm
cada thread possui seu prprio
contexto de hardware.
Thread

55

Ambiente Multithread
Uso de Bloco de Controle de Thread TCB (Thread Control Block).
Armazena, alm do contexto de
hardware, mais algumas informaes
relacionadas exclusivamente ao thread,
como prioridade, estado de execuo e
bits de estado.

Thread

56

Ambiente Multithread
Em ambientes monothread, o processo
ao mesmo tempo a unidade de
alocao de recursos e a unidade de
escalonamento.
Em ambiente multithread, a unidade
de alocao de recursos o processo,
onde todos os seus threads
compartilham o espao de
endereamento e dispositivos de E/S.

Thread

57

Ambiente Multithread
Cada thread representa um unidade de
escalonamento independente. Neste
caso, o sistema no seleciona um
processo para a execuo, mas sim um
de seus threads.
A grande diferena entre aplicaes
monothread e multithread est no uso
do espao de endereamento

Thread

58

Ambiente Multithread
Benefcios:
Programas concorrentes com mltiplos
threads so mais rpidos do que
programas concorrentes
implementados com mltiplos
processos.
Threads em um mesmo processo
podem compartilhar facilmente outros
recursos, como temporizadores, sinais,
atributos de segurana.
Thread

59

Latncia de processos e threads

Thread

60

Ambiente Multithread
Ambiente multithread

Contexto
de hardware

Contexto
de hardware

Thread 1

Thread 2

Thread 3

Contexto de
software

Contexto
de hardware

Espao de
endereamento

Thread

61

Ambiente Multithread
Aplicao multithread
Processo

Variveis

Programa Principal

Thread_1
PC
SP

Contexto de
Hardware

...

Espao de
endereamento

Call Sub_1

Thread_2

Sub_1

Ret

PC
SP

Thread_3

Sub_2

PC
SP

Contexto de
Hardware

Fim

Contexto de
Hardware

Call Sub_2

...

Ret

Thread

62

Ambiente Multithread
Aplicao
multithread (a)
Thread de
entrada

Buffer

Thread de
exibio

Thread

Thread de
gravao

63

Ambiente Multithread
Aplicao
multithread (b)

Processo servidor

Solicitaes

Thread

Thread

Thread

Thread

Processo cliente

Processo cliente

Processo cliente

64

Arquitetura e Implementao

Threads em modo usurio


Threads em modo kernel
Threads em modo hbrido
Scheduler Activations

Thread

65

Arquitetura e Implementao
Podem ser oferecidos por uma
biblioteca de rotinas fora do ncleo do
SO(usurio), pelo prprio ncleo do
SO(kernel) , por combinao de ambos
(hbrido) ou um modelo chamado de
Scheduler activations.

Thread

66

Arquitetura e Implementao
Conjunto de rotinas disponveis para
que uma aplicao utilize as facilidades
dos threads chamado de pacotes de
threads.
Threads podem ser oferecidas por uma
biblioteca de rotinas fora do ncleo do
SO (modo usurio), pelo prprio SO do
sistema (modo kernel), por uma
combinao de ambos (modo hbrido)
ou por um modelo conhecido como
scheduler activations.
Thread

67

Threads em modo usurio


So implementadas pela aplicao e no pelo SO. Para
isso deve existir uma biblioteca de rotinas que
possibilite a aplicao realizar tarefas como
criao/eliminao de threads, troca de mensagens
entre threads e uma poltica de escalonamento.
Vantagens:
possibilidade de implementar aplicaes multithreads
mesmo em SOs que no suportam threads.
So rpidos e eficientes por dispensarem acesso ao
kernel do SO, evitando assim a mudana de modo de
acesso (U-K-U)
Desvantagens:
Grande limitao, pois o SO gerencia cada processo
como se existisse apenas um nico thread.
Tratamento individual de sinais
No possibilidade de escalonamento em ambientes com
mltiplos processadores.
Thread

68

Arquitetura e Implementao

Thread 4

Thread 3

Thread 2

Thread 1

Thread 0

Threads em modo usurio

Modo
usurio

Biblioteca

Kernel

Thread

Modo
kernel

69

Threads em modo kernel


So implementadas diretamente pelo
ncleo do SO, atravs de chamadas a
rotinas do sistema que oferecem todas
as funes de gerenciamento e
sincronizao
Vantagem
O SO sabe da existncia de cada
thread e pode escalon-lo
individualmente
Desvantagem
Baixo desempenho
Thread

70

Threads em modo kernel

Kernel

Thread

Thread 4

Thread 3

Thread 2

Thread 1

Thread 0

Threads em modo kernel

Modo
usurio

Modo
kernel

71

Threads em modo hibrido


Combina as vantagens de threads
implementados em TMU e TMK. Um
processo pode ter vrios TMK e por sua
vez um TMK pode ter vrios TMU.
O ncleo do sistema reconhece os TMK
e pode escalon-los individualmente.
Apresenta problemas herdados de
ambas as implementaes

Thread

72

Threads em modo hibrido

TMU 5

TMU 4

TMU 3

TMU 2

TMU 1

TMU 0

Threads em modo hbrido

Modo
usurio

Biblioteca

TMK 0

TMK 1

TMK 2

TMK 3
Modo
kernel

Kernel

Thread

73

Scheduler Activations
O modelo ideal deveria utilizar as
facilidades do pacote em modo kernel
com o desempenho do modo usurio.
Nesse pacote, o ncleo do sistema
troca informaes com a biblioteca de
threads utilizando uma estrutura de
dados, a scheduler activations.
Cada camada implementa seu
escalonamento de forma independente,
porm trocando informaes quando
necessrio.
Thread

74

Scheduler Activations

Thread 4

Thread 3

Thread 2

Thread 1

Thread 0

Scheduler Activations

Modo
usurio

Biblioteca

Kernel

Thread

Modo
kernel

75

Modelos de programao
O desenvolvimento de aplicaes multithreads no
simples, pois exige que a comunicao e o
compartilhamento de recursos entre os diversos
threads.
Depurao complexa
Fator importante:
Nmero total de threads e a forma como so criados e
eliminados.
Nmero excessivo de threads poder ocorrer um
overhead no sistema.
Dependendo da implementao, a definio do nmero
de threads pode ser dinmica ou esttica
Para obter os benefcios do uso de threads, uma
aplicao deve permitir que partes diferentes do seu
cdigo sejam executados em paralelo de forma
independente.
Thread

76

Atividades
Como uma aplicao pode implementar
concorrncia em ambiente monothread?
Quais os problemas de aplicaes
concorrentes desenvolvidas em ambientes
monothread?
O que thread e quais as vantagens de sua
utilizao.
Explique a diferena entre unidade de
alocao de recurso e unidade de
escalonamento
Quais os benefcios de uso de threads em
ambientes cliente-servidor?
Thread

77

Sistemas Operacionais
Prof. Mrcio
Cap 07

Sincronizao e Comunicao
entre Processos

Sincronizao e Comunicao
Thread

78
78

Sumrio

Introduo
Aplicaes concorrentes
Especificao de concorrncia em programas
Problemas de compartilhamento de recursos
Excluso mtua
Sincronizao condicional
Semforos
Monitores
Troca de mensagens
Deadlock

Sincronizao e Comunicao
Thread

79
79

Aplicaes Concorrentes
comum processos que trabalham
juntos (concorrentes) compartilharem
recursos do sistema. O
compartilhamento de recursos entre
processos pode gerar situaes
indesejveis, capazes at de
comprometer o sistema.
Os mecanismos que garantem a
comunicao entre processos
concorrentes e o acesso a recursos
compartilhados so chamados
mecanismos de sincronizao
Sincronizao e Comunicao
Thread

80
80

Aplicaes Concorrentes
Sincronizao e comunicao entre
processos

Sincronizao

gr
Processo
gravador

av
a
o

i tu
le

ra

Processo
leitor

dado
Buffer

Sincronizao e Comunicao
Thread

81
81

Especificao de Concorrncia em
Programas
Especificao de concorrncia em programas
So notaes utilizadas para especificar as
partes de um programa que devem ser
executados concorrentemente.
FORK e JOIN
Fork ao ser encontrado, faz com seja criado
um outro processo para a execuo de outro
programa
Join permite a sincronizao entre
programas. Um programa s continuar a ser
processado aps o trmino de outro.
Sincronizao e Comunicao
Thread

82
82

Especificao de Concorrncia
em Programas
Concorrncia em programas
Processo
principal

PARBEGIN
Comando_1;
Comando_2;
.
.
Comando_n;
PAREND

Processo 1

Processo 2

Processo n

Processo
principal

Sincronizao e Comunicao
Thread

83
83

Especificao de Concorrncia em
Programas
PARBEGIN e PAREND
Parbegin especifica que a seqncia
de comandos seja executada
concorrentemente em uma ordem
imprevisvel.
Parend define o ponto de
sincronizao onde o processamento s
continuar quando todos os processos
criados j tiverem terminado suas
execues.
Sincronizao e Comunicao
Thread

84
84

Especificao de Concorrncia
em Programas
X := SQRT (1024) + (35.4 * 0.23) - (302 / 7)
PROGRAM Expressao;
VAR X, Temp1, Temp2, Temp3 : REAL;
BEGIN
PARBEGIN
Temp1 := SQRT (1024);
Temp2 := 35.4 * 0.23;
Temp3 := 302 / 7;
PAREND;
X := Temp1 + Temp2 - Temp3;
WRITELN ('x = ', X);
END.
Sincronizao e Comunicao
Thread

85
85

Prob. de Compartilhamento
de Recursos
Onde dois ou mais processos tenham
acesso a um mesmo recurso
compartilhado, devem existir
mecanismos de controle que evitem
esses tipos de problemas

Sincronizao e Comunicao
Thread

86
86

Prob. de Compartilhamento
de Recursos
PROGRAM Conta_Corrente;
.
.
READ (Arq_Contas, Reg_Cliente);
READLN (Valor_Dep_Ret);
Reg_Cliente.Saldo :=
Reg_Cliente.Saldo + Valor_Dep_Ret;
WRITE (Arq_Contas, Reg_Cliente);
.
.
END.

Compartilhamento de arquivo
Thread
Sincronizao
e Comunicao
87
87
em disco

Compartilhamento de arquivo
em disco
caixa

instruo

Saldo arquivo

Valor
dep/ret

Saldo
memria

Read

1000

1000

Readln

1000

-200

1000

:=

1000

-200

800

Read

1000

1000

Readln

1000

+300

1000

:=

1000

+300

1300

Write

800

-200

800

write

1300

+200

1300

Sincronizao e Comunicao
Thread

88
88

Prob. de Compartilhamento
de Recursos
Inicialmente X possui valor 2
Processo A
Processo B
X := X + 1;
X := X - 1;

Processo A
LOAD x,Ra
ADD
1,Ra
STORE Ra,x

Processo B
LOAD x,Rb
SUB
1,Rb
STORE Rb,x

Varivel na memria principal sendo


compartilhada por dois processos
Sincronizao e Comunicao
Thread

89
89

Prob. de Compartilhamento
de Recursos
Processo A

Processo B

LOAD x,Ra
ADD 1, Ra
STORE Ra,X

LOAD x,Rb
ADD 1, Rb
STORE Rb,X

Sincronizao e Comunicao
Thread

90
90

Prob. de Compartilhamento
de Recursos
Processo Comando

Ra

Rb

A
A
B
B
A
B

2
2
2
2
3
1

2
3
*
*
3
*

*
*
2
1
*
1

LOAD x, Ra
ADD 1, Ra
LOAD x, Rb
SUB 1, Rb
STORE Ra,x
STORE Rb,x

Sincronizao e Comunicao
Thread

91
91

SOLUO PARA OS PROBLEMAS


DE COMPARTILHAMENTO
Excluso mtua enquanto um processo
estiver acessando determinado recurso,
todos os outros que queiram acessar esse
mesmo recursos devero esperar at que o
primeiro processo termine o acesso
A parte do cdigo do programa onde feito o
acesso ao recurso compartilhado chamado
regio crtica.
Protocolo de entrada usado para entrar na
regio crtica
Protocolo de sada informa aos outros
processos que podem tentar acessar o
recurso com sucesso.
Sincronizao e Comunicao
Thread

92
92

Excluso Mtua
Regio crtica
Protocolos de acesso
BEGIN
.
.
Entra_Regiao_Critica;
Regiao_Critica;
Sai_Regiao_Critica;
.
.
END.
Sincronizao e Comunicao
Thread

93
93

Excluso Mtua
Situaes indesejadas
Starvation processo nunca consegue
executar sua regio crtica e
consequente acessar o recurso
compartilhado.
Escolha aleatria e com base em
prioridades, so situae que levam ao
starvartion.
Soluo simples uso de filas

Sincronizao e Comunicao
Thread

94
94

Excluso Mtua
Processo fora de sua regio crtica
impede que outros processos entrem
nas suas prprias regies crticas.
Nesse caso, um recurso estaria livre,
porm alocado a um processo.
Vrios processos estariam sendo
impedidos de utilizar o recurso,
reduzindo o grau de compartilhamento.

Sincronizao e Comunicao
Thread

95
95

Excluso Mtua
Solues de hardware
Desabilitao de interrupes
BEGIN
.
Desabilita_Interrupcoes;
Regiao_Critica;
Habilita_Interrupcoes;
.
END.

Sincronizao e Comunicao
Thread

96
96

Excluso Mtua
Solues de hardware
Instruo de mquina especial que permite
ler uma varivel, armazenar seu contedo
em uma outra rea a atribuir um novo
valor mesma varivel.
Instruo Test-and-Set
Executada sem interrupo

Test-and-Set (X,Y);
Sincronizao e Comunicao
Thread

97
97

Excluso Mtua
Instruo Test-and-Set
Faz com que o processo desabilite todas as
interrupes antes de entrar na sua regio
crtica, e as reabilite aps deixar a RC.

BEGIN
......

Desabilita_interrupes;
Regio Critica;
Habilita_Interrupes
......

END.
Sincronizao e Comunicao
Thread

98
98

Program test_and_set;

Var bloqueio : bol;

Procedure processo_A;

Var pode_A : bol;

Begin

repeat

pode_A := true;

while (pode_A) do;

test_and_set(pode_A, Bloqueio);

Regiao_critica_A;

Bloqueio :=False;

until true;

End;

Procedure processo_B;
Var pode_B: bol;
Begin
repeat
pode_B := true;
while (pode_B) do;
test_and_set(pode_B
Bloqueio);
Regiao_critica_B;
Bloqueio :=False;
until true;
End;
Begin
bloqueio :=false;
parbegin
processo_A;
processo_B;
parend;
End.

Sincronizao e Comunicao
Thread

99
99

Excluso Mtua
Processo A
REPEAT
Pode_A:=T
While (Pode_A)
Test_and_set
While (Pode_A)
Test_and_set
Reg_Critica_A

Processo B

Pode_A

REPEAT
Pode_B:=T
Test_and_set
Reg_Critica_B
Bloqueio:=F
Pode_B:=T
While (Pode_B)

*
True
True
True
True
False
False

Pode_B

Bloqueio

*
True
False
False
False
True
True

False
False
True
True
False
True
True

Vantagem: simplicidade de implementao de excluso mtua em


mltiplas regies criticas
Desvantagem: possibilidade de starvation, pois a seleo do
processo para o acesso ao recurso arbitrria.

Sincronizao e Comunicao
Thread

100
100

Excluso Mtua
Solues de software
Primeiro algoritmo
Segundo algoritmo
Terceiro algoritmo
Quarto algoritmo
Algoritmo de Dekker
Algoritmo de Peterson
Algoritmo para excluso mtua entre N
processos

Sincronizao e Comunicao
Thread

101
101

Primeiro Algoritmo
Vez
si
Vez = B m
n
Regioo
Crtica

si
Vez = A m
n
Regioo
Crtica

Vez = B

Vez = A

PA

PB

Sincronizao e Comunicao
Thread

102
102

Sincronizao e Comunicao
Thread

103
103

Primeiro Algoritmo
Processo_A

Processo_B

While (Vez =B)


Regiao_Critica_A
Vez :=B
Processamento_A
Processamento_A
Processamento_A
Processamento_A

While (Vez =A)


While (Vez =A)
While (Vez =A)
Regiao_Critica_B
Vez :=A
Processamento_B
While (Vez =A)

Sincronizao e Comunicao
Thread

Vez
A
A
B
B
A
A
A

104
104

Segundo Algoritmo
Introduz as variveis CA e CB.
Toda vez que um processo desejar
entrar na sua regio crtica, a varivel
do outro processo testada para
verificar se o recurso est livre para
uso.

Sincronizao e Comunicao
Thread

105
105

Segundo Algoritmo
CA e CB (boolean)

si
CB
m
n
o
CA = true

si
CA
m
n
o
CB = true

Regio Crtica

Regio Crtica

CA = false

CB = false

PA

PB

Sincronizao e Comunicao
Thread

106
106

Sincronizao e Comunicao
Thread

107
107

Segundo Algoritmo
Processo_A
While (CB)
CA:=T
Reg_Critica_A

Processo_B
While (CA)
CB:=T
Reg_Critica_B

CA
F
T
T

CB
F
T
T

Problemas: caso ocorra um problema


dentro de sua regio crtica ou antes de
alterar a varivel, o outro processo
permanecer indefinidamente
bloqueado.No garantida, nem a
excluso mtua.
Sincronizao e Comunicao
Thread

108
108

Terceiro Algoritmo
Garante a excluso mtua, porm
introduz um novo problema, que a
possibilidade de bloqueio indefinido de
ambos os processos.
A instruo de atribuio das variveis
CA e CB antes do loop de teste.
problema: bloqueio indefinido, caso os 2
processos alterem as variveis CA e CB
antes de execuo da instruo WHILE,
ambos no entraro nas suas RC, como
se o recurso j tivesse alocado.
Sincronizao e Comunicao
Thread

109
109

Sincronizao e Comunicao
Thread

110
110

Terceiro Algoritmo
CA e CB (boolean)
CA = true
si
CB
m
n
o
Regio Crtica

CB = true
si
CA
m
n
o
Regio Crtica

CA = false

CB = false

PA

PB

Sincronizao e Comunicao
Thread

111
111

Quarto Algoritmo
Garante a excluso
No gera bloqueio simultneo dos
processos
Problema:
Tempos aleatrios serem prximos e a
concorrncia gerar uma situao onde os
dois processos alterem as variveis CA e
CB para falso antes do trmino do loop.

Sincronizao e Comunicao
Thread

112
112

Quarto Algoritmo
CA e CB (boolean)
CA = true

CB = true

si
m
CA = false

CB

n
o

espera de
Regio Crtica tempo aleatrio
CA = false

CA = true

PA
Sincronizao e Comunicao
Thread

si
m
CB = false

CA

n
o

espera de
Regio Crtica tempo aleatrio
CB = false

CB = true

PB
113
113

Sincronizao e Comunicao
Thread

114
114

Algoritmo de Peterson

Esta soluo alm das variveis de


condio (CA e CB), introduz a varivel
Vez para resolver os conflitos gerados pela
concorrncia.
O processo cede o uso do recurso a outro
processo, indicado pela varivel Vez.
Comando WHILE como protocolo de
entrada da RC.
O bloqueio indefinido de um dos processos
no loop nunca ocorrer, j que a varivel
Vez sempre permitir a continuidade de
execuo de um dos processos.
Sincronizao e Comunicao
Thread

115
115

Algoritmo de Peterson
CA e CB (boolean)
CA = true
Vez = B
CB
Vez = B

Vez (char)
CB = true
Vez = A

sim

no

CA
Vez = A

sim

no

Regio Crtica

Regio Crtica

CA = false

CB = false

PA

PB

Sincronizao e Comunicao
Thread

116
116

Sincronizao e Comunicao
Thread

117
117

Sincronizao Condicional
Ocorre quando um recurso
compartilhado no se encontra pronto
pra ser utilizado pelos processos.
Nesse caso, o processo que deseja
acessar o recurso dever ser colocado
no estado de espera.

Sincronizao e Comunicao
Thread

118
118

Sincronizao Condicional
Programa Produtor_Consumidor
Recurso compartilhado buffer (varivel
TamBuf), sendo controlado pela varivel
Cont.
Cont = 0 buffer vazio e o processo
Consumidor deve permanecer aguardando
at que se grave um dado.
Cont = TamBuf buffer est cheio e o
processo Produtor deve aguardar a leitura de
um novo dado.
Obs.: no est sendo implementado excluso
mtua na varivel compartilhada Cont.
Problema da Espera Ocupada
Sincronizao e Comunicao
Thread

119
119

Sincronizao Condicional
PROGRAM Produtor_Consumidor_1;
CONST TamBuf
= (* Tamanho qualquer *);
TYPE Tipo_Dado = (* Tipo qualquer *);
VAR Buffer : ARRAY [1..TamBuf] OF Tipo_Dado;
Dado
: Tipo_Dado;
Cont
: 0..TamBuf;
BEGIN
Cont := 0;
PARBEGIN
Produtor;
Consumidor;
PAREND;
END.
Sincronizao e Comunicao
Thread

120
120

Sincronizao Condicional
PROCEDURE Produtor;
BEGIN
REPEAT
Produz_Dado (Dado);
WHILE (Cont = TamBuf) DO (* Nao faz nada *);
Grava_Buffer (Dado, Cont);
UNTIL False;
END;
PROCEDURE Consumidor;
BEGIN
REPEAT
WHILE (Cont = 0) DO (* Nao faz nada *);
Le_Buffer (Dado);
Consome_Dado (Dado, Cont);
UNTIL False;
END;
Sincronizao e Comunicao
Thread

121
121

Semforos
uma varivel inteira, no negativa,
que s pode ser manipulada por duas
instrues: DOWN e P.
Funcionam como protocolos de entrada
e sada.
Se a varivel tiver valor > 0, nenhum
processo est utilizando o recurso,
caso contrrio o processo fica impedido
o acesso

Sincronizao e Comunicao
Thread

122
122

Semforos
Quando um processo desejar entrar em
sua regio crtica, deve executar uma
instruo DOWN, se o semforo for >
1, ento decrementado de 1, e o
processo que solicitou a operao pode
executar sua regio crtica, caso o
semforo seja 0, o processo fica em
estado de espera.
Ao sair de sua regio crtica, executar
uma instruo UP, incrementando o
semforo de 1 e liberando o acesso ao
recurso.
Sincronizao e Comunicao
Thread

123
123

Semforos
Semforo binrio na excluso mtua

DO
N

(S
>

0)

Processo deseja entrar


na regio crtica

0)

D
O

=
(S
UP (S) - processo sai
da regio crtica
Libera processo
da fila de espera

Processo acessa
a regio crtica
Sincronizao e Comunicao
Thread

Fila de espera
de processos
124
124

Monitores
So mecanismos de sincronizao de
alto nvel, que tentam tornar mais
fceis o desenvolvimento e a correo
de programas concorrentes.
Implementa automaticamente a
excluso mtua entre seus
procedimentos, ou seja, somente um
processo pode estar executando algum
procedimento do monitor em um
determinado instante
Sincronizao e Comunicao
Thread

125
125

Monitores
Implementao da excluso mtua
realizada pelo compilador e no pelo
programador.
A comunicao do processo com o
monitor feita unicamente atravs de
chamadas a seus procedimentos e dos
parmetros passados para eles.

Sincronizao e Comunicao
Thread

126
126

Monitores
Estrutura do monitor
Declarao de
variveis globais
Procedimentos

Monitor

Proc. 1
Proc. 2

Fila de entrada
Proc. n
Inicializao
de variveis

Sincronizao e Comunicao
Thread

127
127

Monitores
Estrutura do monitor com varveis de
condio
Declarao de
variveis globais
Procedimentos

Condio C1

Monitor

Proc. 1
Proc. 2

Condio C2

Proc. n

Condio Cn

Fila de entrada

Filas de espera
Inicializao
de variveis

Sincronizao e Comunicao
Thread

128
128

Troca de Mensagens
Mecanismo de comunicao e
sincronizao entre processos,
implementado pelo SO atravs de duas
rotinas do sistema: SEND e RECEIVE.
Problema: perda da mensagem
Soluo: uso de mensagens de
recebimento (acknowledgement-ACK)

Sincronizao e Comunicao
Thread

129
129

Troca de Mensagens
Transmisso de mensagem

Processo
transmissor

Processo
receptor

Canal de comunicao

SEND

Sincronizao e Comunicao
Thread

RECEIVE

130
130

Troca de Mensagens
A comunicao pode ser feita de modo
direto e indireto:
Endereamento direto:
mensagem endereada explicitamente
pelo nome do processo receptor ou
transmissor;
S permite a comunicao entre dois
processos

Sincronizao e Comunicao
Thread

131
131

Troca de Mensagens
Comunicao direta

Processo A

Sincronizao e Comunicao
Thread

Processo B

132
132

Troca de Mensagens
Endereamento indireto:
Utiliza rea compartilhada, chamada de
mailbox.
Parmetros dos procedimentos SEND e
RECEIVE passam a ser nomes de
mailboxs e no mais nomes de
processos

Sincronizao e Comunicao
Thread

133
133

Troca de Mensagens
Comunicao indireta
Processo A

Processo B

Mailbox
ou Port

Sincronizao e Comunicao
Thread

134
134

Troca de Mensagens
Existem 3 diferentes esquemas de
implementar a sincronizao entre
processos que trocam mensagens.
Rendezvous
Implementa a forma sncrona de
comunicao entre os processos.
Problema: a execuo dos processos fica
limitada ao tempo de processamento no
tratamento das mensagens.

Sincronizao e Comunicao
Thread

135
135

Troca de Mensagens
Variao mais eficiente do rendezvous.
Permite a um processo enviar mensagens para
diversos destinatrios to logo seja possvel.
Forma assncrona
Tanto o processo receptor quanto o processo
transmissor no permanecem aguardando o
envio e o recebimento de mensagens.
Mecanismos que permitam ao processo
identificar se uma mensagem j foi enviada ou
recebida.
Aumenta a eficincia de aplicaes
concorrentes.
Sincronizao e Comunicao
Thread

136
136

Deadlock
Condies necessrias
Excluso mtua
Espera por recurso
No-preempo
Espera circular

Mecanismos
Preveno
Deteco
Correo
Sincronizao e Comunicao
Thread

137
137

Deadlock
Espera de um evento que nunca ir
ocorrer por um processo.
Ocorre por causa do compartilhamento
de recursos do sistema entre vrios
processos

Sincronizao e Comunicao
Thread

138
138

Deadlock
Condies para que ocorra Deadlock:
Excluso mtua apenas um processo de
cada vez pode usar esse recurso. Se outro
processo solicitar esse recurso, o processo
solicitante dever ser retardado at que o
recurso tenha sido liberado.
Posse e espera deve haver processos
que mantenham pelo menos um recurso e
tambm esteja esperando para obter
recursos adicionais mantidos por outros
processos
Sincronizao e Comunicao
Thread

139
139

Deadlock
Condies para que ocorra Deadlock:
No-preempo um recurso s pode ser
liberado voluntariamente pelo processo
que o mantm, depois que esse processo
tiver completado sua tarefa.
Espera circular um processo pode ter de
esperar por um recurso alocado a outro
processo e vice-versa.

Sincronizao e Comunicao
Thread

140
140

Deadlock
Espera circular
Processo A
Processo A
solicita o
Recurso 2

Recurso 1
alocado ao
Processo A

Recurso 2

Recurso 1

Processo B

Recurso 2
alocado ao
Processo B

Sincronizao e Comunicao
Thread

Processo B
solicita o
Recurso 1

141
141

Deadlock
Preveno:
Garantir que uma das 4 condies
necessrias para sua ocorrncia nunca se
satisfaa.
Excluso mtua ausncia de excluso
mtua, porm fera inconsistncias srias
em nvel dos processos e do sistema.
Posse e espera sempre que um
processos necessitar de recurso para
executar, que ele o requisite antes de
comear sua execuo, caso contrrio,
nenhum recurso ser alocado e o processo
ficar no estado de espera.
Sincronizao e Comunicao
Thread

142
142

Deadlock
Desvantagens: - grande desperdcio na
utilizao do sistema. Dificuldade de
determinar o nmero de recursos que
o processo precisar. Processo pode
sofre STARVATION.
- No-Preempo a liberao do
recurso pode fazer com que o processo
perca todo o processamento at ento
realizado. Tambm gera STARVATION.
- Espera Circular forar o processo a
ter acesso a apenas um recurso de
cada vez.
Sincronizao e Comunicao
Thread

143
143

Deadlock
DETECO:
Mecanismo a determinar a existncia de
um deadlock, permitindo identificar os
recursos e processos envolvidos.
Estrutura de dados capazes de identificar
cada recurso do sistema, o processo que
est alocando e os processos que esto
espera pela liberao do recurso.

Sincronizao e Comunicao
Thread

144
144

Deadlock
CORREO DE DEADLOCK
Eliminar um ou mais processos envolvidos
no deadlock e desalocar os recursos j
garantidos por eles, quebrando a espera
circular.

Sincronizao e Comunicao
Thread

145
145

Arquitetura de Sistemas
Operacionais
Prof. Mrcio
Cap 08 Gerncia do Processador

Gerncia do Processador
Thread

146
146

Sumrio

Introduo
Funes Bsicas
Critrios de escalonamento
Escalonamentos no-preemptivos e
preemptivos
Escalonamento FIFO
Escalonamento SJF
Escalonamento cooperativo
Escalonamento circular
Escalonamento por prioridades
Escalonamento circular com prioridades

Gerncia do Processador
Thread

147
147

Sumrio
Escalonamento por mltiplas filas
Escalonamento por mltiplas filas com
realimentao
Poltica de Escalonamento em Sistemas de
Tempo Compartilhado
Poltica de Escalonamento em Sistemas de
Tempo Real

Gerncia do Processador
Thread

148
148

Introduo
Escalonamento
Estado de
Execuo
lo
ca
Es
na
me
n to

Estado de
Espera

Gerncia do Processador
Thread

Estado de
Pronto

149
149

Funes Bsicas
Manter a UCP ocupada a maior parte do
tempo
Balancear o uso da UCP entre processos
Privilegiar a execuo de aplicaes crticas
Maximizar o throughput
Oferecer tempos de resposta razoveis para
usurios interativos
Implementada pelo scheduler e dispatcher
Processos unidades de alocao de
recursos
Threads unidades de escalonamento
Gerncia do Processador
Thread

150
150

Critrios de Escalonamento
Utilizao do processador
desejvel que o processador permanence
a maior parte do tempo ocupado.
30% (baixa carga de processamento)
90% (bastante carregado)

Throughput
Representa o nmero de processos
executados em um determinado intervalo
de tempo.
Gerncia do Processador
Thread

151
151

Critrios de Escalonamento
Tempo de Processador / Tempo de UCP
Tempo que um processo leva no estado de
execuo durante seu processamento.

Tempo de Espera
Tempo total que um processo permanece
na
fila
de
pronto
durante
seu
processamento, aguardando para ser
executado.
Desejvel reduo do tempo.

Gerncia do Processador
Thread

152
152

Critrios de Escalonamento
Tempo de Turnaround
Tempo que um processo leva desde a sua
criao at o seu trmino, levando em
considerao todo o tempo gasto na
espera para alocao de memria, espera
na fila de pronto, processamento na UCP e
na fila de espera, como nas operao de
E/S.

Gerncia do Processador
Thread

153
153

Critrios de Escalonamento
Tempo de Resposta
Tempo decorrido entre uma requisio ao
sistema ou aplicao e o instante em que
a resposta exibida.
Geralmente limitado pela velocidade do
dispositivo de E/S.

Gerncia do Processador
Thread

154
154

Escalonamentos
No-Preemptivo e Preemptivo
Preempo possibilidade do SO
interromper um processo em execuo
e substitu-lo por outro
Escalonamento no-preemptivo
Primeiro tipo de escalonamento
implementado nos sistemas
multiprogramveis, onde predominava o
processamento batch.

Gerncia do Processador
Thread

155
155

Escalonamentos
No-Preemptivo e Preemptivo
Escalonamento preemptivo
O SO pode interromper um processo em
execuo e pass-lo para o estado de
pronto, com o objetivo de alocar outro
processo na UCP.
Nos dias de hoje, a maioria dos SO
implementam polticas de escalonamento
preemptivas, que apesar de complexas,
possibilitam a implementao dos diversos
critrios de escalonamento apresentados.

Gerncia do Processador
Thread

156
156

Escalonamento FIFO
O processo que chegar primeiro ao
estado de pronto o selecionado para
a execuo. No preemptivo.
Bastante simples usa fila
Desvantagens:
Impossibilidade de prever-se quando um
processo ter sua execuo iniciada.
No se preocupa em melhorar o tempo
mdio de espera dos processos.
CPU-bound levam vantagem sobre os
processos I/O-bound.
Gerncia do Processador
Thread

157
157

Escalonamento FIFO
Escalonamento First-In-First-Out

Fila dos processos no estado de Pronto


Estado de
Criao

UCP

Estado de
Trmino

Estado de
Espera

Gerncia do Processador
Thread

158
158

Escalonamento FIFO
Exemplo
Processo A

Processo B

Processo C

10

14

17

u.t.

Processo A

Processo

Tempo de
processador
(u.t.)

10

Processo B

Processo C

Gerncia do Processador
Thread

17

u.t.

159
159

Escalonamento SJF
O escalonamento seleciona o processo
que tiver o menor tempo de
processador ainda por executar.
Implementao utilizada nos primeiros
sistemas operacionais com
processamento exclusivamente batch.
Estimativa do tempo realizada com
base em anlises estatsticas de
execues passadas dos programas.

Gerncia do Processador
Thread

160
160

Escalonamento SJF
Desvantagens:
Impossibilidade de estimar o tempo de
processador para processos interativos, j
que a entrada de dados uma ao
imprevisvel.

Em sistemas interativos levado em


conta o comportamento desse processo
neste ambiente, nesse caso, o
escalonamento realizado com base no
tempo que um processo ir utilizar a
UCP na prxima vez em que for
escalonado e no mais no tempo do
processador.
Gerncia do Processador
Thread
161
161

Escalonamento SJF
Sua vantagem sobre o escalonamento
FIFO est na reduo do tempo mdio
de turnaround dos processo, porm no
SFJ possvel haver starvartion para
processos com tempo de processador
muito longo ou do tipo.

Gerncia do Processador
Thread

162
162

Escalonamento SJF
SJF com preempo SRT (shortest
remaining time).
Toda vez que um processo no estado
de pronto tem um tempo de
processador estimado menor do que o
processo em execuo o SO realiza
preempo.
SO fica responsvel por estimar os
tempos de processador dos processos.

Gerncia do Processador
Thread

163
163

Escalonamento SJF
Escalonamento Shortest-Job-First

Processo A

Processo B

Processo C

Gerncia do Processador
Thread

17

u.t.

164
164

Escalonamento Cooperativo
Processo em execuo libera
voluntariamente a UCP
Verifica a fila de mensagens
periodicamente
Podem ocorrer problemas se o
processo no verificar a fila, um
processo pode ficar ocupando por um
longo perodo o processador.
Exemplo: primeiros sistemas
MS-Windows
Gerncia do Processador
Thread

165
165

Escalonamento Circular
Bastante parecido com o FIFO, porm
quando um processo passa para o
estado de execuo existe um tempolimite para o uso contnuo do
processador denominado fatia de
tempo (time slice).
Mecanismo conhecido como preempo
por tempo

Gerncia do Processador
Thread

166
166

Escalonamento Circular
A fila de processos em estado de
pronto tratada como uma fila
circular.
O processo permanecer no estado de
execuo at que termine seu
processamento, voluntariamente passe
para o estado de espera ou que sua
fatia de tempo expire, sofrendo
preempo.

Gerncia do Processador
Thread

167
167

Escalonamento Circular
Fatia de tempo varivel, entre 10 a
100 milissegundo.
Esse valor pode afetar o desempenho
da poltica de escalonamento.
Principal vantagem:
No permitir que um processo monopolize
a UCP, por causa da fatia de tempo.
Adequado para sistemas de tempo
compartilhado

Gerncia do Processador
Thread

168
168

Escalonamento Circular
Desvantagens:
CPU-bound so beneficiados no uso do
processador em relao aos processos I/obound, ocasionando um balanceamento
desigual no uso do processador.

Soluo:
Escalonamento circular virtual

Gerncia do Processador
Thread

169
169

Escalonamento Circular

Fila dos processos no estado de Pronto


Estado de
Criao

UCP

Estado de
Trmino

Preempo por tempo

Estado de
Espera

Gerncia do Processador
Thread

170
170

Escalonamento Circular
Exemplo
Processo A

Processo B

Processo C

Gerncia do Processador
Thread

10 11

17

u.t.

171
171

Escalonamento Circular
Processos que saem do estado de
espera vo para uma fila de pronto
auxiliar. Tais processos possuem
preferncia na escalonamento em
relao a fila de pronto.
O escalonador s seleciona os
processos da fila de pronto quando a
fila auxiliar estiver vazia.
Fatia de tempo = fatia de tempo do
sistema tempo de processador que o
processo utilizou na ltima vez.
Gerncia do Processador
Thread

172
172

Escalonamento Circular
Escalonamento circular virtual
Fila dos processos no estado de Pronto
Estado de
Criao

UCP

Estado de
Trmino

Preempo por tempo

Fila auxiliar

Estado de
Espera

Gerncia do Processador
Thread

173
173

Escalonamento por
Prioridades
um escalonamento do tipo
preemptivo realizado com base em um
valor associado a cada processo
denominado prioridade de execuo.
Processo com maior prioridade no
estado de pronto sempre escolhido
para execuo e aqueles com mesma
prioridade sero escalonados seguindo
o critrio de FIFO.

Gerncia do Processador
Thread

174
174

Escalonamento por
Prioridades
Nesse tipo de escalonamento, a perda
do uso do processador s ocorrer no
caso de uma mudana voluntria para
o estado de espera ou quando um
processo de prioridade maior passa
para o estado de pronto.
Processos I/O-bound recebem
prioridades mais altas que os CPUbound, como poltica compensatria.
Amplamente usado em sistemas
Windows e Linux.
Gerncia do Processador
Thread

175
175

Escalonamento por
Prioridades
Existem 2 variaes:
Escalonamento circular com prioridades
estticas, onde a prioridade definida no
contexto de software de cada processo e
permanece inalterada ao longo de sua
existncia.
Escalonamento circular com prioridades
dinmicas, que permite que a prioridade
seja alterada dinamicamente pelo
administrador do sistema ou pelo prprio
SO.
Gerncia do Processador
Thread

176
176

Escalonamento por
Prioridades
Filas dos processos no estado de Pronto
Prioridade P1

Prioridade P2

Estado de
Criao

UCP

Estado de
Trmino

Prioridade Pn

Preempo por prioridade

Estado de
Espera

Gerncia do Processador
Thread

177
177

Escalonamento por
Prioridades
Exemplo

Processo A

Processo B

Processo C

Gerncia do Processador
Thread

13

17

Processo

Tempo de
processador
(u.t.)

Prioridade

10

u.t.

178
178

Escalonamento Circular com


Prioridades
Fila dos processos no estado de Pronto
Prioridade P1

Prioridade P2

Estado de
Criao

UCP

Estado de
Trmino

Prioridade Pn

Preempo por tempo ou prioridade

Estado de
Espera

Gerncia do Processador
Thread

179
179

Escalonamento
por Mltiplas Filas
Neste escalonamento existem diversas
filas de processos no estado de pronto,
cada qual com uma prioridade
especfica.
Processo so associados s filas em
funo de caractersticas prprias,
como importncia para a aplicao,
tipo de processamento ou rea de
memria necessria.

Gerncia do Processador
Thread

180
180

Escalonamento
por Mltiplas Filas
Sua principal vantagem a
possibilidade da convivncia de
mecanismos de escalonamento distintos
em um mesmo SO.
Cada fila possui um mecanismo prprio,
permitindo que alguns processos sejam
escalonados pelo mecanismo FIFO,
enquanto outros pelo circular.

Gerncia do Processador
Thread

181
181

Escalonamento
por Mltiplas Filas
O processo no possui prioridade,
caracterstica essa que fica associada a
fila.
O processo sofre preempo caso um
outro processo entre em uma fila de
maior prioridade.
O SO s pode escalonar processos de
uma determinada fila caso todas as
outras filas de maior prioridade
estejam vazias.
Gerncia do Processador
Thread

182
182

Escalonamento
por Mltiplas Filas
Desvantagens:
Caso um processo altere seu
comportamento no decorrer do temo o
processo no poder ser redirecionado
para uma outra fila mais adequada.

Sua associao a uma fila


determinada na criao do processo,
permanecendo at o trmino do seu
processamento.

Gerncia do Processador
Thread

183
183

Escalonamento
por Mltiplas Filas
Fila de processos do sistema
Maior
prioridade
Fila de processos interativos

UCP

Fila de processos batch


Menor
prioridade

Gerncia do Processador
Thread

184
184

Escalonamento por Mltiplas


Filas com Realimentao
Semelhante ao mltiplas filas, porm
os processos podem trocar de filas
durante seu processamento.
Grande vantagem permitir ao SO
identificar dinamicamente o
comportamento de cada processo,
direcionando-o para filas com
prioridade de execuo e mecanismos
de escalonamento mais adequados ao
longo de seu processamento.
Gerncia do Processador
Thread

185
185

Escalonamento por Mltiplas


Filas com Realimentao
Os processos no so previamente
associados s filas de pronto, e sim
direcionados pelos sistema para as filas
existentes com base no seu
comportamento.
Um mecanismo de FIFO com fatia de
tempo usado para escalonamento em
todas as filas, com exceo da fila de
menor prioridade, que usa
escalonamento circular.
Gerncia do Processador
Thread

186
186

Escalonamento por Mltiplas


Filas com Realimentao
O escalonamento de um processo em
uma fila ocorre apenas quando todas
as filas de prioridades mais altas
estiverem vazias.
Quanto maior a prioridade da fila,
menor ser a sua fatia de tempo,
variando em funo da fila de pronto
no qual ele se encontra.

Gerncia do Processador
Thread

187
187

Escalonamento por Mltiplas


Filas com Realimentao
Um processo quando criado, entra no
final da fila de maior prioridade, porm
durante sua execuo, a cada
preempo por tempo, o processo
redirecionado para uma fila de menor
prioridade.

Gerncia do Processador
Thread

188
188

Escalonamento por Mltiplas


Filas com Realimentao
Processos I/O-bound tem prioridades
mais altas por permanecerem a maior
parte do tempo nas filas de maior
prioridade, pois dificilmente sofrero
preempo por tempo
Processos CPU-bound tendem ao
entrar na fila de mais alta prioridade, o
processo ganhe o processador, gaste
sua fatia de tempo e seja direcionado
para uma fila de menor prioridade.
Gerncia do Processador
Thread

189
189

Escalonamento por Mltiplas


Filas com Realimentao
Pode ser implementado em qualquer
tipo de SO.
Problemas:
Mudana de comportamento de um
processos CPU-bound para I/O-bound
pode comprometer seu tempo de resposta.
Complexidade de implementao, levando
a um grande overhead.

Gerncia do Processador
Thread

190
190

Fila 1 (FIFO Adaptado)

Preempo por tempo

Menor fatia
de tempo

Maior
Prioridade

Escalonamento por Mltiplas


Filas com Realimentao

Fila 2 (FIFO Adaptado)

Preempo por tempo

Fila 3 (FIFO Adaptado)

UCP

Menor
Prioridade

Fila n (Circular)

Maior fatia
de tempo

Preempo por tempo

Preempo por tempo

Gerncia do Processador
Thread

191
191

Polticas em Sistemas de
Tempo Compartilhado
Caracterizam-se pelo processamento
interativo, no qual usurios interagem
com as aplicaes exigindo tempos de
respostas baixos.
A poltica de escalonamento escolhida
deve levar em considerao o
compartilhamento dos recursos de
forma equitativa para possibilitar o uso
balanceado da UCP entre processos.

Gerncia do Processador
Thread

192
192

Polticas em Sistemas de
Tempo Compartilhado
Escalonamento FIFO (exemplo)
Processo A

Gerncia do Processador
Thread

19

21

E/ S de B

E/ S de B

11

E/ S de A

E/ S de A

Processo B

Processo

Tempo de
processador
(u.t.)

Caracterstica

21

CPU-bound

I/ O-bound

27

u.t.

193
193

Polticas em Sistemas de
Tempo Compartilhado
Escalonamento circular (exemplo)
UCP livre

Processo A

20

23
E/ S de A

Processo

Tempo de
processador
(u.t.)

Caracterstica

15

CPU-bound

10

I/ O-bound

25

27

u.t.

E/ S de B

18

E/ S de B

13

Preempo por
tempo de A

Preempo por
tempo de A

Gerncia do Processador
Thread

11

E/ S de B

9
E/ S de B

E/ S de A

Processo B

194
194

Polticas em Sistemas de
Tempo Compartilhado
Escalonamento circular com
prioridades (exemplo)

20

24

27

E/ S de B

17 18

Preempo por
prioridade de A

14 15

Preempo por
prioridade de A

12

E/ S de B
E/ S de A

Preempo por
prioridade de A

Preempo por
prioridade de A

E/ S de B

E/ S de B

Processo B

E/ S de B

UCP livre

Processo A

Processo

Tempo de
processador
(u.t.)

Caracterstica

Prioridade

12

CPU-bound

Baixa

13

I/ O-bound

Alta

Gerncia do Processador
Thread

u.t.

195
195

Polticas em Sistemas de
Tempo Real

Tempos de respostas rgidos


Aplicaes de controle de processos
Utiliza prioridades estticas
No utiliza fatias de tempo
Exemplo: OpenVMS

Gerncia do Processador
Thread

196
196

Polticas em Sistemas de
Tempo Real
Seu escalonamento deve levar em
considerao a importncia relativa de
cada tarefe na aplicao.
O escalonamento por prioridades o
mais adequado, j que para cada
processo uma prioridade associada
em funo da importncia do processo
dentro da aplicao.

Gerncia do Processador
Thread

197
197

Atividades
O que poltica de escalonamento de
um sistema operacional?
Quais os principais critrios utilizados
em uma poltica de escalonamento?
Diferencie os tempos de processador,
espera, turnaround e resposta.
Qual a diferena entre escalonamento
preemptivo e no preemptivo?
Explique o escalonamento circular.
Que tipo de escalonamento as
aplicaes de tempo real exigem?
Gerncia do Processador
Thread

198
198

Exerccios
Defina o conceito de processo.
Por que o conceito de processo to
importante no projeto de sistemas
multiprogramveis?
Quais as partes que compem um processo?
Defina os 5 estados possveis de um
processo.
Explique a diferena entre processos
foreground e background..
D exemplos de aplicaes CPU-bound e
I/O-bound
Processo

199

Atividades
Como uma aplicao pode implementar
concorrncia em ambiente monothread?
Quais os problemas de aplicaes
concorrentes desenvolvidas em ambientes
monothread?
O que thread e quais as vantagens de sua
utilizao.
Explique a diferena entre unidade de
alocao de recurso e unidade de
escalonamento
Quais os benefcios de uso de threads em
ambientes cliente-servidor?
Thread

200

Atividades
O que poltica de escalonamento de
um sistema operacional?
Quais os principais critrios utilizados
em uma poltica de escalonamento?
Diferencie os tempos de processador,
espera, turnaround e resposta.
Qual a diferena entre escalonamento
preemptivo e no preemptivo?
Explique o escalonamento circular.
Que tipo de escalonamento as
aplicaes de tempo real exigem?
Gerncia do Processador
Thread

201
201

Вам также может понравиться