FACULDADE DE ENGENHARIA Disciplina: Sistemas Operativos e Programao Concorrente Docente: dr. Incio G. Ticongolo
GESTO DE PROCESSOS Antes de falarmos de gesto de processos, falaremos de conceitos bsicos em volta de Processos. Conceitos Bsicos: PROGRAMA sequncia de comandos sem actividade prpria.
Todos softwares executados em um computador, inclusive o prprio Sistema Operativo so organizados em processos sequenciais.
Processo abstraco de execuo de uma instncia dum programa. Um programa ao ser executado pode correr mais de um processo.
Muitos sistemas operativos identificam os processos atravs de um nico identificador de processo (pid), que um Inteiro. Em geral, um processo ir precisar de certos recursos (tempo de CPU, memria, ficheiro, dispositivos de I/O) para cumprir com as suas tarefas.
2 |pgina de 13
Composio de Processo
Um processo inclui:
1. Valores actuais do contador de programa e registadores; 2. Pilha(stack) do processo que contm dados temporrios (parmetros de funes ou mtodos, endereos de retorno e as variveis locais); 3. Seco de dados que contm as variveis globais 4. Heapmemria que alocada dinamicamente durante a execuo do processo.
Figura 1: Alocao de memria Principal
Estados do Processo O processo passa por diversos estados durante a sua execuo. O estado de um processo definido em parte pela sua actividade em curso. Um processo pode estar em um dos seguintes estados:
3 |pgina de 13
- Novo(New): o processo est a ser criado - Em Execuo(Running): as instrues esto a ser executadas, neste momento o processo tem acesso a CPU. - Em Espera (Waitting): o processo est a espera pela ocorrncia de algum evento (como concluso de I/O ou recepo de um sinal). - Pronto (ready): o processo est a espera que seja atribudo o processador. - Terminado (Terminated): o processo terminou a sua execuo.
Figura 2: Estados de processo
Notas: S um processo pode estar no estado running Pode haver vrios processos no estado ready e no estado waiting
No sistema operativo, um processo representado por um bloco de controlo do processo (PCB- process control block).
4 |pgina de 13
Bloco de Contolo de Processo Contm informaes associadas a um processo especfico, incluindo: - Estado do processo: ver diagramas de estados - Contador do programa: indica o endereo da prxima instruo a ser executada - Registadores da CPU: incluem os acumuladores, registos de indexao, ponteiros de pilha, registos gerais. - Informao de escalonamento da CPU: inclui prioridade do processo, ponteiros para filas de escalonamento. - Informao da gesto de memria: inclui valores dos registos de base e de limite, tabelas de paginao (ou tabelas de segmentao) - Informao de contabilizao - Informao do estado de I/O: inclui lista de dispositivos I/O afectados ao processo, lista de ficheiros abertos. - Repositrio para qualquer informao que pode variar de um processo para outro.
Informao associada a cada processo:
5 |pgina de 13
Figura 3: Bloco de controlo de processos
De forma a maximizar a utilizao da CPU, h que ter sempre um processo a correr, i.e. em execuo. Alm disso, num dado instante, s um processo pode usar um dispositivo de entrada/sada. Isto obriga a que haja: Escalonamento incluindo comutao de contexto, Filas de escalonamento e Escalonadores.
6 |pgina de 13
Escalonamento de Processo Escalonamento tem a ver com decises sobre: 1. Qual o prximo processo a executar? 2. Quando comea a executar? 3. Durante quanto tempo executa? A primeira deciso implica a noo de prioridade, as outras duas tem a ver com o facto de se usar ou no desafectao forada. O objectivo da multiprogramao garantir que haja sempre um processo em execuo de forma a maximizar a CPU.
Figura 4 : Escalonamento de Processos em ambiente multiprogramado (Adaptado de Tanbaum)
7 |pgina de 13
Comutao de Contexto A partilha do processador requer um mecanismo de comutao de processos, a que se d o nome de comutao de contexto A comutao entre dois processos faz-se atravs da: salvaguarda do estado do processo que perde o CPU e restaurao do estado do processo que ganha o CPU. O sistema no realiza algum trabalho til enquanto efectua a mudana de contexto. Os tempos de mudana de contextos so altamente dependentes do hardware. Quanto mais complexo for o sistema operativo, mais trabalho ser realizado durante a mudana de contexto.
Figura 5: Comutao de contexto
8 |pgina de 13
medida que os processos entram no sistema so colocados numa fila de jobs. Os processos residentes na memria principal que esto prontos e em espera para entrar em execuo so colocados numa lista chamada fila pronta. Geralmente, esta fila armazenada na forma de uma lista encadeada. A cabea de uma fila pronta contm um apontador para o primeiro e o ltimo PCB da lista. Cada PCB inclui um apontador que aponta para o prximo PCB da fila pronto
Filas de Escalonamento
Figura 6: Filas de Escalonamento
9 |pgina de 13
Normalmente, todo o recurso tem associada uma fila de escalonamento (CPU, dispositivos de entrada e sada) Ready queue Esta fila contm os PCBs dos processos residentes em memria que esto no estado ready, i.e. processos que esto prontos e espera de executar. Fila de dispositivo (ou device queue) lista dos PCBs dos processos espera dum dispositivo I/O Por exemplo: Disk unit 0 queue - se um processo espera a concluso de I/O, colocado na fila de espera do dispositivo em causa Segundo a figura, os processos migrao entre vrias filas. Diagrama de espera no escalonamento de processos - Um novo processo inicialmente colocado na ready queue . - O processo fica espera na ready queue at ser seleccionado e despachado para o CPU Durante a sua execuo vrias coisas podem acontecer: 1. o processo pode emitir um pedido I/O, e consequentemente ser colocado numa I/O device queue; 2. o processo pode criar um novo subprocesso, ficando espera que ele termine; 3. o processo pode ser removido do CPU em consequncia duma interrupo, transitando para a ready queue
10 |pgina de 13
Figura 7: Diagrama de espera no escalonamento de processos
Escalonadores
H trs tipos de escalonadores: - curto prazo - mdio prazo - longo prazo
Escalonador de longo-prazo (ou escalonador de processos): Selecciona que processos devem ser levados para a fila ready Escalonador de longo-prazo controla o grau de multiprogramao
Escalonador de curto-prazo (ou escalonador do CPU): Selecciona que processos devem ser executados de seguida e reserva, consequentemente, o CPU
11 |pgina de 13
Escalonamento de mdio-prazo Ideia base: swapping
- Remover processos da memria (i.e. baixar o grau de multiprogramao) - Mais tarde, estes processos podem ser re-introduzidos na memria e continuar a sua execuo onde tinham sido deixados. Pode assim conseguir-se uma melhor mistura de processos, ou ento libertar memria principal para outros processos.
Figura 8: diagrama de swapping
Operaes sobre Processos
Os processos no sistema podem executar concorrentemente e podem ser criados e eliminados dinamicamente. Assim, o sistema operativo deve fornecer mecanismos(ou facilidades) para Criao e Trmino do processo.
12 |pgina de 13
Criao do Processo Um processo pode dar origem a diversos novos processos durante o seu curso de execuo, por intermdio de uma chamada de sistema create-process. O processo criador denominado processo Pai, e os novos processos so chamados processos filhos do processo criador. Cada um desses novos processos pode, por sua vez, criar outros processos, formando uma rvore de processos (fig 9).
Figura 9: hierarquia de processos
Quando um processo cria um subprocesso, este subprocesso pode obter seus recursos directamente do SO, ou pode ficar limitado ao conjunto de recursos do processo pai. O processo pai pode ter que repartir seus recursos entre os filhos ou compartilhar alguns recursos (como memria ou ficheiros) entre os filhos. Ao restringir um processo filho a um subconjunto de recursos do pai, evitamos que algum processo possa sobrecarregar o sistema se possuir elevado nmero de subprocessos. Alm de vrios recursos fsicos e lgicos que o processo obtm, os dados de inicializao (input) podem ser transmitidos do processo pai ao processo filho.
Quando um processo cria um novo subprocesso, existem duas possibilidades em termos de execuo: 1. O pai continua a executar concorrentemente com os seus filhos; 2. O pai aguarda at que alguns dos seus filhos ou todos eles tenham terminado.
13 |pgina de 13
Existem ainda duas possibilidades em termos de espao de endereamento do novo processo: 1. O processo filho tem o mesmo programa e dados que processo pai; 2. O processo filho tem um programa carregado dentro dele.
Trmino do Processo Um processo termina quando conclui a execuo do seu ultimo commando e solicita que o sistema operativo o elimine usando a chamada de sistema exit(). Neste ponto, o processo pode retornar um valor de estado (geralmenteuminteiro) para o seu processo pai (por intermdio da chamada de sistema wait()) Todos recursos do processoincluindo memria, ficheiros abertos e bufferdeI/Oso desalocados pelo sistema operativo Um processo pode causar o trmino de um outro processo por meio de uma chamada de sistema apropriada (por exempo,abort(), TerminateProcess()). Usualmente, esta chamada de sistema pode ser invocada somente pelo pai do processo que est para terminar. Um processo pai pode terminar a execuo de um dos seus processos filhos por vrios motivos: 1. O processo filho excedeu a utilizao de algum recurso que lhe foi alocado. Isso requer que o processo pai tenha um mecanismo para inspeccionar os estados dos seus filhos. 2. A tarefa atribuda ao processo filho j no necessria. 3. O processo pai est terminar, e o sistema operativo no permite que um processo filho continue a execuo quando o seu pai terminar.