Você está na página 1de 19

02 PROCESSOS

2.1 Introdução

Para poder controlar a execução dos diversos programas e o uso concorrente do


processador e dos demais recursos um programa deve sempre estar sempre associado a um
processo.
Os processos são executados concorrentemente compartilhando o uso do
processador, memória principal e dispositivos de E/S.

Figura 01 – Programa e Processo

2.2 Processos e Concorrência

O processador executa instruções sem distinguir qual programa encontra-se em


processamento: busca instruções na MP, armazena-a no registrador de instruções (RI) e
decodifica seus bits e executa a instrução. O registrador Program counter (PC) armazena
sempre a próxima instrução a ser executada

Figura 02 – Estrutura de um Computador


A figura abaixo ilustra a situação em que o uso da concorrência é benéfica

Figura 03 - Concorrência no acesso a um banco de dados de uma loja

Processo é definido como o conjunto de informações necessárias para que o sistema


operacional implemente a concorrência entre programas .
A figura abaixo ilustra a Concorrência entre três programas associados aos
respectivos processos.

Figura 04 – Concorrência entre programas associados a processos


A figura abaixo ilustra a mudança de contexto, ou seja, a troca de um processo por
outro no processador

Figura 05 – Concorrência de Programas associados a processos

2.3 Estrutura de um Processo

Um processo é formado por três partes (contexto de hardware, de software e espaço


de endereçamento) que juntas mantêm informações necessárias a execução de um
programa.
Figura 06 – Estrutura de um Processo

2.3.1 Contexto de Hardware


O contexto de hardware armazena o conteúdo os registradores gerais, além dos de
uso específico, como o program counter (PC), stack pointer

Figura 07 – Contexto de Hardware

A mudança de contexto, base para a implementação da concorrência consiste em


salvar o conteúdo dos registradores do processo que está deixando a CPU e carregá-los
com os valores do novo processo que será executado.
Figura 08 – Mudança de Contexto

2.3.2 Contexto de Software


No contexto de software são especificados os limites e características dos recursos
que podem ser alocados pelo processo. As figuras abaixo mostram estes limites e
características
Figura 09 – Contexto de Software

Figura 10 – Contexto de Software


2.3.3 Espaço de Endereçamento

No contexto de software são especificados os limites e características dos recursos


que podem ser alocados pelo processo.

Figura 11 – Espaço de Endereçamento

2.3.4 Bloco de Controle de um Processo


O BCP reside na memória principal e mantêm todas informações sobre contexto de
hardware, software e espaço de endereçamento de cada processo.
Figura 12 – Bloco de Controle de um Processo

2.3.5 Listagem de Processos no Linux

A figura abaixo exibe uma lista de processos correntes no linux obtido a partir de
um comando usando a linguagem de comandos

Figura 13 – Listagem de processo no Linux


2.4 Estados de um Processo

Um processo pode estar nos seguintes estados: estado de pronto, estado de execução
e estado de espera. A figura abaixo explica as características de cada estado. Quando um
processo está em estado de espera ou em estado de pronto ele fica respectivamente na lista
de estados de espera e de pronto.

Figura 14 – Estados de um Processo


2.5 Mudanças de Estado de um Processo

Um processo pode sofrer as seguintes mudanças de estado: (a) pronto para


execução; (b) execução para espera; (c) espera para o estado de pronto e (d) de execução
para o estado de pronto. A figura abaixo explica as situações em que ocorrem estas
mudanças de estado

Figura 15 – Mudanças de Estados de um Processo


2.6 Tipos de Processos
Os processos podem ser classificado em CPU-bound (ligados à CPU) ou I/O-
bound (ligado à E/S). Nas figuras abaixo descrevemos cada um deles

Figura 16 – Processo CPU-bound


Figura 17 – Processo I/O-bound

Os processos podem também serem classificados em processos foreground e


background. Nas figuras abaixo descrevemos cada um deles

Figura 18 – Processo Foreground


Figura 19 – Processo BackGround

2.7 Formas de Criação de um Processo

Um processo pode ser criado pelo processo de logon interativo, via linguagem de
comandos ou usando rotinas do sistema operacional. As figuras abaixo ilustram cada um
destas formas.

2.7.1 Logon Interativo


Figura 20 – Criação de um processo via logon

2.7.2 Via Linguagem de Comandos

Um processo é criado para atender a um comando da linguagem de comandos do


sistema operacional.
Figura 21 – Criação de um processo via linguagem de comandos

2.7.3 Via Rotinas do Sistema Operacional

Um processo pode ser criado a partir de qualquer programa executável com o uso de
rotinas do sistema operacional

Figura 22 – Criação de um processo com uso de rotinas do sistema operacional

2.8 Processos Independentes, Subprocessos e Threads

Processo, subprocessos e thread são formas de implementar a concorrência entre


programas. A figura abaixo exemplifica uma situação em que o uso de concorrência é
benéfica
Figura 23 – Exemplo de situação em que o uso de concorrência é benéfico

2.8.1 Processos Independentes


Lembre-se que cada programa está associado a um processo

Figura 24 – Todo programa está relacionado a um processo

2.8.2 Subprocessos
Em subprocesso existe a dependência existência ao processo pai que o criou.
Figura 24 – Subprocessos

2.8.3 Thread
As threads são uma tentativa de reduzir o tempo gasto na criação/eliminação de
processos, troca de contexto em processos na aplicações concorrentes e economizar
recursos do sistema como um todo
Em uma aplicação multithread um único processo pode suportar múltiplos threads,
cada qual associado a uma parte do código da aplicação. Elas compartilham o mesmo
contexto de software

Figura 26 – Thread
A figura abaixo mostra um programa em java desenvolvido utilizando a
programação multithread. No referido programa são criadas 5 threads em que cada uma
executa chama a função PrintHello.

Figura 27 – Programação Multithread


Figura 28 – Possível saída do programa anterior

Você também pode gostar