EEL770 - Sistemas Operacionais Notas de Aula

Documentos relacionados
Processos. Pedro Cruz. EEL770 Sistemas Operacionais

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

SISTEMAS OPERACIONAIS

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

Davidson Rodrigo Boccardo

Sistemas Operacionais

Fundamentos de Sistemas Operacionais

Notas da Aula 7 - Fundamentos de Sistemas Operacionais

SISTEMAS OPERACIONAIS

Gerência de Memória Algoritmos de Substituição de Páginas

Capítulo 6 Nível do Sistema Operacional

Threads. Pedro Cruz. EEL770 Sistemas Operacionais

Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período

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

LICENCIATURA EM COMPUTAÇÃO. Resenha Livro Sistemas Operacionais 4ª edição Capítulo quatro: Gerencia do processador

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

Sistemas de Informação. Sistemas Operacionais

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012

Gerência de Processos. Instituto Federal da Bahia Campus Salvador INF009 - Sistemas Operacionais Profª Flávia Maristela

Sistemas Operacionais

Sistemas Operacionais. Processos IC - UFF

Fundamentos de Sistemas Operacionais

Sistemas Operacionais II. Linux 2: Threads, Escalonamento, Gerenciamento de Memória e Sistemas de Arquivos

Sistemas Operacionais

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

Sistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca

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

PROCESSOS. Sistemas Operacionais. Vinícius Pádua

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

Sistemas Operacionais

Introdução. Pedro Cruz. EEL770 Sistemas Operacionais

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

ARQUITETURA DE COMPUTADORES

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 - UCSAL Professor : Marco Antônio C. Câmara Primeira Lista de Exercícios

Nível da Arquitetura do Conjunto das Instruções

Aula 12: Memória: Barramentos e Registradores

Concorrência em Processos

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

( ) Sistemas de Computação - Unifacs Professor : Marco Antônio C. Câmara - Lista de Exercícios II - Dia 18/10/2009

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

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

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Conceitos. Pedro Cruz. EEL770 Sistemas Operacionais

Processos. Estruturas de Controle

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

EEL770 Sistemas Operacionais

SCC Algoritmos e Estruturas de Dados I

Processos. Conceitos Básicos

Sistemas Operacionais

SOP - TADS Processos. Revisão Ultima aula

Sistemas Operacionais. BSI / UAB 2013 Hélio Crestana Guardia

Organização de Computadores Aula 05

Prof. Kleber R. Rovai

SSC510 Arquitetura de Computadores 1ª AULA

Computadores e Programação (DCC/UFRJ)

Introdução à Computação: Arquitetura von Neumann

Disciplina: Arquitetura de Computadores

Arquitetura e Organização de Computadores

Registradores. Os processadores possuem espaços específicos onde são guardados valores, os chamados registradores.

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade

Histórico de desenvolvimento de computadores Prof. Luís Caldas Aula 02 Processador de uso geral

Sistemas Operacionais

25/8/2010. Praticamente todas as arquiteturas de computadores fornecem mais de um modo de

Organização e Arquitetura de Computadores INTRODUÇÃO

AGT0001 Algoritmos Aula 01 O Computador

Sistemas Operacionais. Capítulo 5 Processos

Arquitetura de Sistemas Operativos

Processos. Conceitos Básicos

Fundamentos de Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais Abertos. Prof. MSc. André Yoshimi Kusumoto

Processos e Threads e em sistemas distribuídos. Prof. Me. Hélio Esperidião

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

( ) ( ) Auto Avaliação F ( ) M ( ) D ( ) Seqüência: Sistemas Operacionais - UCSAL Professor : Marco Antônio C. Câmara Exercícios - Dia 20/04/2011

GERENCIAMENTO DE TAREFAS. Prof. Me. Hélio Esperidião

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

Processos. Conceitos Básicos

Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP. Memórias de Dados e de Programa

Arquitetura de Microprocessadores

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

ENDEREÇAMENTO DE INSTRUÇÕES. Adão de Melo Neto

Sistemas Operacionais II

Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -

Sistemas Operacionais. Conceito de Processos

Questões de Múltipla escolha

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES

William Stallings Arquitetura e Organização de Computadores 8 a Edição. Capítulo 12 Estrutura e função do processador

Sistemas Operacionais. Processos e Threads

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

Sistemas Operacionais I

Trabalho de Programação 2 Processador CESAR

ESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade

ORGANIZAÇÃO DE COMPUTADORES O PROCESSADOR E SEUS COMPONENTES

ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR

