Você está na página 1de 53

Processos

Parte 1

Ramon Nepomuceno
ramon@gmail.com

Instituto Federal do Maranhão (IFMA-Caxias)

aula • 11/junho/2021
● Processos;
Agenda ● Threads;
● Comunicação entre processos;
Processos
O conceito mais central em qualquer sistema
operacional é o processo:
abstração de um programa em execução.
A troca rápida de processos é chamada de
multiprogramação, que dá uma ilusão de
paralelismo chamado de pseudoparalelismo.
O modelo de processo 6
créditos: François Barbosa
créditos: François Barbosa
créditos: François Barbosa
créditos: François Barbosa
créditos: François Barbosa
créditos: François Barbosa
créditos: François Barbosa
créditos: François Barbosa
créditos: François Barbosa
créditos: François Barbosa
init

créditos: François Barbosa


créditos: François Barbosa
Estados de Processos 20

1. O processo é bloqueado
Em execução
aguardando uma entrada 1 2
2. O escalonador seleciona outro
processo 3
3. O escalonador seleciona esse
processo Bloqueado Pronto

4. A entrada torna-se disponível


4
Tabela de processos 21
Threads
São “mini processos” dentro de processo.
créditos: François Barbosa
Processador de Texto 25
Servidor Web 26
Servidor Web 27
créditos: François Barbosa
créditos: François Barbosa
Threads de usuário x Threads de núcleo
Threads de usuário

Vantagens: Desvantagens:

● Portabilidade ● Chamadas de sistemas


bloqueantes
● Velocidade de chaveamento
● Falta de páginas
● Algoritmo de escalonamento
customizado ● A thread precisa abrir mão da
execução
● Escalabilidade
● threads são necessários em
aplicações bloqueantes
Threads no núcleo

Vantagens: Desvantagens:

● Resolve todos os problemas ● O que fazer em um fork?


de chamadas bloqueantes
● Como tratar os sinais?

● Velocidade de escalonamento
Implementações híbridas
Comunicação entre processos
créditos: François Barbosa
créditos: François Barbosa
Spool de impressão
Como evitar condições de corrida?

Quatro condições precisam ser satisfeitas:

1. Dois processos jamais podem estar


Precisamos de exclusão simultaneamente dentro de suas regiões críticas;
mútua para acessar uma
região crítica. 2. Nenhuma suposição pode ser feita a respeito de
velocidades ou do número de CPUs;

3. Nenhum processo executando fora de sua região


crítica pode bloquear qualquer processo;

4. Nenhum processo deve ser obrigado a esperar


eternamente para entrar em sua região crítica;
Comportamento esperado
Exclusão mútua com espera ocupada

Desabilitando interrupções

● A CPU não será chaveada para outro


processo

● E se o processo não ligar de volta?

● E em sistemas multiprocessados?
Exclusão mútua com espera ocupada

Variável do tipo trava

● Uma variável com o valor inicial 0

● O processo escreve 1 para acessar a região


crítica

● Infelizmente o mesmo o problema ocorre


para acessar a variável =(
Exclusão mútua com espera ocupada

Alternância explicita

● Variável turn indica de quem é a vez

● problemas quando processos têm tempos


de execução muito diferentes;

● Viola a condição 3: “Um processo fora de


sua região crítica bloqueando outro”
Solução de Peterson

● enter region

● leave region
Instrução TSL

Mesma idéia da solução


de Peterson, mas com
ajuda do hardware.
Instrução XCHG

Mesma idéia da solução


de Peterson, mas com
ajuda do hardware.
Dormir e Acordar

● Peterson, TSL e XCHG funcionam, mas


precisam de espera ocupada

● Problema da inversão de prioridade


Produtor e Consumidor

● Condição de corrida
se o consumidor for
“dormir” com
count = 0;

● O sinal wakeup
pode ser perdido

● pode ser usado um


bit para guardar.
Semáforos

● Variável com um valor inteiro com


operações atômicas down e up para
decrementar e incrementar.
Produtor e Consumidor com Semáforos

● Down e up generalização de sleep


e wakeup

● Down de um valor 0 bloqueia

● Up de um valor máximo também

● São operações atômicas

● Semáforos são protegidos por


variável de trava com TCL ou
XCHG
Mutex

Diferença para o enter_region é thread_yield, ou seja, não tem


espera ocupada.
Exercícios 51

1. Na Figura 2.2, são mostrados três


estados de processos.Na teoria,
com três estados, poderia haver
seis transições, duas para cada. No
entanto, apenas quatro transições
são mostradas. Existe alguma
circunstância na qual uma delas ou
ambas as transições perdidas
possam ocorrer?
Exercícios 52

2. Um servidor web multithread é


mostrado na Figura 2.8. Se a única
maneira de ler de um arquivo é a
chamada de sistema read com
bloqueio normal, você acredita que
threads de usuário ou threads de
núcleo estão sendo usados para o
servidor web? Por quê?
Exercícios 53

3. Qual é a maior vantagem de se implementar threads no espaço de usuário?


Qual é a maior desvantagem?

Você também pode gostar