Prévia do material em texto
Sistemas Operacionais Processos Prof. Sílvio Fernandes UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO Exemplo Análogo Imagine um cientista da computação preparando um bolo, ele tem uma receita e uma cozinha bem suprida com todos os ingrediente 2 Exemplo Análogo Enquanto prepara o bolo o filho do cientista chega chorando dizendo que uma abelha o picou 3 Exemplo Análogo Então o cientista registra onde ele estava na receita, busca um livro de primeiros socorros e começa a seguir as instruções 4 Exemplo Análogo Fazendo analogia com os computadores... O que é a receita? E o cientista? Os ingredientes? Atender o filho? Livro de primeiro socorros? 5 Exemplo Análogo Nessa analogia a receita é o programa (algoritmo expresso por uma notação adequada) O cientista é o processador (CPU) Os ingredientes são os dados de entrada Atender o filho é a alternância de um processo (assar o bolo) para um outro de mais alta prioridade (fornecer cuidados médicos) Cada um em um programa diferente (receita X livro de primeiro socorros) Quando a picada da abelha for tratada ele voltará ao bolo do ponto em que parou 6 Processos Processos são uma das mais antigas e importantes abstrações que o SO oferece Eles mantêm a capacidade de operações (pseudo)concorrentes, mesmo quando há apenas uma CPU disponível Eles transformam uma única CPU em múltiplas CPUs virtuais Sem a abstração de processos, a ciência da computação moderna não existiria 7 Processos O conceito mais central em qualquer SO Uma abstração de um programa em execução Em um sistema multiprogramado, a CPU salta de programa para programa, executando cada um deles por dezenas ou centenas de milissegundos, dando a ilusão de paralelismo (pseudoparalelismo) Todos os softwares que podem executar são organizados em processos sequenciais 8 Processos Todos os computadores modernos são capazes de fazer várias coisas ao mesmo tempo EX: servidor web Solicitações de páginas chegam a toda hora Então ele verifica se a pág. solicitada está em cache Se estiver, é enviada de volta; se não, uma solicitação de acesso ao disco é iniciada para buscá- la 9 Processos EX: servidor web Do ponto de vista da CPU, as solicitação de acesso ao disco duram uma eternidade Enquanto espera que ela seja concluída, muitas outras solicitações podem chegar 10 Processos Em sistemas multiprogramados, a CPU chaveia de programa para programa, executando cada um por dezenas ou centenas de milissegundos Nesse contexto, fala-se em pseudoparalelismo, para contrastar com o verdadeiro paralelismo de hardware dos sistemas multiprocessadores (com 2 ou mais CPUs) 11 Modelo de Processos Um processo é apenas um programa em execução, acompanhado dos valores atuais do contador de programa, dos registradores e das variáveis Todos os software que podem ser executados em um computador (inclusive, algumas vezes o próprio SO) são organizados em processos sequenciais, ou simplesmente processos 12 Modelo de Processos Cada processo tem sua própria CPU virtual, na verdade a CPU troca, a todo momento, de um processo para outro (multiprogramação) (a) Multiprogramação de 4 programas; (b) Modelo conceitual de 4 processos independentes; (c) Somente 1 programa ativo em cada momento 13 Modelo de Processos Cada processo com seu próprio controle de fluxo (isto é, seu próprio PC lógico) Mas só há 1 PC físico 14 Criação de Processos Há 4 eventos principais que fazem com que processos sejam criados 1. Início do sistema 2. Execução de uma chamada ao sistema de criação por um processo em execução 3. Uma requisição do usuário para criar um novo processo 4. Início de uma tarefa em lote (batch job) 15 Criação de Processos Quando um SO é carregado, em geral criam- se vários processos Alguns em 1º plano (interagem com usuários), outros em 2º plano (background) que realizam alguma função específica (daemons) No Unix e no MINIX o programa ps relaciona os programas em execução, assim como o CTRL+ALT+DEL no Windows Experimente no MINIX ps -ax 16 Criação de Processos Muitas vezes um processo em execução emitirá chamadas ao sistema para criar um ou mais novos processos para ajudá-lo em seu trabalho Em sistemas interativos, os usuários podem iniciar um programa digitando um comando ou clicando em um ícone Em computadores de grande porte o SO cria um novo processo quando julgar existir recursos para executar um outro job, dos jobs em lote 17 Criação de Processos Tecnicamente, em todos os casos, um novo processo é criado por um processo existente executando uma chamada ao sistema No Unix e MINIX há somente 1 chamada ao sistema para criar um novo processo: fork Cria uma cópia idêntica do pai, mesma imagem de memória, cadeias de caracteres, arquivos abertos Depois muda a imagem de memória através de execve No Windows também: CreateProcess (possui 10 parâmetros) 18 Término de Processos Normalmente há 4 razões 1. Saída normal (voluntária) 2. Saída por erro (voluntária) 3. Erro fatal (involuntário) 4. Cancelamento por um outro processo (involuntário) 1. Na maioria das vezes, os processos terminam porque fizeram seu trabalho. – Chamadas ao sistema • Unix e MINIX: exit • Windows: ExitProcess 2. O processo descobre um erro fatal – Ex: tentar compilar um arquivo que não existe 19 Término de Processos 3. Erro de programa – Instrução ilegal, referência à memória inexistente ou divisão por zero – No MINIX um processo pode dizer ao SO que deseja tratar certos erros sozinho 4. Um processo executa uma chamada ao sistema para cancelar outro processo quando se tem autorização – No Unix e MINIX: kill – No Windows: TerminateProcess Em alguns sistema, quando um processo termina, todos os outros que ele criou são eliminados, mas no MINIX não funciona assim 20 Hierarquia de processos Em alguns sistemas, quando um processo cria outro, o pai e o filho continuam, de certa maneira, associados No MINIX, um processo, todos os seus filhos e descendentes podem formar um grupo de processos Quando um usuário envia um sinal de teclado, o sinal é entregue ao grupo, e cada processo decide o que fazer com ele No Windows não existe hierarquia de processos. Quando um processo é criado o pai ainda tem um identificador (handle) que pode controlar o filho 21 Estados de processos Os três estados de um processo 1. Em Execução (realmente usando a CPU naquele instante) 2. Pronto (executável; temporariamente parado para dar lugar a outro processo) 3. Bloqueado (incapaz de executar enquanto um evento externo não ocorrer) Um processo bloqueia por não poder prosseguir ou porque o SO decidiu alocar a CPU para outro processo por algum tempo 22 Estados de processos Logicamente 1 e 2 são similares O caso 3 é diferente pois o processo não pode executar, mesmo que a CPU não tenha nada para fazer 23 Estados de processos A transição 1 ocorre quando um processo descobre que ele não pode prosseguir As transições 2 e 3 são causadas pelo escalonador de processos sem que o processo saiba disso A transição 4 ocorre quando acontece um evento externo pelo qual o processo estava aguardando 24Estados de processos O nível mais baixo do SO é o escalonador Todo o tratamento de interrupção e detalhes sobre a inicialização e o bloqueio de processos estão ocultos no escalonador 25 Estados de processos O restante do SO é estruturado elegantemente na forma de processos Esse modelo é utilizado no MINIX O escalonador não é o único elemento na camada inferior Também há suporte para tratamento de interrupções Comunicação entre processos 26 Implementação de processos Para implementar o modelo de processos, o SO mantém uma tabela de processos, com uma entrada para cada processo Essa entrada também pode ser chamada de blocos de controle de processo (PCB – process control block) Essa tabela mantém informações sobre o estado dos processos (registradores, pilha, memória alocada, arquivos abertos, contabilidade, escalonamento etc.) 27 Implementação de processos Campos de entrada de uma tabela de processos 28 Implementação de processos Em uma máquina com 1 CPU e muitos dispositivos de E/S, há uma locação de memória para cada classe de dispositivo (vetor de interrupções) Esse vetor contem os endereços dos procedimentos dos serviços de interrupção Quando acontece uma interrupção, o hardware de interrupção coloca na pilha atual as informações do processo interrompido, daí por diante é papel do software fazer o procedimento de serviços da interrupção 29 Implementação de processos Esqueleto do que o nível mais baixo do SO faz quando ocorre uma interrupção 30 Implementação de processos Processos podem ser classificados como CPU-bound: quando passa a maior parte do tempo no estado de execução, utilizando o processador, ou pronto I/O-bound: passa maior parte do tempo em espera 31 (a) CPU-bound tempo tempo E/ S E/ S UCP UCP (b) I/ O-bound Modelagem de Multiprogramação O uso da multiprogramação pode melhorar a utilização da CPU De mode geral, se o processo médio computa apenas durante 20% do tempo em que está na memória, com 5 processos na mem. a cada vez, a CPU deveria estar ocupada o tempo todo? Não exatamente, este modelo é otimista e pouco realista 32 Modelagem de Multiprogramação Suponha que um processo gaste uma fração p de seu tempo esperando E/S Com n processos simultâneos na memória, a probabilidade dos n processos estarem esperando E/S é pn Utilização de CPU = 1 – pn 33 Modelagem de Multiprogramação Se os processos gastarem 80% de seus tempos esperando E/S, no mínimo 10 processos deveriam estar simultaneamente na memória para que o grau de ociosidade da CPU pudesse se manter abaixo de 10% 34 Modelagem de Multiprogramação Suponha que um computador tenha 512 MB de memória, com um SO que ocupa 128 MB e cada processo também empregue 128 MB. Esses tamanhos possibilitam que 3 programas estejam na memória simultaneamente Considerando-se, em média, um processo passa 80% do seu tempo em espera por E/S Tem-se utilização de CPU = 1- 0,83 = 49% 35 Modelagem de Multiprogramação A adição de 512 MB de memória permite aumentar o grau de multiprogramação de 3 para 7, aumentando a utilização de CPU para 79% (aumento de 30%) – bom investimento Adicionando outros 512 MB a utilização de CPU aumenta apenas de 79% para 91% (ganho de 12%) – não tão bom 36 Exercícios 1. Escreva o programa a seguir, compile e execute O que será impresso? Por quê? 37 #include <stdio> void main(){ p = fork(); if (p == 0) printf("FILHO\n"); else printf("PAI\n"); } Exercícios 2. Escreva o programa a seguir, compile e execute O que será impresso? Por quê? 38 #include <stdio> void main(){ int x, y, z; x = fork(); y = fork(); z = fork(); printf(“Ola... \n"); sleep(); } Exercícios 3. Escreva o programa a seguir, compile e execute O que será impresso? Por quê? 39 #include <stdio.h> #include <unistd.h> int main() { int i; for (i=0; i<2; ++i) { fork(); printf("%d",i); } return(0); } Respostas do Exercícios 1. Será impresso: Filho e Pai Porque o processo pai cria um processo filho que também imprime 2. Serão impressos 8 “olá” Porque com o 1º fork ficam 2 processo, os quais cada um executará o 2º fork resultando em 4 processos. Os 4 processos executam o 3º fork resultando em 8 Rode o comando “ps“ e veja quanto processos estão rodando Em seguida use o comando “kill PID” para matar cada processo 3. Será impresso: 0 1 0 1 0 1 0 1 A explicação tem a ver com as 2 outras respostas 40 Referências TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3ª Ed., Prentice Hall, 2009. TANENBAUM, Andrew S.; WOODHULL, Albert S. Sistemas Operacionais: Projeto e Implementação. 3ª Ed., Prentice Hall, 2008. MACHADO, Francis B.; MAIA, Luiz P. Arquitetura de Sistemas Operacionais. 3a. Edição. LTC, 2004. DEITEL, Harvey; DEITEL, Pau; STEINBUHLER, Kate. Sistemas Operacionais. 3ª. Edição. Prentice Hall, 2005 SILBERSCHATZ, Abraham; GALVIN, Peter; GAGNE, Greg. Fundamentos de Sistemas Operacionais. 6ª. Edição. LTC, 2004. 41