Organização e Arquitetura de Computadores I

Gerenciamento de memória

Processos Volnys B. Bernal Versão de 20/03/2015. Agenda. Processos. Programa x Processo. Programa x Processo. Programa.

Sistemas Operacionais. Rodrigo Rubira Branco

PIPELINE DE INSTRUÇÕES (estratégia e desempenho) Adão de Melo Neto

Transcrição:

EEL770 - Sistemas Operacionais Notas de Aula Pedro Cruz 1 Universidade Federal do Rio de Janeiro - PEE/COPPE/GTA cruz@gta.ufrj.br 1. Introdução Este texto contém notas de aula sobre a disciplina EEL770 - Sistemas Operacionais, ministrada no ano de 2018 na Universidade Federal do Rio de Janeiro. O texto pode e deve ser utilizado como material de consulta complementar, mas não deve substituir a bibliografia recomendada. 2. Processos Os processos são uma abstração para os programas rodando em um computador. Do ponto de vista do Sistema Operacional (SO), os processos devem conter todas as informações que um programa qualquer deve ter para poder ser executado de maneira harmoniosa com os outros processos. O SO é responsável por gerenciar a execução, a utilização de memória e o compartilhamento de recursos pelos processos. Isso significa que o SO deve atrelar a cada processo todas as informações relativas ao estado de execução, permissões, relacionamentos com outros processos e outras propriedades que um programa qualquer deve ter para poder ser executado e conviver com os outros processos. Alguns desses atributos são armazenados dentro do espaço do processo, enquanto outros são armazenados na tabela de processos. A tabela de processos é uma estrutura de dados mantida pelo SO que armazena dados de processos. Nela, cada linha da tabela representa um processo, ao passo que cada processo possui um número de identificação (id), um usuário que iniciou o processo, um processo pai, um tempo de início de execução, um ponteiro para uma lista de permissões (que deve conter os recursos que podem ser acessados pelo processo), entre outros atributos. A tabela de processos é melhor discutida na Seção 2.2. Organização de um processo na memória Em termos de memória, cada processo é dividido pelo SO em três partes, ilustradas na Figura1 e descritas a seguir: Código: é o trecho da memória que contém o código que é executado pelo processador ao longo da execução do processo. O contador de programa (Program Counter - PC) do processador aponta sempre para algum endereço de memória desse trecho. O trecho apontado pelo PC é executado pelo processador. Geralmente, é protegido para somente leitura pelo processo do usuário. O presente texto está sob uma licença Atribuição-NãoComercial-CompartilhaIgual CC BY-NC-SA BY: $\. Uma cópia dessa licença pode ser obtida em https://creativecommons.org/ licenses/by-nc-sa/4.0/legalcode C

Pilha de execução (stack): estrutura do tipo último a entrar, primeiro a sair (Last In, First Out - LIFO). Contém as variáveis locais de cada função e os parâmetros que são passados a elas. Cada vez que uma função é chamada, suas variáveis locais e seus parâmetros são empilhados, juntamente com o endereço de retorno (ou seja, a linha de código que realizou a chamada da função). Quando a função retorna, as variáveis locais e os parâmetros são removidos da pilha e a execução é retomada a partir do endereço de retorno. Assim, a chamada de uma função qualquer aumenta o tamanho da pilha, ao passo que o retorno de uma função reduz o tamanho da pilha. Dados (heap): espaço reservado para a alocação dinâmica. O trecho de dados abriga a memória pedida pelo processo durante a execução. Os dados abrigados no heap não são apagados da memória até que o programa termine ou o que programa do usuário realize comandos específicos. Os endereços de memória referenciados por um processo são endereços virtuais. O mapeamento entre endereços físicos da memória e os endereços referenciados pelos processos é um assunto extenso, a ser discutido em outro momento. Pilha Crescimento da Pilha Crescimento do Heap Heap PC Código Menor endereço Figura 1. Organização típica de um processo na memória. 2.1. Pseudoparalelismo de processos Um dos objetivos de um SO é garantir que um ou mais usuários sejas capazes de interagir com diversos processos simultaneamente. Porém, um computador com apenas uma CPU de núcleo único não é capaz de executar mais de um processo por vez. A estratégia utilizada pelos SOs é chavear os processos que são executados pela CPU, de forma que ao usuário exista a ilusão de que todos são executados simultaneamente. Grande parte do esforço de um SO está em garantir que seja possível interagir com diversos processos, uma vez que chavear a CPU para diferentes processos não é trivial. Essa tarefa é realizada por uma parte do SO denominada escalonador. O escalonador

