Processos

Propaganda
BC1518 - Sistemas Operacionais
Processos
Aula 03
2° Quadrimestre de 2010
Prof. Marcelo Z. do Nascimento
Email: [email protected]
Roteiro
• Conceito de processo
• Bloco de controle de processo
• Ciclo de vida
• Escalonamento
• Criação de processo
• Término de processo
• Cooperação entre processos
• Leituras Sugeridas
Introdução
Um SO executa uma variedade de programas:
Sistema Batch – jobs;
Sistema Time-shared – programas de usuário ou
tarefa.
Permite que múltiplos programas sejam carregados na
memória e executados de forma concorrente (SO
multiprogramado).
Torna
Torna mais
mais eficiente
eficiente oo aproveitamento
aproveitamento
dos
dos recursos
recursos do
do computador
computador
Introdução
Atenção!!!
Exige => SO
• maior controle;
• mais compartimentalização de
vários programas.
Processo
(unidade de trabalho)
Conceito - Processo
• Abstração que representa um
programa em execução;
• É uma entidade ativa que utiliza
um conjunto de recursos, como
processador e registradores
especiais, para executar uma
função.
Exemplos: cópia de arquivo ou execução de uma rotina
de um programa.
Processo na memória
int global = 0;
int main (int arg)
{
float local;
char *ptr;
ptr = malloc(100);
local = 0;
local += 10*5;
…..
….
foo();
…. /* return addr */
….
return 0;
}
Variáveis locais
Endereço de retorno
Alocação
dinâmica
Variáveis globais
Código do programa
Conceito - Diferença
• Programa: Entidade estática e permanente
•Seqüência de instruções;
•Passivo sobre o ponto de vista do SO.
• Processo: Entidade dinâmica e transitório
•Altera o estado a medida que avança em sua
execução;
•Composto por programa (código), dados e contexto
(valores).
Conceito - Analogia
• Ex. Cientista fazendo uma torta para o filho.
+
Dados de
entrada(ingredientes)
Receita
algoritmo
CPU
Processo: Atividade que possui entrada, saída e estado
(Ler receita, buscar ingredientes e assar).
Ciclo de vida do processo
Estado do processo:
Novo: o processo esta sendo criado (ex. inicialização
do sistema, de um programa ou leitura de um arquivo);
Execução: o processo esta utilizando um processador;
Pronto: o processo está apto a utilizar o processador
quando este estiver disponível;
Bloqueado: o processo está esperando ou utilizando
um recurso qualquer de E/S;
Encerrado: processo termina sua execução (ex.
normal, erro voluntário ou erro fatal involuntário).
Ciclo de vida do processo
Novo
Encerrado
Aceito
tempo
Saída
Em execução
Pronto
seleção
Conclusão de E/S ou
evento
Espera por
E/S ou evento
Bloqueado
Ciclo de vida do processo
Um processo entra no estado de bloqueado quando
está esperando que um evento ocorra. Cite diversos
eventos que podem fazer um processo entrar em
estado bloqueado?
•
• Um processo pode entrar em estado bloqueado se
emitir uma requisição de dados localizados em um
dispositivo de latência alta.
• Um processo também pode ficar bloqueado até que
ocorra um evento, como a utilização de teclado ou
movimentação do mouse pelo usuário.
Bloco de controle de processo
BCP – (process control block)
é a representação de um processo num SO
(repositório de informações).
Contém informações necessárias para a execução do
processo: Iniciada, Interrompida e Retomada.
Normalmente, há uma grande estrutura no kernel:
Exemplo: Linux => struct task_struct;
Usado para gerenciar processos => comutação da CPU.
Bloco de controle de processo
Ponteiro
Estado do
processo
Número do processo
Contador do programa
Registradores
Limites de memória
Lista de arquivos aberto
.
.
•estado corrente do processo;
•identificação do processo (PID);
•ponteiro para o processo-pai
(parent process);
•prioridade do processo;
•lista de ponteiros para as regiões
alocadas de memória;
•conteúdo dos registradores do
processador.
Essas informações são
importantes para a troca de
processos que ocorre na CPU
Bloco de controle de processo
Estado do processo: novo, pronto, em execução, parado,
etc
Contador de programa: endereço da próxima instrução.
Registradores da CPU: variam em número e em tipo,
dependendo da arquitetura de computadores. Incluem
acumuladores, registradores e pilha. Quando ocorre
uma interrupção, essa informação deve ser salva
juntamente com o contador do programa.
Bloco de controle de processo
Informações
de
escalonamento:
prioridade
do
processo.
Informações de gerenciamento de memória: inclui os
valores de registradores base e limite, tabela de
páginas, etc.
Informação de contabilização: inclui o montante de
tempo de CPU e de tempo real utilizado, número de jobs, etc.
Informação de estado de I/O: lista de dispositivos de
E/S alocados a esse processo, arquivos abertos, etc.
Bloco de controle de processo
Comutação de Contexto
Bloco de controle de processo
Comutação de Contexto
• O tempo de comutação de contexto pode ser puro
sobrecarga;
• Nenhum trabalho será realizado.
• O tempo de comutação depende bastante do suporte
de hardware;
• Alguns sistemas com Sun UltraSPARC fornecem
multiplos conjuntos de registradores -> rápida
comutação.
Tipos de tarefas
• O processos ou tarefas podem ser descritos da
seguinte forma:
– Processo I/O-bound – gasta mais tempos fazendo
E/S que cálculo, muito pouco tempo de ocupação de
CPU;
– Processo CPU-bound – gasta mais tempo fazendo
cálculo, longo tempo de CPU.
Schedulers
• Scheduler de longo prazo (job scheduler) – seleciona
qual processo deverá ser carregado da memória para
execução.
• Scheduler de curto prazo (or CPU scheduler) –
seleciona um dos processos prontos para execução e
aloca a CPU para ele.
• A distinção entre estes dois é a frequência de sua
execução.
• Em alguns SOs, o Scheduler de longo prazo pode não
existir ou ser mínimo (ex. UNIX).
Filas de Scheduling
• Fila de Jobs – consiste em todos os processos que
estão no sistema.
• Fila Pronta – conjunto de processos residente na
memória principal que estão prontos e em espera para
entrar em execução. Implementado na forma de lista
encadeada.
• Fila de Dispositivos – conjunto de processos
esperando por um dispositivo de E/S
• Processos migram entre as várias filas
Fila Pronta e Várias Filas de
Dispositivos de I/O
Tempo de vida de um processo
Criação
• Os SOs precisam assegurar de algum modo a
existência de todos os processos necessários.
• Então, ocorrem eventos:
• Início do sistema;
• Execução de uma chamada ao sistema de criação
de processo por um processo em execução;
• Uma requisição do usuário para criar um novo
processo;
• Inicio de um job em lote.
Criação
• Quando o SO é carrega, em geral, vários processos
são criados.
• Tratado por:
• primeiro plano (usuários - foreground)
• segundo plano (função específica - background)
• Exemplo:
• Email: aceitar mensagens eletrônicas, fica
inativo na maior parte do tempo, mas é ativado
quando uma mensagem chega.
Criação
• Processos em segundo plano com a finalidade de
tratar alguma atividade são chamados de daemons;
• Exemplo:
•Windows -> digitando CTRL-ALT-DEL mostra o que
está em execução.
• Um processo pode emitir chamadas ao sistema para
criar um ou mais processo para ajudá-lo no trabalho.
Criação
• Processo Pai cria processo filho, o qual, pode criar
outros processo formando uma árvore de processos
• Execução:
– Pai e filho executam concorrentemente;
– Pai espera até que o filho termine;
• Recursos compartilhados podem ser tratados:
– Pai e filho compartilham todos os recursos;
– Filho compartilha um sub conjunto dos recursos do pai;
– Pai e filho não compartilham recursos
Criação do Processo: Unix
• Processo cria outro processo (filho) usando a chamada
de sistema fork
– Filho é uma cópia do pai;
– Basicamente, o filho carrega outro programa dentro
de seu espaço de endereço usando a chamada exec;
– Pai espera seu filho terminar.
Programa em C: Fork()
int main()
{
pid_t pid;
pid = fork(); /* fork another process */
if (pid < 0) { /* error occurred */
fprintf (stderr, "Fork Failed");
exit(-1);
}
else if (pid == 0) { /* child process */
execlp ("/bin/ls", "ls", NULL);
}
else { /* parent process */
/* parent will wait for child to complete */
wait (NULL);
printf ("Child Complete");
exit(0);
}
}
Criação
• WINDOWS -> CreateProcess – biblioteca Win32
possui funções para gerenciamento do processo.
• Pai cria um novo processo filho;
• Requer a carga de um programa especificado no
espaço de endereço do processo filho na criação do
processo;
• Necessidade de pelo menos 10 parâmetros para sua
ativação.
Término
• Processo terminará em razão de:
• Saída normal (voluntária)
• Saída por erro (voluntária);
•Ex.compilação gcc teste.c (arquivo não existe);
• Erro fatal (involuntário);
•Ex. Tentativa de acesso a endereço não autorizado;
• Cancelamento por um outro processo (involuntário).
•Ex. Comando kill do Unix.
Cooperação entre processos
• Um processo é cooperativo se puder afetar ou ser
afetado pelos outros processos em execução no sistema;
• O que motiva essa cooperação?
– Compartilhamento de informações
– Agilidade de computação
– Modularidade
– Conveniência
• Mecanismo Comunicação interprocesso (IPC)
– Memória compartilhada
– Passagem de mensagem
Modelos de Comunicação
Passagem de mensagem
Mensagem compartilhada
IPC: Memória compartilhada
• Comunicação entre processos por meio de espaço de
memória compartilhada;
– Um processo cria um espaço de memória;
• Outros processos acessam a memória compartilhada de
seu próprio endereço:
– A memória compartilhada é tratada como área compartilhada;
– Sincronização é necessário para garantir o acesso concorrente a
essa área.
• Vantagens:
– Rápido (velocidade de acesso a memória)
– chamadas realizadas apenas para estabelecer memória
compartilhada.
• Desvantagem
– Precisa gerenciar conflitos
IPC: Passagem de Mensagem
• Se os processos A e B querem se comunicar, precisam:
– Estabelece um canal de comunicação entre eles
– Troca de mensagems por meio de:
• send – tamanho de mensagem fixa ou variável
• receive - mensagemmessage)
• Vantagem:
– Não há conflitos => ótimo para troca de mensagens
especialmente em sistema distribuído.
• Desvantagens
– Sobrecarga (cabeçalho mensagem)
– Kernel: ocorre vários system calls para troca de mensagem
IPC: Passagem de Mensagem
• O canal de comunicação pode ser
– Direto: precisa nomear explicitamente o destinatário ou
emissor:
• send (P, messagem) – envia uma mensagem para o processo P;
• receive (Q, message) – recebe uma mensagem do processo Q.
– Indireto: comunicação via mailboxes (ou portas)
• Messagem envida e recebida de mailboxes
• Cada mailbox tem um único ID
– Send (A, messagem) – envia mensagem para mailbox A
– Receive (A, messagem) – recebe messagem do mailbox A
IPC: Passagem de Mensagem
• Sincronização: passagem de mensagem
– Bloqueio (síncrono)
• send ( ) o processo que envia é bloqueado até que a
mensagem seja recebida
• receive ( ) o receptor é bloqueado até a mensagem ser
recebida
– Não bloqueado (assíncrono)
• send ( ) o processo envia a mensagem e continua executando
• receive ( ) o receptor recebe uma mensagem válida
Sistema cliente/servidor Sockets
• O socket é definido com um ponto terminal para a
comunicação
• Um par de processos que se comunicam através de
uma rede emprega um par de sockets
• Um socket é identificado por um endereço IP
concatenado com um número de porta
– Exemplo: socket 161.25.19.8:1625 refere a
porta 1625 no host 161.25.19.8
Sistema cliente/servidor Sockets
Sistema cliente/servidor Sockets
Sistema cliente/servidor Sockets
Aula 03 - Sumário
• Processo é um programa em execução
– SO mantém informações do processo no BCP
– Diagramas de estado do processos
– Criando e finalizando um processo (fork)
• Escalonamento de processosProcess scheduling
– Longo, curto em termos de escalonamento
– Fila de escalonamento
• Comunicação interprocessos - IPC
– Memória compartilhada
– Passagem de mensagem
• Sistema Cliente-Servidor
Leituras Sugeridas
• Silberschatz, A., Galvin, P. B. Gagne,
G. Sistemas Operacionais com Java.
7º , edição. Editora, Campus, 2008 .
• Silberschatz, Abraham; Galvin, Peter
Baer; Gagne, Greg. Fundamentos de
sistemas operacionais. 6 ed. Rio de
Janeiro: LTC, 2009.
Nota de Aula
Acesse o link abaixo:
http://hostel.ufabc.edu.br/~marcelo.nascimento/
Obrigado!!!
Download