Buscar

Sistema Operacional - PROCESSOS - APOSTILA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
7 – Processos 
 
7.1 – Introdução 
 
O conceito de processo é a base para a implementação de um sistema 
multiprogramável. O processador é projetado apenas para executar 
instruções, não se importando com qual programa esteja em execução ou 
qual o seu conteúdo. O sistema operacional por sua vez, é o responsável 
por gerenciar qual programa esta em execução e é, também, o 
responsável por controlar o uso concorrente do processador. 
 A gerência de processos é uma das principais funções do sistema 
operacional. Através dos processos, um programa pode alocar recursos, 
compartilhar dados, trocar informações, etc. Nos sistemas multiprogramáveis, 
os processos são executados concorrentemente, compartilhando o uso do 
processador, da memória principal e os dispositivos de Entrada/Saída. Nos 
sistemas com múltiplos processadores ou com vários núcleos, além da 
execução de processos concorrentemente ocorre também a execução 
simultânea de processos nos diversos processadores do sistema. 
 
Figura 7.1 – Gerenciador de Processos do Windows 
 2
7.2 – Estrutura do Processo 
 
 Um processo pode ser entendido como um programa que esta em 
execução. Em sistemas multiusuário, cada usuário é associado a um 
processo. O processador executa o programa do usuário em um determinado 
intervalo de tempo e, no instante seguinte, poderá executar outro programa, de 
outro usuário. 
 Um processo também pode ser definido como o ambiente onde o 
programa é executado. Este ambiente, além das informações pertinentes a 
execução do programa, possui também informações relativas aos recursos que 
o programa pode utilizar como espaço de endereçamento, uso do processador, 
área em disco, etc. Se um programa necessitar utilizar uma área em disco 
superior ao seu limite estipulado, o sistema operacional interrompe a execução 
do programa por falta de recursos. 
 Um processo é formado por três partes, conhecidas como contexto de 
hardware, contexto de software e espaço de endereçamento, que juntas 
mantêm as informações necessárias à execução de um programa. 
 
 
Figura 7.2 – Contexto do processo 
 
 
 
 
 3
7.2.1 – Contexto de Hardware 
 
 O contexto de hardware armazena o conteúdo dos registradores gerais 
da CPU, além dos registradores de uso específico, como o program 
counter(PC), o stack point(SP) e o registrador de status. Quando um processo 
esta em execução, o seu contexto de hardware está armazenado nos 
registradores da CPU. No momento em que ocorre a troca de processo, o 
sistema salva as informações do contexto de hardware do processo. 
 Para que a troca de programas ocorra sem problemas, é necessário que 
todas as informações do programa interrompido sejam armazenadas para que, 
quando o programa retorne a execução possa continuar exatamente de onde 
parou. A troca de um processo por outro, comandada pelo sistema operacional, 
é denominada mudança de contexto. A mudança de contexto consiste em 
salvar o conteúdo dos registradores do processo que esta deixando a CPU 
para carregá-los com os valores referentes ao do novo processo que será 
executado. Essa operação consiste em trocar um contexto de hardware de um 
processo por outro. 
 
Figura 7.3 – Contexto de Hardware 
 
 4
7.2.2 – Contexto de Software 
 
 No contexto de software são especificados características e limites de 
recursos que podem ser alocados pelo processo, como o número máximo de 
arquivos abertos simultaneamente, prioridade de execução e tamanho do 
buffer. Muitas destas características são determinadas no momento da criação 
do processo, enquanto outras podem ser alteradas durante a execução. 
 O contexto de software é composto por três grupos de informações 
sobre o processo: identificação, quotas e privilégios. 
 
- Identificação 
 
Cada processo criado pelo sistema recebe uma identificação única, 
chamada PID (Process Identification) que é representada por um número. 
Através deste número, o sistema operacional e outros processos podem fazer 
referência a qualquer processo em execução. Alguns sistemas identificam o 
processo por nome também. 
 Os processos também possuem a identificação do usuário ou processo 
que o criou (owner ou proprietário/dono do processo). Cada usuário possui 
uma identificação chamada UID – User Identificafion, que é única e é 
atribuída no momento da criação do usuário. 
 
Figura 7.4 – Exemplo de PID ( comando TOP – S.O. FreeBSD ) 
 5
- Quota 
 
 As quotas são os limites de cada recurso do sistema que um processo 
