IC - UFF Sistemas Operacionais Threads. IC - UFF Processos e threads Vimos o conceito de processo englobando duas características básicas: propriedade.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais
Advertisements

Sistemas Distribuídos
Sistemas Operacionais
Sistemas Operacionais
Capitulo 6: Entrada e Saída
Sistemas Operacionais
Sistemas Operacionais
Threads (Linha de execução )
Profa. Priscila Facciolli
Processos no Unix e Linux
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Sincronização com Posix Threads
Threads no Multiplus/Mulplix Adriano Cruz ©2003 NCE e IM/UFRJ
PThreads MO801/MC972.
Chapter 4: Threads.
Threads Estagiário: Bruno Guazzelli Batista Slides de autoria do Prof Drº Marcos José Santana baseados no livro Sistemas Operacionais Modernos de A. Tanenbaum.
SSC SISTEMAS OPERACIONAIS I
SSC SISTEMAS OPERACIONAIS I
Threads.
Processos Conceitos Básicos.
Estruturas de Controle
Threads.
Sistemas Operacionais
Concorrência em Java Threads em Java.
Unidade 1-1 Processos e Threads
Concorrência em Java Threads em Java.
SISTEMAS OPERACIONAIS
Sistemas Operacionais
Sistemas Operacionais
Linguagem de Programação IV
Sistema Operacional Processos
Concorrência entre Threads Java
Processo Entidade dinâmica e efêmera
Sistemas Operacionais Profª Adriana Vettorazzo
Conteúdo 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.
Conteúdo Processos e threads Partes do processo
IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings.
Tornar mais eficiente o aproveitamento dos recursos do computador
Sistemas Operacionais
Processos.
Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação SISTEMAS OPERACIONAIS Aula 9 Regiane Kawasaki
Computação L1: Infra-Estrutura Básica
Sistemas Operacionais
Sistemas Operacionais
Prof. Alexandre Monteiro Recife
PROGRAMAÇÃO DISTRIBUÍDA Aula 01 Prof. Henrique Mongelli
Programação de Sistemas Distribuídos e Concorrentes
Processos.
SISTEMAS OPERACIONAIS I
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
S ISTEMAS OPERACIONAIS PROCESSOS Horácio Ribeiro.
Multiprocessamento Sérgio Cavalcante CIn GRECO - CIn / UFPE.
Capítulo 4: Processos.
Infra-Estrutura de Software
SISTEMAS OPERACIONAIS MACH EPOS
SISTEMAS OPERACIONAIS
Bruno Affonso Diego Chiquito Ruan Berté.   O código de Escalonamento no Windows é implementado no Kernel.  A rotina que desempenha as tarefas do Escalonador.
Sistemas Operacionais
Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads
Deadlocks.
Administração de Sistemas Operacionais 1 -Windows
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
Processos, Threads e Sincronização em Windows NT Alisson Felipe Coelho Garcia Lucas Mateus Malaquias Rogerio Junio Leachenski.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Sistemas Operacionais Processo
Bruna Cavallero Martins Universidade Católica de Pelotas.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais Prof.: Gustavo Wagner FATEC-PB.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
ProgramaçãoConcorrente Glêdson Elias
Transcrição da apresentação:

IC - UFF Sistemas Operacionais Threads

IC - UFF Processos e threads Vimos o conceito de processo englobando duas características básicas: propriedade de recursos a um processo é alocado um espaço de endereçamento virtual para manter a sua imagem de tempos em tempos o processo pode ter mais memória, além do controle de arquivos, dispositivos de E/S,...

IC - UFF Processos e threads (2) unidade de despacho: um processo é uma linha de execução esta linha de execução é intercalada com outras linhas de outros processos cada uma delas tem um estado de execução e uma prioridade é a entidade que é escalonada e despachada pelo SO

IC - UFF Processos e threads (3) Estas duas características podem ser tratadas de forma independente pelo SO: thread ou processo peso leve (lightweight process): é a unidade de despacho processo ou tarefa: é a unidade de alocação de recursos

IC - UFF Assim,... Em um ambiente multithreaded, um processo: é a unidade de alocação e proteção de recursos tem um espaço de endereçamento virtual que mantém a imagem do processo tem acesso controlado a outros processos, a outros processadores arquivos e outros recursos

IC - UFF e... Em um processo podem existir uma ou mais threads com um estado de execução (pronta,...) seu contexto salvo quando não estiver executando diferentes valores de PC dentro de um processo sua pilha de execução cada thread pode chamar procedimentos acesso a variáveis locais próprias acesso compartilhado com outras threads deste processo aos recursos do processo

