Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 Aula 04 Capítulo 4 – Gerência de Processos • 4.1 Conceito de Processo • 4.2 Escalonamento de Processos • 4.3 Opera ões sobre Processos • 4.4 Processos cooperativos • 4.5 Comunica ão entre Processos Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.1 Conceito de Processo • Um sistema operacional executa uma variedade de programas: – Sistemas Batch – tarefas (jobs). – Sistemas de tempo compartilhado – programas de usuário ou tarefas. • O livro texto usa os termos tarefa e processo quase que indistintamente, embora é preferível o termo processo. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.1.1 O Processo • Processo – um programa em execução, que precisará de certos recursos para realizar sua tarefa. • Recursos: tempo de CPU, memória, arquivos e dispositivos de E/S. • Esses recursos são alocados ao processo quando ele é criado ou enquanto está sendo executado. • A execução do processo precisa ocorrer de maneira sequencial. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.1.1 O Processo • Um processo é mais do que um código de programa, que às vezes é conhecido como seção de texto. Ele inclui também: – Contador de programa – que representa a atividade atual; – Pilha – que contém o dados temporários (como parâmetros de métodos, endereços de retorno e variáveis locais); – Seção de dados – que contém variáveis globais. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.1.2 Estado do Processo • Conforme um processo é executado, ele muda de estado. Cada processo pode estar em um dos seguintes estados: – Novo (New): O processo está sendo criado. – Executando (Running): As instruções estão sendo executadas. – Esperando (Wainting): O processo está esperando que ocorra algum evento. – Pronto (Ready): O processo está esperando para ser atribuído a um processador. – Terminado (Terminated): O processo terminou sua execução. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.1.2 Estado do Processo Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.1.3 Bloco de Controle de Processo (Process Control Block) Contém informações associadas a cada processo: – Estado do processo: pode ser novo, pronto, executando, esperando e terminado. – Contador de programa: indica o endereço da próxima instrução a ser executada para esse processo. – Registradores da CPU: incluem acumuladores, registradores de índice, ponteiros de pilha e registradores de uso geral. – Informação de escalonamento de CPU: inclui uma prioridade de processo, ponteiros para filas de escalonamento e quaisquer outros parâmetros de escalonamento. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.1.3 Bloco de Controle de Processo (Process Control Block) – Informação de gerenciamento de memória: inclui dados como o valor dos registradores base e limite, as tabelas de páginas ou tabelas de segmento. – Informação contábil: inclui a quantidade de CPU e tempo de leitura utilizado, limites de tempo, número de conta, números de tarefa ou processo. – Informação de status de E/S: inclui a lista de dispositivos de E/S alocados ao processo, um lista de arquivos abertos e assim por diante. O PCB serve simplesmente como repositório de informações que podem variar de processo a processo. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.1.3 Bloco de Controle de Processo (Process Control Block - PCB) Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.1.3 Bloco de Controle de Processo (Process Control Block - PCB) Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.2 Escalonamento de Processos • O objetivo da multiprogramação é ter processos em execução o tempo todo, para maximizar a utilização da CPU. • O objetivo do tempo compartilhado á alternar a CPU entre processos de forma tão frequente que os usuários possam interagir com cada programa durante sua execução. • Para atender a esses objetivos, é preciso ter um escalonador de processos. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.2.1 Filas de Escalonamento • A medida que os processos entram no sistema, são colocados numa fila de tarefas. • Fila de tarefas (Job Queue) – conjunto de todos os processos no sistema. • Fila de prontos (Ready Queue) – conjunto de todos os processos residindo na memória principal que estão prontos e esperando para serem executados. • Fila de dispositivo (Device Queue) – conjunto dos processos esperando um dispositivo de E/S. • Migração de processo entre as diversas filas. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.2.1 Filas de Escalonamento Um processo novo é inicialmente colocado na fila de prontos. Ele espera lá até que seja selecionado para execução, ou despachado. Quando o processo recebe tempo de CPU e está executando, pode ocorrer um dentre vários eventos: O processo poderia emitir uma requisição de E/S e depois ser colocado em uma fila de E/S. O processo poderia criar um novo subprocesso e esperar pelo término do subprocesso. O processo poderia ser removido forçadamente da CPU, como resultado de uma interrupção, e ser colocado de volta na fila de prontos. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.2.2 Escalonadores • Escalonador de longo prazo (ou escalonador de tarefas) – seleciona os processos que devem ser trazidos para a fila de prontos. • Escalonador de curto prazo (ou escalonador de CPU) – seleciona os processos que devem ser executados em seguida e aloca a CPU. • Escalonador de médio prazo – realiza operações de swapping (troca). Ele troca processos que estão na memória, enviando para o disco e depois buscando do ponto em que havia sido suspenso. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.2.2 Escalonadores • O escalonador de curto prazo é chamado frequentemente (milissegundos) – precisa ser veloz • O escalonador de médio prazo é chamado raramente (segundos ou minutos) – pode ser lento • O escalonador de longo prazo controla o grau de multiprogramação. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.2.2 Escalonadores • Os processos podem ser descritos como: – Processos I/O-Bound – é aquele que gasta mais do seu tempo realizando E/S do que gasta realizando cálculos. – Processos CPU-Bound – é o contrário do I/O-Bound, gera requisições de E/S com pouca frequência, usando mais do seu tempo realizando cálculos. • É importante que o escalonador de longo prazo selecione um bom mix de processos, entre processos I/O-Bound e processos CPU-Bound. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.2.2 Escalonadores Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.2.3 Troca de Contexto • Troca de contexto é a passagem da CPU para outro processo, isso exige salvar o estado do processo antigo e carregar o estado salvo do novo processo. • Quando ocorre uma troca de contexto, o kernel salva o contexto do processo antigo em seu PCB e carrega o contexto salvo do novo processo programado para execução. Sistemas Operacionaiscom Java Silberschatz, Galvin e Gagne (c) 2004 4.2.3 Troca de Contexto • O tempo da troca de contexto é puramente custo adicional, pois o sistema não realiza qualquer trabalho útil durante a troca. • A velocidade varia de uma máquina para outra, dependendo da velocidade da memória, do número de registradores que precisam ser copiados e da existência de instruções especiais. • Os tempos de troca de contexto dependem bastante do suporte do hardware. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.2.3 Troca de Contexto Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.3 Operações sobre Processo • Os processos na maioria dos sistemas podem ser executados de forma concorrente e podem ser criados e removidos dinamicamente. • Assim, esses sistemas operacionais precisam oferecer um mecanismo para a criação e o término de processo. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.3.1 Criação de Processo • Um processo pode gerar diversos novos processos, por meio de uma chamada de sistema “criar processo”, no decorrer da sua execução. • O processo que criou novos processos é chamado de processo pai, e os novos processos são considerados filhos desse processo. • Cada um desses novos processos pode, por sua vez, criar outros processos, formando uma árvore de processos. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.3.1 Criação de Processo • Compartilhamento de recursos: – Pai e filhos compartilham todos os recursos. – Filhos compartilham um subconjunto dos recursos do pai. – Pai e filho não compartilham recurso algum. • Execução: – Pai e filhos são executados concorrentemente. – Pai espera até que os filhos terminem. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.3.1 Criação de Processo • Espa o de endere os: – Processo filho é uma duplicata do processo pai. – Processo filho tem um novo programa carregado nele. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.3.2 Término de processo • Um processo termina quando termina de executar sua instrução final e pede ao sistema operacional para removê-lo usando a chamada de sistema exit(). – Envia os dados de saída do filho para o pai através da chamada de sistema wait(). – Os recursos do processo são desalocados pelo sistema operacional. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.3.2 Término de processo • Um processo pode causar o término de outro processo por meio de uma chamada de sistema abort(). • O processo pai pode terminar a execução de um de seus processos filhos por diversos motivos: – O filho excedeu os recursos alocados a ele. – A tarefa atribuída ao filho não é mais necessária. – O pai está terminando, e o SO não permitem que o filho continue se seu pai terminar. Todos os filhos terminaram – término em cascata. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.4 Processos Cooperativos • Os processos concorrentes em execução no SO podem ser processos independentes ou processos cooperativos. • Um processo independente não pode afetar ou ser afetado pela execução de outro processo no sistema. • Um processo cooperativo pode afetar ou ser afetado pela execução de outro processo no sistema. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.4 Processos Cooperativos • Vantagens da cooperação de processos: – Compartilhamento de informações: diversos usuários podem estar interessados na mesma informação. – Agilidade na computação: para uma tarefa ser executada rapidamente, precisamos dividi-la em subtarefas, cada uma sendo executada em paralelo (mas é preciso ter elementos pra isso). – Modularidade: o sistema é criado de forma modular, dividindo as funções do sistema em processos separados. – Conveniência: poder trabalhar em muitas tarefas ao mesmo tempo. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.4 Processos Cooperativos • A execução simultânea que exige cooperação entre processos exige mecanismos para permitir que os processos se comuniquem entre si e sincronizem suas ações. • Surge então o problema produtor-consumidor, que é um paradigma comum para processos cooperativos. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.4 Processos Cooperativos • Um processo produtor produz informações consumidas por um processo consumidor. • Para permitir que processos produtor e consumidor sejam executados simultaneamente, precisamos ter à disposição um buffer de itens que possa ser preenchido pelo produtor e esvaziado pelo consumidor. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.4 Processos Cooperativos • O produtor e o consumidor precisam estar sincronizados, de modo que o consumidor não tente consumir um item que ainda não foi produzido. • A solução é implementar o buffer: – O buffer ilimitado (unbounded-buffer) não coloca qualquer limite prático no tamanho do buffer. – O buffer limitado (bounded-buffer) considera que existe um tamanho de buffer fixo. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.5 Comunicação entre processos (Interprocess Communication - IPC) • Outra maneira para que os processos cooperativos se comuniquem entre si é a comunicação entre processos - IPC. • IPC oferece um mecanismo para que os processos se comuniquem e sincronizem suas ações sem compartilhar o mesmo espaço de endereços. • IPC é útil em um ambiente distribuído. Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 4.5 Comunicação entre processos (Interprocess Communication - IPC) • IPC aborda um sistema de mensagens: – Os processos se comunicam entre si sem recorrer às variáveis compartilhadas. • O recurso de IPC oferece duas operações: – send(mensagem) – receive(mensagem) Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 • O IPC cuida não somente da comunicação, mas também do sincronismo. • A troca de mensagens pode ser com bloqueio ou sem bloqueio • Com bloqueio síncrona: – No send com bloqueio, o processo emissor bloqueado at que a mensagem seja recebida pelo processo receptor. – No receive com bloqueio, o processo receptor bloqueado at que uma mensagem esteja dispon vel. 4.5 Comunicação entre processos (Interprocess Communication - IPC) Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2004 • Sem bloqueio assíncrona: – No send sem bloqueio, o processo emissor envia a mensagem e continua sua operação. – No receive sem bloqueio, o processo receptor recebe uma mensagem v lida ou uma mensagem nula. 4.5 Comunicação entre processos (Interprocess Communication - IPC) Sistemas Operacionais com Java Referências • Capítulo 4 da referência abaixo: – SILBERSCHATZ, ABRAHAM; GAGNE, GREG; GALVIN, PETER BAES. Sistemas operacionais: com java. . Rio de Janeiro: Elsevier, 2004.
Compartilhar