INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 08. Conceitos sobre processos. Modelos de processos, BCP, contextos, estados de processos.

Documentos relacionados
Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios. Aula 06.

Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais I

Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais. Processos e Threads

Sistemas Operacionais

Sistemas Operacionais. Processos IC - UFF

14/05/2017. Conceitos de Processos. Conceitos de Processos. Conceito de processo

Processo. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Processos. Prof. Gustavo Leitão

Davidson Rodrigo Boccardo

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 09. Escalonadores. Conceito, escalonamento, filas de escalonamento e tipos de escalonadores.

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Sistemas Operacionais. Capítulo 5 Processos

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 2. Gerência de Processos

SISTEMAS OPERACIONAIS

SOP - TADS Processos. Revisão Ultima aula

Prof. Kleber R. Rovai

Processos. Processos e Recursos (1) Tabelas de Controle do S.O. Processos e Recursos (2)

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13

Sistemas Operacionais. Conceito de Processos

Sistemas Operacionais

Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos

Processos. Conceitos Básicos

SISTEMAS OPERACIONAIS

Sistemas Operacionais

Notas da Aula 7 - Fundamentos de Sistemas Operacionais

Processos. Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa. Fernando Ramos, Nuno Neves, Sistemas Operativos,

Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia (Material Adaptado)

Técnicas Avançadas de Programação

Disciplina: Sistemas Operacionais

Sistema Operacional. Escola de Ciências e Tecnologia ECT1103 INFORMÁTICA FUNDAMENTAL UFRN

SISTEMAS OPERACIONAIS. TÁSSIO JOSÉ GONÇALVES GOMES

Sistemas Operacionais. Gerência de Processador

Sistemas Operacionais - UCSAL Professor : Marco Antônio C. Câmara Primeira Lista de Exercícios

Estruturas de Sistemas Operacionais

Unix: Processos e o Kernel. Sistemas Operacionais

Sistemas de Computação. Processos e escalonamento

Sistemas Operacionais. Interrupção e Exceção

TAREFAS IMPLEMENTAÇÃO DE TAREFAS AULA 06 Sistemas Operacionais Gil Eduardo de Andrade

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 10. Operações nos processos. Processos cooperativos, comunicação entre processos.

Arquitetura de Sistemas Operativos

Algoritmos e Lógica de Programação Sistemas Operacionais

Programação de Sistemas em Tempo Real

Notas da Aula 2 - Fundamentos de Sistemas Operacionais

Conceito de Processo. Estados de Processos. Diagrama de Estados de Processos

Estrutura dos Sistemas Operacionais. Sérgio Portari Júnior

Aula 04. Capítulo 3 Gerência de Processos. 3.1 Conceito de Processo. 3.2 Escalonamento de Processos. 3.3 Opera ões sobre Processos

Questões de Múltipla escolha

INE 5645 Programação Paralela e Distribuída

Sistemas Operacionais. Prof. Fabio Augusto Oliveira

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

ENADE 2011 SISTEMAS OPERACIONAIS

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

Concorrência em Processos

Conceitos básicos e serviços dos Sistemas Operacionais

ARQUITETURA DE COMPUTADORES

Figura 01 Programa e Processo

Definição. ? Algoritmo de Escalonamento de CPU. ? Algoritmo do S.O. que determina qual o próximo processo a ocupar a CPU

Fundamentos da Informática Aula 03 - Sistemas operacionais: Software em segundo plano Exercícios Professor: Danilo Giacobo

Questões de Provas de Períodos Anteriores

Sistemas Operacionais

Características Linux - CentOS

Noções de Processos. Plano da aula. Serviços oferecidos. Definição & Objetivos. Definição & Objetivos. Sistemas Operacionais : introdução

Capítulo 6 Nível do Sistema Operacional

Arquitetura de Sistemas Operativos

Sistemas Operacionais. Rodrigo Rubira Branco

Sistemas Operacionais II

Unidade 2. Processos Threads Concorrência em Java

Fundamentos de Sistemas Operacionais

Processos e Threads. Ciclo 2 AT3. Prof. Hermes Senger

Introdução aos Sistemas Operacionais

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?

Resumo: Sistemas Operacionais Abertos

SOP - TADS Threads. Revisão Ultima aula. Programa em execução Cada processo têm sua própria CPU

1 Porque o estado de um processo deve ser salvo quando ele deixa a CPU?

William Stallings Arquitetura e Organização de Computadores 8 a Edição

SOP Sistemas Operacionais Módulo 04: Processo

