Processos e Threads
Prof. Fernando F. de Carvalho
Processos e Threads
Conceito Processos concorrentes Estrutura do processo Estados do processo Mudanas de estado de processo Criao e eliminao de processos Processos independentes, subprocessos Threads e Multithreads
2
Processo
a base para implementao de um sistema multiprogramvel. O processador projetado apenas para executar instrues, no sendo capaz de distinguir qual programa se encontra em execuo. A gerncia de um ambiente multiprogramvel uma funo exclusiva do sistema operacional, que deve controlar a execuo dos diversos programas e o uso concorrente do processador. Para isto ser executado, um programa deve estar sempre associado a um processo.
Conceito de Processo
Um processo computacional pode ser entendido como uma atividade que ocorre em meio computacional, possuindo um objetivo definido, tendo durao finita e utilizando uma quantidade limitada de recursos computacionais.
Conceito de Processo
O termo processo (process) muitas vezes substitudo pelo termo tarefa (task) e pode assumir um dos seguintes significados: um programa em execuo, ou parte dele; uma atividade assncrona; o esprito ativo de um procedimento; uma entidade que pode utilizar um processador ou uma unidade que pode ser despachada para execuo.
* os processos computacionais podem ser divididos em sub-processos
5
Criao de Processo
Subdiviso de um processo Como cada processo precisa de recursos para ser executado e concludo, a ocorrncia de processos significa a utilizao de recursos do computador.
Criao de Processo
Processos podem criar novos processos. O processo criador chamado de processo-pai (parent process), enquanto os processos criados so denominados de processos filhos (child process).
Subdiviso de um Processo
Cada processo precisa de recursos do computador para ser executado e concludo. Pode-se dividir os processos em dois tipos: Processos seqenciais Processos Paralelos Processos seqenciais So aqueles que ocorrem um de cada vez, como seqncia de eventos, todos recursos computacionais podem ser usados de forma exclusiva, pois no h disputa por recursos.
Diagrama exemplo de processos seqenciais
a ociosidade dos diversos recursos computacionais muito alta, sugerindo que sua utilizao pouco efetiva
8
Subdiviso de um Processo
Processos Paralelos Os processos paralelos so aqueles que, durante um certo intervalo de tempo, ocorrem simultaneamente. Onde dois ou mais processos passem, a partir de um dado momento, a disputar o uso de um recurso computacional particular.
Diagrama-exemplo de processos paralelos
9
Processo Paralelos
Os processos paralelos so classificados como:
Independentes - utilizam recursos completamente distintos, no se envolvendo em disputas com outros processos. Concorrentes - pretendem utilizar um mesmo recurso, dependem de uma ao do sistema operacional para definir a ordem na qual os processos usaro o recurso. Cooperantes - dois ou mais processos utilizam em conjunto um mesmo recurso para completarem uma dada tarefa.
10
Processos Concorrentes
Nos sistemas multiprogramveis, os processos so executados concorrentemente, compartilhando, dentre outros recursos, o uso do processador, da memria principal e dos dispositivos de E/S. Nos sistemas com mltiplos processadores, no s existe a concorrncia de processos pelo uso do processador, como tambm a execuo simultnea de processos nos diferentes processadores.
11
Estrutura do processo
Em um sistema multiusurio, cada usurio associado a um processo. Para que a troca de programas ocorra sem problemas, necessrio que todas as informaes do programa interrompido sejam guardadas para que, quando este retornar a ser executado, no lhe falte nenhuma informao necessria continuao do processamento. A execuo de um mesmo programa pode variar, em funo dos recursos disponveis. A falta de recursos pode impedir a execuo com sucesso de um programa. Caso o programa, por exemplo, necessite utilizar uma rea em disco superior ao seu limite, o sistema operacional ir interromper sua execuo por falta de recursos disponveis.
12
Estrutura do processo
Um processo formado por trs parte: contexto de hardware, contexto de software e espao de endereamento, que juntos mantm todas as informaes necessrias execuo de um programa.
Contexto de Hardware
Programa
Contexto de Software
Espao de Endereamento
13
Contexto de Hardware
Quando um processo est em execuo, o seu contexto de hardware est armazenado nos registradores do processador. Os processos se revezam na utilizao da CPU, podendo ser interrompidos e posteriormente restaurados.
14
Contexto de Software
So especificadas caractersticas e limites dos recursos que podem ser alocados pelo processo, como o nmero mximo de arquivos abertos simultaneamente, prioridade de execuo e tamanho do buffer para operaes de E/S.
15
Espao de Endereamento
a rea de memria pertencente ao processo onde as instrues e os dados do programa so armazenados para execuo. Cada processo possui seu prprio espao de endereamento, que deve ser devidamente protegido do acesso dos demais processos.
16
Bloco de Controle do Processo - PCB
O processo implementado pelo sistema operacional atravs de uma estrutura de dados chamada bloco de controle do processo PCB. A partir do PCB, o sistema operacional mantm todas as informaes sobre o contexto de hardware, contexto de software e espao de endereamento de cada processo.
Ponteiros Estado do processo Nmero do processo Prioridade do processo Registradores Limites de memria Lista de arquivos abertos
17
Bloco de Controle do Processo - PCB
Geralmente o PCB contm as seguintes informaes:
identificao do processo (PID);
estado corrente do processo; ponteiro para o processo pai (parent process); lista de ponteiros para os processos filho (child processes); prioridade do processo; lista de ponteiros para as regies alocadas de memria; informaes sobre horrio de incio, tempo utilizado do processador; estatsticas sobre uso de memria e perifricos; cpia do contedo do contador de programa (program counter); cpia do contedo dos registradores do processador; identificador do processador sendo utilizado; informaes sobre diretrios raiz e de trabalho; informaes sobre arquivos em uso; permisses e direitos.
18
Bloco de Controle do Processo - PCB
Organizao de uma tabela de processos
19
Estados do processo
Um processo ativo pode encontrar-se em trs diferentes estados:
Execuo (Running)
Quando est sendo processado pela CPU.
Pronto (Ready)
Quando aguarda apenas para ser executado.
Bloqueado (Blocked)
Quando aguarda por algum evento externo ou por algum recurso para prosseguir seu processamento.
20
Mudanas de estado de processo
Pronto Execuo
Aps a criao de um processo, o sistema o coloca em uma lista de processos no estado de pronto, onde aguarda por uma oportunidade para ser executado.
Execuo
Bloqueado
Um processo em execuo passa o estado de bloqueado por eventos gerados pelo prprio processo, como uma operao de E/S, ou por eventos externos.
Bloqueado
Execuo
Pronto
Um processo no estado de bloqueado passa para o estado de pronto quando a operao solicitada atendida ou o recurso esperado concedido.
Pronto
Um processo em execuo passa para o estado de pronto por eventos gerados pelo sistema, como o termino da fatia de tempo(Quantun) que o processo possui para sua execuo. Nesse caso, o processo volta para fila de pronto, onde aguarda por uma nova oportunidade para continuar seu processamento.
21
Criao, mudanas de estado e trmino do processo
22
Criao de processos
Criao
Um processo dito no estado de criao quando o sistema operacional j criou um novo PCB, porm ainda no pode coloc-lo na lista de processos do estado de pronto. Alguns sistemas operacionais limitam o nmero de processos ativos em funo dos recursos disponveis ou de desempenho. Esta limitao pode ocasionar que processos criados permaneam no estado de criao at que possam passar para ativos.
23
Eliminao de processos
Terminado
Um processo no estado de terminado no poder ter mais nenhum programa executado no seu contexto, porm o sistema operacional ainda mantm suas informaes de controle presentes em memria. Um processo neste estado no mais considerado ativo, mas como o PCB ainda existe, o sistema operacional pode recuperar informaes sobre a contabilizao de uso de recursos do processo, como o tempo total do processador. Aps as informaes serem extradas, o processo pode deixar de existir.
24
Transies em estados
Entre os trs estados bsicos existem quatro transies possveis: Despachar (Dispatch), Esgotamento (TimeRunOut), Bloqueio (Block) e Reativar (Awake). Alm destas quatros transies existe outras duas correspondentes a Criao (Create) e Finalizao (Terminate) do processo.
25
Transies em estados
Tabela 2.1: Operaes de transio de estado dos processos
26
Processos independentes
O uso de processos independentes a maneira mais simples de implementar a concorrncia em sistemas multiprogramveis. Neste caso no existe vnculo do processo criado com o seu criador. A criao de um processo independente exige a alocao de um PCB, possuindo contextos de hardware, contextos de software e espao de endereamento.
27
Operaes sobre Processos
criao (create) destruio (destroy) suspenso (suspend ou wait) retomada (resume) troca de prioridade bloqueio (block) ativao (activate) execuo (execute ou dispatch) comunicao inter-processo
28
Operaes sobre Processos
A criao de um processo envolve operaes particulares: identificao do processo (determinao do PID) insero do processo na lista de processos conhecidos do sistema determinao da prioridade inicial do processo criao do PCB alocao inicial dos recursos necessrios insero do processo na lista de processos conhecidos do sistema determinao da prioridade inicial do processo criao do PCB alocao inicial dos recursos necessrios
29
Subprocessos
So processos criados dentro de uma estrutura hierrquica. Neste modo, o processo criador denominado processo pai, enquanto o novo processo chamado de subprocesso ou processo filho. O subprocesso pode criar outras estrutura de subprocessos. Uma caracterstica desta implementao a dependncia existente entre o processo criador e o subprocesso. Caso um processo pai deixe de existir, os subprocessos subordinados so automaticamente eliminados. Semelhante aos processos independentes, subprocessos possuem seu prprio PCB.
30
Processos independentes e subprocessos
O uso deste processos no desenvolvimento de aplicaes concorrentes demanda consumo de diversos recursos do sistema. Sempre que um novo processo criado, o sistema deve alocar recursos (contexto de hardware, contexto de software e espao de endereo), consumindo tempo da CPU neste trabalho. No momento do trmino dos processos, o sistema operacional tambm perde tempo para desalocar recursos previamente alocados. Outro problema a comunicao e sincronizao entre processos, considerada pouco eficiente, visto que cada processo possui seu prprio espao de endereamento.
31
Escalonador
Num sistema em tempo repartido a entidade que coordena a utilizao do processador por parte dos processos o escalonador (scheduler). O Scheduler uma funo, que se utiliza de um temporizador (timer) do sistema para efetuar a diviso de processamento (diviso de tempo). Regularmente, a cada intervalo de tempo fixo ou varivel, este temporizador dispara uma interrupo (um mecanismo especial de chamada de rotinas) que ativa uma rotina do escalonador do sistema. O processador empilha o program counter e tambm o contedo dos registradores do processador.
32
Escalonador
Representao do escalonamento de processos
33
Funes do ncleo de sistema operacional
Todas as operaes que envolvem os processos so controladas por uma parte do sistema operacional denominada ncleo (core ou kernel). O ncleo de um sistema operacional deve conter rotinas com as seguintes funes: gerenciamento de interrupes manipulao de processos (criao, destruio, suspenso, retomada,etc.) manipulao dos PCBs (Process Control Blocks) troca de estados dos processos (execuo, timerunout e ativao) 34
Funes do ncleo de sistema operacional
intercomunicao de processos sincronizao de processos gerenciamento de memria gerenciamento de dispositivos de E/S suporte a um ou mais sistemas de arquivos suporte `a funes de administrao do sistema
35
Competio por recurso
Quando dois ou mais processos em execuo paralela solicitem a utilizao de um mesmo recurso simultaneamente. O recurso pode ser compartilhado, porm pode ser exigido o uso individual e organizado de recurso. A exigncia de uso individual ou o compartilhamento caracterizam duas situaes: o cdigo reentrante e as regies crticas
36
Competio por recurso Regies Crticas
Quando um dado recurso computacional s pode ser utilizado por um nico processo de cada vez. Podendo ser uma rotina de software especial ou um dispositivo de hardware.
Representao de uma regio crtica
37
Competio por recurso Cdigo reentrante
Quando uma rotina pode ser utilizada simultaneamente por uma quantidade qualquer de processos, dizemos que esta rotina um bloco de cdigo reentrante ou cdigo pblico. Situao desejvel Compartilhamento benfico Aumentando a eficincia
Representao de cdigo reentrante
38
Deadlocks
Em sistema multiprogramado, o termo deadlock, ou seja, bloqueio perptuo ou impasse, significa um evento que jamais ir ocorrer [DEI92, TAN92,SGG01]. Um conjunto de processos esta num bloqueio perpetuo quando cada processo do conjunto esta esperando por um evento que apenas outro processo do conjunto pode causar. [TAN92, p. 242]
39
Deadlocks
Representao de um deadlock
40
Condies para ocorrncia de deadlocks
Processos exigem controle exclusivo dos recursos(excluso mtua). Os processos mantm alocados recursos enquanto solicitam novos recursos (condio de espera por recurso) Os recursos no podem ser retirados dos processos que os mantm alocados enquanto estes processos no finalizam seu uso (condio de ausncia de preemptividade). Forma-se uma cadeia circular de processos, onde cada processo solicita um recurso alocado pelo prximo processo na cadeia (condio de espera circular).
41
tratamento dos bloqueios perptuos,
Ignorar o problema (algoritmo da avestruz) Deteco e recuperao dos deadlocks Preveno dinmica Preveno estrutural
42
Recuperao de deadlocks
Recuperao atravs de preempo Recuperao atravs de operaes de rollback Recuperao atravss de eliminao de processos
43
Preveno de deadlocks
Um processo s pode solicitar um recurso se liberar o recurso que detm. Um processo que tm negado o pedido de recurso adicional deve liberar o recursos que atualmente detm. Se a solicitao de recursos ocorrer em ordem linear ascendente, a espera circular no consegue se formar.
44
Threads (processos leves)
um fluxo de controle dentro de um processo. Um processo com multithreads contm diversos fluxos de controle diferentes dentro do mesmo espao de endereamento. Em sistemas operacionais tradicionais, cada processo tem um espao de endereamento e um nico thread de controle. Frequentemente desejvel ter mltiplos threads de controle no mesmo espao de endereamento executando quase que em paralelo (a CPU altera rapidamente entre os threads), como se eles fossem processos separados (exceto para espaos de endereamento compartilhados).
45
Processos thread e multithreads
Um processo tradicional tem um nico thread de controle. Se o processo possui mltiplos threads de controle, ele pode realizar mais do que uma tarefa a cada momento.
46
Vantagens dos Multithreads
Permite que mltiplas execues ocorram no mesmo ambiente do processo com um grau maior de independncia uma da outra. As vantagens da gerao de multithreads incluem o aumento da capacidade de respostas para o usurio, o comportamento de recursos dentro do processo, economia e a habilidade de tirar vantagem de arquiteturas com multiprocessadores. No h proteo entre multithreads, pois, eles devem cooperarem entre si. Em muitos sistemas criar um thread cem vezes mais rpido do que criar um processo [Tanenbaum,pg.63].
47
Estrutura do thread
Contador de programa que mantm o controle de qual instruo ele deve executar em seguida. Registradores que contm suas variveis atuais de trabalho Pilha que traz a histria de execuo, com uma estrutura para cada procedimento chamado, mas ainda no retornado.
48
Processo com chamadas a duas subrotinas assncronas
Neste processo os trs threads so executados concorrentemente.
49
Exerccio de Fixao
Defina o conceito de processo. Por que o conceito de processo to importante no projeto de sistemas multiprogramveis? Quais partes compem um processo? Comente cada uma delas. Defina os cinco estados possveis de um processo, incluindo o inicial e o final. D um exemplo que apresente todas as mudanas de estado de um processo, juntamente com o evento associado a cada mudana. Quais as principais funes do nucleo de um sistema operacional o que e quais as vantagens dos processos paralelos?
50
Exerccio de Fixao
Os processos paralelos so classificados como Independentes, concorrentes e cooperantes, explique cada um deles. Quais os componentes que definem a estrutura de um processo? O que PCB e qual a sua funo para o sistema operacional? Descreva com detalhes sobre funo do Escalonador. Diferencie processos multithreads, subprocessos e processos independentes. Quais os quatros benefcios da programao com multithreads?
51