|
/home / fatec / soi / 03-processos --::-- |
ADS - Sistemas Operacionais I
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 |