Multiprogramação leve em arquiteturas multi-core

Tamanho: px
Começar a partir da página:

Download "Multiprogramação leve em arquiteturas multi-core"

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 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 mais

Programação Concorrente Processos e Threads

Programaçã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 mais

Sistemas Operacionais I

Sistemas 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 mais

Ferramentas para Programação em Processadores Multi-Core

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 Ferramentas de programação Prática

Leia mais

Sistemas Operacionais

Sistemas 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 mais

Programação em Memória Compartilhada com OpenMP

Programaçã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 mais

Máquinas Multiníveis

Má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 mais

Capítulo 8 Arquitetura de Computadores Paralelos

Capí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 mais

Processos e Threads (partes I e II)

Processos 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 mais

Programação Paralela e Distribuída (DCC/UFRJ)

Programaçã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 mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas 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 mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas 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 mais

Sistemas 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 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 mais

PROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com

PROCESSOS. 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 mais

Sistemas Operacionais

Sistemas 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 mais

Visão Geral de Sistemas Operacionais

Visã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 mais

Sistema de Computação

Sistema 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 mais

Sistema Operacional Correção - Exercício de Revisão

Sistema 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 mais

7 Processamento Paralelo

7 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 mais

Organização e Arquitetura de Computadores I. de Computadores

Organizaçã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 mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. 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 mais

Aula 26: Arquiteturas RISC vs. CISC

Aula 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 mais

Arquitetura 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 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 mais

Capítulo 1 Introdução

Capí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 mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (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 mais

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

28/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 mais

Sistemas Operacionais

Sistemas 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 mais

Microarquiteturas Avançadas

Microarquiteturas 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 mais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Arquitetura 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 mais

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Paralelismo. 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 mais

Introdução a Threads Java

Introduçã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 mais

Unidade 13: Paralelismo:

Unidade 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 mais

Introdução à Linguagem Java

Introduçã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 mais

Sistemas Computacionais II Professor Frederico Sauer

Sistemas 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 mais

ESTUDO DE CASO WINDOWS VISTA

ESTUDO 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 mais

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

SISTEMAS 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 mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO 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 mais

Arquitetura de Computadores. Sistemas Operacionais IV

Arquitetura 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 mais

Sistemas Distribuídos

Sistemas 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 mais

Arquitetura 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 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 mais

Sistemas Operacionais

Sistemas 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 mais

Estruturas do Sistema de Computação

Estruturas 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 mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas 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 mais

E.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 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 mais

Capítulo 2 Processos e Threads Prof. Fernando Freitas

Capí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 mais

Escalonamento no Linux e no Windows NT/2000/XP

Escalonamento 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 mais

Programação Orientada a Objetos Threads

Programaçã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 mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. 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 mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 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 mais

BARRAMENTO DO SISTEMA

BARRAMENTO 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 mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

UNIVERSIDADE 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 mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas 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 mais

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

Arquitetura 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 mais

Sistemas Operacionais

Sistemas 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 mais

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Arquitetura 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 mais

UFG - Instituto de Informática

UFG - 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 mais

Bits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução.

Bits 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 mais

3/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:

3/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 mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O 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 mais

SISTEMAS OPERACIONAIS

SISTEMAS 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 mais

Sistemas Operacionais. Estruturas de SO. Edeyson Andrade Gomes. www.edeyson.com.br

Sistemas 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 mais

Máquina de estados UNIX O

Má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 mais

Má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

Má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 mais

Figura 01 Kernel de um Sistema Operacional

Figura 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 mais

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Programaçã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 mais

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 cache.

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 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 mais

SO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola

SO - 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 mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas 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 mais

Everson Scherrer Borges João Paulo de Brito Gonçalves

Everson 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 mais

Sistemas 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 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 mais

Introdução a POO. Introdução a Linguagem C++ e POO

Introduçã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 mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA 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 mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: 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 mais

Sistemas Operacionais

Sistemas 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 mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. 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 mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura 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 mais

Processos. Adão de Melo Neto

Processos. 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 mais

Sistemas Operacionais Processos e Threads

Sistemas 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 mais

Sistemas 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) 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 mais

Imagem retirada de documentações de treinamentos oficiais INTEL

Imagem 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 mais

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Arquitetura 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 mais

Multiprogramação leve em arquiteturas multi-core

Multiprogramaçã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 mais

Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Alexandre Veloso alexandre.matos@udesc.br

Udesc/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 mais

7 Processos. 7.1 Introdução

7 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 mais

Cálculo Aproximado do número PI utilizando Programação Paralela

Cá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 mais

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Sistemas 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 mais

SISTEMAS OPERACIONAIS

SISTEMAS 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 mais

Tais 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. 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 mais

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Introduçã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 mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas 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 mais

Sistemas 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 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 mais

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Como 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