Buscar

02 aula Gerenciamento de Processos

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Profa Esp. Patrícia Bianca Nascimento e Silva Gomes
patricia.gomes1@docente.unip.br
FSO – FUNDAMENTOS DE SISTEMAS OPERACIONAIS
Gerenciamento de Processos
Revendo – Informações:
Sistema computacional: conjunto de circuitos eletrônicos interligados (processadores, memórias, registradores, barramentos, monitores de vídeo, impressoras, mouse e etc). Dividem-se em três unidades funcionais:
Processador ou UCP (Unidade Central de Processamento): gerencia todo os sistema computacional controlando as operações realizadas por cada unidade funcional. Controla e executa instruções presentes na memória principal, através de operações básicas de soma, subtrair, comparar e movimentar dados.
Memória Principal: local em que são armazenados dados.
Dispositivos de Entrada/Saída: comunicação entre o sistema computacional e o mundo externo. Ex.: memória secundária (discos e fitas magnéticas) e interface usuário-máquina (teclados, monitores, impressora e plotters).
Gerenciamento de Processos
Revendo – Informações:
Processador ou UCP (Unidade Central de Processamento): 
Composto por:
UC (Unidade de Controle): gerencia as atividades de todos os componentes do computador, como a gravação de dados em discos ou a busca de instruções na memória.
ULA (Unidade Lógica e Aritmética): realiza operações lógicas (testes e comparações) e aritméticas (somas e subtrações).
Os registradores: armazenam dados temporariamente em alta velocidade internamente no processador.
Gerenciamento de Processos
Introdução
A gerência de um ambiente multiprogramável é função exclusiva do SO que deve controlar a execução dos diversos programas e o uso concorrente do processador e demais recursos. Para isso, um programa ao ser executado deve estar sempre associado a um processo. O conceito de processo é a base para a implementação de um sistema multiprogramável.
A gerência de processos é uma das principais funções de um sistema operacional, possibilitando aos programas alocar recursos, compartilhar dados, trocar informações e sincronizar suas execuções. Nos sistemas multiprogramáveis os processos são executados concorrentemente, compartilhando o uso do processador, memória principal e dispositivos de E/S, dentre outros recursos. Nos sistemas com múltiplos processadores não só há a concorrência de processos pelo uso do processador como também a possibilidade de execução simultânea de processos nos diferentes processadores.
Gerenciamento de Processos
Estrutura do Processo
O processador é projetado para executar instruções a partir do ciclo de busca e execução. Neste ciclo, o processador busca a instrução a ser executada na memória principal, armazena-a no registrador de instruções para, finalmente, decodificar seus bits e realizar a execução. O registrador PC tem a função de armazenar sempre o endereço da próxima instrução a ser executada, e as alterações do seu conteúdo determinam o sequenciamento de execução das instruções armazenadas na memória principal.
Gerenciamento de Processos
Estrutura do Processo
É de responsabilidade do SO implementar a concorrência entre programas gerenciando a alternância da execução de instruções na UCP de maneira controlada e segura. O processo é fundamental para que sistemas multiprogramáveis implementem a concorrência de diversos programas e atendam a múltiplos usuários simultaneamente.
Um processo pode ser entendido como um programa em execução. Conjunto necessários de informações para que o SO implemente a concorrência de programas. Pode também ser definido como o ambiente onde um programa é executado.
Gerenciamento de Processos
Gerenciamento de Processos
Estrutura do Processo
Um processo é formado por três partes: contexto de hardware, contexto de software e espaço de endereçamento, que juntos mantêm todas as informações necessárias à execução de um programa.
A troca de um processo por outro no processador, comandada pelo SO, é denominada mudança de contexto. É dessa maneira que o SO implementa e gerencia um ambiente multiprogramável.
Em um sistema multiusuário, cada usuário tem seu programa associado a um processo. Todos os recursos são compartilhados, mesmo passando a impressão para o usuário que os recursos são utilizados exclusivamente para ele. Nesse caso, cada processo tem direito a um intervalo de tempo de execução no processador (time-sharing).
Gerenciamento de Processos
Gerenciamento de Processos
Estrutura do Processo
Contexto de Hardware: armazena o conteúdo dos registradores gerais da UCP, além de registradores específicos. É fundamental para a implementação dos sistemas multiprogramáveis, onde os processos se alternam na utilização da UCP, podendo serem interrompidos e restaurados. Essa operação se resume em substituir o contexto de hardware de um processo pelo de outro.
Espaço de endereçamento: é a área de memória pertencente ao processo onde instruções e dados do programa são armazenados para execução. Cada processo possui seu próprio espaço de endereçamento, que deve ser devidamente protegido do acesso dos demais processos.
Contexto de Software: são especificados limites e características dos recursos que podem ser alocados pelo processo, como o número máximo de arquivos abertos simultaneamente, prioridade de execução e tamanho do buffer para operações de E/S. Muitas destas características são determinadas no momento da criação do processo, enquanto outras podem ser alteradas durante sua existência.
Gerenciamento de Processos
Gerenciamento de Processos
Gerenciamento de Processos
Estrutura do Processo
Contexto de Software: a maior parte de informações provém de um arquivo do SO, conhecido como arquivo de usuário. Composto por:
Identificação: cada processo criado pelo sistema recebe uma identificação única (PID – Process Identification) representada por um número, que é usado para se fazer referência por outros processos e pelo SO. Possuem também a UID (user identification) em que somente processos com a mesma UID podem ser acessados por outros recursos, auxiliando na segurança. Possui também a identificação do usuário ou processo que o criou (owner).
Quotas: são os limites de cada recurso do sistema que um processo pode alocar. Caso uma quota seja insuficiente, o processo poderá até mesmo não ser executado, interrompido ou executar lentamente. São exemplos de quotas: número máximo e arquivos abertos simultaneamente; tamanho máximo de memória; número máximo de operações de E/S pendentes; tamanho máximo do buffer para operações de E/S; número máximo de processo, subprocessos e threads que podem ser criados.
Privilégios ou direitos: definem as ações que um processo pode fazer em relação a ele mesmo, aos demais processos e ao sistema operacional. A maioria dos sistemas operacionais disponibiliza uma conta de acesso com todos estes privilégios disponíveis, com o propósito de o administrador gerenciar o sistema operacional. No sistema Unix há a conta de “root”, no MS Windows a conta de “administrador” e no OpenVMS a conta “system”.
Gerenciamento de Processos
Bloco de Controle do Processo:
O processo é implementado pelo SO através de uma estrutura de dados chamada bloco de controle do processo (Process Control Block – PCB). A partir do PCB, o sistema operacional mantém todas as informações sobre o contexto de hardware, contexto de software e espaço de endereçamento de cada processo.
Os PCBs de todos os processos ativos residem na memória principal em uma área exclusiva do sistema operacional. Podemos visualizar os processo no Gerenciador de Tarefas MS Windows e no ps (process status – comando) Linux.
Gerenciamento de Processos
Gerenciamento de Processos
Gerenciamento de Processos
Estados do Processo:
Execução (running): quando está sendo processados pela UCP. Em sistemas com múltiplos processadores, existe a possibilidade de mais de um processo ser executado ao mesmo tempo.
Pronto (ready): aguarda para ser executado.
Espera (wait): aguarda por algum evento externo ou por algum recurso para
prosseguir seu processamento. O SO organiza os vários processos no estado de espera também em listas encadeadas.
Criação (new): ocorre a partir do momento em que o SO adiciona um novo PCB à sua estrutura e aloca um espaço de endereçamento na memória para uso. 
Eliminação de Processo (Termino): No caso da eliminação de um processo todos os recursos associados ao processo são desalocados e o PCB eliminado pelo sistema operacional.
Mudanças de Estado do Processo: um processo muda de estado durante seu processamento em função de eventos originados por ele próprio (eventos voluntários) ou pelo sistema operacional (eventos involuntários). 
Gerenciamento de Processos
Gerenciamento de Processos
Mudanças de Estado do Processo:
Pronto p/ Execução: após a criação de um processo, o sistema coloca em uma lista de processos no estado de pronto, onde aguarda por uma oportunidade para ser executado. Cada SO tem sua política de escalonamento.
Execução p/ Espera: um processo passa para o estado de espera por eventos gerados pelo próprio processo como uma operação de E/S, ou eventos externos (suspensão pelo SO da execução do processo por um período de tempo).
Espera p/ Pronto: ocorre quando a operação solicitada é atendida ou o recurso esperado é concedido. Não há mudança de estado de espera para o estado de execução diretamente.
Execução p/ Pronto: ocorre por eventos gerados pelo sistema, como o término de uma fatia de tempo. Volta para a fila de pronto onde aguarda por uma nova oportunidade.
Um processo em estado de pronto ou espera pode não se encontrar na memória principal. Esta condição ocorre quando não há espaço suficiente para todos os processos na memória principal e parte do contexto do processo é levado para memória secundária. Essa técnica é conhecida como swapping, retira processos da memória principal (swap out) e os traz de volta (swap in). Neste caso, os processos em estado de espera e pronto podem estar residentes ou não residentes (outswapped) na memória principal.
Gerenciamento de Processos
Gerenciamento de Processos
Processo CPU-bound e I/O–bound:
Um processo é definido como CPU-bound (ligado à UCP) quando passar a maior parte do tempo no estado de execução, utilizando o processador, ou pronto. Esse tipo de processo realiza poucas operações de leitura e gravação, e é encontrado em aplicações científicas que efetuam muitos cálculos.
Um processo é classificado como I/O-bound (ligado à E/S) quando passa a maior parte do tempo no estado de espera, pois realiza um elevado número de operações de E/S. É encontrado em aplicações comerciais, que se baseiam em leitura, processamento e gravação. Os processos interativos também são bons exemplos, pela forma de comunicação entre o usuário e o sistema, normalmente lenta, devido à utilização de terminais.
Gerenciamento de Processos
Gerenciamento de Processos
Processos Foreground e Background:
Um processo sempre possui pelo menos dois canais de comunicação. Os canais de entrada (input) e saída (output) de dados podem estar associados a terminais, arquivos, impressoras e até mesmo a outros processos.
Um processo Foreground é aquele que permite a comunicação direta do usuário com o processo durante o seu processamento. Processamento interativo (mouse, teclado, monitor e etc).
Um processo Background é aquele onde não há comunicação com o usuário durante o seu processamento. O processamento do tipo batch é realizado através de processos background.
Gerenciamento de Processos
Gerenciamento de Processos
É possível associar o canal de saída de um processo ao canal de entrada de um outro processo. Neste caso dizemos que há um pipe ligando os dois processos. Se um processo A gera um listagem e o Processo B tem como função ordená-la, basta associar o canal de saída do processo A ao Canal de entrada do processo B.
Gerenciamento de Processos
Formas de Criação de Processos:
Login Interativo: No logon interativo o usuário, por intermédio de um terminal, fornece ao sistema um nome de identificação (username ou logon) e uma senha (password). Para cada usuário há um registro com informações, por exemplo, username, senhas, quotas e privilégios. Apenas o administrador pode excluir ou modificar as demais pastas de usuários. 
Via Linguagem de Comandos: O processo criado pode ser foreground ou background, dependendo do comando de criação utilizado.
Via Rotina do Sistema Operacional: Um processo pode ser criado a partir de qualquer programa executável com o uso de rotinas do SO. Por exemplo, “fork” no Unix e 	“CreateProcess” no MS Windows.
Gerenciamento de Processos
Gerenciamento de Processos
Processos Independentes, Subprocessos e Threads:
Processo independentes, subprocesso e threads são maneiras diferentes de implementar a concorrência dentro de uma aplicação. 
O uso de processo independentes é a maneira mais simples de implementar a concorrência em sistemas multiprogramáveis. A criação de um processos independente exige a alocação de um PCB, possuindo contextos de hardware, contextos de software e espaços de endereçamento próprios.
Subprocessos: são processos criados dentro de uma estrutura hierárquica. Neste modo, o processo criador é denominado processo-pai, enquanto o novo processo é chamado de subprocesso ou processo-filho. Caso um processo-pai deixe de existir, os subprocessos subordinados são automaticamente eliminados. Cada qual com seu próprio PCB, cada qual seu próprio contexto de hardware, contexto de software e espaço de endereçamento.
Gerenciamento de Processos
Subprocessos
Gerenciamento de Processos
Processos Independentes, Subprocessos e Threads:
Além da dependência hierárquica entre processos e subprocessos, uma outra característica neste tipo de implementação é que subprocessos podem compartilhar quotas com o processo-pai, ou seja, o processo-pai cede parte de suas quotas ao processo-filho.
Como desvantagens temos o consumo de tempo de UCP na alocação de recursos. No término dos processos, o SO dispensa tempo para desalocar recursos previamente alocados. Outro problema é a comunicação e a sincronização entre processos consideradas pouco eficiente, visto que cada processo possui seu próprio espaço de endereçamento.
Gerenciamento de Processos
Processos Independentes, Subprocessos e Threads:
O conceito de thread foi introduzido na tentativa de reduzir o tempo gasto em criação, eliminação e troca de contexto de processos nas aplicações concorrentes, bem como economizar recursos do SO como um todo. Em um ambiente multithread, um único processo pode suportar múltiplos threads, cada qual associado a uma parte do código da aplicação. Threads compartilham o processador da mesma maneira que um processo, ou seja, enquanto um thread espera por uma operação de E/S, outro thread pode ser executado.
Cada thread possui seu próprio contexto de hardware, porém compartilha o mesmo contexto de software e espaço de endereçamento com os demais threads do processo. O compartilhamento do espaço de endereçamento permite que a comunicação de threads dentro de um mesmo processo seja realizada de forma simples e rápida. 
Gerenciamento de Processos
Gerenciamento de Processos
Processos do SO:
O conceito de processos, além de estar associado a aplicação de usuários, pode também ser implementado na própria arquitetura do SO. Seguem alguns serviços que o SO pode implementar através de processos:
Auditoria e segurança;
Serviços de rede
Contabilização do uso de recursos
Contabilização de erros
Gerência de impressão
Gerência de Jobs batch
Temporização
Comunicação de eventos
Interface de comandos (shell)
Gerenciamento de Processos
Sinais: 
É um mecanismo que permite notificar processos de eventos gerados pelo SO, ou por outros processos. Possibilita a comunicação e sincronização entre processos. Um exemplo, seria quando um usuário utiliza o Ctrl+C para interromper a execução de um programa. O SO gera um sinal a partir da digitação destas teclas, sinalizando ao processo a ocorrência
do evento, em seguida ao sinal, uma rotina específica de tratamento é executada.
Podem ser utilizados em conjunto com temporizadores. Como exemplo, podemos citar a situação em que um processo deve ser avisado periodicamente para realizar alguma tarefa, como monitorar uma fila de pedidos. 
O sinal está para o processo assim como as interrupções e exceções estão para o SO.
Gerenciamento de Processos
Gerenciamento de Processos
Laboratório:
01 – Abre o Gerenciador de tarefas e abra o navegador, o bloco de notas, a calculadores, PROMPT DE COMANDOS e identifique os processos e seu PID.
02 – No cmd realize um “ipconfig /all ” e pingar o gateway da rede.
03 – Verifique o subprocesso criado a partir desse comando. Verificar em detalhes se alterar o PID do cmd.
04 – Finalize o comando via “Crtl+c” verifique como fica em “Processos”.
05 – Abre várias janelas do navegador. Verifique o PID e se aumenta o processamento do processador ou memória.
Gerenciamento de Processos
Laboratório:
06 – De o comando “chkdsk”. Verifique se solicita elevação. 
07 – Abra o terminal com elevação do “administrador”. De o comando chkdsk. Verifique qual o PID do comando. Verifique o processamento em Desempenho.
08 – Abra o terminal sem elevação. Digite “date”. Verifique a mensagem.
09 – Abra o terminal com elevação se possível. Digite “date”. Observe o que ocorre.
Gerenciamento de Processos
Questões:
01 - Defina o conceito de processo.
02 – Por que o conceito de processo é tão importante no projeto de sistemas multiprogramáveis?
03 – Quais partes compõem um processo?
04 – O que é o contexto de hardware de um processo e como é a implementação da troca de contexto?
05 – Qual a função do contexto de software? Exemplifique cada grupo de informação.
06 – O que é o espaço de endereçamento de um processo?
Gerenciamento de Processos
Questões:
07 – Discorra sobre operações de swapping para processo.
08 – Defina os cinco estados possíveis de um processo. Discorra sobra cada um deles. Dê exemplos de mudanças de contexto.
09 – Discorra sobre processos multithreads, subprocessos e processos independentes.
10 – Discorra sobre processos foreground e background.
11 – Dê exemplos de aplicações CPU-bound e I/O-bound.
12 – Discorra sobre sinal e como ele funciona.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando