Processos - DCA

Propaganda
Processos
Prof. Gustavo Leitão
Campus Natal Central
Disciplina Programação para Ambiente de Redes
Baseada na Aula do Prof. Ricardo Valentim
5/3/2010
5/3/2010
Objetivo da Aula
PLANO DE AULA
Processos
Processos:
O Modelo de Processo;
Criação de Processos;
Término de Processos;
Hierarquias de Processos;
Estados de Processos;
Implementação de Processos.
OBJETIVO DA AULA
●
O aluno deverá ao termino da aula ter entendido
conceitualmente o que são processos, e como estes
funcionam nos sistemas operacionais.
INTRODUÇÃO
●
Um processo é um ambiente de execução que consiste
em um segmento de instruções, e dois segmentos de
dados (data e stack). Deve-se, entretanto, notar a
diferença entre um processo e um programa: um
programa nada mais é que um arquivo contendo
instruções e dados utilizados para inicializar segmentos
de instruções e de dados do usuário de um processo.
5/3/2010
INTRODUÇÃO
O processo constitui-se de:
Código executável;
Pilha de Execução;
Dados;
Estado;
Registradores;
Prioridades, arquivos abertos, quotas, etc.
PROCESSOS
●
●
●
Todos os sistemas operacionais (SO) modernos são capazes
de executar diversas tarefas ao “mesmo tempo”;
Em sistemas multiprogamado a CPU salta de programa para
programa executando cada um deles por dezenas ou centenas
de milissegundos;
Efetivamente, em um dado período de tempo a CPU executa
vários programa, neste sentido o usuário tem a impressão de
paralelismo.
PSEUDO PARALELISMO
●
●
O pseudo paralelismo é portanto o termo empregado no
contexto no qual uma CPU é compartilhada por diversas
aplicações;
Esse termo permite contrastar com o paralelismo real
(verdadeiro)
de
hardware
dos
sistema
multiprocessadores;
O MODELO DE PROCESSO
●
●
●
●
Os software que podem executar em um computador são
organizados em processos seqüenciais, ou simplesmente
processos;
Um processo é apenas um programa em execução;
● Ele é acompanhado dos valores atuais do contador de
programa, dos registradores e das variáveis;
Conceitualmente cada processo tem sua CPU virtual;
● Na realidade a CPU troca a cada instante de processo,
mas é melhor tentar entender cada processo
funcionando pseudo-paralelamente;
Ao mecanismo de troca rápida é chamado de
multiprogramação.
MODELO DE PROCESSO: ESCALONADOR
O ESCALONADOR seleciona qual processo deve
usar a CPU a cada momento e por quanto tempo.
O MODELO DE PROCESSO
A) Um computador multiprogramado com 4 programas na
memória;
B) Quatro processos seqüencias independentes, cada um com
seus controle de fluxos.
– Fisicamente existe apenas um contador de
programa;
C) Apenas um programa está ativo por vez.
O MODELO DE PROCESSO
●
Nota Importante:
–
Com a alternância da CPU entre os processos, a taxa
na qual o processo realiza sua computação não será
uniforme e provavelmente não será nem reproduzível
se os mesmo processos executarem novamente;
–
Desta forma,
programados
temporização.
os processos
considerando
não devem
hipóteses
ser
de
PROCESSO E PROGRAMA
●
●
●
●
Um Programa é um algoritmo expresso em uma notação
adequada;
O processo é a atividade desempenhada;
Um Processo possui:
● Um Programa;
● Uma Entrada;
● Uma Saída;
● E um Estado.
Um único processador pode ser compartilhado entre diversos
processos;
CRIAÇÃO DE PROCESSOS
●
●
Em sistemas operacionais de proposito geral é necessário ter
algum mecanismo para criar e terminar um processo durante a
sua operação – isso quando for preciso;
Existem 4 eventos principais que fazem com quer um um
processo sejam criados:
●
Início do sistema;
Execução de uma chamada de sistema para criação de um
●
processo, por um processo em execução;
Um requisição do usuário para criar um novo processo e;
●
Início de um JOB em Lote.
●
CRIAÇÃO DE PROCESSOS
●
Tipos de Processos:
–
Primeiro plano: são processo que interagem com
usuário e realizam tarefas para eles;
–
Segundo plano (daemons): são processo que não
estão associados ao um usuário particular, mas que
executa uma tarefa especifica;
●
●
Por exemplo: um socket que
mensagens enviadas pela rede;
Outro exemplo: servidor web.
recebe
CRIAÇÃO DE PROCESSOS
●
Além dos processos criados durante a carga do
sistema operacional , novos processos podem ser
criados depois disso;
●
●
Um processo em execução pode criar um, ou mais
processos (através de chamadas de sistema) para
ajudá-lo no seu trabalho;
Pensar um sistema com vários processos pode
ser útil para melhorar o desempenho do sistema;
●
Por exemplo, um sistema que necessita ler um
quantidade expressiva de dados que vem da rede e
também precisa armazená-lo;
–
Um processo pode ler os dados entrantes e armazená-lo em
uma memoria compartilhada, enquanto outro processo
remove os dados e os processa.
CRIAÇÃO DE PROCESSO
●
Em um sistema multiprocessador, permitir que cada
processo execute em uma CPU diferente também torna o
trabalho mais rápido.
Paralelismo Físico
Paralelismo Lógico
CRIAÇÃO DE PROCESSO
●
●
Em sistemas interativos um usuário pode iniciar um
programa digitando um comando ou clicando (duas
vezes) em um ícone;
Cada uma dessas ações inicia um novo processo,
executando nele o programa;
CRIAÇÃO DE PROCESSO
●
●
No caso de um job em lote os processos criados se
aplicam mais especificamente a computadores de grande
porte;
Nesses sistema os usuários submetem jobs em lote para
o sistema;
●
Quando julgar que tem recursos para executar
outro job, o sistema operacional criará um
novo processo e executará nele o próximo job
da fila de entrada.
CRIAÇÃO DE PROCESSOS
●
●
●
Tecnicamente, o que ocorre para todos os casos,
um novo processo é criado por um processo
existente executando uma chamada de sistema de
criação de processo;
No UNIX existe somente uma chamada de
sistema para criar um novo processo: fork;
Essa chamada cria um processo clone ao
processo que a chamou;
FORK
●
Depois de uma Fork os dois processos pai e filho tem a
mesma imagem de memória, as mesmas cadeia de
caracteres no ambiente, e os mesmos arquivos abertos.
TÉRMINO DE PROCESSO
●
Após criado, o processo executa seu trabalho, e em
algum momento terminará, por alguns dos seguintes
motivos:
–
Saída normal (voluntária);
–
Saída por erro (voluntária);
–
Erro fatal (involuntária);
–
Cancelamento por um outro processo (involuntária).
TÉRMINO DE PROCESSO:
SAÍDA NORMAL
●
Na maioria das vezes, os processos terminam porque
fizeram seu trabalho;
●
●
Quando acaba de compilar um programa atribuído ao
processo, o compilador executa uma chamada de
sistema para informar ao S.O. Que o mesmo terminou;
TÉRMINO DE PROCESSO:
SAÍDA POR ERRO
●
Um processo pode ser fechado quando encontra um erro;
–
Por exemplo, tentar abrir um arquivo que não existe;
–
Neste caso, o sistema pode exibir uma mensagem
solicitando ao usuário o fechamento do programa, ou
a localização de um novo arquivo;
TÉRMINO DE PROCESSO:
ERRO FATAL
●
Erros fatais podem ser ocasionados pelo processo;
●
Por exemplo:
– Execução de um instrução ilegal, referência a
memória inexistente, ou divisão por zero.
–
●
Em alguns S.O. É possível tratar determinados erros.
Nesta caso, o processo é sinalizado (interrompido), em
vez de ser finalizado.
TÉRMINO DE PROCESSO:
CANCELAMENTO POR OUTRO PROCESSO
●
●
●
●
Um processo pode realizar chamada de sistema
solicitando a finalização de outro processo;
No Unix a chamada é kill, e no Win32 é
TerminateProcess
Em ambos os casos, o processo para realizar este
tipo de operação deve ter autorização para isso;
Em alguns sistemas, quando um processo pai
morre, todos os seus morrem também;
–
No Windows e no Unix não funciona
HIERARQUIA DE PROCESSOS
●
Em alguns sistemas, quando um processo cria outro,
o pai e o filho ficam de alguma maneira associados;
●
O processo filho pode criar outros processos;
●
Isso permite criar uma hierarquia de processos;
●
●
●
No Unix, um processo, os seus filhos e todos os
descendentes formam um grupo de processos;
Quando um usuário envia um sinal do teclado, o
sinal é entregue a todos os membros;
O processo pode capturar o sinal, ignorá-lo, ou
tomar uma ação predefinida – ser cancelado pelo
ESTADOS DE UM PROCESSO
1. Executando: realmente utilizando a CPU naquele
instante;
2. Pronto: executável, mas temporariamente parada para
dar lugar a outro processo;
3.
4. Bloqueado: incapaz de executar enquanto um evento
externo não ocorrer;
ESTADOS DE UM PROCESSO
Nota:
Os dois primeiros são similares. Em ambos os casos o
processo vai executar, só que no segundo não há, não
há CPU disponível para ele.
O terceiro estado é diferente, pois o processo não pode
executar, mesmo que a CPU esteja ociosa.
ESTADOS DE UM PROCESSO:
TRANSIÇÃO
ESTADOS DE UM PROCESSO:
TRANSIÇÃO 1
●
A transição vai ocorrer quando o processo descobre que
não pode prosseguir;
●
●
Em alguns sistemas o processo precisa executar uma
chamada de sistema: block, pause;
Em outros sistemas e inclusive no Unix, os processos
são automaticamente bloqueado quando ler de um pipe,
ou de um arquivo especial e não encontra entrada
disponível;
ESTADOS DE UM PROCESSO:
TRANSIÇÃO 2
●
Essa transição ocorre quando o Escalonador do S.O.
decide que processo em execução já teve tempo
suficiente de CPU;
●
Então este processo vai para o estado de pronto e outro
processo entra em estado de executando;
ESTADOS DE UM PROCESSO:
TRANSIÇÃO 3
●
Essa transição ocorre quando todos os processo
compartilharam a CPU;
●
Então de uma maneira justa, o escalonador escolhe
então o primeiro processo para utilizar a CPU;
–
–
Fazer uma leitura sobre escalonamento de processos;
O escalonador tem um papel importante no
desempenho do S.O.
ESTADOS DE UM PROCESSO:
TRANSIÇÃO 4
●
Essa transição ocorre quando acontece um evento
externo, pelo qual o processo estava aguardando;
–
●
●
Por exemplo: uma entrada de dados;
Se a CPU estive livre a transição 3 é disparada;
Caso contrario, ficará esperando em estado de pronto –
até que a CPU fique livre e chegue a sua vez.
ESTADOS DE UM PROCESSO
O escalador é a parte mais baixa de S.O. Ele trata as
interrupção e o escalamento dos processos. Acima dele
estão os processo sequenciais.
CONTEXTO DE PROCESSO
●
Contexto de Hardware:
–
●
Registradores: quando um processo está em
execução o seu contexto está armazenado nos
registradores do processador;
Contexto de Software:
–
São especificados os limites dos recursos a serem
usados pelo processo (prioridade, tamanho do buffer
para operação de entrada, número máximo de
arquivos abertos simultaneamente);
●
●
●
Identificação;
Quotas;
Privilégios;
CONTEXTO DE PROCESSO:
IDENTIFICAÇÃO
●
Cada processo cria uma identificação única (PID –
Process Identification);
●
●
●
Usado para fazer referências e chamadas aos processos;
Também possui a identificação do usuário (UID – User
Identification);
Em alguns S.O. os processos podem ser identificado por
um nome;
CONTEXTO DE PROCESSO:
COTAS
●
Limite de recursos que um processo pode executar;
●
Caso a cota seja insuficiente o processo pode funcionar
lentamente, ser interrompido, ou até mesmo não ser
executado;
CONTEXTO DE PROCESSO:
PRIVILÉGIOS
●
Define que um processo pode fazer em relação a si
mesmo, aos demais processos, e ao sistema
operacional;
●
Permite que características do processo possam ser
alteradas durante a sua execução;
●
A maioria dos S.O. tem uma conta com maiores
privilégios;
CONTEXTO DE UM PROCESSO
●
●
Em um S.O. uma troca de contexto (também
conhecido como chaveamento ou mudança de
contexto) é o processo computacional de
armazenar e restaurar o estado (contexto) de uma
CPU de forma que múltiplo processos possam
compartilhar uma única instância de CPU;
É garantido que quando o contexto anterior
armazenado seja restaurado, o ponto de execução
volte ao mesmo estado que foi deixado durante o
armazenamento.
CONTEXTO DE UM PROCESSO
CENÁRIOS DE USO
Existem três cenários no qual a troca de contexto
ocorre:
1. Multitarefa;
2. Interrupção de Hardware;
3. Troca de modo Usuário para modo Kernel;
CONTEXTO DE UM PROCESSO
MULTITAREFA
●
●
●
Em um sistema preemptivo, o escalonador permite
que cada tarefa seja executada por um determinado
tempo;
Se um processo não indicar explicitamente a troca
de contexto (por exemplo, ao realizar uma operação
de E/S), uma interrupção de tempo é disparada, e o
sistema operacional troca o contexto para outro
processo;
Isso assegura que a CPU não é monopolizada por
um processo somente.
CONTEXTO DE UM PROCESSO
INTERRUPÇÕES DE HARDWARE
●
Isso significa que se a CPU requisita dados de um disco,
por exemplo, ela não precisa esperar a leitura em disco
terminar, podendo continuar alguma outra tarefa na fila
de execução;
●
●
Quando a leitura em disco é terminada, a CPU é
interrompida e o resultado da leitura é disponibilizado;
Antes de realizar a interrupção, o contexto do processo
em execução é armazenado para futura restauração;
CONTEXTO DE UM PROCESSO
TROCA DE MODO USUÁRIO PARA MODO KERNEL
●
Quando tal transição é requisitada pelo sistema
operacional, uma troca de contexto não é necessária,
mas dependendo da implementação isso é feito.
CONTEXTO DE PROCESSO
CONTEXTO DE PROCESSO
●
●
●
●
●
Em uma troca de contexto, o estado do primeiro processo deve ser
armazenado de alguma forma, para que quando o escalonador retorne
sua execução, o estado seja antes restaurado;
O estado de um processo inclui todos os registradores que o processo
pode estar usando, especialmente o contador de programa, e
qualquer outro dado específico do sistema operacional;
A estrutura que armazena todas essas informações é chamada de
bloco de controle de processo;
O bloco pode ser armazenado na pilha de execução do processo na
memória do kernel, ou em algum outro local específico definido pelo
sistema operacional;
A seguir é feita a restauração do bloco de controle do processo que irá
executar.
IMPLEMENTAÇÃO DE PROCESSOS
●
●
Para implementar o modelo de processos, o S.O.
mantém uma tabela de processos, ou blocos de controle
de processos;
Essa tabela contém informações sobre o estado do
processo, seu contador de programa, o ponteiro da pilha,
a a locação de memória, os estados de seus arquivos,
etc.
IMPLEMENTAÇÃO DE PROCESSOS
●
●
Todas essas informações (da tabela de processo) sobre
o processo devem ser salvas quando o processo passa
do estado em execução para o estado pronto ou
bloqueado;
Isso permitirá que o processo possa ser restaurado como
se nunca tivesse sido bloqueado;
IMPLEMENTAÇÃO DE PROCESSOS
TIPOS DE PROCESSOS
●
Processos podem ser classificados em função do
processamento realizado:
●
●
Processos CPU-bound: processo liga a CPU , passa
a maior parte do tempo em execução, utilizando a CPU
ou em estado de pronto;
Processos IO-bound: processo ligada a dispositivos
de E/S, passa a maior parte do tem em estado de
espera.
Tempo
ATIVIDADE: PRÓXIMA AULA
●
●
Ler e fazer um resumo para discussão em sala de aula
sobre algoritmos de escalonamento.
Escolher um algoritmo e escrever sobre ele.
Download