/home / fatec / soii / 03-processos --::--

Sistemas Operacionais II

Prof. Rossano Pablo Pinto, MSc.



PROCESSOS (Notas de aula - 09/09/2008)

EM CONSTRUÇÃO

Conceito de Processo

Definição simples: É um programa em execução. 
    * A execução de um processo ocorre de maneira seqüencial.  
    * Apenas uma instrução por vez é executada. 
    * Estrutura propícia para fazer multiprogramação.
Estão associadas a um processo informações sobre seu estado atual: 
    * contador de instruções (PC)
    * valores contidos nos registradores do processador
    * pilha (estrutura em memória principal que contém dados temporários como argumentos de 
      sub-rotinas, endereços de retorno de chamadas de função e variáveis temporárias)
    * seção de dados contidos em variáveis globais.
2 + processos podem estar associados a um mesmo programa, mas com seqüências 
de execução distintas.
É comum ter um processo que crie muitos outros processos durante sua execução.
Diagrama de estados do processo: 


                                PREEMPÇÃO
                     +--------+ P/ TEMPO     +----------+
  +------+ Admitido  |        |<-------------|          | FIM  +---------+
  | NOVO |---------->| PRONTO |              | EXECUÇÃO |----->| TÉRMINO |
  +------+           |        |------------->|          |      +---------+
                     +--------+ SELECIONADO  +----------+
                         ^                         |
  * PCB é criado         |                         |      * Áreas de memória
  * Programa é           |      +----------+       |        do PCB e programa
    copiado p/           |      |          |       |        são liberadas
    memória              +------|  ESPERA  |<------+
    principal                   |          |
                                +----------+


  Quais estados de processos existem nos sistemas GNU/Linux e Windows ?
  Qual o significado de cada um deles ?
  Como verificar o estado de processos em cada um dos sistemas ?

Bloco de Controle de Processos (BCP / PCB Process Control Block)
  * Cada processo é descrito no sistema operacional por um BCP:

     +---------------+--------------------+    TAREFA:
     |  Apontador p/ | Estado do Processo |    ** Explorar no /proc
     |  Próximo BCP  |                    |       do Linux as informações
     +---------------+--------------------+       presentes e ausentes
     |         Número do Processo         |       apresentadas aqui. 
     +------------------------------------+       Fazer mapeamento destas
     |       Contador de Instruções       |       informações com as 
     +------------------------------------+       apresentadas aqui. 
     |                                    |
     |           Registradores            |
     |                                    |
     +------------------------------------+
     |         Limites de Memória         |
     +------------------------------------+
     |     Lista de Arquivos Abertos      |
     +------------------------------------+
     |            Prioridade              |
     +------------------------------------+
     |          Contabilidade             |
     +------------------------------------+
     |     Estado de Operações de E/S     |
     +------------------------------------+
     |                ...                 |
     +------------------------------------+


Seleção de Processos

"Multiprogramação" sempre tenta deixar o processador ocupado com algum processo
 (maximizar utilização da CPU).
 * CPU é constantemente "transferida" entre processos.
Filas de Seleção de Processos
 * Filas de Pronto
 * Filas de dispositivos de E/S
 * Diagrama de transição entre filas p/ seleção de processos: 

     +---------------------------+
 --->| fila de processos         |                       /~~~\------------->
 +-> |     prontos               |--------------------->( CPU )
 |   +---------------------------+                       \___/--------+
 |                                                                    |
 |     /~~~\        +-------------+      +-------------------+        |
 +<---( E/S )<------| fila de E/S |<-----| requisição de E/S |<-------+
 |     \___/        +-------------+      +-------------------+        |
 |                                                                    |
 |                                       +-------------------+        |
 +<--------------------------------------|   intervalo de    |<-------+
 |                                       |  tempo esgotado   |        |
 |                                       +-------------------+        |
 |                                                                    |
 |             /~~~~~~~~\                +-------------------+        |
 +<-----------( filho em )<--------------|    criação de     |<-------+ 
 |            ( execução )               |  processo filho   |        |
 |             \________/                +-------------------+        |
 |                                                                    |
 |             /~~~~~~~~~~~\             +-------------------+        |
 +<-----------(   ocorre    )<-----------|     em espera     |<-------+
              ( interrupção )            |  por interrupção  |
               \___________/             +-------------------+

Escalonadores
  * Processo passa pelas várias filas de seleção durante seu tempo de vida
  * A atividade de escolher e escalar (escalonar) processos p/ execução é 
    realizada por rotinas do S.O. chamadas de escalonadores.


Operações Sobre Processos

Árvore de processo típica em um sistema GNU/Linux:

init-+-NetworkManager---{NetworkManager}
     |-NetworkManagerD
     |-acpid
     |-adept_notifier
     |-atd
     |-cron
     |-cupsd
     |-dd
     |-dhcdbd
     |-dhclient3
     |-gconfd-2
     |-6*[getty]
     |-guidance-power----gpmhelper.py
     |-hald---hald-runner-+-hald-addon-acpi
     |                    |-hald-addon-cpuf
     |                    |-hald-addon-inpu
     |                    `-2*[hald-addon-stor]
     |-kdeinit-+-artsd
     |         |-firefox-2---run-mozilla.sh---firefox-2-bin---9*[{firefox-2-bin}]
     |         |-katapult---aspell
     |         |-kio_file
     |         |-klauncher
     |         |-2*[konqueror]
     |         |-kwin
     |         |-python
     |         `-xterm---bash
     |-kdesktop
     |-kdm-+-Xorg
     |     `-kdm---startkde-+-kwrapper
     |                      `-ssh-agent
     |-kicker
     |-klipper
     |-klogd
     |-portmap
     |-postgres---4*[postgres]
     |-soffice.bin---5*[{soffice.bin}]
     |-sshd
     |-syslogd
     |-udevd
     |-wpa_supplicant
     `-yakuake-+-bash
               `-bash-+-emacs
                      `-pstree






Faculdade de Tecnologia de Americana :: Curso de Análise de Sistemas e Tecnologia da Informação
Rua Emílio de Menezes, s/n, Vila Amorim - Tel. +55 (19) 3406-5776 CEP: 13xxx-xxx / Americana / SP / Brasil
Copyleft 2007,2008 Rossano Pablo Pinto