/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 ProcessoDefiniçã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 |