pode alocar. Caso o processo ultrapasse a quota estipulada ou essa quota seja 
insuficiente, a execução do processo pode se tornar lenta, ou mesmo ser 
interrompida ou ainda, nem chega a ser executado. 
 Alguns exemplos de quota: 
- número máximo de arquivos abertos simultaneamente; 
- tamanho máximo de memória principal e secundária que o processo 
pode alocar; 
- tamanho máximo do buffer para operações de E/S; 
- número máximo de processos, subprocessos que podem ser criados. 
 
- Privilégios 
 
 Os privilégios ou direitos definem as ações que um processo pode fazer 
em relação a ele mesmo, a outros processos e ao sistema operacional. 
 Privilégios que afetam o próprio processo permitem que suas 
características possam ser alteradas, como prioridade de execução. Já os 
privilégios que afetam os demais processos permitem, além da alteração de 
suas próprias características, permitem alterar os outros processos. 
 Privilégios que afetem o sistema são mais amplos e poderosos, pois 
estão relacionados à operação e gerencia do ambiente, como a desativação do 
sistema, criação de outros processos privilegiados. Os sistemas operacionais 
modernos têm uma conta de acesso que possui estes privilégios. Esta conta 
existe com o propósito de administrar o sistema. Nos sistemas Unix/Linux 
existe a conta de usuário root, nos sistemas da Microsoft Windows, a conta 
administrador (administrator, nos Windows em inglês) é usada para este 
propósito. 
 
7.2.3 – Espaço de Endereçamento 
 
 O espaço de endereçamento é a área de memória pertencente ao 
processo onde as instruções e os dados do programa são armazenados para 
 6
execução. Cada processo possui seu próprio espaço de endereçamento, que 
deve ser devidamente protegido dos demais processos. 
 
 
Figura 7.5 – Contexto do processo detalhado 
 
7.2.4 – Bloco de Controle do Processo 
 
 O processo é implementado pelo sistema operacional através de uma 
estrutura de dados chamada bloco de controle de processo (Process Control 
Block - PCB). A partir desta estrutura, o sistema operacional mantém todas as 
informações sobre o contexto de hardware, contexto de software e espaço de 
endereçamento. 
 
 7
 
Figura 7.6– PCB ( Process Control Block – Bloco de Controle de Processo ) 
 
 
 Os PCBs de todos os processos residem na memória principal em uma 
área exclusiva do sistema operacional. O tamanho desta área é limitado por um 
parâmetro do sistema operacional que especifica o número máximo de 
processos que o sistema suporta simultaneamente. 
 Toda gerência de processos é feita através de system calls, que 
realizam operações como criação, alteração de características, visualização, 
eliminação de processos, etc. 
 
 
7.3 – Estados do Processo 
 
 Em um sistema multiprogramável, os processos passam por diferentes 
estados ao longo do seu processamento, seja em função de eventos gerados 
pelo sistema operacional, seja pelo próprio processo. Um processo ativo pode 
ter três estados diferentes: 
 
- Execução (running) 
 
 Um processo está no estado de execução quando está sendo 
processado efetivamente pela CPU, ou seja, utilizando o processador. Em 
sistemas com um único processador, somente um processo pode estar em 
estado de execução em um dado instante. Em sistemascom mais de uma CPU 
 8
ou com CPU com mais de um núcleo, o número de processos que pode estar 
em estado de execução ao mesmo tempo é igual ao número de processadores 
existentes. Neste tipo de sistema, também é possível que um mesmo processo 
esteja sendo executado em mais de um processador ao mesmo tempo. 
 
- Pronto (ready) 
 
 Um processo está no estado de pronto quando aguarda para ser 
executado. O sistema operacional é o responsável por determinar a ordem e os 
critérios pelos quais os processos em estado de pronto devem fazer uso do 
processador. 
 Podem existir diversos processos em estado de pronto aguardando para 
serem executados. Estes processos são organizados em uma lista encadeada 
e são ordenados pela sua importância, permitindo que os processos com 
prioridade mais alta sejam executados primeiro. 
 
- Espera (wait) 
 
 Um processo no estado de espera aguarda por algum evento externo ou 
por algum recurso para continuar sua execução, como por exemplo, 
aguardando alguma operação de entrada/saída. 
 Os processos no estado de espera também são organizados em uma 
lista encadeada e, assim que o evento esperado aconteça, o processo que 
aguardava o evento é então transferido para o estado de pronto. 
 
 
 
 
 
 
 
 
 
 
 9
