Академический Документы
Профессиональный Документы
Культура Документы
Processos
Maria Joo Viamonte / Luis Lino Ferreira
Fevereiro de 2006
Processo
Fluxo de actividade autnomo que executa um conjunto de aces que so determinadas por um programa
05/06
Conceito de Processo
Pode ser definido como:
Uma instncia de um programa em execuo No entanto um programa pode ser constitudo por n processos Unidade de trabalho de um sistema operativo multi-processo
05/06
Processo
Portanto, um processo contm:
Cdigo executvel Dados (variveis globais) Estado do Processador (registos, stack, program counter) Ficheiros abertos Tempo de UCP consumido
05/06
O Sistema Operativo
Um SO multi-tarefa deve:
Alternar a execuo de processos de forma a maximizar a utilizao da UCP Fornecer tempo de resposta razovel Alocar recursos a processos Suportar a criao de processos pelo utilizador Suportar a comunicao entre processos
05/06
Criar Processos
O que faz o SO para criar processos:
Constri estruturas de dados Aloca espao de endereamento
Por ex.:
Quando o utilizador abre uma sesso de shell Quando gerado por outro processo
05/06
Terminar Processos
Algumas razes para terminar um processo:
Tempo excedido Falta de memria Uso de instruo privilegiada
05/06
Modelo Simples
despacho entra sai ready running
entra
fila
despacho pausa
UCP
sai
Pelo que o escalonador no pode escalonar qualquer um dos processos que se encontra na fila de espera
05/06
05/06
10
ocorre evento 2
fila evento 2
espera evento 2
05/06
11
Primitivas de Despacho
05/06
12
Primitivas de Despacho
New
O processo est a ser criado
Ready
O processo est pronto para ser executado
Running
O cdigo referente a um processo est a ser executado
Sistemas multi-processador podem executar vrios processo em paralelo, um em cada processador
05/06
13
Primitivas de Despacho
Waiting
O processo est espera que um evento especfico ocorra (por ex. operao de I/O ou recepo de um sinal)
Terminated
O processo finalizou a sua execuo
Nota:
Em mquinas com apenas uma UCP s um processo pode estar no estado running Pode haver vrios processos no estado ready e no estado waiting
05/06
14
Processos
Nota:
Os estados definidos atrs apenas representam os casos mais habituais num SO A implementao do modelo de processo pelo SO pode necessitar de outros estados, como por ex.:
Em LINUX definido o estado de Zombie para os processo que j terminaram mas cujos recursos ainda no foram totalmente libertados
05/06
15
Comutao de Processos
Para maximizar a UCP h que ter sempre um processo em execuo Isto implica:
Troca de processos em execuo A operao que permite retirar um processo em execuo e substitui-lo por outro, implica saber: Onde o processo est localizado Os atributos do processo
05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 16
Comutao de Processos
Como representado um processo?
Imagem do processo: Programa Dados Pilhas(s) Atributos
05/06
17
Representao do Processo
Cada processo representado perante o SO por uma estrutura contendo a sua informao, o Process Control Block (PCB) O PCB o conjunto de atributos do processo e pode ser dividido em trs partes:
Identificao do processo Informao de estado do processador Informao de controle do processo
05/06
18
Identificao do Processo
Composta por identificadores numricos que incluem:
Identificador do processo (PID) Identificador do processo que o criou Identificador do utilizador
05/06
19
05/06
20
10
11
05/06
23
Exemplos
Lanar Processos
Uma forma de lanar processos executar comandos numa shell
Exemplo: > ls
A shell cria um novo processo que executa o programa ls, espera que termine e volta a aceitar comandos
05/06
24
12
Exemplos
Consultar Processos
O comando ps mostra os processos existentes:
Exemplo: > ps
PID: identificador do processo TTY: terminal STAT: estado do processo - R running, S sleeping, D uninterruptible sleep TIME: tempo de processador j consumido
O comando top mostra estatsticas gerais do sistema e processos com maior actividade
Exemplo: > top
05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 25
Exemplos
Parar ou suspender Processos
O comando kill permite enviar um sinal assncrono ao processo
Exemplo: > kill 143 Existem combinaes de teclas que enviam sinais especficos:
CTRL+C signal interrupt (sigint) CTRL\ signal quit (sigquit) CTRL+Z signal stop (sigstop) > bg coloca o processo suspenso a executar-se em segundo plano > fg coloca o processo suspenso a executar-se em primeiro plano
Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira
05/06
26
13
Exemplos
Redireccionar entradas e sadas
Cada processo tem os seguintes canais de comunicao:
Stdin standard input entrada de dados Stdout standard output sada de dados normal Stderr standard error sada de dados de erro
tambm possvel direccionar a sada de um processo para a entrada de outro, atravs de um pipe:
> ls | grep lista
Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira
05/06
27
Sugesto de Estudo
Ver de que forma implementada a estrutura PCB em LINUX
Sugesto: utilizar a Web para procurar a informao Ver o Livro Understanding the Linux kernel editado pela OReilly Verificar quais as diferenas para aquilo que foi descrito
05/06
28
14
05/06
30
15
Escalonamento
Um dos objectivos da multi-programao a maximizao da utilizao da UCP O escalonador tem como objectivo decidir qual o prximo processo a ser executado em funo dos seus parmetros
Note-se que em sistema mono-processador apenas pode ser executado um processo de cada vez
05/06
31
Filas de Escalonamento
As filas de escalonamento permitem ao SO saber o estado dos processos (PCBs) Existem filas para cada um dos estados, assim como filas para coordenar o acesso aos dispositivos de I/O
05/06
32
16
Filas de Escalonamento
Ready queue esta fila contm os PCBs dos processos residentes em memria que esto no estado ready, isto processos que esto prontos e espera de serem executados Device queue lista dos PCBs dos processos espera dum dispositivo I/O Exemplo: Disk unit 0 queue
05/06
33
Filas de Escalonamento
Processo emite um pedido de I/O
34
17
Filas de Escalonamento
Portanto, durante a sua execuo de um processo vrias coisas podem acontecer:
o processo pode emitir um pedido I/O, e consequentemente ser colocado numa fila de I/O device O tempo que o escalonador tinha atribudo ao processo (time slice) termina e consequentemente ser colocado na fila dos ready o processo pode criar um novo processo, ficando espera que ele termine e consequentemente ser colocado na fila dos waiting o processo pode ser removido da UCP em consequncia duma interrupo, transitando para a Ready queue
05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 35
Escalonadores
Um processo migra entre vrias filas de escalonamento durante o seu tempo de vida O SO deve seleccionar processos destas filas com base em algum mtodo ou algoritmo H trs tipos de escalonadores:
curto prazo mdio prazo longo prazo
05/06
36
18
Escalonadores
Escalonador de longo-prazo (ou escalonador de processos): Selecciona os processos que devem ser levados para a fila Ready de modo a que existe uma mistura equilibrada entre processos I/O bound e UCP bound Escalonador de longo-prazo invocado com pouca frequncia (segundos, minutos) (pode ser lento) Escalonador de longo-prazo controla o grau de multiprogramao Utilizado essencialmente em sistema batch Pode estar ausente (por ex: no Linux e no Windows)
05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 37
Escalonadores
Escalonador de curto-prazo (ou escalonador da UCP):
Selecciona que processos devem ser executados de seguida e reserva, consequentemente, a UCP Escalonador de curto-prazo invocado com bastante frequncia (milli-segundos) (ser rpido) Exemplos:
Linux Windows
05/06
38
19
Escalonadores
Escalonador de mdio-prazo Permite remover processos da memria Mais tarde pode ser retomada a execuo destes programas (Swapping) Devido a falta de memria ou para uniformizar o conjunto de processos em execuo
05/06
39
05/06
40
20
05/06
41
Criao de Processos
Diferente hipteses de implementao
Modos de execuo:
Pai e filho(s) executam concorrentemente Pai espera at que o(s) filho(s) terminem
Ocupao da memria
O filho duplica o espao do pai O filho carrega um novo programa
Partilha de recursos:
Pai e filho(s) partilham todos os recursos Filho(s) partilham um subconjunto dos recursos do pai Pai e filho(s) no partilham quaisquer recursos
05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 42
21
05/06
43
Terminao de um Processo
Terminao normal: um processo termina quando acaba a execuo da sua ltima instruo, e pede ao SO para elimin-lo via a chamada ao sistema exit().Nesta altura: O processo devolve eventualmente dados ao seu progenitor atravs da evocao da funo wait() O SO liberta todos os recursos utilizados pelo processo (filho) Terminao abrupta: o pai pode terminar a execuo dos processos filhos atravs da chamada ao sistema abort() Filho excedeu os recursos que lhe foram reservados A tarefa atribuda ao filho no mais necessria O pai est a terminar o que obriga os filhos a terminar
05/06
44
22
Processo Cooperativos
Os processos podem ser classificados como:
Independentes: no afecta nem afectado pela execuo de outros processos Cooperativos: interagem com outros processos de modo a executar uma tarefa, pelo que afectam e podem afectar outros processos
05/06
45
Processo Cooperativos
Razes para a cooperao
Partilha de informao
De modo a requerer servios a outros processos
Performance
O programa partido em vrios processos executadas em paralelo (vrios processadores)
Modularidade
Separar o programa em mdulos diferentes. Por ex. separar a interface grfica das rotinas do programa
Convenincia
Por ex. de modo a que seja possvel realizar vrias tarefas em simultneo
Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira
05/06
46
23
Paradigma Produtor/Consumidor
O processo produtor produz informao O processo consumidor consome essa informao A comunicao entre os processo pode ser feita atravs de:
Unbounded-buffer: o buffer utilizado para a troca de dados no tm qualquer limite de tamanho Bounded-buffer: o buffer utilizado para a troca de dados tm um tamanho limitado
05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 47
Paradigma Produtor/Consumidor
Soluo com bounded-buffer Dados em memria partilhada:
#define BUFFER_SIZE 10 Typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; //pos. de escrita int out = 0; //pos. de leitura
05/06
48
24
Paradigma Produtor/Consumidor
Produtor
item nextProduced;
while (1) { Resto inteiro da diviso while (((in + 1) % BUFFER_SIZE) == out) ; /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; }
05/06
49
Paradigma Produtor/Consumidor
Consumidor
item nextConsumed;
while (1) { Se in==out significa que no while (in == out) existem elementos no buffer ; /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; }
25
05/06
51
05/06
52
26
Propriedades
No existe ligao entre processos, apenas ligao caixa A caixa de correio pode estar associada a mais do que 1 processo A caixa de correio pode ser unidireccional ou bidireccional
05/06
53
Sincronizao
As primitivas de send e receive tambm podem servir para sincronizar dois processos, i.e. um processo pode ficar espera que exista uma mensagem na caixa do correio
As primitivas podem ser bloqueantes (blocking) ou no bloqueantes (nonblocking) As primitivas bloqueantes so tambm classificadas como sncronas As primitivas no bloqueantes so tambm classificadas como assncronas
05/06
54
27
Buffering
Fila de mensagens associadas a uma ligao; implementada numa das trs formas:
Capacidade nula 0 mensagens. O emissor tem de esperar pelo receptor (rendezvous) Capacidade limitada comprimento finito de n mensagens. O emissor tem de esperar se a ligao est saturada Capacidade ilimitada comprimento infinito. O emissor nunca espera
05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 55
05/06
56
28
Sistemas Operativos I
Processos
Maria Joo Viamonte / Luis Lino Ferreira
Fevereiro de 2006
Gesto de Processo
Existem comandos para:
Lanar novos processos Consultar processos Parar ou suspender processos Redireccionar entradas e sadas de processos
05/06
58
29
Program Counter
Indica o endereo da prxima instruo que ir ser executado pelo processo
Registos da UCP
O nmero e tipo dos registos depende da UCP (por ex: acumuladores, stack pointers, flags...)
05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 59
05/06
60
30
Informao de I/O
Lista de dispositivos de I/O atribudos ao processo Lista de ficheiros abertos
05/06
61
31