SSC510 Arquitetura de Computadores 1ª AULA

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Estados dos processos. Infra Estruturas Computacionais. A troca de contexto. Escalonamento de Processos. Escalonamento de Processos

AGT0001 Algoritmos Aula 01 O Computador

Notas da Aula 10 - Fundamentos de Sistemas Operacionais

Máquina de estados UNIX O

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de

Introdução. Introdução aos Sistemas Operacionais Volnys Bernal. Sumário. Introdução aos Sistemas Operacionais. Sobre esta apresentação

Sistemas Operacionais. Escalonamento de processos

Gerência de Recursos. Gerência do Processador

Ferramentas para Programação em Processadores Multi-Core

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS

Sistemas Operacionais

Transcrição:

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS setembro/2013 SEMANA 08 Conceitos sobre processos. Modelos de processos, BCP, contextos, estados de processos. 1 - Introdução O processo computacional, ou simplesmente processo, é uma atividade que ocorre em um meio computacional com objetivo definido, duração finita e fazendo uso de uma quantidade limitada de recursos computacionais. Programa é o código fonte escrito em alguma linguagem de programação [por exemplo, C, Pascal, Fortran], e executável é esse código traduzido para a linguagem de máquina específica da máquina onde ele será executado. O programa é uma entidade passiva. Processo pode ser definido como um fluxo de controle sequencial e seu espaço de endereçamento, ou seja, é a execução de um programa junto com os dados usados por ele. Processo, de forma resumida, é então um programa em execução. Como exemplo, o mesmo programa pode ser executado ao mesmo tempo por dois usuários, gerando dois processos distintos. Além disso, na sua execução, um programa pode originar vários processos. O processo é uma entidade ativa. Um processo computacional é representado por uma estrutura de dados conhecida como Bloco de Controle do Processo [BCP, Process Control Block - BCP], também chamado de descritor do processo. 2 - Conceitos sobre processos Uma das principais tarefa do kernel é permitir a execução de aplicativos. Para isso, ele deve auxiliar a aplicação com recursos como abstrações de hardware e gerenciamento do processo. Para rodar uma aplicação, o kernel inicialmente cria um espaço de endereçamento para essa aplicação, carrega na memória o arquivo contendo as instruções do programa, cria uma pilha para essa aplicação e inicia a sua execução. Um kernel multitarefa é capaz de dar ao usuário a ilusão de que o número de processos que estão rodando simultaneamente é maior do que o número de processos que aquele sistema é fisicamente capaz de rodar. Mas na realidade, usualmente o número de processos que um sistema Introdução aos Sistemas Operacionais - www.jairo.pro.br 1/8

pode rodar simultaneamente é igual o número de processadores (ou de núcleos). A multitarefa pode ser preemptiva [multitarefa real] ou cooperativa. Na multitarefa preemptiva o kernel trabalha com uma fila de processos cedendo a cada um uma parcela de tempo [time slice] de processamento. Desse modo, o processador alterna de processo em processo rapidamente para dar ao usuário a impressão de que todos os processos estão sendo executados simultaneamente. A implementação da multitarefa preemptiva envolve o uso de algoritmos de escalonamento, para que o kernel determine qual processo deve ser executado em que momento e quanto tempo de processamento deve ser concedido. O algoritmo escolhido deve poder permitir que alguns processos tenham uma prioridade de processamento mais alta que os demais. O kernel geralmente também deve prover uma maneira de comunicação entre processos [IPC, Inter Process Communication]. Alguns exemplos de IPC são: memória compartilhada; troca de mensagens; chamadas de procedimento remoto [RPC, Remote Procedure Call]. Praticamente todos os sistemas operacionais modernos implementam multitarefa preemptiva ou real. No passado havia a multitarefa cooperativa, onde cada processo tinha permissão de executar ininterruptamente até fazer uma requisição especial para avisar ao kernel para alternar para o próximo processo da fila. Embora a multitarefa cooperativa seja bem mais simples de implementar que a preemptiva, tem a contrapartida de travar o sistema inteiro com muita frequência, pois qualquer problema que ocorra com o processo que está executando impede a devolução do processador para o sistema operacional. Os antigos Windows 3.0, 3.1 e 3.11 usualmente rodavam sobre o sistema operacional MS- DOS, que não implementava multitarefa alguma. Então o Windows, que à época era aplicação que fornecia ambiente gráfico, implementava multitarefa cooperativa para as aplicações para Windows. As versões antigas do Mac [Apple], embora não tivessem nada a ver com o MS-DOS, padeciam do mesmo mal. Para o caso de haver mais de um processador, o kernel deve suportar multiprocessamento simétrico [SMP 1 ] ou acesso não uniforme à memória [NUMA 2 ] para permitir que diferentes processos rodem simultaneamente em diferentes processadores. Para isso, o kernel deve suportar reentrância 3 para poder rodar duas ou mais partes do código da aplicação simultaneamente. Isso exige mecanismos de sincronização para assegurar que dois processadores não tentarão modificar os mesmos dados ao mesmo tempo. 1 SMP: Symmetric Multi Processing. 2 NUMA: Non-Uniform Memory Access. 3 Reentrância: em programação, é a qualidade de uma subrotina ser executada concorrentemente de forma segura, isto é, de poder ser invocada enquanto estiver em execução. Introdução aos Sistemas Operacionais - www.jairo.pro.br 2/8

