Arquitetura de Sistemas Operativos

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

Sistemas Operacionais. Conceito de Processos

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

Davidson Rodrigo Boccardo

Sistemas de Computação. Processos e escalonamento

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

Prof. Kleber R. Rovai

Sistemas Operacionais

Sistemas Operativos: Implementação de Processos

! Os primeiros computadores permitiam a execução de apenas um programa de cada vez, com acesso completo aos recursos do sistema

Sistemas Operacionais

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

Sistemas Operativos: Implementação de Processos

Processos. Conceitos Básicos

Sistemas Operacionais

Processos. Estruturas de Controle

SSC0640 Sistemas Operacionais I

SISTEMAS OPERACIONAIS

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.

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

Processos. Conceitos Básicos

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

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

Arquitetura de Sistemas Operativos

SISTEMAS OPERACIONAIS. 1ª. Lista de Exercícios

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

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

Sistemas de Informação. Sistemas Operacionais

Processos. Conceitos Básicos

Programação de Sistemas em Tempo Real

Sistemas Operacionais. Escalonamento de Processos

Sistemas Operacionais. Processos e Threads

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

Questões de Provas de Períodos Anteriores

Arquitetura de Sistemas Operativos

SOP - TADS Processos. Revisão Ultima aula

Sistemas Operacionais

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

Sistemas Operacionais I

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

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13

Sistemas Operativos: Escalonamento de Processos

ARQUITETURA DE COMPUTADORES

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

Sistemas Operacionais I

Disciplina: Sistemas Operacionais

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

Sistemas Operacionais

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

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

Sistemas Operacionais. Capítulo 5 Processos

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

Sistemas Distribuídos Aula 3

Sistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Processos. Prof. Gustavo Leitão