7.4 – Mudanças de Estado do Processo 
 
 
Figura 7.7 – Mudança de estado do processo 
 
 Um processo muda de estado durante a sua execução em função de 
eventos voluntários, que são gerados pelo próprio processo, ou por eventos 
involuntários, que são gerados pelo sistema operacional. Existem quatro 
mudanças de estado que podem ocorrer a um processo, são elas: 
 
- Pronto ���� Execução 
 
 Quando um processo é criado, o sistema operacional coloca o processo 
em uma lista de processos no estado de pronto, então o sistema operacional 
se encarrega de colocar o processo em estado de execução. 
 
- Execução ���� Espera 
 
 Um processo no estado de execução passa para o estado de espera por 
eventos gerados por ele próprio, como a gravação de um arquivo em disco, ou 
por eventos externos, quando o sistema operacional suspende a execução do 
processo para colocar outro no seu lugar. 
 
 10
- Espera ���� Pronto 
 
 Um processo no estado de espera para passa para o estado de pronto 
quando a operação solicitada é atendida ou o recurso esperado é concedido. 
Um processo no estado de espera sempre terá que passar pelo estado de 
pronto antes de ir para o estado de execução. 
 
- Execução ���� Pronto 
 
 Um processo no estado de execução volta para o estado de pronto por 
eventos gerados pelo sistema operacional, como o término do seu time-slice. 
Neste caso, o processo não precisa ir para o estado de espera, e sim, volta 
direto para o estado de pronto, onde ele entra na lista para ser executado 
novamente. 
 
Um processo no estado de espera ou de pronto pode não estar na 
memória principal. Isto ocorre quando não há espaço suficiente para todos os 
processos na memória principal e parte do contexto do processo é gravada na 
memória secundária. Está técnica é chamada de swrapping, que consiste em 
retirar os processos da memória principal e coloca-los de volta seguindo os 
critérios de cada sistema operacional. 
 
Figura 7.8 – Mudança de estado, residente para não-residente na memória 
 11
 
7.5 – Criação e Eliminação de Processos 
 
 Processos são criados e eliminados por motivos diversos. A criação de 
um processo ocorre a partir do momento em que o sistema operacional 
adiciona um novo PCB à sua estrutura e aloca um espaço de endereçamento 
na memória para uso. A partir da criação do PCB, o sistema operacional já 
reconhece a existência de um processo. No caso da eliminação de um 
processo, todos os recursos associados ao processo são desalocados e o PCB 
eliminado pelo sistema operacional. 
 A maioria dos sistemas operacionais estabelece dois estados adicionais 
para os momentos de criação e eliminação de um processo. 
 
- Criação (new) 
 
 Um processo é dito no estado de criação quando o sistema operacional 
já criou um novo PCB, porém ainda não pode colocá-lo na lista de processos 
no estado de pronto. A criação de processos pode ocorrer por diferentes 
razões: 
- logon: um processo é criado através de um estabelecimento de uma sessão 
de um usuário; 
- criação por outro processo: um processo já existente pode criar outros 
processos; 
- criação pelo sistema operacional: o sistema operacional pode criar novos 
processos com o intuito de oferecer algum tipo de serviço; 
- abertura de um aplicativo por parte do usuário. 
 
- Término (exit) 
 
 Um processo no estado de termino não pode ter mais nenhum programa 
em execução no seu contexto, porém o sistema operacional ainda mantém 
suas informações de controle presentes na memória. Um processo neste 
estado não é mais considerado ativo, mas como o PCB ainda existe, o sistema 
 12
operacional pode recuperar informações referentes ao processo e após extrair 
estas informações o processo pode deixar de existir. 
 O término do processo pode ocorrer por razões como: 
- término normal da execução; 
- eliminação por outro processo; 
- eliminação forçada; 
 
Figura 7.9 – Criação e Eliminação de processo 
 
7.6 – Subprocessos 
 
Processos independentes, subprocessos e threads são maneiras 
diferentes de implementar a concorrência dentro de uma mesma aplicação. 
Neste caso, busca-se subdividir o código em partes para trabalharem de forma 
cooperativa. 
 Subprocessos são processos criados dentro de uma estrutura 
