Sistemas Operacionais Processos e Threads. Thiago Leite

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 Capítulo 6 - Threads

Processos. Escalonamento de Processos

Processos. Escalonamento de Processos

Processos. Objetivos do Escalonamento. Políticas de Escalonamento. Algoritmos de Escalonamento. Maximizar a taxa de utilização da UCP.

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

Processos. Escalonamento de Processos

Escalonamento de Processos Uniprocessador

Sistemas de Computação. Processos e escalonamento

Infra-Estrutura de Software. Escalonamento

}Escalonamento. Parte III - Sistemas Operacionais. Cap. 2 Processos. Escalonamento de Processos. Quando escalonar? Comportamento de Processos

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

Sistemas Operacionais

Sistemas de Informação. Sistemas Operacionais

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

Escalonamento de Processos

Escalonamento de Processos. Estratégia de atribuição do Processador aos Processos

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

Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais

Questões de Provas de Períodos Anteriores

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

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

Arquitetura de Computadores Sistemas Operacionais I

Sistemas de Informação. Sistemas Operacionais

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

Sistemas Operacionais. Capítulo 5 Processos

Sistemas Operacionais Gerenciamento de Processos

Sistemas Operacionais

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III. Escalonamento de Processos. 24/04/2014 Prof. Valeria M. Bastos

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

Lista de Exercícios Escalonamento de CPU. 1. Considere o seguinte conjunto de processos, com o tamanho do tempo de burst de CPU dado em milissegundos:

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.

Infra-estrutura de Software. Escalonamento. Decidindo qual processo vai executar

Aula 10: Escalonamento da CPU

Escalonamento do CPU

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 3. Escalonamento

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO PROCESSOS PROFESSOR CARLOS MUNIZ

SSC0640 Sistemas Operacionais I

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS

SOP - TADS Escalonamento de Processos

Sistemas Operacionais. Entrada e Saída. Edeyson Andrade Gomes.

Gerenciamento de processos

Sistemas Operacionais

PROCESSOS. Sistemas Operacionais. Vinícius Pádua

Sistema Operacional. Implementação de Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

Processos. Adão de Melo Neto

Introdução à Ciência da Informação

Davidson Rodrigo Boccardo

Sistemas Operacionais

Sistemas Operacionais

Introdução aos Sistemas Operacionais

Instalação e Configuração de Servidores Linux Server Gerenciamento de Processos. Prof. Alex Furtunato

Escalonamento. Decidindo qual processo vai executar. Infra-estrutura de Software

Sistemas Operacionais. Escalonamento de processos

Sistemas Operacionais. Escalonamento de Processos

Sistemas Operacionais. Gerência de Processador

Sistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Sistemas Operacionais Escalonamento. Carlos Ferraz Jorge Cavalcanti Fonsêca

Sistemas Operacionais Aula 07: Scheduling da CPU. Ezequiel R. Zorzal

Sistemas Operacionais I

Sistemas de Informação. Sistemas Operacionais

Sistemas Operacionais I

Sistemas Operacionais

Processos. Prof. Gustavo Leitão

Sistemas Operacionais Aula 7

Escalonamento da CPU

SOP - TADS Processos. Revisão Ultima aula

Escalonamento da CPU

Sistemas Operativos. Um conjunto de rotinas de software que. virtualizando-o. diversos como o sistema de ficheiros e.

Davidson Rodrigo Boccardo

Algoritmos de escalonamento

Oganização e Arquitetura de Computadores

Sistemas Operacionais

Capítulo 2 Processos e Threads

Fundamentos de Sistemas Operacionais

Resumo: Sistemas Operacionais Abertos

Unidade 2. Processos Threads Concorrência em Java

ENADE 2011 SISTEMAS OPERACIONAIS

Arquitetura e Organização de Computadores

Gerenciamento de Memória Minix 3.1.7

Temporização (Scheduling) de Processos

Sistemas Distribuídos Capítulo 4 - Aula 5

Processos. Estruturas de Controle

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

Sistemas Distribuídos Aula 3

Estruturas de Sistemas Operacionais

Sistemas Operacionais. Capítulo 8 Gerência do Processador

6 ESCALONAMENTO DE CPU

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

Fundamentos de Arquitetura e Organização de Computadores

INE 5645 Programação Paralela e Distribuída

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

Arquitetura de Computadores - Módulos de E/S. por Helcio Wagner da Silva

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

