Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno
Sumário Representação e controle de processos pelo SO Estrutura de dados Formas de uso da estrutura pelo SO Threads
Requisitos de um SO Tarefa Fundamental Gerenciamento de tarefas/processos O SO deve: Entrelaçar a execução de múltiplos processos Alocar recursos para processos, e proteger recursos entre processos Habilitar a troca de informações entre processos Permitir a sincronização entre processos.
Conceitos já explorados Computadores consistem de um conjunto de recursos de hardware Aplicações são desenvolvidas para realizar alguma tarefa específica Não é eficiente a escrita de aplicações específicas para uma dada plataforma de hardware SO prove interface a serem exploradas pelas aplicações
Gerenciamento de processos Recursos disponíveis para todas aplicações Processador é compartilhado entre todas aplicações em execução O processador e os dispositivos de ES devem ser utilizados de forma eficiente
Processo Mas o que é mesmo um processo? Uma instância de um dado programa em execução Elementos básicos de um processo Código (instruções) Conjunto de dados (variáveis) Atributos que descrevem o estado do processo Pronto para execução (ready), execuntando (running), suspenso (blocked)
Processo em execução Elementos disponíveis por processo quando em execução Identificador Estado Prioridade Program counter (PC) Ponteiro para a memória Dados de contexto Informação do estado da ES Processos gerenciados a partir de uma tabela de processos Entradas definida pelos blocos de controle de processo
Bloco de controle do processo Contém os elementos do processo Identificação, estado, codigo, dados, pilhas,... Criado e gerenciado pelo SO Processos de usuário não devem ter acesso Permite o suporte para múltiplos processos Cada bloco descreve espaço de endereçamento
Trace de um processo O comportamento de um processo individual Observado a partir da seqüência de instruções executados por este Sequencia define uma lista de instruções Lista é chamada Trace
Execução de processos Considere Três processos em execução Todos estão em memória Dispatcher está presente na memória
Trace visto dos processos Cada processo roda até sua execução final
Trace visto do processador Timeout I/O
Sumário Representação e controle de processos pelo SO Estrutura de dados Objetivo: gerenciamento dos processos Formas de uso da estrutura pelo SO Threads
Processos e recursos
Estruturas de controle do SO Para o SO gerenciar processos e recursos Deve haver informações sobre o estado corrente Processo Recurso Tabelas Construídas para cada entidade que o SO gerencia
Tabelas de controle do SO
Tabelas de memória Usado para manter o rastro de uso das memórias Memória principal Memória secundária. Deve incluir informações tais como: Alocação de memória principal/secundária para processos Atributos de proteção para acesso compartilhado a regiões de memória Informações necessárias para gerenciamento de memória virtual
Tabelas de ES Usadas para gerenciar dispositivos de ES O SO precisa saber: Se o dispositivo está disponível ou associado a algum processo O estado de operação do dispositivo de ES A localização da região da memória principal usada para transferência entre origem e destino da ES
Tabela de arquivos Tabela prove informações sobre A existência de arquivos A localização deste na memória secundária O estado atual (e.g. se aberto ou fechado) Tabela muito utilizada principalmente pelo SO para gerenciamento do sistema de arquivos
Tabela de processos Utilizado pelo OS para gerência dos processos Contém os seguinte detalhes Estado corrente Identificação Localização na memória Etc Bloco de controle do processo Armazena a imagem do processo Código, dado, pilha e atributos
Atributos do processo Grupos de informação do bloco de controle do processo: Identificação do processo Cada processo recebe um valor numérico único Estado do processador Conteúdo dos registradores Registradores visíveis pelo programador Registradores de controle e estado Ponteiros de pilha Palavra de estado do processo Informações de estado (e.g. Registrador EFLAGS do Pentium) Controle do processo Informação adicional necessária pelo OS para controlar e coordenar os processos Estado e escalonamento, estrutura de dado, comunicação entre processos,...
Sumário Representação e controle de processos pelo SO Estrutura de dados Formas de uso da estrutura pelo SO Threads
Modos de execução A maioria dos processadores Dá suporte a pelo menos dois modos execução Modo usuário Modo com menos privilégios Programas dos usuários normalmente executado neste modo Modo sistema Modo com mais privilégios Provê segurança no acesso a recursos de mais baixo nível E.g. Manuseio da tabela de processos Kernel/Núcleo do SO
Criação de um processo Passos seguindo pelo OS para a criação de um processo Associar um identificador único a um processo Alocar espaço em memória para o processo Gerar a configuração inicial (inicialização) do bloco de controle do processo Configurar as ligações necessárias E.g. Manutenção das tabelas de processos para redefinição de estados Cria ou expande outras estruturas de dado
Troca entre processos Questões de projeto que surgem Que eventos disparam a troca de um processo? Distinção entre troca de modo e de processo. O que o OS deve ser realizado com as estruturas de dados sob seu controle para realizar a troca de processo?
Troca entre processos Troca entre processo Pode ocorre a qualquer momento Realizado pelo SO SO deve ter ganho controle do processor Alguns possíveis evento que dêem controle ao SO são: Mecanismo Causa Uso Interrupção Trap Externa à execução da instrução atual Associada à execução da instrução atual Reação a um evento externo assíncrono Tratamento de um erro ou de uma condição de exceção Chamada de sistema Requisição explícita Chamada a uma função do sistema operacional
Troca entre processo Passos para a troca de um processo: 1. Salvamento de contexto 1. Dispachter é chamado para realizar a operação 2. Atualização do bloco de controle do processo em remoção 1. Salvamento das principais informações para retomada: e.g. PC e registradores visíveis pelo programador 3. Deslocamento do bloco de controle do processo para a fila apropriada de acordo com o novo estado 1. Bloqueado ou pronto, dependendo do motivo da troca 4. Seleção de um novo processo a ser executado 1. Execução do algoritmo de escalonamento 5. Atualização do bloco de controle do processo selecionado 1. Mudança do estado 6. Atualização da estrutura de gerenciamento da memória 1. Atualização dos regs para código, dado, pilha 7. Restauração de contexto do processo selecionado 1. Atualização dos regs do processador para retomada
E o SO, ele também é um processo? Se o SO é apenas uma coleção de programas e se ele é executado pelo processador tanto quanto os demais programas, o SO é um processo? Se é verdadeira a afirmação, como ele é controlado? Quem ou o que o controla?
Execução do SO Formas de execução: Non-Kernel Junto com processos do usuário Baseado em processos
Execução Non-Kernel Executa o kernel fora de qualquer processo O conceito de processo aplicado apenas em programa de usuário Código do SO é executado como uma entidade separada que opera em modo privilegiado
Junto com processo do usuário OS dentro do contexto de um processo de usuário Não precisa trocar de processo para executar a rotina do SO
Baseado em processos Implementa o SO como uma coleção de processos
Sumário Representação e controle de processos pelo SO Estrutura de dados Formas de uso da estrutura pelo SO Threads
Processos e Threads Processos tem duas características: Propriedade de recursos Processo inclui um espaço de endereçamento virtual para manter a imagem do processo Escalonamento / execução segue uma execução que pode ser entrelaçada com outros processos Threads x Processo A unidade em disparo (dispatching unit) é referida como Thread ou processo leve A unidade de proprietária de recurso é referida como processo ou tarefa
Multithreading Habilidade do SO em dar suporte a múltiplo caminhos de execução de forma concorrente em um mesmo processo
Thread única / múltiplas MS-DOS suportava apenas um processo composto de uma única thread. Alguns sistemas UNIX, suportam múltiplos processos de usuário, mas apenas uma thread por processo Ambiente Java run-time suporta um único processo com múltiplas threads Múltiplos processos e múltiplas threads podem ser encontradas em SOs tais como Windows, Solaris e algumas versões modernas do UNIX
Processos Um espaço virtual contém a imagem do processo Acesso protegido a Processadores, Outros processo, Arquivos, Recursos de ES
Thread(s) em um processo Cada thread tem Um estado de execução (running, ready, etc.) Contexto está salvo quando não está em execução (running) Uma pilha de execução Algumas variáveis locais por thread Acesso a memória e recursos de seu processo Compartilhada entre todas threads de um processo Thread pode ser vista como um programa rodando com seu próprio program counter, mas dentro de um processo
Threads x Processos
4 0 Benefício de emprego de threads Menor tempo de criação quando comparado a processos Menos tempo para terminar uma thread do que um processo Troca entre duas threads leva menos tempo Threads podem se comunicar sem invocar o kernel
Threads Ações afetam as threads de um dado processo O SO deve gerenciar isto no nível de processo. Exemplos: Suspender um processo envolve suspender todas threads deste processo Término de um processo exige o término de todas threads do processo Atividades similares a processo Threads tem estados de execução Podem sincronizar com outra
Estados de execução Estados associados com threads Geração (Spawn) Bloqueio Desbloqueio Término Desaloca o registrador de contexto e pilhas