PROCESSO
SISTEMAS OPERACIONAIS
Prof. Filippo Valiante Filho http://prof.valiante.info
INTRODUÇÃO
•
Processo = programa em execução.•
São executados de forma concorrente. Quando há múltiplas CPUs (multiprocessamento) é possível a execução simultânea de processos.ESTRUTURA DO PROCESSO
•
Indo um pouco além...•
O processo é um programa em execução, mas é preciso garantir a concorrência e armazenar as informações de contexto para permitir que o processo volte a ser executado.•
Assim o processo pode ser definido como “o conjunto necessário de informações para que o sistema operacional implemente a concorrência de programas”, ou “o ambiente onde o programa é executado”.ESTRUTURA DO PROCESSO
•
Concorrência de processos → Mudança/Chaveamento de contexto.ESTRUTURA DO PROCESSO
•
3 partes além do programa:•
Contexto de hardware•
Contexto de software•
Espaço de endereçamento (memória principal)CONTEXTO DE HARDWARE
•
Armazena as informações dos registradores da CPU como o PC (Program Conter), PSW (Program Status Word) e registradores de propósito geral.•
Necessário para se poder retornar ao processo posteriormente.•
Chaveamento/mudança de contexto =>CONTEXTO DE SOFTWARE
•
Algumas características definidas na criação do processo e outras dinâmicas.•
Composto por 3 grupos de informações:•
Identificação•
QuotasCONTEXTO DE SOFTWARE
•
Identificação•
PID (Process Identification)•
Número único que identifica o processo. Pode haver um nome também.•
UID (User ID)•
Identificação do usuário que criou o processo (proprietário / owner). Usado nas política de segurança.CONTEXTO DE SOFTWARE
•
Quotas•
Limites de recursos do sistema que o processo pode alocar.•
Exemplos:•
Número máximo de arquivos abertos simultaneamente;•
Tamanho máximo de memória principal e secundária que o processo pode alocar;•
Número máximo de operações de E/S pendentes;•
Número máximo de processos, subprocessos e threads que podem ser criados.CONTEXTO DE SOFTWARE
•
Privilégios•
Ações que um processo pode fazer em relação a ele mesmo, aos demais processos e ao sistema operacional.•
Privilégios podem afetar o próprio processo como Prioridade de execução e quotas;•
Processos podem ter privilégios que afetam o sistema como, por exemplo, alterar regras de segurança, criar outros processos privilegiados e alterar configurações do sistema. A execução desses processos requer um usuárioESPAÇO DE ENDEREÇAMENTO
•
Área de memória principal pertencente ao processo onde instruções e dados do programa são armazenados para execução.ESTRUTURA DO PROCESSO
•
Contexto de hardware
•
Contexto de software
•
Espaço de endereçamento
BLOCO DE CONTROLE DO PROCESSO (PCB)
•
PCB (Process Control Block).•
Reúne todos os dados do processo.•
Residem na memória principal em uma área exclusiva do sistema operacional.ESTADOS DO PROCESSO
•
Execução (running)•
Processo na CPU.•
Pronto (ready)•
Aguardando sua vez para ir à CPU. Escalonamento!•
Espera (wait) ou bloqueado (blocked)•
Depende de algo antes de poder prosseguir (E/S, temporização, etc.).O SO organiza filas de processos em estado de espera e pronto e pode (deve) estabelecer prioridades.
MUDANÇAS DE ESTADO DO PROCESSO
•
Causadas por eventos voluntários, ou seja, originados pelo próprio processo (p.ex. uma operação de E/S) ou involuntários, ou seja, originados pelo SO (p.ex. limite de tempo de execução do processo).•
4 possibilidades de mudança:•
Pronto → Execução;•
Execução → Espera;•
Espera → Pronto;•
Execução → Pronto. Machado e Maia (2013)MUDANÇAS DE ESTADO DO PROCESSO
•
Swapping•
Processos em estado de espera ou pronto podem ser “transferidos” da memória principal, caso não haja espaço suficiente, para a memória secundária.•
A saída da memória principal é o swap out.•
A volta para a memória principal é o swap in.•
O processo fora da memória principal, ou “não residente, é chamado de outswapped.MUDANÇAS DE ESTADO DO PROCESSO
swap out
swap in
outswapped
swap out
Adaptado de Machado e Maia (2013)
CRIAÇÃO E ELIMINAÇÃO DE PROCESSOS
•
Estado de criação (new)•
O SO cria o PCB mas não pode colocá-lo no estado de pronto.•
Criação de Processos•
O processo pode ser criado de forma interativa pelo usuário (CLI ou GUI), ou a partir de outro programa, invocando a rotina do sistema operacional para criação de processos (fork no Unix/Linux e CreateProcess no Windows).CRIAÇÃO E ELIMINAÇÃO DE PROCESSOS
•
Estado de término (exit)•
O processo não está mais ativo, mas o SO pode coletar algumas informações antes de eliminá-lo por completo.•
O processo pode ser terminado normalmente, eliminado por outro processo, ou eliminado de maneira forçada pela ausência de recursos disponíveis no sistema.CRIAÇÃO E ELIMINAÇÃO DE PROCESSOS
AFINIDADE DE PROCESSOS
PROCESSOS CPU-BOUND E I/O BOUND
•
Processos CPU-bound•
Passam maior parte do tempo nos estados pronto e execução.•
Processos I/O-bound•
Passam maior parte do tempo no estado de espera.Lembram dos
perfis dos
programas!?
PROCESSOS FOREGROUND E BACKGROUND
•
Os processos possuem dois canais de comunicação. Um de entrada (input) e outro de saída (output).•
Processos foreground (primeiro plano)•
Permitem a interação direta com o usuário. Canais de entrada e saída associados a um terminal (seja shell ou GUI).•
Processos background (segundo plano)PROCESSOS FOREGROUND E BACKGROUND
PIPES
•
Podemos associar o canal de saída de um processo ao canal de entrada de outro processo através de um pipe (tubo, “|”).PROCESSOS INDEPENDENTES, SUBPROCESSOS E
THREADS
•
Diferentes maneiras de se implementar a concorrência dentro de uma aplicação.•
O código é dividido em partes que possam trabalhar de forma cooperativa.•
Processos independentes são... Independentes do processo que os criou.•
Subprocessos possuem uma estrutura hierárquica. O processo-filho, ou subprocesso, mantém o vínculo com o processo-pai que o criou. E ainda pode criar outros subprocessos.•
Ao se eliminar um processo-pai, todos os seus subprocessos também são eliminados.PROCESSOS INDEPENDENTES, SUBPROCESSOS E
THREADS
•
Cada subprocesso tem seu próprio PCB. Isto implica em consumo de recursos do sistema e em maior complexidade para comunicação e sincronismo entreprocessos.
•
Subprocessos podem compartilhar quotas com o processo-pai.PROCESSOS INDEPENDENTES, SUBPROCESSOS E
THREADS
•
Threads, ou “linhas de execução”, sãomais eficientes e economizam recursos do sistema.
•
Em um ambiente multithread, um processo pode suportar múltiplas threads, cada qual associada a uma parte do código.•
Apenas o contexto de hardwareprecisa ser exclusivo de cada thread.