Aula 06 Comandos Linux Gerenciamento de Privilégios e Processos Gerenciamento de Processos

Welcome the programmation Linux with shell script!!! Seja bem vindo a programação Linux com shell script!!!

SSC0640 Sistemas Operacionais I

Notas da Aula 11 - Fundamentos de Sistemas Operacionais

Transcrição:

Sistemas Operacionais Processos e Threads Thiago Leite <thiago.leite@udf.edu.br>

Processo Programa em execução Todo processo é um programa? Mais: o programa é apenas parte do estado. Menos: programas podem gerar vários processos.

Abstração de processo permite execução de múltiplas tarefas (multiprogramação) prevenir que um processo interfira em outro

Cada processo possui um espaço de endereçamento recursos de auxílio ao processo O processo e seu respectivo espaço de endereçamento chamam-se imagem do núcleo

Espaço de endereçamento Programa executável Dados do programa Registradores Arquivos abertos Alarmes pendentes Listas de processos relacionados

Segmentos de um processo Unix Pilha conjunto de instruções de uma sub-rotina Heap extensão da memória BSS (Block Memory Starting with Symbol) variáveis não inicializadas Data variáveis inicializadas Texto instruções do programa

Processo Unix Área de Endereçamento

Multiprogramação vários processos em memória vários fluxos de execução processos desconhecem o momento que serão executados apenas um contador de programa real

Multiprogramação Somente um processo ativo em um determinado instante

Sistema operacional lida com a Tabela de Processos estruturas de cada processo em execução

Árvore de Processos Pode criar um ou mais processos filhos Processos filhos também podem criar processos filhos

Árvore de Processos Relação entre processos

Hierarquias de processos Em Unix todos os processos compõe uma árvore com a raíz o INIT Em Windows todos os processos são iguais

Chamadas de sistema de gestão de processos criação e término de processos requisitar mais memória ou esperar o término de outro processo

Momentos em que os processos geralmente são criados Início do sistema Execução de uma chamada de sistema de criação Requisição do usuário Início de tarefa em lote (batch)

Processos podem ser criados em Foreground Background

Processos em Foreground processos sujeitos a interação do usuário usualmente processos do terminal de comandos ou GUI

Processos em Background daemons em Unix Disk And Execution MONitor serviços em Windows

Fluxo de dados para processos em Unix entrada padrão saída de saída normal entrada Processo saída com erro saída

Término de processo Saída normal (voluntário) Saída por erro (voluntário) Erro fatal (involuntário) Cancelamento por outro processo (involuntário)

Comunicação entre processos processo envia saída para entrada de outro processo dois processos solicitando o mesmo recurso um processo depende de outro para realizar uma tarefa

Pipe Unix Saída de um processo e entrada de outro

Processos em Unix PID (Process IDentifier) identificação de um processo número utilizado para manipular os processos e enviar sinais (alarmes)

Processos em Unix Possui um UID (User IDentifier) associado Vários UIDs podem pertencer a um GID (Group IDentification) Sistemas baseados em Unix possuem um UID especial com super-poderes.

Outros elementos de processos em Unix Ambiente de execução (Ex: PATH) Diretório de trabalho Instruções do programa Registradores e Pilha de instruções Heap (alocação de memória dinâmica) Descritores de arquivos Ações de sinais Bibliotecas compartilhadas Sistema de comunicação entre processos (filas de mensagens, pipes ou memória compartilhada)

Informações sobre Processos comando ps

A Tabela de Processos em sistemas Unix-like usualmente é representada por /proc Em Linux procfs é um sistema de arquivos virtual com a Tabela de Processos

Tabela de Processos Sistema virtual de arquivos que representa a tabela de processos

Significado de alguns elementos de /proc cmdline - comando e opções associados ao processo cwd - diretório de trabalho do processo. environ - variáveis de ambiente criadas pelo processo exe - executável do processo fd - descritores de arquivos utilizados maps - regiões de memória ocupadas pelo processo

Ciclo de vida de um processo da concepção do processo ao término

Estados principais de um processo Em execução (realmente usando a CPU) Pronto (executável; esperando seu momento) Bloqueado (esperando recursos)

Ciclo de vida de um processo Mudança possíveis de estados de um processo

O momento das interrupções depende do tipo de sistema a adotar Preemptivo (processos podem ser interrompidos sem consentimento) Não-preemptivo (processos que decidem o momento de parar)

