• Nenhum resultado encontrado

SO: Gerenciamento de Processos

N/A
N/A
Protected

Academic year: 2021

Share "SO: Gerenciamento de Processos"

Copied!
39
0
0

Texto

(1)
(2)

O que é um processo

Um processo é um programa (código objeto armazenado em alguma mídia) em execução.

(3)

Processo é composto por:

I código do programa em execução I arquivos abertos

I sinais pendentes

I dados internos do núcleo do SO I estado do processador

(4)

Bloco de controle do processo

Process Block Control (PCB)

Processo é composto por:

I código do programa em execução I arquivos abertos

I sinais pendentes

I dados internos do núcleo do SO I estado do processador

I espaço de endereço

I uma ou mais threads de execução I seção de dados contendo variáveis

globais

Bloco de Controle do Processo estado do processo número do processo contador de programa

registradores limites de memória lista de arquivos abertos

. . .

Figura : Bloco de controle do processo.

(5)

I código do programa em execução I arquivos abertos

I sinais pendentes

I dados internos do núcleo do SO I estado do processador

I espaço de endereço

(6)

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 de E/S ou uma interrupção).

Pronto O processo está esperando para ser designado a um

processador.

(7)
(8)

Transição dos estados de um processo novo cria PCB pronto enviado para a fila

(9)

novo

cria PCB

(10)

Transição dos estados de um processo novo cria PCB pronto executando enviado

para a fila para execuçãoescalonado

escalonado para a fila

(11)

novo cria PCB executando esperando escalonado para a fila requisição E/S

(12)

Transição dos estados de um processo novo cria PCB pronto executando esperando enviado

para a fila para execuçãoescalonado

escalonado para a fila

requisição E/S

(13)

novo cria PCB executando esperando término apaga PCB escalonado para a fila requisição E/S término E/S término do processo

(14)

Sequência dos PCBs processo 0 processo 1 cria PCB0 salva PCB0 recarrega PCB0 recarrega PCB1 apaga PCB1 . . . pronto executando terminado esperando

(15)
(16)

Modelos

Única thread

processo

dados

código arquivos

registradores pilha (stack)

(17)

dados código arquivos registrador stack registrador stack registrador stack Benefícios I Responsividade; I Compartilhamento de recursos; I Economia; I Utilização de arquiteturas

(18)

Espaço de endereçamento do usuário sem threads

espaço de endereçamento do usuário

escreve_saida: FILE ∗arquivo char ∗conteudo stack main() { escreve_saida(); calcula(); } código

(19)

calcula:

int resultado int numero

(20)

Espaço de endereçamento do usuário com threads

espaço de endereçamento do usuário

escreve_saida: FILE ∗arquivo char ∗conteudo Thread1: stack executando calcula: int resultado int numero Thread2: stack main() { escreve_saida(); calcula(); } código

(21)

escreve_saida: FILE ∗arquivo char ∗conteudo Thread1: stack calcula: int resultado int numero executando Thread2: stack

(22)

Sequência de escalonamento

Sem threads

escreve_saida()

calcula()

Com threads, um processador thread 1

escreve_saida() thread 2 calcula()

Com threads, vários processadores thread 1, CPU 1

escreve_saida() thread 2, CPU 2 calcula()

(23)

calcula()

Com threads, um processador thread 1

escreve_saida() execução

thread 2 calcula()

(24)

Sequência de escalonamento

Sem threads

escreve_saida() execução bloqueio: requisiçãode E/S

calcula()

Com threads, um processador thread 1

escreve_saida() execução bloqueio: requisiçãode E/S

thread 2 calcula()

Com threads, vários processadores thread 1, CPU 1

escreve_saida() execução bloqueio: requisiçãode E/S

thread 2, CPU 2 calcula()

(25)

calcula()

Com threads, um processador

thread 1

escreve_saida() execução bloqueio: requisiçãode E/S execução

thread 2 calcula()

(26)

Sequência de escalonamento

Sem threads

escreve_saida() execução bloqueio: requisiçãode E/S execução fim

calcula()

Com threads, um processador thread 1

escreve_saida() execução bloqueio: requisiçãode E/S execução fim

thread 2 calcula()

Com threads, vários processadores thread 1, CPU 1

escreve_saida() execução bloqueio: requisiçãode E/S execução fim

thread 2, CPU 2 calcula()

(27)

calcula() execução

Com threads, um processador thread 1

escreve_saida() execução bloqueio: requisiçãode E/S execução fim

thread 2

calcula()

(28)