SO: Escalonamento. Sistemas Operacionais Flavio Figueiredo (

Sistemas Operacionais. Processos IC - UFF

Arquitetura e Organização de Computadores

AULA Nº 08 SISTEMAS OPERACIONAIS. Threads

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

Infra-Estrutura de Software. Escalonamento

Multiprocessamento. Escalonamento de Processos: Algoritmos. Escalonamento em POSIX. Escalonamento de Threads. Padrão de Execução dum Processo

Processos. Um SO executa uma multiplicidade de programas, em batch ou time-sharing, que se designam por: ÈÖÓ Ó é um programa em execução.

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

2 - Organização do Sistema Operativo. Prof. Ricardo Silva

Sistemas Operacionais Aula 3

Modelação de algoritmos de substituição de páginas Anomalia Belady

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

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

Processos. Aula Passada. Aula Passada (2) Ciclos de CPU e de I/O (1)

Sistemas Operacionais

SISTEMAS OPERACIONAIS

Gestor de Processos. Gestor de Processos

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

Disciplina: Introdução aos Sistemas Operacionais Professor: Fernando H. Santorsula

Estruturas de Sistemas Operacionais

Sistemas Operacionais

Fundamentos de Sistemas Operacionais. Threads. Prof. Edwar Saliba Júnior Março de Unidade Threads

Técnicas Avançadas de Programação

Processos. Adão de Melo Neto

Questões de Múltipla escolha

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

Introdução a Arquitetura de Sistemas Operacionais. Parte 01

Sistemas Operacionais

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

Sistemas Operativos. Sumário. Escalonador da CPU. Por Prioridades Round Robin. ! Algoritmos de escalonamento

Sistemas Operacionais Aula 7

Processos e Threads. Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto

Sistemas Operativos I/O. Rui Maranhão

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

Fundamentos de Sistemas Operacionais

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

Organização de um Sistema Operativo

Complementos de Programação. Engenharia Electrotécnica - Electrónica e Computadores. Ano Lectivo: 2005/2006. Ana Madureira. Gestão de Processos

Capítulo 3: Processos

Gestão de Memória. Algoritmos de Gestão de Memória

Gestão de Memória. Espaço de Endereçamento

Transcrição:

Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012

1 Threads

Conceito Um processo é um programa em execução. A execução de um processo é sequencial: pode-se caracterizar um processo pelo seu trace (instruções executadas).

Conceito Um processo é mais do que um programa, pois inclui: secção de texto (ou programa); o conteúdo do contador de programa (PC, program counter); conteúdo dos registos do processador; a pilha (stack) do processo; secção de dados que contém as variáveis globais.

Conceito Esta noção de processo permite que vários utilizadores estejam a usar várias cópias do mesmo programa, ou que o mesmo utilizador possa abrir várias vezes o mesmo programa. Cada uma destas cópias é um processo separado: apenas as secções de texto são idênticas, as secções de dados, pilha, tabelas de ficheiros abertos, etc., são diferentes.

Representação Lógica de um Processo No sistema operativo, um processo é representado por um bloco de controlo do processo (PCB - Process Control Block).

Representação Lógica de um Processo O bloco de controlo do processo (PCB), às vezes chamado descritor de processo, é a maneira como um SO representa o conceito de um processo. Um PCB tem que conter um identificador único (valor inteiro chamado process ID ), este valor pode-se aceder através de uma chamada ao sistema (getpid em linux e getpid em windows).

Representação Lógica de um Processo Informação associada a cada processo: estado do processo: ver diagrama de estados, mais à frente; contador de programa (PC): indica o endereço da próxima instrução a ser executada; registos da CPU: incluem os acumuladores, registos de indexação, ponteiros de pilha, registos gerais, etc; informação de escalonamento da CPU: inclui prioridade do processo, ponteiros para filas de escalonamento, etc.

Representação Lógica de um Processo Informação associada a cada processo: informação de gestão de memória: inclui valores dos registos de base e de limite, tabelas de paginação (ou tabelas de segmentação); informação de inventário; informação de estado de entrada/saída (E/S ou I/O): inclui lista de dispositivos E/S ligados ao processo, lista de ficheiros abertos, etc.

Estado de um Processo Um processo em execução muda de estado: new: o processo está a ser criado; running: instruções estão a ser executadas; waiting: o processo está à espera que algum evento ocorra (receção de sinal ou o fim de alguma operação de E/S); ready: o processo está à espera que lhe seja atribuído o processador; terminated: o processo acabou de terminar a sua execução.

Diagrama de Estados de um Processo Só um processo pode estar no estado running. Podem haver vários processos no estado ready e no estado waiting.

Comutação e Escalonamento de De forma a maximizar a utilização do CPU, há que ter sempre um processo a correr, i.e., em execução. Além disso, num dado instante, só um processo pode usar um dispositivo de entrada/saída (E/S).

Comutação e Escalonamento de Isto obriga a que haja: comutação de contexto - a troca entre os processos em execução; processo num estado - estados representados por filas de processos; escalonamento - escolha dos processos das filas e movimentação entre as filas.

Comutação de Contexto A partilha do processador requer um mecanismo de comutação de processos, a que se dá o nome de comutação de contexto (context switching, em inglês). Comutação entre dois processos faz-se através da: salvaguarda do estado do processo que perde o CPU; restauro do estado do processo que ganha o CPU. A comutação deve ser frequente, mas não exagerada, tem um custo overhead (sobrecarga em português) para o sistema.

Comutação de Contexto

Filas de Escalonamento de Normalmente, todo o recurso tem associada uma fila de escalonamento. Ready Queue - Esta fila contém os PCB s dos processos residentes em memória que estão no estado ready, i.e., processos que estão prontos e à espera de executar. Waiting Queues - Se um processo espera a conclusão de E/S ou outro dispositivo, é colocado na fila de espera do dispositivo em causa.

Filas de Escalonamento de Um novo processo é inicialmente colocado na ready queue. O processo fica à espera na ready queue até ser selecionado e despachado para o CPU.

Filas de Escalonamento de Durante a sua execução várias coisas podem acontecer: o processo pode emitir um pedido E/S, e consequentemente ser colocado numa I/O device queue; o processo pode criar um novo subprocesso (fork), ficando à espera que ele termine; o processo pode ser removido do CPU em consequência de uma interrupção, o que o faz transitar para a ready queue. entre outras...

Filas de Escalonamento de

Escalonadores Um processo migra entre várias filas de escalonamento durante o seu tempo de vida. O sistema operativo deve selecionar processos destas filas com base em algum método ou algoritmo. Existem vários tipos de escalonadores - vamos caracterizar três tipos: curto prazo; médio prazo; longo prazo.

Escalonamento de curto-prazo Seleciona que processos devem ser executados de seguida e reserva, consequentemente, o CPU. Escalonador de curto-prazo é invocado com bastante frequência (milissegundos) (tem de ser rápido).

Escalonamento de médio-prazo Ideia base: swapping Remover processos da memória (i.e., remover o grau de multiprogramação).

Escalonamento de médio-prazo Mais tarde, estes processos podem ser re-introduzidos na memória e continuar a sua execução onde tinham sido deixados. Pode assim conseguir-se uma melhor mistura de processos, ou então libertar memória principal para outros processos.

Escalonamento de médio-prazo

Escalonamento de longo-prazo Seleciona que processos devem ser levados para a fila ready. Escalonador de longo-prazo é invocado com pouca frequência (segundos, minutos) (pode ser lento). Controla o grau de multiprogramação.

Operações sobre Criação de processos: o processo progenitor (pai) cria processos progénitos (filhos), os quais, por sua vez, criam outros processos, formando uma árvore de processos. Modos de execução: pai e filho(s) executam concorrentemente; pai espera até que o(s) filho(s) terminem.

Operações sobre Ocupação da memória: o filho duplica o espaço do pai; o filho carrega um novo programa. Partilha de recursos: pai e filhos partilham todos os recursos; filhos partilham um subconjunto dos recursos do pai; pai e filhos não partilham quaisquer recursos. Criação de processos em UNIX: a chamada ao sistema fork cria um novo processo; a chamada ao sistema exec depois de um fork é usada para substituir o espaço de memória do processo com um novo programa.

Operações sobre - Modos de terminação Terminação normal: um processo termina quando acaba a execução da sua última instrução, e pede ao sistema operativo para o eliminar através da chamada ao sistema exit. Nesta altura: o processo devolve eventualmente dados ao seu progenitor (via chamada ao sistema wait); recursos do processo progénito são libertados pelo sistema operativo.

Operações sobre - Modos de terminação Terminação abruta: o pai pode terminar a execução dos processos filhos através da chamada ao sistema abort. filho excedeu os recursos que lhe foram reservados; a tarefa atribuída ao filho não é mais necessária; o pai está a terminar, o que obriga os seus filhos a terminar.

Avaliação - Trabalho Teórico-Prático 2 Descreva um dos seguintes conceitos num texto. 1 2 Diagrama de estados de um processo 3 Comutação e escalonamento de processos: 3.1 comutação de contexto 3.2 escalonamento O texto deverá: ser elaborado em grupo; enviado por email ao professor no final da aula; e deverá conter entre 250 a 500 palavras.

Threads Conceito Uma thread é um processo mais leve (lightweight process), tendo múltiplos fluxos de execução no mesmo processo. Um processo tradicional é igual a uma tarefa apenas com uma thread.

Threads Conceito Mecanismo para criar fluxos de execução, partilhando um contexto comum:

Threads Conceito Uma thread partilha com outras threads pares (peers): a secção de código; a secção de dados; os recursos do SO. Coletivamente tudo isto é conhecido como tarefa (task em inglês).

Threads Conceito Numa tarefa com múltiplas threads, enquanto uma thread está bloqueada e à espera, uma segunda thread na mesma tarefa pode executar. Cooperação de múltiplas threads no mesmo job confere maior vazão (throughput) e melhoria no desempenho. Aplicações que requerem partilha de dados beneficiam ao utilizar threads.

Threads Exemplo - Processador de Texto Multithreaded A ideia é usar uma thread por tarefa: uma thread para interagir com o utilizador (teclado e rato); uma thread para formatar o texto (em background); uma thread para guardar o ficheiro periodicamente no disco.

Threads Threads vs. Porque não usar só processos? obrigam ao isolamento: espaços de endereçamento disjuntos; dificuldade em partilhar. Eficiência na criação e comutação.

Threads Partilha de recursos com Threads Threads de um mesmo processo podem partilhar a maior parte dos recursos, com excepção da stack e do estado do processador:

Threads Estado de uma Thread Tal como um processo, uma thread pode estar num de 3 estados:

Threads Estado de uma Thread A informação específica a manter por cada thread é relativamente reduzida: o seu estado (pode estar bloqueado à espera de um evento); o estado do processador (incluindo o SP e PC); a stack.

Threads Uso de Threads Threads de um mesmo processo podem partilhar muitos recursos, incluindo o espaço de endereçamento: são particularmente apropriados para aplicações consistindo em atividades concorrentes.

Threads Uso de Threads Por exemplo um servidor da Web: recebe e processa pedidos de páginas da Web; as páginas da Web são ficheiros guardados em disco; mantém as páginas acedidas mais recentemente em memória, cache; se a página pedida não estiver na cache, o servidor tem que ir ao disco.

Threads Uso de Threads Servidor da Web com uma única thread (ou um processo): se a página pedida não estiver na cache, o servidor tem que ir ao disco, bloqueando; enquanto a página não for posta para memória, o servidor não pode processar outros pedidos; o número de pedidos que este servidor pode processar por unidade de tempo é muito baixo.

Threads Uso de Threads Servidor da Web com múltiplas threads: uma thread, o dispatcher, recebe os pedidos e passa-os a outras threads, os worker; cada worker thread processa um pedido de cada vez: pode usar operações de E/S que bloqueiem.

Threads Implementação Threads podem ser implementadas: diretamente pelo SO: Kernel-level Threads; por código que executa em user-level, i.e., acima do SO: User-level Threads.

Threads Kernel-level Threads O kernel suporta processos com múltiplos threads: as threads são as entidades que disputam o CPU. O SO mantém uma tabela de threads com a informação específica a cada thread. O PCB de um processo aponta para a sua tabela de threads.

Threads Kernel-level Threads Todas as operações de gestão de threads, por exemplo criar uma thread, requerem a execução de chamadas ao sistema.

Threads User-level Threads O kernel não sabe da existência das threads: são implementados inteiramente por uma biblioteca em user-space; podem ser implementados num SO que não suporta threads.

Threads User-level vs. Kernel-level Threads Vantagens: o SO não precisa suportar threads. evita a intervenção do kernel em muitas operações, por exemplo criação/terminação de threads e comutação de threads.

Threads User-level vs. Kernel-level Threads Desvantagens: page-fault por uma thread bloqueia as restantes threads do processo; incapazes de explorar paralelismo em arquiteturas multiprocessador.

Threads Nota Page-fault: é uma interrupção (ou exceção) disparada pelo hardware quando um programa acede a uma página mapeada no espaço de memória, mas que não foi carregada na memória física do computador. Uma página é um bloco de memória de tamanho fixo, utilizada como uma unidade de transferência entre a memória física e um dispositivo de armazenagem externo como, por exemplo, um disco rígido.

Threads Implementação Híbrida A ideia é multiplexar user-level threads sobre kernel-level threads. O kernel não está a par dos user-level threads. A biblioteca de user-level threads atribui estes aos kernel-level threads.

Threads Implementação Híbrida

Threads Avaliação - Trabalho Teórico-Prático 3 Descreva um dos seguintes conceitos num texto. Conceito de thread Threads versus processos Descrever os vários estados de uma thread User-level versus Kernel-level threads O texto deverá: ser elaborado em grupo; enviado por email ao professor no final da aula; e deverá conter entre 250 a 500 palavras.