Sistema preemptivo Escalonador (invisível ao processo) Interrupções Inicialização Bloqueio

Escalonador Utiliza a Tabela de Processos Manipulador de processos (process handler) Salvar registradores Alterar ponteiro da pilha Rotinas em linguagem Assembly

Escalonamento 1. Hardware guarda contador de programa atual 2. Hardware carrega o novo contador de programa 3. Rotinas Assembly salvam os registradores 4. Rotinas Assembly carregam novos registradores 5. Serviço de interrupção em C carrega os buffers 6. Escalonador decide quem será o próximo a executar 7. Procedimentos em C retornam comando às rotinas Assembly 8. Rotina Assembly inicia o processo atual

Principais métodos de escalonamento FIFO (First-In-First-Out) ou FCFS (First-Come-First-Served) primeiro a chegar em pronto é o primeiro a ser executado SJF (Shortest Jog First), SPN (Shortest Process Next) e SRT (Shortest Remaning Time) menor tarefa será executada primeiro Por prioridade processos são associados a prioridades. Processos com prioridades iguais obedecem ao FIFO. Round-Robin ou circular revezamento com preempção

9.2 / SCHEDULING ALGORITHMS 415 0 5 10 15 20 First-come-first served (FCFS) A B C D E Round-robin (RR), q 1 Round-robin (RR), q 4 Shortest process next (SPN) Shortest remaining time (SRT) Highest response ratio next (HRRN) A B C D E A B C D E A B C D E 8 2 E FIFO ou FCFS A B C D E Exemplo de escalonamento A B C Processo Tempo de chegada Tempo de Processament o A 0 3 B 2 6 C 4 4 D 6 5

Algoritmo de tarefa mais curta (SJF) Processos de menor carga têm prioridade

D E The normalized turnaround time for process Y is way out of line compared to the Shortest process next (SPN) Shortest remaining time (SRT) A B C D E A B C D E Highest response ratio next (HRRN) Feedback q 1 Feedback q 2 i Figure 9.5 A B C D E A B C D E A B C D E Processo Tempo de chegada Exemplo de Escalonamento por SJF, SPN e SRT Exemplo de escalonamento 0 5 10 15 20 A Comparison of Scheduling Policies Tempo de Processament o A 0 3 B 2 6 C 4 4 D 6 5 E 8 2

Algoritmo por Prioridade Processos de maior prioridade possuem preferencia

Processo B possui maior prioridade de execução P = Pronto E = Execução W = Espera Exemplo de Escalonamento por Prioridade Processos de menor prioridade apenas serão escalonados se não houver outros processos de maior prioridade

Algoritmo Round-Robin ou Circular Algoritmo democrático

C D E Round-robin (RR), q 1 Round-robin (RR), q 4 Shortest process next (SPN) Shortest remaining time (SRT) A B C D E A B C D E A B C D E A B C D E Processo Tempo de chegada Tempo de Processament o A 0 3 B 2 6 C 4 4 D 6 5 E 8 2 Highest response ratio next (HRRN) Feedback q 1 A B C D E Escalonamento Round-Robin com diferentes tempos de preempção A B C D E

Métodos compostos de escalonamento Fila Múltipla (Multilevel Queue) divide a fila de prontos em várias filas separadas, com base em alguma propriedade do processo. Cada fila possui seu próprio algoritmo de escalonamento Fila Múltipla com Realimentação (Multilevel Feedback Queue) identifica dinamicamente o comportamento de cada processo, ajustando assim suas prioridades de execução e mecanismos de escalonamento.

Algoritmo Fila Múltipla diferentes filas para diferentes tipos de processos

Escalonador com Fila Múltipla diferentes filas para diferentes tipos de processos podendo os processos mudarem de fila em tempo de execução

Tipos de processos CPU Bound Uso intensivo da CPU Poucas operações de Entrada/Saída Pode monopolizar a CPU dependendo do tipo de algoritmo de escalonamento utilizado I/O Bound Orientado a Entrada/Saída Devolve deliberadamente o uso da CPU

Cenários de uso da CPU grau de multiprogramação diante diferentes tipos de processos

Threads Miniprocessos Múltiplas atividades simultâneas Compartilhamento do espaço de endereçamento Criar threads é cem vezes mais rápido

Vida e Morte Processos e Threads

