SO: Gerenciamento de Processos Adriano J. Holanda http://holanda.xyz 10/8/2015
O que é um processo Um processo é um programa (código objeto armazenado em alguma mídia) em.
O que é um processo Um processo é um programa (código objeto armazenado em alguma mídia) em. Processo é composto por: código do programa em arquivos abertos sinais pendentes dados internos do núcleo do SO estado do processador espaço de endereço uma ou mais threads de seção de dados contendo variáveis globais
Bloco de controle do processo Process Block Control (PCB) Bloco de Controle do Processo Processo é composto por: código do programa em arquivos abertos sinais pendentes dados internos do núcleo do SO estado do processador espaço de endereço uma ou mais threads de seção de dados contendo variáveis globais estado do processo número do processo contador de programa registradores limites de memória lista de arquivos abertos...
Bloco de controle do processo no Linux Process Block Control (PCB) Processo é composto por: código do programa em arquivos abertos sinais pendentes dados internos do núcleo do SO estado do processador Bloco de Controle do Processo no Linux espaço de endereço uma ou mais threads de seção de dados contendo variáveis globais
Estados de um processo Estados Novo O processo está sendo criado. Executando As instruções estão sendo executadas. Esperando O processo está esperando pela ocorrência de algum evento (como um término ou uma interrupção). Pronto O processo está esperando para ser designado a um processador. Terminado O processo terminou sua.
Transição dos estados de um processo cria PCB novo
Transição dos estados de um processo cria PCB novo enviado para a fila pronto
Transição dos estados de um processo cria PCB novo executando enviado para a fila pronto escalonado para
Transição dos estados de um processo cria PCB novo escalonado para a fila executando enviado para a fila pronto escalonado para
Transição dos estados de um processo esperando requisição E/S cria PCB novo escalonado para a fila executando enviado para a fila pronto escalonado para
Transição dos estados de um processo esperando requisição E/S cria PCB novo término E/S escalonado para a fila executando enviado para a fila pronto escalonado para
Transição dos estados de um processo esperando requisição E/S apaga PCB término cria PCB novo término E/S escalonado para a fila executando término do processo enviado para a fila pronto escalonado para
Sequência dos PCBs processo 0 processo 1 cria PCB0 salva PCB0 recarrega PCB1 apaga PCB1 recarrega PCB0... pronto executando esperando terminado
Threads Adriano J. Holanda http://holanda.xyz 10/8/2015
Modelos Única thread processo código dados arquivos registradores pilha (stack) thread
Modelos Múltiplas threads processo código dados arquivos Benefícios Responsividade; registrador registrador registrador Compartilhamento de recursos; stack stack stack Economia; Utilização de arquiteturas multiprocessadas. thread thread thread
Espaço de endereçamento do usuário sem threads espaço de endereçamento do usuário stack escreve_saida: FILE arquivo char conteudo código main() { ; ; }
Espaço de endereçamento do usuário sem threads espaço de endereçamento do usuário stack calcula: int resultado int numero código main() { ; ; }
Espaço de endereçamento do usuário com threads espaço de endereçamento do usuário executando Thread1: stack escreve_saida: FILE arquivo char conteudo Thread2: stack calcula: int resultado int numero código main() { ; ; }
Espaço de endereçamento do usuário com threads espaço de endereçamento do usuário Thread1: stack escreve_saida: FILE arquivo char conteudo executando Thread2: stack calcula: int resultado int numero código main() { ; ; }
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Sequência de escalonamento Sem threads Com threads, um processador thread 1 thread 2 Com threads, vários processadores thread 1, CPU 1 thread 2, CPU 2
Exemplos de utilização de threads Win32 PThreads