3 - Modelos de processos e estados de processos O modelo de processo serve para descrever o processo ao longo dos seus estados. Por exemplo, um modelo de três estados envolve apresentar o processo nos seguintes estados: rodando pronto [ready]; rodando [running]; bloqueado [blocked]. A figura 1 mostra um modelo de processo com três estados, onde cada mudança de estado é uma transição que é representada por um número: 1 - O processo não pode continuar a execução pois espera por algum evento [I/O ou semáforo] para continuar; 2 - Escalonamento: o processo retorna ao processador; 3 - Escalonamento: acabou o tempo [slice] de processamento; 4 - Ocorre o evento esperado que mantinha o processo bloqueado. O processo, quando em execução na CPU, está no estado rodando [running]. Ao terminar sua quota de tempo para execução (slice de tempo), o escalonador o interrompe e o coloca no estado pronto. Ao chegar novamente a sua vez de executar, o escalonador invoca [acorda] esse processo para voltar a rodar, permitindo a sua continuação. Um processo pode ser bloqueado se os dados de entrada ainda não estiverem disponíveis e ele não poder continuar sua execução, e isto pode ocorrer pelo sinal enviado por outro processo ou pela própria decisão do escalonador. Um processo pode ser definido como o ambiente onde a aplicação é executada. Este ambiente possui informações sobre essa execução e também o quanto de recursos do sistema cada processo pode utilizar, como o espaço de endereçamento, tempo de processador e área em sistema de arquivo. Um modelo de processo mais realista é apresentado na figura 2, com 5 estados. A 1 bloqueado 4 3 2 pronto Fig 1 Modelo de processo com 3 estados O processo é desbloqueado por um evento externo [chegada dos dados, sinalização de outro processo], e então passa ao estado pronto. expede [dispatch] novo admite ocorre evento pronto bloqueado timeout espera por evento Fig 2 Modelo de processo com 5 estados rodando libera exit [finaliza] Introdução aos Sistemas Operacionais - www.jairo.pro.br 3/8

diferença entre este e o de 3 estados é incorporar tanto a criação de novos processos quanto finalização de processos. A partir da inicialização do sistema, processos podem ser criados e finalizados a qualquer momento. Os processos podem ser criados pelos usuários, para realizarem as suas tarefas, e também o sistema operacional cria processos em acordo com as suas necessidades. Também podem haver processos de serviço, como é o caso de um serviço de e-mail. Por exemplo, no caso do Unix o init é o primeiro processo do sistema [PID 4 =1], que ocorre logo após o boot. Todos os demais processos são filhos desse processo. A finalização de um processo tem um término normal [voluntário] quando a execução é finalizada através da chamada exit [Unix] ou ExitProcess [Windows]. Mas também poderia ser forçado o término por causa de algum erro fatal [bug no programa, divisão por zero, execução de instrução ilegal ou referência à memória inexistente], pois nessa situação o processo não tem como ser finalizado voluntariamente. O final também poderia ser causado por outro processo, como chamada kill [Unix] ou TerminateProcess [Windows], que é involuntário. Um processo é formado por três partes: contexto de hardware, contexto de software e espaço de endereçamento. 4 - BCP [PCB, Process Control Block] Um Bloco de Controle do Processo [BCP ou PCB], também chamado de Bloco de Controle de Tarefa, Estrutura da Tarefa ou Descritor de Processo, é uma estrutura de dados na memória primária que contém informação necessária para gerenciar um processo em particular. O BCP permite que o sistema operacional encontre informações chave a respeito do processo, por isso define um processo para o sistema operacional. Cada processo tem o seu BCP. Quando um usuário requisita a execução de alguma aplicação, o sistema operacional constroi o BCP para essa aplicação. A implementação do BCP difere de sistema para sistema. Em geral um BCP inclui, direta ou indiretamente, as seguintes informações: a identificador do processo (PID); valores de registradores para o processo, incluindo o contador de pograma e valores de stack; o espaço de endereçamento para o processo; prioridade do processo, que é uma parte da informação de escalonamento [por exemplo, no Unix nice ou renice]; 4 PID: Process IDentifier, identificador do processo, é um número inteiro. Introdução aos Sistemas Operacionais - www.jairo.pro.br 4/8

