Вы находитесь на странице: 1из 31

Sistemas Operativos I

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

Terminar Processos
Algumas razes para terminar um processo:
Tempo excedido Falta de memria Uso de instruo privilegiada

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

Modelo Simples
despacho entra sai ready running

pausa (a) Diagrama de transio de estado

entra

fila

despacho pausa

UCP

sai

(b) Possvel implementao


05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 8

Problemas com o Modelo Simples


Um processo que no est em execuo estar sempre pronto a executar?
No
Pode estar bloqueado, por ex. espera de uma operao de I/O

Pelo que o escalonador no pode escalonar qualquer um dos processos que se encontra na fila de espera

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

Modelo Mais Elaborado


despacho admisso new ready running libertado terminated

interrompido evento ocorre waiting espera evento

(a) Diagrama de transio de estado


Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

05/06

10

Modelo Mais Elaborado


fila dos prontos admisso interrompido ocorre evento 1 fila evento 1 espera evento 1 despacho UCP sai

ocorre evento 2

fila evento 2

espera evento 2

(a) Possvel implementao


Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

05/06

11

Primitivas de Despacho

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

19

Informao de Estado do Processador


Contida nos registos do processador:
Registos visveis pelo utilizador Registos de controle de estado Apontadores de pilha

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

20

10

Informao de controle do processo (1)


Estado e escalonamento, de acordo com a mquina de estados definida anteriormente, que inclui:
Estado do processo (por ex. ready) Prioridade Suporte ao escalonamento (por ex. h quanto tempo est espera) Evento (por ex. identificao do evento que o processo est espera)
05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 21

Informao de controle do processo (2)


Estrutura dos dados (por ex. relao pai-filho) Comunicao entre processos Privilgios (por ex. tipos de instrues que podem ser executadas) Gesto da memria
Valores do registo base e limite ponteiro para a tabela de pginas

Propriedade e uso de recursos (por ex. ficheiros abertos)


05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 22

11

Process Control Block (PCB)

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Exemplo: > ls &


A shell cria um novo processo que executa o programa ls e retorna imediatamente para aceitar comandos O processo lanado em background

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

possvel direccionar ficheiros para estes canais:


> ls > resultado.txt > telnet > script.txt

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

28

14

Comutao entre Processos


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:
Salvaguarda do estado do processo que perde a UCP; Restaurao do estado do processo que ganha a UCP
05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 29

Comutao entre Processos

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

33

Filas de Escalonamento
Processo emite um pedido de I/O

Processo cria um novo subprocesso

Processos no estado de Waiting


05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

Processo removido em consequncia de uma interrupo

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

Os processos podem ser caracterizados como ou:


I/O-bound process despende mais tempo a fazer operaes I/O do que clculos na UCP; consequentemente, h bastantes UCP bursts de curta durao UCP-bound process despende mais tempo a fazer clculos na UCP; consequentemente, h poucos UCP bursts de longa durao

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

39

Gesto de Processos com Funes de Sistema


Um processo pode criar outros processos atravs de uma chamada ao sistema create_process() ou fork() O processo criador referido como processo pai e o processo criado o processo filho Os processos filhos podem criar outros processos, criando uma rvore de processos
Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

05/06

40

20

rvore de Processos (UNIX)

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Criao de Processos (UNIX)


A chamada ao sistema fork() cria um processo novo
O pai e o filho executam concorrentemente O filho duplica o espao de memria do pai (mas no pode aceder aos dados do pai) Pai e filho partilham alguns recursos
Ficheiro abertos Objectos para comunicao inter-processos Etc.

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

48

24

Paradigma Produtor/Consumidor
Produtor
item nextProduced;

Prximo item a ser produzido

while (1) { Resto inteiro da diviso while (((in + 1) % BUFFER_SIZE) == out) ; /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; }

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

49

Paradigma Produtor/Consumidor
Consumidor
item nextConsumed;

Prximo item a ser consumido

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; }

Soluo pouco eficiente dado que o consumidor fica em espera activa!!!


05/06 Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira 50

25

Comunicao entre Processos


Atravs de mensagens
Permite a comunicao entre processos atravs das primitivas de mensagens:
send(): envia mensagem receive(): recebe mensagem

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

51

Comunicao entre Processos


Directa Os processos tm que explicitamente indicar o destino ou a fonte send(p, msg), p processo de destino receive(q, msg), q processo fonte Propriedades A ligao entre os pares estabelecida automaticamente A ligao est associada apenas a dois processos A ligao pode ser unidireccional ou bidireccional

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

52

26

Comunicao entre Processos


Indirecta
As mensagens so enviadas para caixas de correio send(mailboxA, msg), coloca uma mensagem na caixa de correio A receive(mailboxA, msg), l uma mensagem na caixa de correio A

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Comunicao entre Mquinas Diferentes

Mecanismos (alguns exemplos)


Sockets Remote Procedure Calls .Net Corba COM DDE

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

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

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

58

29

Process Control Block


Estado do processo
De acordo com a mquina de estados definida anteriormente

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

Process Control Block


Informao de escalonamento
Prioridade Apontadores para as filas de escalonamento Outros parmetros

Informao sobre a memria


reas de memria utilizveis pelo processo

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

60

30

Process Control Block


Informao de monitorizao
Tempo de UCP gasto Limites para o processo Nmero do processo

Informao de I/O
Lista de dispositivos de I/O atribudos ao processo Lista de ficheiros abertos

05/06

Sistemas Operativos I Maria Joo Viamonte / Luis Lino Ferreira

61

31

Вам также может понравиться