Baixe o app para aproveitar ainda mais
Prévia do material em texto
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 LLeemmbbrree--ssee qquuee ccaaddaa pprrooggrraammaa eessttáá aassssoocciiaaddoo aa uumm pprroocceessssoo 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 Introdução Processos e Concorrência Estrutura de um Processo Contexto de Hardware Contexto de Software Espaço de Endereçamento Bloco de Controle de um Processo Listagem de Processos no Linux Estados de um Processo Mudanças de Estado de um Processo Tipos de Processos Formas de Criação de um Processo Logon Interativo Via Linguagem de Comandos Via Rotinas do Sistema Operacional Processos Independentes, Subprocessos e Threads Processos Independentes Figura 24 – Todo programa está relacionado a um processo Subprocessos Figura 24 – Subprocessos Thread Figura 26 – Thread Figura 27 – Programação Multithread Figura 28 – Possível saída do programa anterior
Compartilhar