Você está na página 1de 15

Sistemas Operacionais

Ivan Saraiva Silva

Ciência da Computação

2005.1

Implementação de Processos

• Tabelas do Sistema

– O S.O.precisa manter informações sobre o estado corrente de cada processo e de cada recurso. – Para isto usa estruturas de controle para cada entidade que gerencia:

• Tabelas de Memória

• Tabelas de E/S

• Tabelas de Arquivos

• Tabelas de Processos

Tabelas do Sistema

Mem. Tab.

Imagem do Processo

Tabelas do Sistema Mem. Tab. Imagem do Processo E/S Tab. Memória Dispositivos Arquivos Processos Arq. Tab.
Tabelas do Sistema Mem. Tab. Imagem do Processo E/S Tab. Memória Dispositivos Arquivos Processos Arq. Tab.

E/S Tab.

Memória

Dispositivos

Arquivos

Processos

Tab. Memória Dispositivos Arquivos Processos Arq. Tab. Tabela primária de processos Processo 1

Arq. Tab.

Dispositivos Arquivos Processos Arq. Tab. Tabela primária de processos Processo 1 Processo 2
Dispositivos Arquivos Processos Arq. Tab. Tabela primária de processos Processo 1 Processo 2

Tabela primária de processos

Processo 1

Processo 2

Processo 3

.

.

.

Processo n

Imagem do Processo

Imagem do processo

• Nome dado à coleção formada por:

– Código do programa a ser executado.

– Pilha do sistema para controle de chamadas de procedimentos e de SVCs.

– Área de dados para armazenamento de variáveis locais e globais.

– Coleção de atributos do processo (mantidos no Bloco de Controle de Processos).

Bloco de Controle de Processos

• Também conhecidos como bloco descritor de processos

– Implementação do modelo de processo

• Mantém informações tais como

– Contador de programa

– Ponteiro de pilha

– Memória alocada

– Arquivos abertos

– Estado do processo

– Contexto de execução

– “Contabilidade” – Tempo de CPU

– Prioridade

Exemplo de BCP

struct desc_proc { char estado_atual; int prioridade; unsigned inicio_memoria; unsigned tamanho_memoria; struct arquivo arq_abertos[20] unsigned tempo_de_CPU; unsigned proc_pc; unsigned proc_sp; unsigned proc_acc; unsigned proc_rx; struct desc_proc *proximo

}

struct desc_proc tab_desc[MAX_PROCESS];

/* Estado do processo */ /* Prioridade do processo */ /* Endereço inicial da memória */ /* memória usada (bytes) */ /* Arquivos abertos */ /* Tempo de CPU */ /* Valor do PC (registrador) */ /* Valor do SP (registrador) */ /* Valor do ACC (registrador) */ /* Valor do RX (registrador) */ /* Aponta para o próximo */

Processos e Filas

• Um processo sempre faz parte de alguma fila

– Geralmente a própria estrutura de Bloco de Controle de Processos são empregadas como elementos dessas filas

• Livres

• Prontos

• Bloqueados

• Prontos suspensos

• Bloqueados suspensos

Processos e Filas

struct desc_proc *desc_livre; struct desc_proc *espera_cpu; struct desc_proc *usando_cpu; struct desc_proc *bloqueados;

/* Iniciar estruturas de controle */

for (i=0; i < MAX_PROCESS; i++) tab_desc[i].prox = &tab_desc[i+1];

tab_desc[i].prox = NULL; desc_livre = &tab_desc[0];

espera_cpu= NULL; usando_cpu= NULL; bloqueado = NULL;

Processos e Filas

Batch

Longo Prazo

Tempo

Curto prontos Prazo CPU Médio prazo Interativos prontos, suspensos Médio prazo Bloqueados suspensos bloqueados
Curto
prontos
Prazo
CPU
Médio prazo
Interativos
prontos, suspensos
Médio prazo
Bloqueados suspensos
bloqueados
Espera Evento
Evento

Fluxo de controle

Espaço

usuário

Espaço

sistema

Processo 1

Fluxo de controle Espaço usuário Espaço sistema Processo 1 SP Pilha Cód. PC Dad. Dados Pilha

SP

Pilha

Cód.
Cód.

PC

Dad.
Dad.
usuário Espaço sistema Processo 1 SP Pilha Cód. PC Dad. Dados Pilha . . . Processo
Dados
Dados
Pilha
Pilha

.

.

.

Processo n SP PC Pilha Cód. Dad. Dados Pilha
Processo n
SP
PC
Pilha
Cód.
Dad.
Dados
Pilha

Realizar a troca do processo em execução significa chavear o contexto do processos envolvidos

Processos e Threads

• Múltiplos processos (multiprogramação) permitem ao S.O. executar mais de uma aplicação ao mesmo tempo. Thread

– Abstração que permite que uma aplicação execute mais de um trecho de código simultaneamente.

Processos e Threads

• Multithreading

– S.O. multithreading permitem múltiplas threads de execução em um único processo.

• MS-DOS:

– Suporta uma única thread.

• Unix “standard”:

– Suporta múltiplos processos mas apenas uma thread por processo.

• Windows 2000, Linux, Solaris,OS/2, Mach:

– Suportam múltiplas threads por processo.

Multithreading

• Multithreading

– Em um ambiente multithreaded , um processo:

• É a unidade de alocação e proteção de recursos;

• Tem um espaço de endereçamento virtual que mantém a imagem do processo;

• Tem acesso controlado a outros processos, arquivos e outros recursos.

Multithreading

• Multithreading

– Já uma thread apresenta:

• um estado de execução (pronta, bloqueada,

• um contexto salvo quando não estiver executando.

• uma pilha de execução.

• acesso a variáveis locais próprias.

• acesso compartilhado com outras threads do processo aos recursos do mesmo.

).

Proteção do Processador

Processo 1 SP PC 1 1 SP PC 2 2 Pilha . Cód. Dad. .
Processo 1
SP
PC 1
1
SP
PC 2
2
Pilha
.
Cód.
Dad.
.
.
Espaço
SP
PC n
n
usuário
Espaço
Dados
Pilha
sistema