IC - UFF Modelos de processos Pilha do usuário Pilha do núcleo Espaço de ender. do usuário PCB Thread única Espaço de ender. do usuário TCB Pilha do usuário Pilha do núcleo PCB Thread Multithreaded TCB Pilha do usuário Pilha do núcleo Thread TCB Pilha do usuário Pilha do núcleo Thread bloco de controle para cada thread (TCB)

IC - UFF Benefícios de threads É mais rápido criar uma thread que um processo É mais rápido terminar uma thread que um processo É mais rápido chavear entre threads de um mesmo processo Threads podem se comunicar sem invocar o núcleo já que compartilham memória e arquivos no caso de comunicação entre processos, a intervenção do núcleo é necessária para proteção e sincronização

IC - UFF Contudo, Suspender um processo implica em suspender todas as threads deste processo já que compartilham o mesmo espaço de endereçamento O término de um processo implica no término de todas as threads desse processo

IC - UFF Exemplos de uso de threads um editor de rascunho trabalho em primeiro e segundo planos: E/S e cálculo em planilhas thread 1: mostra menu e lê entrada thread 2: atualização do rascunho Processamento assíncrono salvamento periódico em editores de texto Aumento de velocidade de execução paralelismo Organização facilidade de projeto e implementação

IC - UFF Estados de uma thread Estados fundamentais executando, pronto e bloqueado Faz sentido o estado suspensa? O que acontece com as threads de um processo quando uma delas bloqueia?

IC - UFF Exemplo: RPC serv processo 1 tempo pedido RPC pedido RPC serv thread A thread B (processo 1) pedido RPC pedido RPC executando bloqueado

IC - UFF Operações associadas aos estados das threads spawn de um processo todas as threads também são criadas spawn de uma thread criados somente + região p/ stack + código e dados locais bloqueamento/desbloqueamento uma thread fica bloqueada devido ao evento se torna pronta quando o evento ocorre

IC - UFF Em que nível implementar? Threads no nível do usuário gerenciamento das threads é feito pela aplicação sem intervenção do SO o núcleo desconhece a existência de threads bibliotecas para criação e destruição de threads envio de msgs escalonamento de threads salvamento e recuperação de contexto chaveamento entre threads não requer privilégio de modo núcleo

IC - UFF e mais... implementadas através de bibliotecas: executam em qualquer SO Porém: chamada ao sistema bloqueia todas as threads de um processo (para o SO é só um processo) não aproveita os benefícios do multiprocessamento (estão em algum processo!)

IC - UFF Em que nível implementar? Nível do núcleo gerenciamento das threads é feito pelo núcleo núcleo mantém a informação de contexto para processo e threads escalonamento e chaveamento das threads é feito pelo núcleo bloqueio de uma thread não bloqueia as outras

IC - UFF e ainda... threads podem aproveitar a capacidade de multiprocessamento usuário enxerga uma API para threads do núcleo Porém: a transferência de controle entre threads de um mesmo processo requer chaveamento para modo núcleo chaveamento de threads = troca de contexto (no entanto mais barata que troca de contexto de processos)

IC - UFF Comparando implementações

IC - UFF Exemplo de uso #include #include void thr_func(int *id); /* codigo threads 1 e 3 */ void thr_yield(int *id); /* codigo thread 2 */ int main(){ pthread_t thr1,thr2,thr3; /* declara as threads */ int nThrID1,nThrID2,nThrID3; nThrID1 = 1; nThrID2 = 2; nThrID3 = 3; /* cria threads: id, inic, funcao, param funcao */ pthread_create(&thr1,NULL,(void* )thr_func,&nThrID1); pthread_create(&thr2,NULL,(void* )thr_yield,&nThrID2); pthread_create(&thr3,NULL,(void* )thr_func,&nThrID3); /* espera fim das threads: id, status de saida */ pthread_join(thr3,NULL); pthread_join(thr2,NULL); pthread_join(thr1,NULL); }

IC - UFF Exemplo de uso (2) /* codigo das threads 1 e 3 */ void thr_func(int *id){ printf("Eu sou a thread %d\n",*id); } /* codigo da thread 2 */ void thr_yield(int *id){ sched_yield(); printf("Eu sou a thread %d\n",*id); } /* compilacao: gcc -o threads -lthread -lposix4 threads.c */