informação de contabilização do processo [process accounting information], por exemplo quando o processo processou pela última vez, quanto tempo de CPU o processo acumulou, etc; ponteiro para o próximo BCP, isto é, ponteiro para o BCB do próximo processo a rodar; informações de I/O, isto é, dispositivos alocados para o processo, lista de arquivos abertos, etc; ponteiro para o processo pai e, caso exista, ponteiro para o processo filho; o status do processo, se está rodando, pronto, bloqueado, etc; em caso de máquina multiprocessada, informação sobre qual processador o processo está rodando. Já que o BCP contém informação crítica sobre o processo, ele precisa ser mantido numa área de memória protegida do acesso de usuários normais. O BCP possui todas as informações do processo, que são contexto de hardware, contexto de software e espaço de endereçamento de cada processo [endereço de memória]. O sistema operacional implementa o conceito de processo através do BCP. 5 - Contextos Contexto de um processo são as informações necessárias para que o processo possa ser restaurado a partir do ponto em que foi interrompida a sua execução. Essa interrupção do processamento normalmente é feita pelo escalonador, e leva o processo para o estado pronto. Contexto é um conjunto de dados necessários para manter a execução do processo ao longo do tempo. A troca de um processo por outro no processador é chamada de troca de contexto [context switch]. Durante a troca de contexto, o processo que está rodando é parado e é passada a execução para outro processo. O kernel precisa parar a execução do processo que está rodando, copiar os valores dos registradores para o BCP do processo que estava rodando e atualizar os registradores com os valores do BCP do processo que vai iniciar a execução. O tempo que é gasto na troca de contexto é desperdiçado, pois nesse momento nenhum processo está rodando. Isso é chamado de overhead. A troca de contexto é dependente de suporte de hardware. Para efetuar o compartilhamento da CPU entre processos, o sistema operacional possui duas filas de controle: a de processos prontos [Ready-List] e a de processos bloqueados [Blocked-List]. A manipulação dessas filas depende da política de escalonamento adotada pelo sistema, que é um critério para determinar, entre os diversos processos no estado pronto, qual o próximo processo a executar. Introdução aos Sistemas Operacionais - www.jairo.pro.br 5/8

O escalonador de processos, com o auxílio de hardware, é o responsável pela escolha do processo que será executado pelo processador. O escalonador deve se preocupar com a eficiência do processador, pois o chaveamento de processos [switch] é complexo e custoso e afeta o desempenho do sistema. O escalonador de processo é um processo que deve ser executado quando da mudança de contexto, que é a troca de processo a ser processado. processo P sistema operacional 0 rodando pronto rodando interrupção salva status BCP 0 restaura status BCP 1 interrupção salva status BCP 1 restaura status BCP 0 Fig 3 Troca de contexto entre processos P 0 e P 1 processo P 1 rodando pronto pronto overhead overhead A figura 3 mostra um exemplo de troca de contexto entre os processos P 0 e P 1. As ações necessárias para a troca de contexto são: salvar o contexto do processador, incluindo o PC [Contador de Programa] e outros registradores; alterar o BCP do processo que está em execução [running]; mover o processo para a fila apropriada; selecionar outro processo para execução; alterar o BCP do processo selecionado para iniciar a execução; alterar as tabelas de gerência de memória; restaurar o contexto do processo selecionado para iniciar a execução. As condições para a troca de contexto de um processo são: interrupção do relógio [clock]: fatia [slice] de tempo de posse do processador expirou; interrupção de I/O: resposta de um dispositivo de I/O; falta de memória: endereço de memória está na memória virtual [swap, disco]; trap [armadilha]: ocorrência de erro, que pode fazer com que o processo seja finalizado; supervisor call (SVC): é uma chamada de sistema que muda o sistema para o modo supervisor, para o sistema operacional poder requisitar serviços como, por exemplo, alocação de memória. O contador de programa [PC, Program Counter] é o registrador que indica o endereço [localização na memória] da próxima instrução a ser executada. Durante a execução de uma Introdução aos Sistemas Operacionais - www.jairo.pro.br 6/8

