Escolar Documentos
Profissional Documentos
Cultura Documentos
Parte 1
Processo
• Uma abstração de um programa em execução;
• Pseudoparalelismo é a ilusão de que é possível
executar dois ou mais programas ao mesmo tempo em
uma máquina monoprocessada;
• Multiprogramação: divisão da memória para que
ocorra uma troca rápida de processos na CPU;
• Multiprocessadores é quando se tem mais de um
processador (núcleo) para realizar um processamento
paralelo verdadeiro;
• Para ambos, a necessidade é de executar mais de um
programa (processo) por vez.
Processos
O Modelo de Processo
3
Processos
O Modelo de Processo
10
Estados de Processos
12
Estados de Processos (2)
13
Implementação de Processos
Tabela de Processos ou Blocos de Controle de Processos
16
Threads
O Modelo de Thread (1)
17
O Modelo de Thread
18
Pilha de execução
#include <stdio.h>
int a();
int b();
int c();
int d();
int main(){
a();
b();
c();
d();
}
int a(){
printf("a\n");
return 0;
}
int b(){
printf("b\n");
d();
return 0;
}
int c(){
printf("c\n");
b();
return 0;
}
int d(){
printf("d\n");
a(); https://www.onlinegdb.com/online_c_compiler
return 0;
}
17
O Modelo de Thread (3)
19
Uso de Thread (1)
27
Regiões Críticas (2)
28
Exclusão Mútua com Espera
Ociosa
• Desabilitando Interrupções;
• Variáveis de Impedimento;
• Alternância Obrigatória;
• Solução de Peterson;
• A instrução TSL;
Desabilitando Interrupções
• É a solução mais simples: cada processo desabilita
todas as interrupções logo depois de entrar na
região crítica e reabilita-se imediatamente antes
de sair dela;
• Não é interessante porque não é prudente dar aos
processos dos usuários o poder de desligar
interrupções;
• É uma técnica bastante útil dentro do próprio SO,
mas inadequada como um mecanismo geral de
exclusão mútua para processos de usuário.
Variáveis de Impedimento
• Solução de Software;
• Há uma única variável compartilhada entre os
dois processos (lock), contendo o valor 0;
• Se lock for 0, o processo altera essa variável para 1
e entra na região;
• Se lock já estiver com o valor 1, o processo
simplesmente aguardará até que ela se torne 0;
• Só que essa técnica apresenta uma falha como
diretório de spool.
Alternância Obrigatória
• Contém uma variável inteira, inicialmente com 0,
serve para controlar a vez de quem entra na região
crítica e verifica ou atualiza a memória
compartilhada;
• Testar continuamente um variável até que um
valor apareça é chamado de espera ociosa. Isso
deveria ser evitado (gasta tempo de CPU);
• A variável de impedimento que usa espera ociosa
é chamada de spin lock.
Alternância Obrigatória
33
Alternância Obrigatória
• Alternar a vez não é uma boa idéia quando um dos
processos for muito mais lento que o outro;
• Essa situação viola a condição 3: o processo 0 está
sendo bloqueado por um processo que não está na sua
região crítica.
Solução de Peterson
Instrução TSL
40
Monitores (1)
Exemplo de um monitor
41
Troca de Mensagens
43
Escalonamento
Introdução ao Escalonamento (1)
46
Escalonamento em
Sistemas em Lote (2)
49
Escalonamento Garantido
50
51