decide quanto tempo de CPU é oferecido a cada processo, além de ser responsável pela troca dos processos de fato. A troca de processos deve ocorrer de forma que um processo removido da CPU possa ser colocado de volta exatamente da maneira em que foi retirado. O Bloco de Controle de Processos ajuda nessa tarefa. 2.2. Bloco de Controle de Processos O Bloco de Controle de Processos é uma entrada na Tabela de Processos. Cada bloco armazena o identificador, o PC, os ponteiros inicial e final para cada região de memória relativa ao processo, o valor dos registradores e da Palavra de Estado do Programa (Program Status Word - PSW) da CPU e outros. Esses dados são utilizados para garantir que, quando a execução de um processo for interrompida pelo escalonador, é possível retomar a execução como se o processo nunca tivesse sido interrompido. 2.3. Estado de execução de um processo Cada processo pode estar nos seguintes estados: Novo: o processo está sendo criado. O SO está criando as estruturas de dados relativas ao processo; Pronto: o processo está pronto para ser executado e está aguardando ser chamado pelo escalonador; Executando: o processo está sendo executado pelo processador; Bloqueado: o processo está aguardando algum evento, não podendo ser executado; Suspenso: o processo foi removido para a memória secundária a fim de ceder espaço na memória principal para outros processos. Pode estar suspenso/bloqueado ou suspenso/pronto. A Figura 2 ilustra as transições de estados que um processo pode sofrer. Pronto Convocado para memória secundária Pronto criação do processo Novo Bloqueado Estados Suspensos Convocado para memória secundária convocado por escalonador Evento ocorre Bloqueado dispensado por escalonador Executando Aguarda evento finalização do processo Terminado Figura 2. Transições de estados de um processo.

3. Threads Um algoritmo é uma sequência de passos que devem ser executados para se obter um resultado. Quando o algoritmo é sequencial, existe uma ordem bem definida com a qual cada passo do algoritmo deve ser executado. Uma consequência direta disso é que não é possível executar os dois passos simultaneamente. Por exemplo, para calcular a média dos valores armazenados em um vetor, é necessário antes realizar a soma desses valores e depois efetuar a divisão dos valores pelo número de elementos no vetor. A Figura 3(a) ilustra a obtenção da média dos valores armazenados no vetor v utilizando uma única linha de execução. Assumimos que a variável acumulador está carregada com o valor zero. O trecho Soma acumula os valores, índice a índice, de cada elemento do vetor na variável acumulador. O trecho Divisão obtém a média dividindo o valor acumulado pelo número de elementos no vetor e termina o programa. Existem algoritmos que permitem a execução fora de ordem de alguns trechos ou até mesmo a execução simultânea de tais trechos. Por exemplo, para calcular a média dos valores armazenados no vetor, não existe uma ordem para a qual as somas devam ser realizadas. Na Figura 3(b), o trecho Soma é executado em duas linhas de execução. A linha de execução apontada por PC 1 armazena a soma da primeira metade dos elementos do vetor na variável acumulador 1 e aguarda o término linha de execução apontada por PC 2. A linha de execução apontada por PC 2 armazena a soma da segunda metade dos elementos do vetor na variável acumulador 2, sinaliza a primeira linha de execução e termina. A primeira linha de execução pode, então, obter a soma das duas metades do vetor e, então, calcular a média dos valores. Se tudo isso ocorrer no mesmo processo, cada uma dessas linhas de execução é denominada thread. Para que seja possível executar essas linhas de execução, é necessário que cada uma delas possua sua própria pilha de chamadas, suas variáveis locais, seu contador de programa e um contexto.

Soma: acumulador 1 += v[0] PC 1 acumulador 1 += v[1] Soma: Divisão: acumulador += v[0] acumulador += v[1] acumulador += v[n/2] acumulador += v[n-1] acumulador += v[n] média = acumulador/n PC Divisão: Aguarde thread 2 Vá para Divisão acumulador 2 += v[n/2] acumulador 2 += v[n-1] acumulador 2 += v[n] Sinalize thread 1 acumulador = acumulador 1 + acumulador 2 média = acumulador/n PC 2 (a) Cálculo da média dos valores em um vetor utilizando uma única thread. (b) Cálculo da média dos valores em um vetor utilizando duas threads. Figura 3. Execução de um mesmo processamento utilizando uma ou duas threads.