Post on 08-Jul-2020
Sistemas Operacionais
Gerência de processosControle e descrição de processos
Edson Morenoedson.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 tarefaespecí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
TimeoutI/O
TimeoutTimeout
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 Externa à execução da
instrução atual
Reação a um evento externo assíncrono
Trap Associada à execução
da instrução atual
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 contexto1. Dispachter é chamado para realizar a operação
2. Atualização do bloco de controle do processo em remoção1. 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 filaapropriada de acordo com o novo estado
1. Bloqueado ou pronto, dependendo do motivo da troca
4. Seleção de um novo processo a ser executado1. Execução do algoritmo de escalonamento
5. Atualização do bloco de controle do processo selecionado1. Mudança do estado
6. Atualização da estrutura de gerenciamento da memória1. Atualização dos regs para código, dado, pilha
7. Restauração de contexto do processo selecionado1. 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 quepode 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, suportammúltiplos processos de usuário, masapenas uma thread por processo
Ambiente Java run-time suporta um únicoprocesso com múltiplas threads
Múltiplos processos e múltiplas threads podem ser encontradas em SOs tais comoWindows, Solaris e algumas versõesmodernas 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 seupróprio program counter, mas dentro de um processo
Threads x Processos
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
4
0
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