Exemplo do uso de Threads Editor WYSIWYG (What You See Is What You Get) Edição e resultado simultâneo O Microsoft Word e BrOffice.org são exemplos de editores WYSIWYG

Editor de texto com três Threads cada thread de forma concorrente realizando diferentes instruções dentro do mesmo processo

Servidor Web Multithread thread dispatcher delegando funções para threads escravas

Condições de corrida processos que compartilham dados ex: spool de impressão dois processos acessam a mesma região e ocasionalmente entrem em conflito ex: dois processos acham o mesmo espaço livre e gravam no local

Condição de corrida Dois processos incluindo arquivos a serem impressos no spool ao mesmo tempo

Exclusão mútua apenas um processo poderá acessar determinado recurso por vez o código de um processo que faz uso de recurso compartilhado chama-se região crítica

Condições para acesso a dados compartilhados dois processos nunca podem estar simultaneamente em suas regiões críticas nenhum processo fora de sua região crítica poderá bloquear outro processo nenhum processo deverá esperar eternamente por sua região crítica

Condição de corrida Exclusão mútua usando regiões críticas

Espera ociosa espera para que um processo deixe sua região crítica e possa realizar o mesmo expectativa de espera por um tempo razoável

Semáforos proposto por Edsger Dijkstra em 1965 utilizada em sistemas multiprogramados variável protegida para controle de recursos compartilhados

Operações sobre semáforos são atômicas inicialização operação wait operação signal

Inicialização de semáforo recebe valor inteiro indicando quantos processos poderão ter acesso simultâneo a um recursos compartilhado

Operação wait em semáforos decrementa o valor do semáforo se esse possuir valor 0, esse é colocado em estado de espera ociosa

Operação signal em semáforos se houver um processo em espera ociosa, esse é acordado se não houver processo em espera ociosa, o valor do semáforo é incrementado

Os processos fazem uso de uma estrutura FIFO para uso do Semáforo

Mutex tipo mais simples de semáforo semáforo binário, onde o recurso está disponível ou não

Condição de corrida Chave de Acesso ao Recurso Compartilhado com Mutex

Revisão Processo Concorrência Multiprogramação Espaço de endereçamento Tabela de processos Imagem do núcleo Árvore de processos Subprocessos Chamadas de sistema (system calls) Criação de processos Foreground Background PID Processos em Unix UID GID ps kill Término de processo Shell Unix Hierarquias de processos Comunicação entre processos Estados de um processo Diagrama de estados de processo Estados de um processo em Unix Escalonador Manipulador de processos Algoritmos de Escalonamento Otimização do uso da CPU Threads Condições de corrida Região crítica Semáforos Exclusão mútua Mutex

Laboratório Comandos Bash Shell ls - listar o conteúdo de um diretório ou informações sobre um arquivo $ ls cd - navegar entre diretórios $ cd diretorio

Laboratório Comandos Bash Shell cat - exibe e concatena arquivos $ cat arquivo1 arquivo2 grep - filtra uma entrada por uma string $ grep filtro arquivo

Laboratório Comandos Bash Shell echo - imprime uma mensagem $ echo Ola Mundo rm - remove arquivos do sistema $ rm arquivo

Laboratório Comandos Bash Shell sudo - solicitar execução em modo Super Usuário $ sudo comando su - autenticar-se como Super Usuário $ su

Laboratório Uso do pipe ( ) em Bash Shell $ cat arquivo1 arquivo2 grep filtro

Laboratório Comandos Bash Shell ; - finalização de um comando comando1 ; comando2 \ - continuação de um mesmo comando em várias linhas comando \ continuaçãocomando;

Laboratório Redirecionamento de entradas e saídas em Bash Shell < - entrada padrão comando < arquivo_com_argumentos > ou >> - saída padrão comando > arquivo_saida 2> ou 2>> - saída de erro comando 2>> arquivo_erro_apendice 2>&1 - saída padrão e de erros comando 2>&1 arquivo_saidas

Laboratório Comandos em Bash Shell & - execução de um comando em segundo plano (background) comando & jobs - apresenta comandos em background [1]+ Running comando & fg - traz processo novamente para o foreground fg 1 bg - leva um processo para background bg 1

Laboratório Comandos em Bash Shell ps - obtém informações sobre os processos do sistema ps aux kill - envia um sinal para um determinado PID kill -9 1000