Você está na página 1de 15

Sistemas Operacionais

Mdulo 4: Processos

Conceito de Processo Escalonamento de processos Operaes sobre processos Processos cooperantes Comunicao entre processos

4.1

Sistemas Operacionais

Conceito de Processo

Um Sistema Operacional executa uma variedade de programas: Sistemas de processamento em lotes (batch) processa jobs Sistemas de tempo partilhado (timeshared) roda processos de usurios ou tarefas (tasks) O livro texto usa os termos job e processo quase como sinnimos Processo: um programa em execuo Um processo inclui: Contador de programa (PC) Pilha Segmento (rea) de dados

4.2

Sistemas Operacionais

Estados de Processos
Ao executar, processo muda de estados New: processo est sendo criado Running: instrues do processo esto executando Waiting: processo est esperando ocorrncia de algum evento Terminated: processo terminou a execuo

4.3

Sistemas Operacionais

Diagrama de Estados de Processos

4.4

Sistemas Operacionais

Process Control Block (PCB)


PCB contm informaes associadas a cada processo: Estado do processo Valor do PC (apontador de instrues) rea para guardar valor dos registradores Infos. para escalonamento de CPU (escalonamento processos) Infos. Para gerenciamento de memria Infos. De contabilidade dos processos Status das operaes de I/O (ex.: Infos. sobre arquivos usados)

4.5

Sistemas Operacionais

Process Control Block (PCB)

4.6

Troca de processos (ou context switch)

Sistemas Operacionais

4.7

Sistemas Operacionais

Filas para escalonamento de processos


Fila de jobs: conjunto de todos os processos no sistema Fila de prontos (ready queue): conjunto de todos os processos que residem na memria principal, prontos para executar mas no esto em execuo Filas de dispositivos: conjunto de processos esperando por um dispositivo de I/O

Os processos migram entre as diversas filas do sistema

4.8

Fila de prontos e as diversas filas de dispositivos de I/O

Sistemas Operacionais

4.9

Representao do escalonamento de processos

Sistemas Operacionais

4.10

Sistemas Operacionais

Escalonadores

Escalonador de longo prazo (Longterm scheduler) seleciona qual processo deve ser colocado (buscado) para a fila de prontos por exemplo: de uma fila de jobs batch Escalonador de curto prazo (shortterm scheduler, CPU scheduler) seleciona, da fila de prontos, que processo deve ser executado a seguir (i.e. alocado CPU).

4.11

Adio de um escalonador de mdio prazo

Sistemas Operacionais

4.12

Sistemas Operacionais

Escalonadores (Cont.)

Escalonador de curto prazo invocado muito frequentemente (milisegundos) (deve ser rpido) Escalonador de longo prazo invocado infrequentemente (segundos, minutos) (pode ser lento) Escalonador de longo prazo controla o grau de multiprogramao do sistema Processos podem ser classificados em: I/Obound processes delimitados pelo tempo de I/O, gasta mais tempo fazendo I/O do que computaes, muitas pequenas rajadas (bursts) de CPU CPUbound processes delimitados pelo tempo de CPU, gastam a maior parte do tempo fazendo computaes; Poucas RAJADAS LONGAS de CPU
4.13

Sistemas Operacionais

Trocas (chaveamentos) de Contexto

Quando CPU troca processo em execuo por outro, SO deve salvar o estado (contexto de execuo) do processo anterior e carregar nos regs. da mquina o estado (guardado) do prximo processo Tempo de troca de contexto overhead; a traca til mas no o objetivo do sistema, objetivo processar / computar jobs Tempo de troca de contexto dependente do suporte de hardware

4.14

Sistemas Operacionais

Criao de processos

Processo pai cria filhos (ou clones), que por sua vez criam outros formando uma rvore de processos Compartilhamento de recursos possveis: Pai e filhos compartilham todos os recursos Filhos compartilham subconjunto de recursos do pai Pai e filhos no compartilham recursos Execues possveis: Pai e filhos executam concorrentemente Pai espera at filhos terminarem

4.15

Sistemas Operacionais

Criao de Processos (Cont.)

Possibilidades para o espao de endereamento Filho duplicata do pai (espao separado) Filho tem programa carregado no espao do pai (substituio) Exemplos do UNIX Chamada a fork cria novo processo Chamada execve usada depois do fork (no cdigo do clone) para substituir programa no espao do clone

4.16

Sistemas Operacionais

Uma rvore de processos em um sistema UNIX tpico

4.17

Sistemas Operacionais

Trmino de Processos

Processo executa chamada exit pedindo ao SO que termine o processo Dado passado de filho para pai (via wait) Recursos do processo so dealocados pelo SO Pai pode terminar a execuo de processos filhos (abort) devido: Filho excedeu uso de recursos alocados Tarefa atribuda ao filho no mais necessria Pai vai terminar... possibilidades so: SO termina filho tambm Cascateamento de trminos

4.18

Sistemas Operacionais

Processos Cooperantes