Sequência de escalonamento

Sem threads escreve_saida() execução

calcula()

Com threads, um processador

thread 1

escreve_saida() execução

thread 2 calcula()

Com threads, vários processadores thread 1, CPU 1

escreve_saida() execução

thread 2, CPU 2 calcula()

(29)

calcula()

Com threads, um processador

thread 1

escreve_saida() execução bloqueio: requisiçãode E/S

thread 2 calcula()

(30)

Sequência de escalonamento

Sem threads

escreve_saida() execução bloqueio: requisiçãode E/S

calcula()

Com threads, um processador

thread 1

escreve_saida() execução bloqueio: requisiçãode E/S

thread 2

calcula() execução

Com threads, vários processadores thread 1, CPU 1

escreve_saida() execução bloqueio: requisiçãode E/S

thread 2, CPU 2 calcula()

(31)

calcula()

Com threads, um processador

thread 1

escreve_saida() execução bloqueio: requisiçãode E/S

thread 2

calcula() execução fim

(32)

Sequência de escalonamento

Sem threads

escreve_saida() execução bloqueio: requisiçãode E/S execução

calcula()

Com threads, um processador

thread 1

escreve_saida() execução bloqueio: requisiçãode E/S execução

thread 2

calcula() execução fim

Com threads, vários processadores thread 1, CPU 1

escreve_saida() execução bloqueio: requisiçãode E/S execução

thread 2, CPU 2 calcula()

(33)

calcula()

Com threads, um processador

thread 1

escreve_saida() execução bloqueio: requisiçãode E/S execução fim

thread 2

calcula() execução fim

(34)

Sequência de escalonamento

Sem threads escreve_saida() execução

calcula()

Com threads, um processador thread 1

escreve_saida() execução

thread 2 calcula()

Com threads, vários processadores

thread 1, CPU 1

escreve_saida() execução

thread 2, CPU 2

(35)

calcula()

Com threads, um processador thread 1

escreve_saida() execução bloqueio: requisiçãode E/S

thread 2 calcula()

(36)

Sequência de escalonamento

Sem threads

escreve_saida() execução bloqueio: requisiçãode E/S execução

calcula()

Com threads, um processador thread 1

escreve_saida() execução bloqueio: requisiçãode E/S execução

thread 2 calcula()

Com threads, vários processadores

thread 1, CPU 1

escreve_saida() execução bloqueio: requisiçãode E/S execução

thread 2, CPU 2

(37)

calcula()

Com threads, um processador thread 1

escreve_saida() execução bloqueio: requisiçãode E/S execução fim

thread 2 calcula()

(38)

Sequência de escalonamento

Sem threads

escreve_saida() execução bloqueio: requisiçãode E/S execução fim

calcula() execução

Com threads, um processador

thread 1

escreve_saida() execução bloqueio: requisiçãode E/S execução fim

thread 2

calcula() execução fim

Com threads, vários processadores

thread 1, CPU 1

escreve_saida() execução bloqueio: requisiçãode E/S execução fim

thread 2, CPU 2

(39)

Referências

Documentos relacionados

ao Brasil, encontraram vários povos que aqui habitavam, dentre eles os tupis, os jês, os karib e os Aruak. Corresponde a uma de suas características gerais. a) Assim

· Indicações sobre cuidados médicos urgentes e tratamentos especiais necessários Não existe mais nenhuma informação relevante disponível.. 5 Medidas de combate

The sciatic nerve of rats is a reliable model for studying different kinds of injuries and treatment methods, with crushing injuries being one of the preferred types,

13 CEZAR CORREIA DE QUEIROZ FILHO Confirmado 130 CLARISSE LOURDES NADU DE ALMEIDA Confirmado 22 CLEICIANE MARIA UCHÔA DE ANDRADE Confirmado. 104 DAMIANA SILVA FERNANDES

PEIC/UFU/2016 vem requerer inscrição para o Processo Seletivo para Bolsista de Extensão na Pró-reitoria de Extensão, Cultura e Assuntos Estudantis, da Universidade

Pós-graduação na área de Tecnologia da Informação na função escolhida (carga horária mínima de 360 horas), acrescido de experiência profissional superior a cinco anos

Utilizando esta rede para compensar os efeitos não- lineares em malha fechada, cada sinal de controle calculado é multiplicado pelo ganho real e apresentado à rede, que gera o sinal

As atividades a seguir fazem parte de um conjunto de dez tarefas que foram trabalhadas com os sujeitos da pesquisa, alunos de uma turma de 9º ano do ensino