Multiprogramação leve em arquiteturas multi-core
|
|
- João Henrique Sanches Wagner
- 8 Há anos
- Visualizações:
Transcrição
1 Multiprogramação leve em arquiteturas multi-core Prof. Dr. Prof. Dr. Universidade de Santa Cruz do Sul Santa Cruz do Sul,. 1
2 Sumário Introdução Arquiteturas multi-core Programação multithread Ferramentas de programação Prática de programação Considerações finais 2
3 Sumário Introdução Arquiteturas multi-core Programação multithread Ferramentas de programação Prática de programação Considerações finais 3
4 Sumário Introdução Arquiteturas multi-core Programação multithread Ferramentas de programação Prática de programação Considerações finais 3/Julho 8:00 às 10:00 3/Julho 13:30 às 15:30 4/Julho 13:30 às 15:30 4
5 Introdução Objetivos do curso Arquitetura de von Neumann Lei de Moore Arquiteturas paralelas Programação concorrente Motivação da programação em multi-core 5
6 Objetivos do curso Desenvolver as habilidades de programação concorrente em arquiteturas multi-core. Discutir os benefícios da utilização de arquiteturas multi-core no desenvolvimento de programas concorrentes. Apresentar um conjunto de ferramentas para desenvolvimento de programas concorrentes em arquiteturas multi-core. 6
7 Objetivos do curso Conceitos da arquitetura multi-core Evolução Arquitetura básica Produtos de mercado Programação concorrente Conceitos e princípios Programação concorrente e paralela Componentes de um programa concorrente Multiprogramação leve 7
8 Objetivos do curso Conceitos da arquitetura multi-core Programação concorrente Multiprogramação leve Fluxo de execução e sincronização Ferramentas de programação POSIX threads OpenMP Prática de programação 8
9 Objetivos do curso Conceitos da arquitetura multi-core Programação concorrente Multiprogramação leve Prática de programação Técnicas para otimização de desempenho 9
10 Arquitetura de von Neumann Modelo de von Neumann (von Neumann, 1945) Execução seqüencial Memória para dados e programas Efeito colateral Memória Processador Entrada Unidade de controle Unidade lógica e aritmética Saída Banco de registradores 10
11 Arquitetura de von Neumann Modelo de von Neumann Execução seqüencial Memória para dados e programas Efeito colateral Gargalo de von Neumann Memória Processador Entrada Unidade de controle Unidade lógica e aritmética Saída Banco de registradores 11
12 Arquitetura de von Neumann Modelo de von Neumann Gargalo de von Neumann Introdução de cache Memória Cache Processador Entrada Unidade de controle Unidade lógica e aritmética Saída Banco de registradores 12
13 Arquitetura de von Neumann Modelo de von Neumann Outras otimizações introduzem paralelismo de execução Pipeline Incorpora o esquema proposto por cadeias de produção Como as unidades funcionais do processador são responsáveis por atividades independentes elas podem operar simultaneamente Um pipeline em 3 estágios pode permitir a execução simultânea de até 3 instruções: Busca instrução Decodifica Executa Superescalar I 1 I 2 I 3 I 4 I 5 I 6 I 1 I 2 I 3 I 4 I 5 I 6 I 1 I 2 I 3 I 4 I 5 I 6 13
14 Arquitetura de von Neumann Modelo de von Neumann Outras otimizações introduzem paralelismo de execução Pipeline Superescalar Permite a execução de n instruções simultaneamente (comum n=4) Suposição: as instruções requerem unidades de processamento disjuntas Exemplo: utilização de aritmética inteira e de ponto flutuante por duas instruções consecutivas É comum também que o hardware duplique recursos de processamento mais freqüentemente utilizados 14
15 Arquitetura de von Neumann Modelo de von Neumann Outras otimizações introduzem paralelismo de execução Pipeline Superescalar Pipeline+Superescalar Em ambos casos o programador pode escalonar as instruções no seu código para tirar proveito do paralelismo de baixo nível oferecido Evitar saltos Evitar manipular dados globais Agrupar instruções diferentes Compiladores, em geral, empregam técnicas que otimizam o código de forma satisfatória 15
16 Arquiteturas paralelas Classificação de Flynn (Flynn, 1972) Segundo fluxos de controle e de dados Dados Controle Simples Múltiplo Simples SISD von Neumann MISD dataflow, pipeline Múltiplo SIMD array, sistólico MIMD multicomputadores, multiprocessadores 16
17 Arquiteturas paralelas Classificação de Flynn (Flynn, 1972) Classificação por compartilhamento de memória Extensão a classificação de Flynn para a classe MIMD considerando a apresentação da memória MIMD Fracamente acoplado Espaço de endereçamento múltiplo Fortemente acoplado Espaço de endereçamento único NORMA NOn-Remote Memory Access UMA Uniform Memory Access NUMA Non Uniform Memory Access 17
18 Arquiteturas paralelas UMA: Uniform Memory Access Multiprocessador Memória global a todos os processadores Tempo de acesso idêntico a qualquer endereço de memória P 1 P 2... P p Meio de comunicação M 1... M m Configuração de uma máquina UMA com p processadores e m módulos de memória 18
19 Arquiteturas paralelas UMA: Uniform Memory Access Multiprocessador Memória global a todos os processadores Tempo de acesso idêntico a qualquer endereço de memória Cada processador pode contar com uma cache própria P 1 P 2... P p Meio de comunicação M 1... M m Configuração de uma máquina UMA com p processadores e m módulos de memória 19
20 Arquiteturas paralelas UMA: Uniform Memory Access SMP: Symmetric MultiProcessor P 1 P 2... P p Barramento ou crossbar Memória Os processadores são idênticos e operam como definido pela arquitetura von Neumann O acesso a memória é compartilhado 20
21 Programação concorrente Concorrência Possibilidade de execução simultânea de dois ou mais fluxos de execução, não impedindo disputa por recursos Importante: a definição inclui a idéia de disputa por recursos mas não é restrita à ela! Ótica de Sistemas Operacionais Mais ainda, concorrência incorpora a idéia de que existe uma convergência dos fluxos para um ponto comum Uma eventual sincronização A produção do resultado final E também para idéia de ação colaborativa 21
22 Programação concorrente Concorrência Indica independência temporal O número de atividades concorrentes pode ser maior que a quantidade de recursos de processamento disponíveis Paralelismo Indica execução simultânea A quantidade de recursos de processamento disponível permite que duas ou mais atividades sejam executadas simultaneamente É usual utilizar a expressão programação paralela para o tipo de programação focada em desempenho Na nossa terminologia, programação paralela e programação concorrente são utilizadas com o mesmo significado 22
23 Programação concorrente Diversos níveis de concorrência Intra-instrução CISC Complex Instruction Set Computer, superescalares Entre instruções Hardware pipeline, registradores vetoriais X De bloco Diretivas paralelizantes, compiladores paralelizantes Procedimental Funções, procedimentos, subprogramas De processos Troca de mensagens De aplicações Grades computacionais Nosso escopo: Multiprogramação leve 23
24 Motivação da programação em multi-core Tendência Limites tecnológicos para aumento de desempenho com foco no aumento da freqüência de clock Arquiteturas com menor consumo de energia Grande problema da sociedade moderna Ainda mais cores no futuro próximo Facilidade de exploração Reflete naturalmente o modelo de programação multithread Suportado pelos SOs atuais Oportunidade Migração das maioria das aplicações desenvolvidas para mono-core Aumento de desempenho Execução paralela de aplicações em HW de baixo custo 24
25 Sumário Introdução Arquiteturas multi-core Programação multithread Ferramentas de programação Prática de programação Considerações finais 25
26 Arquiteturas multi-core Arquitetura SMP Multiprocessamento em um chip O multi-core Produtos comerciais 26
27 Arquitetura SMP Symmetric MultiProcessor Arquitetura paralela dotada de um conjunto de processadores idênticos (simétricos) compartilhando acesso a uma área de memória comum Estado Estado Estado CPUs Interrupção Interrupção Interrupção ULA ULA ULA Memória 27
28 Arquitetura SMP Symmetric MultiProcessor Arquitetura paralela dotada de um conjunto de processadores idênticos (simétricos) compartilhando acesso a uma área de memória comum SO único responsável pelo escalonamento de atividades (fluxos de execução) entre os processadores Cada CPU replica todo conjunto de recursos necessários à execução de um fluxo. Fator limitante de desempenho: contenção no acesso à memória 28
29 Arquitetura SMP Symmetric MultiProcessor Fator limitante de desempenho: contenção no acesso à memória Alternativa: adição de memória cache Estado Estado Estado CPUs Interrupção Interrupção Interrupção ULA ULA ULA Cache Cache Cache Memória 29
30 O multi-core Tecnologia em hardware na qual múltiplos cores são integrados em um único chip Multiplicação total dos recursos de processamento CPUs (cores) Processador (chip) Estado Interrupção Estado Interrupção Estado Interrupção ULA ULA ULA Cache Cache Cache Cache Memória 30
31 O multi-core Tecnologia em hardware na qual múltiplos cores são integrados em um único chip Multiplicação total dos recursos de processamento Grande vantagem: compatível com os códigos existentes! 31
32 O multi-core Com cache L2 privada por core L2 L1 Código L1 Dados Core 1 Core 2 L1 Código L1 Dados L2 Memória Barramento Com cache L2 compartilhada L1 Código L1 Dados Core 1 Core 2 L1 Código L1 Dados Memória Barramento L2 32
33 O multi-core Comparativo visão macro Estado Estado Estado Estado Estado Interrupção Interrupção Interrupção Interrupção Interrupção ULA ULA ULA ULA Cache Cache Cache Cache Memória Memória Processador HyperThreading Multiprocessador SMP Estado Interrupção Estado Interrupção Estado Interrupção ULA ULA ULA Cache Memória Processador multi-core 33
34 Produtos comerciais AMD Barcelona Quad-Core Opteron 64 bits, 4 cores, L2 privada, L3 compartilhada Kuma, Rana - AMD Athlon TM X2 Dual-Core 32/64 bits, 2 cores, L2 privada FASN8 8 cores 2007 Intel Montecito Itanium 2 64 bits, 2 cores, L2 e L3 privada Dempsey Xeon bits, 2 cores, L2 privada, HT Yonah Core TM Duo / Core TM 2 / Core 2 TM Extreme 32/64 bits, 2/4 cores, L2 compartilhada SUN Niagara UltraSPARC T1 64 bits, 4/6/8 cores, L2 privada 34
35 Produtos comerciais Hardware Toda industria de computadores tem opções Laptops Desktops Servidores Software Ferramentas de desenvolvimento Compiladores Depuração Desempenho Questão de licença Depende da opção do fornecedor Exemplos: Microsoft: por processador, não por core Oracle: por core, com fator de redução por core em processador multicore VMWare: por processador, com limite de 4 cores/processador 35
36 Ilustração Multi-core architecture Fonte: intel.com Explore a dual core Opteron TM Fonte: amd.com Imagem ilustrativa 36
37 Sumário Introdução Arquiteturas multi-core Programação multithread Ferramentas de programação Prática de programação Considerações finais 37
38 Programação multithread Programação concorrente Thread Casos de estudo Paralelismo de tarefas Paralelismo de dados 38
39 Programação concorrente Programação concorrente Voltada às questões da aplicação Programação paralela Voltada às questões do hardware disponível Execução concorrente Competição no acesso a recursos de hardware Execução paralela Replicação de recursos de hw permite simultaneidade 39
40 Programação concorrente Programação concorrente, pois A programação concorrente inclui a programação paralela Permite focar nas questões da aplicação Ou seja, não requer do programador conhecimentos sobre o hardware paralelo disponível Idealmente: alto grau de portabilidade Considerando que a ferramenta de programação possui um modelo de execução eficiente 40
41 Programação concorrente Programação concorrente Extensão ao paradigma Imperativo Contexto de trabalho no curso Execução segundo a arquitetura de von Neumann Programa seqüencial é composto por: Uma seqüência de instruções Um conjunto de dados Execução seqüencial Instruções modificam estados de memória Efeito colateral A execução de uma instrução implica na alteração de um estado (posição de memória) 41
42 Programação concorrente Programação concorrente Extensão ao paradigma Imperativo Execução segundo a arquitetura de von Neumann Execução seqüencial: I1: MOV DX, 0 I2: MOV AX, [313] I3: ADD DX, AX I4: DEC AX I5: CMP AX, 0 I6: JNE I3 I7: MOV AX, [313] I8: CALL RotinaImpressão Efeito da execução de uma instrução: Escrita em memória Comunicação 42
43 Programação concorrente Programação concorrente Extensão ao paradigma Imperativo Execução segundo a arquitetura de von Neumann Execução seqüencial: I1: MOV DX, 0 I1 I2 I7 I2: MOV AX, [313] I3: ADD DX, AX I3 I8 I4: DEC AX I5: CMP AX, 0 I4 I6: JNE I3 I7: MOV AX, [313] I5 I8: CALL RotinaImpressão I6 43
44 Programação concorrente Programação concorrente Extensão ao paradigma Imperativo Execução segundo a arquitetura de von Neumann Execução seqüencial: Unidade execução: a instrução Comunicação: alteração de um estado de memória Sincronização: implícita, pois uma instrução não é executada antes que a anterior termine Execução concorrente deve, igualmente, definir: A unidade de execução elementar O mecanismo de comunicação utilizado A coordenação da execução para controle do acesso aos dados 44
45 Programação concorrente Programação concorrente Extensão ao paradigma Imperativo Execução segundo a arquitetura de von Neumann Ferramentas de programação multithread oferecem recurso para: Definir unidades de execução em termos de conjuntos de instruções ou procedimentos Identificar regiões de memória (dados) compartilhados entre as unidades de execução Controlar acesso aos dados compartilhados 45
46 Programação concorrente Modelos de Decomposição Paralela Paralelismo de tarefas O paralelismo é definido em termos de atividades independentes, processando sobre conjunto de dados distintos. Sincronização no início e no fim da execução concorrente e, eventualmente, durante a execução. Paralelismo de dados O paralelismo é definido em termos de dados que podem sofrer a execução da mesma operação de forma independente. Sincronização no início e no final da execução concorrente. 46
47 Programação concorrente Modelos de Decomposição Paralela Paralelismo de tarefas O paralelismo é definido em termos de atividades independentes, Utilização de mecanismos de processando sobre conjunto de dados distintos. barreiras Sincronização Paralelismo no início aninhado e no fim da execução concorrente e, eventualmente, Fortran durante paralelo a execução. OpenMP Paralelismo de dados O paralelismo Paralelismo é definido não em estruturado termos de dados que podem sofrer a execução da mesma operação de forma independente. POSIX Threads MPI Sincronização no início e no final da execução concorrente
48 Programação concorrente Modelos de programação Oferecem níveis de abstração dos recursos oferecidos pelas arquiteturas e pelas ferramentas Ferramentas oferecem recursos para programação de arquiteturas reais Modelo Ferramenta de programação Arquitetura É possível que uma ferramenta permita a exploração de mais de um tipo de paralelismo ou a utilização de diferentes modelos de concorrência. No entanto, cada ferramenta é mais conveniente para um determinado esquema 48
49 Thread Processo leve Noção de processo Um programa define uma seqüência de instruções e um conjunto de dados Um processo representa uma instância de um programa em execução. A seqüência de instruções do programa define um fluxo de execução a ser seguido e o espaço de endereçamento utilizado. O processo também possui associado o registro de recursos que utiliza e é manipulado pelo sistema operacional. 49
50 Thread Processo leve Noção de processo Memória programa.exe $> programa.exe Pilha Reg PCB 50
51 Thread Processo leve Noção de processo Informações no PCB (Process Control Block) Process ID User and User Grup ID Diretório de trabalho Descritor de arquivos Manipuladores de sinais Bibliotecas de compartilhadas Ferramentas de comunicação (pipes, semáforos etc) 51
52 Thread Processo leve Noção de processo Processo multithread Um programa define várias seqüência de instruções e um conjunto de dados Uma thread representa uma instância de uma seqüência de instruções em execução. Cada seqüência de instruções do programa define um fluxo de execução a ser seguido e os dados o espaço de endereçamento utilizado. As threads compartilham o registro de recursos que utilizados pelo processo. 52
53 Thread Processo leve Noção de processo Processo multithread A() D() Memória A() A() E() B() E() C() F() Programa fonte Processo com múltiplas threads 53
54 Thread Processo leve Noção de processo Processo multithread Os fluxos são independentes Competição pelos recursos da arquitetura Trocas de dados através de leituras e escritas em memória Competição pelos aos dados na memória compartilhada 54
55 Thread Processo leve Noção de processo Processo multithread Memória Pilha Reg Pilha Reg Pilha Reg PCB 55
56 Thread Processo leve Noção de processo Processo multithread Acesso ao dado compartilhado através de operações de leitura e escrita convencionais Escrita: Dado = valor Leitura: variável = Dado Memória 56
57 Thread Processo leve Noção de processo Processo multithread Acesso ao dado compartilhado através de operações de leitura e escrita convencionais O programador é responsável por introduzir instruções para sincronização entre fluxos Memória 57
58 Thread Processo leve Noção de processo Processo multithread Acesso a dado Instruções de sincronização Seção crítica: trecho de código com instruções que manipulam dado compartilhado entre fluxos de execução distintos Memória 58
59 Thread Processo leve Thread: custo de manipulação reduzido em relação ao processo Chaveamento de contexto em tempo menor Comunicação entre threads via memória compartilhada Criação/Destruição de threads mais eficiente que de processos Informações de cada thread Pilha Registradores Propriedades de escalonamento (prioridade, política) Sinais pendentes ou bloqueados Dados específicos do thread (errno) 59
60 Thread Ciclo de vida Criar lista de espera Pronto OK Bloq escalonamento time-out Exec sincronização return Fim termina Zumbi sincroniza 60
61 Thread Implementações 1 : 1 N : 1 M : N Thread sistema Thread usuário Misto SMP Mais leves Compromisso 61
62 Thread Modelos de Threads - 1 : 1 CriaThread(foo); Memória CriaThread(foo); 62
63 Thread Modelos de Threads - 1 : 1 Mecanismo de escalonamento garantido pelo sistema. Memória Escalonamento 63
64 Thread Modelos de Threads - 1 : 1 Estados das threads: pronto bloqueado executando MutexUnlock( &m ); Memória Escalonamento 64
65 Thread Modelos de Threads - 1 : 1 Memória MutexLock( &m ); Escalonamento 65
66 Thread Modelos de Threads - 1 : 1 Perda de processador: Situação 1: - decisão do escalonador (término do quantum) A thread é interrompida Memória Escalonamento 66
67 Thread Modelos de Threads - 1 : 1 Perda de processador: Memória Situação 2: - sincronização da thread MutexLock( &m ); Escalonamento 67
68 Thread Modelos de Threads - 1 : 1 Perda de processador: Memória Situação 2: - sincronização do thread O thread é retirada do do processador Escalonamento 68
69 Thread Modelos de Threads - 1 : 1 Vantagens Aumento do nível de paralelismo real na execução da aplicação Exploração das arquiteturas SMP Memória Escalonamento 69
70 Thread Modelos de Threads - 1 : 1 Porém... Memória Os threads não são muito leves Número limitado de atividades concorrentes Escalonamento 70
71 Thread Modelos de Threads - N : 1 Threads gerenciados em nível aplicativo espaço usuário O processo fornece um único suporte à execução Memória Escalonamento Escalonamento 71
72 Thread Modelos de Threads - N : 1 Threads gerenciadas a nível aplicativo espaço usuário O processo é que sofre o escalonamento do sistema operacional Memória Escalonamento Escalonamento 72
73 Thread Modelos de Threads - N : 1 Vantagens Aumento do nível de concorrência que pode ser expresso para a aplicação Os threads são bastante leves Memória Escalonamento Escalonamento 73
74 Thread Modelos de Threads - N : 1 Porém... Não explora o paralelismo natural de uma arquitetura SMP Um thread pode bloquear todo processo ao realizar uma chamada bloqueante (p.ex. recv, scanf) ao sistema Memória Escalonamento Escalonamento 74
75 Thread Modelos de Threads - N : M Modelo misto gerenciamento tanto no espaço usuário quanto pelo sistema operacional Memória Escalonamento Escalonamento 75
76 Thread Modelos de Threads - N : M Vantagens Separação entre a descrição da concorrência existente na aplicação do paralelismo real existente na arquitetura Memória Escalonamento Escalonamento 76
77 Thread Modelos de Threads - N : M Porém... Memória Escalonamento Custo de implementação?... Escalonamento 77
78 Thread 1:1 N:1 Modelos de Threads Exemplos NPTL (Native POSIX Thread Library) Minix HP-UX SunOS 4.x N:M Solaris (LWPs LightWeight Processes) Cilk (projeto de pesquisa) Anahy (projeto de pesquisa) 78
79 Thread Erros comuns na programação Considerar uma ordem de execução dos threads Erro: Introduzir no algoritmo uma premissa que considere a ordem de execução dos threads Conseqüência: Aordem de execução é dada pela heurística de escalonamento, sendo estabelecida em tempo de execução. Normalmente esta heurística também considera fatores que são externos ao programa. Qualquer premissa no algoritmo que considere a ordem de execução fatalmente irá produzir um programa incorreto Solução: Caso seja necessário definir uma ordem de execução para os threads devem ser utilizadas as primitivas específicas de sincronização disponibilizadas pela ferramenta utilizada 79
80 Thread Erros comuns na programação Considerar uma ordem de execução dos threads Acesso simultâneo a um dado por dois (ou mais) threads Data-race Erro: Não controlar o acesso ao espaço de endereçamento compartilhado pelos threads Conseqüência: Incoerência do estado da execução pela manipulação simultânea e não controlada dos dados Solução: Identificar os dados passíveis de acesso simultâneo por dois (ou mais) threads e proteger sua manipulação pelo uso de mecanismos de sincronização 80
81 Thread Erros comuns na programação Considerar uma ordem de execução dos threads Acesso simultâneo a um dado por dois (ou mais) threads Postergação indefinida Deadlock Erro: Não sinalizar uma condição de saída de uma sincronização Conseqüência: Um (ou mais) thread(s) permanecem bloqueados aguardando uma sincronização Solução: Garantir que todos as condições de saída de sincronizações sejam efetuadas 81
82 Casos de estudo Paralelismo explícito O programador deve introduzir diretivas para gerar e controlar a execução paralela do programa Diferentes níveis de abstração Paralelismo de dados Paralelismo de tarefa 82
83 Casos de estudo Paralelismo de dados OpenMP Diretivas de compilação / Biblioteca de serviços Paralelismo aninhado Paralelismo de tarefa POSIX threads Biblioteca de funções Paralelismo não estruturado 83
84 Sumário Introdução Arquiteturas multi-core Programação multithread Ferramentas de programação POSIX Threads pthreads OpenMP Prática de programação Considerações finais 84
85 Pthreads Padrão IEEE POSIX c 1995 Definido para permitir compatibilidade de programas multithread entre diferentes plataformas Define a interface de serviço (API) É de uso geral Linux LinuxThreads NPTL Native POSIX Threads Library Windows pthreads_win32 85
86 Pthread Corpo de um thread Função C/C++ convencional Recebe e retorna endereços de memória Variáveis locais visíveis apenas no escopo da função void *foo(void *args) {... // Código C/C++... } Dois threads podem ser criados a partir da mesma função, no entanto, são instâncias diferentes!!! 86
87 Pthreads Interface básica Serviços pthread_xxxx Tipos de dados pthread_t_xxxx Macros PTHREAD_XXXXX Retorno dos serviços Código de erro. Execução sem erro retorna 0 (zero). Manipula a variável errno Conceito Estrutura de dados opaca 87
88 Pthreads Manipulação de Threads Criação: int pthread_create(..., void *(*foo)(void *), void *arg ); Término: void pthread_exit(void *retval ); return (void *)retval; Sincronização: int pthread_join(pthread_t tid, void **ret); Identificação: pthread_t* pthread_self(void); 88
89 Pthreads Manipulação de Threads Criação: int pthread_create( pthread_t *tid, pthread_attr_t *atrib, void *(*func)(void *), void *args ); Cria um novo fluxo de execução (um novo thread). O novo fluxo executa de forma concorrente com o thread original 89
90 Pthreads Manipulação de Threads Criação: int pthread_create( pthread_t *tid, pthread_attr_t *atrib, void *(*func)(void *), void *args ); func: nome da função que contém o código a ser executado pelo thread 90
91 Pthreads Manipulação de Threads Criação: int pthread_create( pthread_t *tid, pthread_attr_t *atrib, void *(*func)(void *), void *args ); args: ponteiro para uma região de memória com dados de entrada para a função 91
92 Pthreads Manipulação de Threads Criação: int pthread_create( pthread_t *tid, pthread_attr_t *atrib, void *(*func)(void *), void *args ); tid: identificador (único) do novo thread 92
93 Pthreads Manipulação de Threads Criação: int pthread_create( pthread_t *tid, pthread_attr_t *atrib, void *(*func)(void *), void *args ); atrib: atributos de execução para o novo thread 93
94 Pthreads Manipulação de Threads Criação: pthread_create(&tid,... OiMundo,...); tid2 pthread_create(&tid2,... OiMundo,...); tid main tempo 94
95 Pthreads Manipulação de Threads Criação: int main() { pthread_t tid; char *str = strdup("oi mundo"); pthread_create( &tid, NULL, OiMundo, str );... } void *OiMundo(void *in){ char *str = (char *)in; printf("%s\n", str);... return (void*) NULL; } 95
96 Pthreads Manipulação de Threads Término: void pthread_exit(void *retval ); ou return (void *)retval; Termina a execução do thread que executou a chamada. Joinable ou Detached retval: endereço de uma posição de memória contendo o dado a ser retornado 96
97 Pthreads Manipulação de Threads Término: pthread_create(&tid,... OiMundo,...); return dta; tid2 tid pthread_create(&tid2,... OiMundo,...); main tempo 97
98 Pthreads Manipulação de Threads Término: pthread_exit A execução do thread é interrompida e o processo de computação abandonado No caso de utilização com programas C++, escopos de funções/métodos não são terminados e há risco de objetos não serem destruídos com invocação ao destrutor. return Abandona a execução do thread corrente fechando o contexto de memória utilizado. 98
99 Pthreads Manipulação de Threads Sincronização: int pthread_join( pthread_t tid, void **ret ); Aguarda o término de um thread (se ele ainda não terminou) e recupera o resultado produzido. 99
100 Pthreads Manipulação de Threads Sincronização: int pthread_join( pthread_t tid, void **ret ); tid: identificador do thread a ter seu término sincronizado ret: endereço de um ponteiro que será atualizado com a posição de memória que contém os dados retornados 100
101 Pthreads Manipulação de Threads Sincronização: int pthread_join( pthread_t tid, void **ret ); Cada thread suporta, no máximo, uma operação de join 101
102 Pthreads Manipulação de Threads Sincronização: int pthread_detach( pthread_t tid ); Operação inversa ao join: O thread tid não sofrerá nenhuma sincronização por join 102
103 Pthreads Manipulação de Threads Sincronização: tid2 tid main pthread_create(&tid,... OiMundo,...); pthread_create(&tid2,... OiMundo,...); return dta; Aguarda término tempo pthread_join(tid, &ret); pthread_join(tid2, &ret2); 103
104 Pthreads Ciclo de vida Criar lista de espera Pronto OK Bloq escalonamento time-out Exec sincronização return Fim termina Zumbi Joinable sincroniza 104
105 Pthreads Exemplo: produtor/consumidor void *prod(void *args) { Buf *buf = malloc; void *cons(void *args) { Buf *buf; pthread_t p; produz item return buf; } p = (pthread_t)* args; pthread_join( p, &buf ); consome item main(){ pthread_t p[5], c[5]; for(i = 0 ; i < 5 ; i++ ) { return NULL; } pthread_create(&(p[i]), NULL, prod, NULL ); pthread_create(&(c[i]), NULL, cons, &(p[i])); } } for(i = 0 ; i < 5 ; i++ ) pthread_join(c[i], NULL); 105
106 Pthreads Exemplo: produtor/consumidor void *prod(void *args) { Buf *buf = malloc; produz item return buf; } A sincronização por join garante a void *cons(void *args) { Buf *buf; pthread_t p; p = (pthread_t)* args; pthread_join( p, &buf ); consome item return NULL; main(){ correta pthread_t comunicação p[5], c[5]; entre as tarefas} executadas for(i = 0 ; (controle i < 5 ; i++ da ) comunicação). { pthread_create(&(p[i]), NULL, prod, NULL ); pthread_create(&(c[i]), NULL, cons, &(p[i])); } P 0 P 1 P 2 P 3 P 4 C 0 C 1 C 2 C 3 C 4 } for(i = 0 ; i < 5 ; i++ ) pthread_join(c[i], NULL); 106
107 Pthreads Descritor de threads Identificador do thread (Thread ID) Registradores Contador de Programa (PC) Ponteiro de Pilha (SP) Registradores Gerais Pilha de execução local Dados locais aos escopos Endereços de retorno para chamadas de subrotinas Endereço de retorno após completar a chamada Endereço dos outros threads Ponteiro do PCB do processo Informações de escalonamento Prioridade Estado Tipo de escalonamento
108 Pthreads Atributos de threads Alguns atributos podem ser definidos para execução Tamanho da pilha Política de escalonamento Prioridade Escopo de execução } Pode não ser garantido Depende da implementação pthread_attr_t int pthread_attr_init( pthread_attr_t* atrib ); int pthread_attr_setxxxx( pthread_attr_t* atrib, int valor ); 108
109 Pthreads Atributos de threads Alguns atributos podem ser definidos para execução Escopo de execução Local ao processo: PTHREAD_SCOPE_PROCESS O thread deverá ser escalonado no escopo do processo Sistema: PTHREAD_SCOPE_SYSTEM É definida uma unidade de escalonamento próprio ao thread int pthread_attr_setscope( &atrib, XXXX ); 109
110 Pthreads Atributos de threads Alguns atributos podem ser definidos para execução Estratégia de escalonamento SCHED_FF SCHED_RR SCHED_OTHER (default) No GNU-Linux: SCHED_FF e SCHED_FF apenas como super-usuário. int pthread_attr_setschedpolicy( &atrib, XXXX ); 110
111 Pthreads Atributos de threads Alguns atributos podem ser definidos para execução Modo de execução Autônoma: PTHREAD_CREATE_DETACHED O thread não sofrerá operação de sincronização por join Sincronizável: PTHREAD_CREATE_JOINABLE (default) Algum thread deverá efetuar join sobre o thread int pthread_attr_setdetachstate( &atrib, XXXX ); 111
112 Pthreads Atributos de threads Manipulação da pilha do thread Identificação de um tamanho alternativo para a pilha int pthread_attr_setstacksize( pthread_attr_t* atrib, size_t tam ); Identificação de uma área de memória alternativa (com tamanho mínimo de PTHREAD_STACK_MIN) int pthread_attr_setstackaddr( pthread_attr_t* atrib, void* end ); Atenção: o padrão não define se end corresponde ao endereço baixo ou alto do memória 112
Ferramentas para Programação em Processadores Multi-Core
Ferramentas para Programação em Processadores Multi-Core Prof. Dr. Departamento de Informática Universidade Federal de Pelotas Sumário Introdução Arquiteturas multi-core Programação multithread Prática
Leia maisProgramação Concorrente Processos e Threads
Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por
Leia maisSistemas Operacionais I
UFRJ IM - DCC Sistemas Operacionais I Unidade II - Threads 24/04/2014 Prof. Valeria M. Bastos 1 ORGANIZAÇÃO DA UNIDADE Threads Processos Threads Conceituação Descrição e Imagem de uma Thread Tipos de thread
Leia maisFerramentas para Programação em Processadores Multi-Core
Ferramentas para Programação em Processadores Multi-Core Prof. Dr. Departamento de Informática Universidade Federal de Pelotas Sumário Introdução Arquiteturas multi-core Ferramentas de programação Prática
Leia maisSistemas Operacionais
Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura
Leia maisProgramação em Memória Compartilhada com OpenMP
Programação em Memória Compartilhada com OpenMP Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas Universidade Estadual de Santa Cruz evalero@uesc.br
Leia maisMáquinas Multiníveis
Infra-Estrutura de Hardware Máquinas Multiníveis Prof. Edilberto Silva www.edilms.eti.br edilms@yahoo.com Sumário Conceitos básicos Classificação de arquiteturas Tendências da tecnologia Família Pentium
Leia maisCapítulo 8 Arquitetura de Computadores Paralelos
Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da
Leia maisProcessos e Threads (partes I e II)
Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa
Leia maisProgramação Paralela e Distribuída (DCC/UFRJ)
Programação Paralela e Distribuída (DCC/UFRJ) Aula 7: Programação com memória compartilhada usando OpenMP 1, 8, 10 e 15 de abril de 2015 OpenMP (Open MultiProcessing) Projetado para sistemas de memória
Leia maisNotas da Aula 4 - Fundamentos de Sistemas Operacionais
Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta
Leia maisArquiteturas RISC. (Reduced Instructions Set Computers)
Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina
Leia maisSistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com
Sistemas Operacionais Aula 06: Threads Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o conceito de thread Discutir as APIs das bibliotecas de threads Pthreads, Win32
Leia maisPROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com
PROCESSOS Prof. Maicon A. Sartin mapsartin@gmail.com Cenários em Sistemas Multitarefas Um usuário pode executar diversas atividades simultâneas Música Editoração de texto Navegar na Internet Servidor pode
Leia maisSistemas Operacionais
Sistemas Operacionais SISTEMAS COM MÚLTIPLOS PROCESSADORES LIVRO TEXTO: CAPÍTULO 13, PÁGINA 243 Prof. Pedro Luís Antonelli Anhanguera Educacional INTRODUÇÃO Arquiteturas que possuem duas ou mais CPUs interligadas
Leia maisVisão Geral de Sistemas Operacionais
Visão Geral de Sistemas Operacionais Sumário Um sistema operacional é um intermediário entre usuários e o hardware do computador. Desta forma, o usuário pode executar programas de forma conveniente e eficiente.
Leia maisSistema de Computação
Sistema de Computação Máquinas multinível Nível 0 verdadeiro hardware da máquina, executando os programas em linguagem de máquina de nível 1 (portas lógicas); Nível 1 Composto por registrados e pela ALU
Leia maisSistema Operacional Correção - Exercício de Revisão
Prof. Kleber Rovai 1º TSI 22/03/2012 Sistema Operacional Correção - Exercício de Revisão 1. Como seria utilizar um computador sem um sistema operacional? Quais são suas duas principais funções? Não funcionaria.
Leia mais7 Processamento Paralelo
7 Processamento Paralelo Yes, of course, who has time? Who has time? But then if we do not ever take time, how can we ever have time? (The Matrix) 7.1 Introdução Classificação de Sistemas Paralelos Diversas
Leia maisOrganização e Arquitetura de Computadores I. de Computadores
Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de I Organização Básica B de (Parte V, Complementar)
Leia maisProf. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO
Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.
Leia maisAula 26: Arquiteturas RISC vs. CISC
Aula 26: Arquiteturas RISC vs CISC Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Arquiteturas RISC vs CISC FAC 1 / 33 Revisão Diego Passos
Leia maisArquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França
Arquitetura NUMA 1 Daniel de Angelis Cordeiro INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França 6 de Outubro de 2010 1 Baseado em slides feitos por Christiane Pousa
Leia maisCapítulo 1 Introdução
Capítulo 1 Introdução Programa: Seqüência de instruções descrevendo como executar uma determinada tarefa. Computador: Conjunto do hardware + Software Os circuitos eletrônicos de um determinado computador
Leia maisHardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)
Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,
Leia mais28/9/2010. Paralelismo no nível de instruções Processadores superescalares
Arquitetura de Computadores Paralelismo no nível de instruções Processadores superescalares Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Processadores superescalares A partir dos resultados
Leia maisSistemas Operacionais
Sistemas Operacionais Aula 5 Estrutura de Sistemas de Computação Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso
Leia maisMicroarquiteturas Avançadas
Univ ersidade Federal do Rio de Janei ro Info rmátic a DCC/IM Arquitetura de Computadores II Microarquiteturas Avançadas Gabrie l P. Silva Introdução As arquiteturas dos processadores têm evoluído ao longo
Leia maisArquitetura de Computadores. Introdução aos Sistemas Operacionais
Arquitetura de Computadores Introdução aos Sistemas Operacionais O que é um Sistema Operacional? Programa que atua como um intermediário entre um usuário do computador ou um programa e o hardware. Os 4
Leia maisParalelismo. Computadores de alto-desempenho são utilizados em diversas áreas:
Computadores de alto-desempenho são utilizados em diversas áreas: - análise estrutural; - previsão de tempo; - exploração de petróleo; - pesquisa em fusão de energia; - diagnóstico médico; - simulações
Leia maisIntrodução a Threads Java
Introdução a Threads Java Prof. Gerson Geraldo Homrich Cavalheiro Universidade Federal de Pelotas Departamento de Informática Instituto de Física e Matemática Pelotas RS Brasil http://gersonc.anahy.org
Leia maisUnidade 13: Paralelismo:
Arquitetura e Organização de Computadores 1 Unidade 13: Paralelismo: SMP e Processamento Vetorial Prof. Daniel Caetano Objetivo: Apresentar os conceitos fundamentais da arquitetura SMP e alguns detalhes
Leia maisIntrodução à Linguagem Java
Introdução à Linguagem Java Histórico: Início da década de 90. Pequeno grupo de projetos da Sun Microsystems, denominado Green. Criar uma nova geração de computadores portáveis, capazes de se comunicar
Leia maisSistemas Computacionais II Professor Frederico Sauer
Sistemas Computacionais II Professor Frederico Sauer Livro-texto: Introdução à Organização de Computadores 4ª edição Mário A. Monteiro Livros Técnicos e Científicos Editora. Atenção: Este material não
Leia maisESTUDO DE CASO WINDOWS VISTA
ESTUDO DE CASO WINDOWS VISTA História Os sistemas operacionais da Microsoft para PCs desktop e portáteis e para servidores podem ser divididos em 3 famílias: MS-DOS Windows baseado em MS-DOS Windows baseado
Leia maisSISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores
SISTEMAS OPERACIONAIS Maquinas Virtuais e Emuladores Plano de Aula Máquinas virtuais Emuladores Propriedades Benefícios Futuro Sistemas de Computadores Os sistemas de computadores são projetados com basicamente
Leia maisBACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia
O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos
Leia maisArquitetura de Computadores. Sistemas Operacionais IV
Arquitetura de Computadores Sistemas Operacionais IV Introdução Multiprogramação implica em manter-se vários processos na memória. Memória necessita ser alocada de forma eficiente para permitir o máximo
Leia maisSistemas Distribuídos
Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor
Leia maisArquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados
Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Organização de um Computador Típico Memória: Armazena dados e programas. Processador (CPU - Central Processing
Leia maisSistemas Operacionais
Sistemas Operacionais Gerência de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Introdução Multiprogramação Permite a execução de diversos processos concorrentemente Maior
Leia maisEstruturas do Sistema de Computação
Estruturas do Sistema de Computação Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto Faculdade de Tecnologia de Americana Centro Paula Souza Estruturas do Sistema de
Leia maisSistemas Distribuídos. Professora: Ana Paula Couto DCC 064
Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem
Leia maisE.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro. Programação Concorrente em Linux
E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro Programação Concorrente em Linux O Conceito de Processo no Linux O conceito de processo é fundamental para qualquer sistema operacional
Leia maisCapítulo 2 Processos e Threads Prof. Fernando Freitas
slide 1 Capítulo 2 Processos e Threads Prof. Fernando Freitas Material adaptado de: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3ª edição. Disponível em: http://www.prenhall.com/tanenbaum_br slide
Leia maisEscalonamento no Linux e no Windows NT/2000/XP
Escalonamento no Linux e no Windows NT/2000/XP 1 Escalonamento no Linux Os requisitos do escalonador do Linux eram: Apresentar boa performance em programas interativos, mesmo com carga elevada; Distribuir
Leia maisProgramação Orientada a Objetos Threads
Threads Prof. Edwar Saliba Júnior Janeiro de 2013 1 Introdução Multithreading: fornece múltiplas threads de execução para a aplicação; permite que programas realizem tarefas concorrentemente; às vezes
Leia maisIFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira
IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários
Leia maisCapacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB
Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha
Leia maisBARRAMENTO DO SISTEMA
BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA
Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais
Leia maisNotas da Aula 17 - Fundamentos de Sistemas Operacionais
Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.
Leia maisArquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas
Arquitetura de Sistemas Operacionais Capítulo 4 Estrutura do Sistema Operacional Cap. 4 Estrutura do Sistema 1 Sistemas Operacionais Pitágoras Fadom Divinópolis Material Utilizado na disciplina Sistemas
Leia maisSistemas Operacionais
Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso
Leia maisArquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva
Arquitetura de Computadores - Arquitetura RISC por Helcio Wagner da Silva Introdução RISC = Reduced Instruction Set Computer Elementos básicos: Grande número de registradores de propósito geral ou uso
Leia maisUFG - Instituto de Informática
UFG - Instituto de Informática Curso: Sistemas de Informação Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 4 Estilos Arquitetônicos Estilos Arquiteturais Dataflow
Leia maisBits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução.
Processadores Atuais Eduardo Amaral Sumário Introdução Conceitos Básicos Microprocessadores Barramentos Bits internos e bits externos Clock interno e clock externo Memória cache Co-processador aritmético
Leia mais3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:
Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de
Leia maisO hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware
1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador
Leia maisSISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Processos e Threads Andreza Leite andreza.leite@univasf.edu.br Plano de Aula 2 Gerenciamento de Processos Threads Aplicações com múltiplas Threads Concorrência e Compartilhamento
Leia maisSistemas Operacionais. Estruturas de SO. Edeyson Andrade Gomes. www.edeyson.com.br
Sistemas Operacionais Estruturas de SO Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Estrutura do SO Chamadas ao Sistema Sistemas Monolíticos Sistemas em Camadas Sistemas Cliente-Servidor 2
Leia maisMáquina de estados UNIX O
Estruturas Processos de Controle (Aula 5) Aula Interrupções Profa. Patricia Gerência fluxo, execução D. O Abstração passada Criação podendo de gerar hw e transição sw (mudança de CostaLPRM/DI/UFES que
Leia maisMá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
Estruturas Processos de Controle (Aula 5) Aula Interrupções Profa. Patricia Gerência fluxo, execução D. O Abstração passada Criação podendo de gerar hw e transição sw (mudança de CostaLPRM/DI/UFES que
Leia maisFigura 01 Kernel de um Sistema Operacional
01 INTRODUÇÃO 1.5 ESTRUTURA DOS SISTEMAS OPERACIONAIS O Sistema Operacional é formado por um Conjunto de rotinas (denominado de núcleo do sistema ou kernel) que oferece serviços aos usuários e suas aplicações
Leia maisProgramação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada
Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.
Leia mais1. Discute as vantagens e desvantagens dum sistema de memória paginada, indicando também a importância do sistema dispôr duma memória cache.
Frequência II, 3 de Junho de 2011 Grupo A: Gestão de Memória (7 Valores) 1. Discute as vantagens e desvantagens dum sistema de memória paginada, indicando também a importância do sistema dispôr duma memória
Leia maisSO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola
SO - Conceitos Básicos Introdução ao Computador 2010/01 Renan Manola Definição de SO É uma camada de software que opera entre o hardware e os programas aplicativos voltados ao usuário final. É uma estrutura
Leia maisSistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com
Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas de Computação O sistema operacional precisa garantir a operação correta do sistema de computação. Operação
Leia maisEverson Scherrer Borges João Paulo de Brito Gonçalves
Everson Scherrer Borges João Paulo de Brito Gonçalves 1 Tipos de Sistemas Operacionais Os tipos de sistemas operacionais e sua evolução estão relacionados diretamente com a evolução do hardware e das
Leia maisSistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com
Sistemas Operacionais 2014 Introdução Alexandre Augusto Giron alexandre.a.giron@gmail.com Roteiro Sistemas Operacionais Histórico Estrutura de SO Principais Funções do SO Interrupções Chamadas de Sistema
Leia maisIntrodução a POO. Introdução a Linguagem C++ e POO
Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes
Leia maisARQUITETURA DE COMPUTADORES - 1866
7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um
Leia maisEXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo
4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas
Leia maisSistemas Operacionais
Sistemas Operacionais Prof. Jó Ueyama Apresentação baseada nos slides da Profa. Kalinka Castelo Branco, do Prof. Dr. Antônio Carlos Sementille e da Profa. Dra. Luciana A. F. Martimiano e nas transparências
Leia maisJava. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
Leia maisArquitetura de Computadores. Tipos de Instruções
Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada
Leia maisProcessos. Adão de Melo Neto
Processos Adão de Melo Neto 1 EXECUTE O SEGUINTE Baixa a aula dos dias 20 MAR 15 e 08 MAI 15 e salve no computador. Feche o browser Inicialize o vmware player e inicialize a máquina virtual ubuntu Inicialize
Leia maisSistemas Operacionais Processos e Threads
Sistemas Operacionais Processos e Threads Prof. Marcos Monteiro, MBA http://www.marcosmonteiro.com.br contato@marcosmonteiro.com.br 1 Estrutura de um Sistema Operacional 2 GERÊNCIA DE PROCESSOS Um processo
Leia maisSistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)
Sistemas Operativos Threads 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) Dos Processos para os Threads O conceito de thread foi introduzido na tentativa de
Leia maisImagem retirada de documentações de treinamentos oficiais INTEL
O que é Hyper-Threading (HT)? Hyper-Threading (HT) é uma tecnologia existe nos processadores que visa explorar com mais eficiência o uso da CPU, o grande foco desta tecnologia é evitar ociosidade de processamento
Leia maisArquitetura e Organização de Computadores. Capítulo 0 - Introdução
Arquitetura e Organização de Computadores Capítulo 0 - Introdução POR QUE ESTUDAR ARQUITETURA DE COMPUTADORES? 2 https://www.cis.upenn.edu/~milom/cis501-fall12/ Entender para onde os computadores estão
Leia maisMultiprogramação leve em arquiteturas multi-core
Multiprogramação leve em arquiteturas multi-core Prof. Dr. Departamento de Informática Universidade Federal de Pelotas Sumário Arquiteturas multi-core Programação multithread Ferramentas de programação
Leia maisUdesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Alexandre Veloso alexandre.matos@udesc.br
Programação Concorrente [Parte 2] Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Alexandre Veloso alexandre.matos@udesc.br Condição de Corrida Uma forma de um processo comunicar-se
Leia mais7 Processos. 7.1 Introdução
1 7 Processos 7.1 Introdução O conceito de processo é a base para a implementação de um sistema multiprogramável. O processador é projetado apenas para executar instruções, não se importando com qual programa
Leia maisCálculo Aproximado do número PI utilizando Programação Paralela
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Cálculo Aproximado do número PI utilizando Programação Paralela Grupo 17 Raphael Ferras Renan Pagaiane Yule Vaz SSC-0143 Programação
Leia maisSistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos
Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br
Leia maisSISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Arquitetura Sistemas Operacionais Andreza Leite andreza.leite@univasf.edu.br Plano de Aula Sistemas monolíticos Sistemas em camadas Sistemas micro-núcleo Modelo Cliente-Servidor Máquinas
Leia maisTais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.
Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. 7.3.1.2 Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características:
Leia maisIntrodução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)
Definição de um Sistema Distribuído (1) Introdução Um sistema distribuído é: Uma coleção de computadores independentes que aparecem para o usuário como um único sistema coerente. Definição de um Sistema
Leia maisSistemas Distribuídos. Professora: Ana Paula Couto DCC 064
Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para
Leia maisSistemas Operacionais valnaide@dca.ufrn.br kliger@dca.ufrn.br affonso@dca.ufrn.br
Sistemas Operacionais valnaide@dca.ufrn.br kliger@dca.ufrn.br affonso@dca.ufrn.br INTRODUÇÃO O que é um sistema operacional? História dos sistemas operacionais Conceitos dos Sistemas Operacionais Estrutura
Leia maisComo foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.
5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo
Leia mais