hierárquica. Neste modo, o processo criador é chamado de processo pai e o 
subprocesso criado é chamado de processo filho. Os subprocessos podem 
criar novos subprocessos e assim por diante. Outra característica é a 
dependência existente entre o processo pai e o processo filho, quando o 
processo pai deixa de existir, todos os processos filhos também são eliminados 
automaticamente. Além desta característica, o processo pai pode compartilhar 
suas quotas com os processos filhos, assim, quando um subprocesso é criado, 
o processo pai cede parte de suas quotas para o processo filho. 
 
 13
 
Figura 7.11 – Processos Pai e Filhos 
 
 
 
7.7 – Processos Foreground e Background 
 
 Todo processo possui pelo menos dois canais, sendo um de entrada 
(input) e outro de saída (output). Estes canais podem ser teclados, mouse, 
monitor, impressora, etc. 
 Um processo foreground é aquele que permite a comunicação direta 
entre o usuário e o processo durante o processamento. Os canais de entrada e 
saída estão associados a dispositivos interativos. 
 Um processo background é aquele onde não existe a comunicação 
com o usuário durante o seu processamento. Neste caso, os canais de 
entrada/saída não estão associados a dispositivos interativos como teclado e 
monitor. 
 Existe uma técnica onde é possível associar o canal de saída de um 
processo com o canal de entrada de outro, esta técnica é chamada pipe, e ela 
faz a ligação entre os processos. 
 
 14
 
Figura 7.11 – Pipe 
 
 Na figura a seguir vemos um exemplo de um pipe via linha de comando 
no sistema operacional FreeBSD. 
 
Figura 7.12 – Exemplo de Pipe por linha de comando 
 
 
7.8 – Processos do Sistema Operacional 
 
 Processos do sistema operacional são alguns processos especiais que 
tem como função básica oferecer alguns serviços, seja ao próprio sistema 
operacional ou a aplicações dos usuários. Alguns exemplos destes processos 
são: 
 15
- auditoria e segurança; 
- serviços de rede; 
- contabilização do uso de recursos; 
- gerencia de impressão; 
- gerencia de jobs; 
- comunicação de eventos; 
- interpretador de comandos (shell). 
 Podemos ver na figura a seguir alguns exemplos de processos do 
sistema operacionaltanto do Windows como Linux. No Windows, os mais 
comuns são o Explorer.exe, system, services.exe. No Linux, o processo init é o 
mais conhecido. 
 
 
Figura 7.13 – Processos do sistema operacional 
 
7.9 – Processos CPU-Bound e I/O-Bound 
 
 Os processos são classificados de acordo com o modo como utilizam o 
processador e os dispositivos de Entrada/Saída. 
 Um processo é chamado de CPU-Bound quando passa a maior parte 
do tempo em estado de execução, ou seja, passa a maior parte do tempo 
utilizando o processador. Este tipo de processo realiza poucas operações de 
entrada/saída e é bastante encontrado em aplicações cientificas onde são 
realizados muitos cálculos. 
 16
 Um processo é chamado de I/O-Bound quando passa a maior parte do 
tempo no estado de espera e realiza um grande número de operações de 
leitura/gravação. Este tipo de processo é encontrado em aplicações comerciais, 
como sistemas de gestão, que se baseiam em leitura, processamento e 
gravação. 
 
 
Figura 7.14 – Processo CPU-bound x Processo I/O-bound 
 
7.10 – Sinais 
 
 Sinais são mecanismos que permitem notificar processos de eventos 
gerados pelo sistema operacional ou por outros processos. O uso de sinais é 
fundamental para a gerência de processos, alem de possibilitar a comunicação 
e a sincronização entre processos. 
 A maior parte dos eventos associados a sinais é gerada pelo sistema 
operacional ou pelo hardware, como a ocorrência de interrupções e exceções. 
Em outras situações, os eventos são gerados a partir de outros processos com 
o propósito de sincronizar suas execuções. 
 A geração de um sinal ocorre quando o sistema operacional, a partir da 
ocorrência de algum evento, notifica o processo através de bits de sinalização, 
localizados no PCB. Um processo não responde instantaneamente a um sinal, 
ou seja, os sinais ficam pendentes até que o processo esteja em modo de 
execução. 
 O tratamento dos sinais é semelhante ao mecanismo de tratamento de 
interrupções e exceções, deste modo, quando um sinal é gerado, o contexto do 
processo é salvo e a execução é desviada para um código de tratamento de 
sinal (signal handler), geralmente feito pelo kernel do sistema operacional.

Outros materiais