Processos Independentes no podem afetar ou serem afetados pela execuo de outros processos Processos Cooperantes podem afetar a execuo de outros processos cooperantes (ou ter execuo afetada) Vantagens da cooperao entre processos: Compartilhamento de informaes Aumento da velocidade de computao (speedup) Modularidade Convenincia

4.19

Sistemas Operacionais

Problema ProdutorConsumidor

Paradigma (padro de comportamento) para certos processos cooperantes Processo produtor produz informao que consumida por outro processo (consumidor) Comunicao entre os processos cooperantes utiliza um buffer: Boundedbuffer: tem tamanho fixo Unboundedbuffer: assumese que o buffer no tem limite de tamanho.

4.20

Soluo para probl. BoundedBuffer com memria compartilhada


Shared data var n; type item = ; var buffer. array [0..n 1] of item; in, out: 0..n 1; Producer process repeat produce an item in nextp while in+1 mod n = out do noop; buffer [in] :=nextp; in :=in+1 mod n; until false;

Sistemas Operacionais

4.21

Sistemas Operacionais

BoundedBuffer (Cont.)

Consumer process repeat while in = out do noop; nextc := buffer [out]; out := out+1 mod n; consume the item in nextc until false; Solution is correct, but can only fill up n 1 buffer.

4.22

Sistemas Operacionais

Threads
Uma thread (ou lightweight process) uma unidade bsica de utilizao de CPU Uma thread consiste de: Apontador de instrues (PC) Conjunto de registradores Espao de pilha Thread = processo de peso leve ou, tambm, linha de execuo de um processo Uma thread compartilha com outras threads pares (peers): A seo de cdigo A seo de dados Os recursos do SO coletivamente tudo isso conhecido como tarefa (task) Um processo tradicional (ou heavyweight process) igual a uma tarefa com uma thread OBS: para executar com threads necessrio uma pilha por thread (uma s nao suficiente), ao contrario das reas de cdigo, vars. e heap que podem ser compartilhadas peals threads pares.
4.23

Sistemas Operacionais

Threads (Cont.)
Em uma tarefa com mltiplas threads, enquanto uma thread est bloqueada e esperando, uma segunda thread na mesma tarefa pode executar Cooperao de mltiplas threads no mesmo job confere maior vazo (throughput) e melhoria de desempenho Aplicaes que requerem compartilhamento de dados se beneficiam ao utilizar threads (ex. buffer comum em padro produtorconsumidor) Threads provm um mecanismo que possibilita a um processo sequencial fazer uma chamada bloqueante ao SO e ao memo tempo obter paralelismo no processo Threads podem ser suportadas pelo ncleo do SO (ex. Mach, OS/2, Linux). Threads podem ser suportadas em espao de endereos de usurio (User level threads); Como uma biblioteca que roda em espao de usurio (exs. Projeto Andrew da CMU, CThreads) Suportado pela linguagem e respectivo compilador (ex. Modula, Java) Abordagem hbrida implementa ambos os mtodos (ex. userlevel e kernel 4.24 level threads em Solaris 2).

Sistemas Operacionais

Mltiplas Threads dentro de uma tarefa

4.25

Sistemas Operacionais

Suporte a Threads em Solaris 2


Solaris 2 uma verso do UNIX com suporte para threads pelo kernel ou em nvel de usurio, multiprocessamento simtrico (SMP) e escalonamento de tempo real LWP (lightweight process) intermedirio entre userlevel threads e kernellevel threads Utilizao de recursos por tipo de thread: Kernel thread: uma pequena estrutura de dados e uma pilha; troca de contexto entre threads pares no requer troca de infos. de acesso memria (segmentos compartilhados) relativamente rpido LWP: PCB com valores de regs, infos. de contabilidade e memria; troca entre LWPs relativamente lenta Userlevel thread: precisa apenas uma pilha e uma apontador de instrues (PC) por thread. Chaveamento rpido entre threads pares (kernel v somente os LWPs, estes que suportam as threads userlevel)
4.26

Sistemas Operacionais

Solaris 2 Threads

4.27

Sistemas Operacionais

Comunicao entre Processos (IPC)


So necessrios mecanismos comunicao entre processos e sincronizao de suas aes Sistema de mensagens: processos comunicam uns com os outros sem uso de variveis compartilhadas Mecanismo de IPC por troca de mensagens prov duas operaes: send(message) mensagens de tamanho fixo ou varivel receive(message) Se P e Q querem comunicar, eles precisam: Estabelecer um canal de comunicao entre si Trocar mensagens via send/receive Implementao de um link de comunicao: Fsico (e.g., memria compartilhada, barramento de hardware) lgico (e.g., propriedades lgicas)
4.28

Sistemas Operacionais

Questes de Implementao

Como os links so estabelecidos ? Um link pode ser associado a mais de dois processos ? Quantos links podem existir entre cada par de processos comunicantes ? Qual a capacidade de um link ? O tamanho da mensagem fixo ou varivel ? O link unidirecional ou bidirecional?

4.29