Teste
Processos e Threads
Conteúdo
Processos
Threads
InterProcess Communication
Algoritmos de escalonamento
PROCESSOS
Processo é nome que se dá a um programa em execução Um processo controla os valores atuais dos registradores da CPU, bem como variáveis em memória Cada processo possui sua própria “CPU virtual”
Em sistemas multiprogramáveis, os processos dividem a atenção da CPU
Processos são comutados (chaveados) a fim de criar a ilusão de que cada usuário tem a CPU exclusivamente para si
Processos (cont.)
Exemplo de 4 processos competindo pela CPU
Somente um processo por vez, pois só há uma
CPU e assim só um registrador PC real
Cada processo possui seu próprio
“registrador PC lógico”
Chavemento de contexto
Ilusão de que os 4 processos estão em paralelo
Criação de um Processo
Processos são criados por 4 eventos principais:
Inicialização do sistema
Processos foreground e background (daemons)
Processos em execução que usam uma “system call” para criar outros processos
Ex.: leitura de grandes quantidades de dados via um buffer Solicitação de usuário para criação de um novo processo Ex.: disparo de novos processos via teclado ou mouse
Inicialização de um job em sistemas batch
Para cada job um processo é criado pelo processo SO
Criação de um Processo (cont.)
Processos são sempre criados por um processo em execução via a “system call” correspondente fork System call:
p2
p1
No unix fork No windows
CreateProcess
p3
Quando criado, um processo filho tem o seu próprio espaço de endereçamento
No unix, isso ocorre em duas etapas
Destruição de um Processo
Há 4 situações em que um processo é terminado
Finalização normal ao término da sua tarefa
(voluntário)
O próprio processo fecha seus arquivos abertos, e termina Finalização por erro detectado durante a sua execução (voluntário)
Processo detecta um erro externo e aborta execução
Finalização por erro fatal