instrução, esse contador é incrementado com o valor do tamanho da instrução, de modo que ele passe a conter o endereço da instrução seguinte. O tamanho do PC é igual ao número de bits de endereço que o processador pode manipular. Assim, se a máquina trabalha com endereços de 16 bits, o PC terá 16 bits. O contador de programa também é conhecido por IC [Instruction Counter] ou IP [Instruction Pointer]. O contador de programas é o responsável pelo pseudoparalelismo, e garante que a qualquer instante exista somente um programa ativo no processador. Pseudoparalelismo é a sensação de que vários processos são executados simultaneamante num único processador. Um processo é representado por: espaço de endereçamento, que é uma área de memória pertencente ao processo, onde as instruções e dados da aplicação são armazenados para execução. contexto de software contexto de hardware contexto de hardware e de software, que são valores em memória do conteúdo dos registradores e características e limites dos recursos que podem ser alocados pelo processo. A figura 4 ilustra o contexto de hardware, contexto de software e espaço de endereçamento de um processo. A troca de contexto se resume em substituir o contexto de hardware de um processo pelo de outro. processo espaço de endereçamento Fig 4 contexto e espaço de endereçamento do processo Quando um processo está em execução, o seu contexto de hardware está armazenado nos registradores do processador. No momento em que o processo perde a utilização do processador, o sistema salva essas informações no contexto de software do processo. Na troca de contexto de hardware, é necessário armazenar o conteúdo dos registradores gerais do processador e de uso específico, como o contador de programa [PC], o stack pointer 5 [SP] e o registrador de status 6 [PSW, Processor Status Word]. Na troca de contexto de software, é necessário especificar as características e limites dos recursos que podem ser alocados pelo processo, como prioridade para execução, privilégios, tamanho do buffer para operações de I/O etc. O contexto de software é formado por três grupos de informações: identificação, quotas e privilégios. 5 Registrador Stack Pointer [SP]: registrador ponteiro da pilha não existia na máquina de Von Newmann, mas hoje em dia faz parte da CPU de quase todos os computadores. É necessário porque todo programa em execução precisa usar uma pilha para realizar chamadas e retornos de procedimentos. Assim, cada programa possui uma pilha própria e o registrador SP indica o topo da pilha do programa correntemente em execução. Quando a execução passa de um programa para outro, o valor do SP é alterado para que ele passe a apontar para a pilha do novo programa em execução. 6 Registrador Processor Status Word [PSW]: registrador palavra de estado do processador ou registrador de estado não fazia parte da máquina de Von Newmann [nem existia nos computadores mais antigos], mas é essencial para o funcionamento de um sistema operacional moderno. Atualmente, faz parte de qualquer CPU. O uso desse registrador passou a ser necessário quando os computadores começaram a utilizar sistemas de interrupção. Introdução aos Sistemas Operacionais - www.jairo.pro.br 7/8

identificação: PID, nome, UID [Identificação do usuário dono do processo, User IDentifier]; quotas: são os limites de cada recurso do sistema que um processo pode alocar, como número máximo de arquivos abertos simultaneamente, tamanho máximo de memória primária e secundária, número máximo de operações I/O pendentes; privilégios: definem as ações que um processo pode fazer em relação a ele mesmo, aos demais processos e ao sistema operacional. Privilégios que afetam o próprio processo permitem que suas características possam ser modificadas. Por exemplo: prioridade de execução, limites alocados na memória primária e secundária. O usuário que possui todos os privilégios são o root [Unix] e o Administrador [Windows]. O espaço de endereçamento é a área do processo onde as instruções e os dados do programa são armazenados para execução, onde cada processo possui o seu próprio espaço que não pode ser ocupado por outro processo. É a partir do BCP que o sistema operacional mantém as informações sobre o contexto de hardware, contexto de software e o espaço de endereçamento de cada processo. A tabela de processos é uma estrutura de dados que contém informações fundamentais para que o processo interrompido pelo escalonador possa voltar a executar exatamente a partir do ponto de parada, sem perda de dados ou inconsistências. Cada processo possui uma entrada na tabela de processos com um ponteiro para o bloco de controle de processo [BCP]. tabela de processos... BCP processo 1 BCP processo 2 BCP processo 3... BCP processo n Fig 5 tabela de processos e BCP Introdução aos Sistemas Operacionais - www.jairo.pro.br 8/8