11.04.2013 Views

Computação Concorrente (DCC/UFRJ) - Aula 2: Visão geral dos ...

Computação Concorrente (DCC/UFRJ) - Aula 2: Visão geral dos ...

Computação Concorrente (DCC/UFRJ) - Aula 2: Visão geral dos ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

<strong>Computação</strong> <strong>Concorrente</strong> (<strong>DCC</strong>/<strong>UFRJ</strong>)<br />

<strong>Aula</strong> 2: <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Prof. Silvana Rossetto<br />

9 de abril de 2013<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

1 <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Trajetória de um programa básico<br />

2 Memória e processador<br />

Hierarquia de memória e caches<br />

Processador<br />

3 O papel do Sistema Operacional<br />

Processos e threads<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Sistemas de computação<br />

Trajetória de um programa básico<br />

Um “sistema de computação” consiste<br />

de hardware (computador,<br />

máquina) e sistemas de software<br />

que funcionam juntos para executar<br />

aplicações do usuário<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Sistemas de computação<br />

Trajetória de um programa básico<br />

Há diferentes<br />

implementações <strong>dos</strong><br />

sistemas de computação<br />

(Hw e Sw), mas os<br />

conceitos básicos são os<br />

mesmos<br />

Queremos compreender<br />

como esses componentes<br />

funcionam e como<br />

afetam a corretude e<br />

desempenho <strong>dos</strong> nossos<br />

programas<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Trajetória de um programa básico<br />

#include <br />

int i=10;<br />

int main(void) {<br />

i++;<br />

printf("%d\n", i);<br />

return 0;<br />

}<br />

Trajetória de um programa básico<br />

O programa hello.c é armazenado em um arquivo texto<br />

(representação em ASCII) como uma sequência de bytes (8 bits),<br />

cada byte sendo um valor inteiro que representa um caracter<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Trajetória de um programa básico<br />

Trajetória de um programa básico<br />

Para que o programa hello.c execute, as sentenças C precisam<br />

ser traduzidas em uma sequência de instruções de máquina (gcc<br />

-o hello hello.c)<br />

1 Fonte: http://csapp.cs.cmu.edu<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

1


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Trajetória de um programa básico<br />

Programa na linguagem assembly<br />

(gcc -S hello.c)<br />

main: pushl %ebp<br />

movl %esp, %ebp<br />

movl i, %eax<br />

addl $1, %eax<br />

movl %eax, i<br />

movl i, %edx<br />

movl $.LC0, %eax<br />

movl %edx, 4(%esp)<br />

movl %eax, (%esp)<br />

call printf<br />

movl $0, %eax<br />

ret<br />

Trajetória de um programa básico<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Trajetória de um programa básico<br />

Programa executável<br />

Trajetória de um programa básico<br />

O programa executável gerado (hello) é armazenado no<br />

disco do computador<br />

Para executá-lo, usamos a aplicação shell<br />

O shell é um interpretador de linha de comando que<br />

exibe um prompt e espera por coman<strong>dos</strong> ou arquivos<br />

executáveis<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Trajetória de um programa básico<br />

Organização do hardware de um sistema<br />

2 Fonte: http://csapp.cs.cmu.edu<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

2


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Trajetória de um programa básico<br />

Organização do hardware de um sistema<br />

Dispositivos de E/S<br />

Conexão do sistema com o mundo externo (monitor, disco,<br />

teclado, interface de rede, etc.)<br />

Memória principal<br />

Dispositivo de armazenamento temporário que armazena<br />

programas e os da<strong>dos</strong> usa<strong>dos</strong> por eles enquanto o processador<br />

está executando o programa (logicamente a memória é organizada<br />

como um vetor de bytes, cada um com seu próprio endereço)<br />

Processador<br />

A CPU (Unidade Central de Processamento) interpreta e executa<br />

as instruções armazenadas na memória principal<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Execução do programa hello<br />

Trajetória de um programa básico<br />

3 Fonte: http://csapp.cs.cmu.edu<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

3


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Execução do programa hello<br />

4 Fonte: http://csapp.cs.cmu.edu<br />

Trajetória de um programa básico<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

4


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Execução do programa hello<br />

5 Fonte: http://csapp.cs.cmu.edu<br />

Trajetória de um programa básico<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

5


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Gargalo processador-memória<br />

Hierarquia de memória e caches<br />

Processador<br />

O sistema gasta boa parte do tempo movendo informação de<br />

um lugar pra outro<br />

Boa parte do tempo de execução do programa é gasto com<br />

acesso à memória (é mais fácil e barato aumentar a<br />

velocidade <strong>dos</strong> processadores do que da memória)<br />

Solução: hierarquia de memória<br />

Insere dispositivos de armazenamento mais rápi<strong>dos</strong> e<br />

baratos entre o processador e a memória principal<br />

Explora o conceito de localidade (tendência <strong>dos</strong> programas<br />

acessarem regiões de dado e código) fazendo cópias <strong>dos</strong> da<strong>dos</strong><br />

em diferentes níveis<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Hierarquia de memória<br />

Hierarquia de memória e caches<br />

Processador<br />

6 Fonte: http://csapp.cs.cmu.edu<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

6


Memória cache<br />

<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

7 Fonte: http://csapp.cs.cmu.edu<br />

Hierarquia de memória e caches<br />

Processador<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

7


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

O papel do Processador (CPU)<br />

Hierarquia de memória e caches<br />

Processador<br />

A CPU carrega, interpreta e executa as instruções de<br />

máquina armazenadas na memória principal<br />

O PC (Ponteiro de Programa) contém o endereço da<br />

instrução corrente<br />

A CPU repetidamente executa a instrução apontada pelo PC<br />

e o atualiza para apontar para a próxima instrução<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Interrupção do tempo<br />

Hierarquia de memória e caches<br />

Processador<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Interrupção do tempo e concorrência<br />

Hierarquia de memória e caches<br />

Processador<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Conceitos básicos<br />

Processo: programa em execução<br />

Processos e threads<br />

1 Coleção de recursos: espaço de memória virtual para<br />

armazenar a imagem do processo (código, da<strong>dos</strong>, pilha),<br />

dispositivos de E/S aloca<strong>dos</strong>, descritores de arquivos abertos,<br />

etc.<br />

2 Escalonamento/execução: um processo tem um estado de<br />

execução e é a entidade que é escalonada pelo Sistema<br />

Operacional para execução pelo processador<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Ilusão de execução isolada<br />

Processos e threads<br />

Quando um programa executa, o SO provê a “ilusão” de que<br />

o programa dispõe de uso exclusivo do processador, da<br />

memória e <strong>dos</strong> dispositivos de E/S<br />

Essa “ilusão” é criada pelo conceito de processo<br />

Assim, vários processos podem executar concorrentemente no<br />

mesmo sistema de computação e cada processo parece ter<br />

uso exclusivo do hardware<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Processos e threads<br />

Altenância de execução entre processos<br />

8 Fonte: http://csapp.cs.cmu.edu<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

8


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Ilusão de execução isolada<br />

Processos e threads<br />

Executar concorrentemente significa que se observarmos o<br />

comportamento do sistema ao longo do tempo, veremos que a<br />

execução das instruções de um processo alternam com a<br />

execução das instruções de outros processos<br />

Um único processador aparenta executar vários processos<br />

concorrentemente, executando um pedaço de cada até terminarem<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Troca de contexto<br />

Processos e threads<br />

Quando o SO transfere o controle do processo atual para<br />

algum novo processo, ele executa uma troca de contexto:<br />

1 salva o contexto do processo atual<br />

2 restaura o contexto do novo processo<br />

3 passa o controle para o novo processo<br />

O novo processo retoma a sua execução exatamente do ponto<br />

onde ele parou anteriormente<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Troca de contexto<br />

9 Fonte: http://csapp.cs.cmu.edu<br />

Processos e threads<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

9


Threads<br />

<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Processos e threads<br />

Um processo pode consistir de várias unidades de execução<br />

chamadas threads<br />

Cada uma executa dentro do contexto do processo e<br />

compartilha o mesmo código e da<strong>dos</strong> globais com as<br />

outras threads<br />

É mais fácil compartilhar da<strong>dos</strong> entre threads do que entre<br />

processos, e a troca de contexto entre elas é menos custosa do que<br />

a troca de contexto entre processos<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Threads dentro de processos<br />

Processos e threads<br />

10 Fonte: www.csc.villanova.edu<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

10


Threads<br />

<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Processos e threads<br />

Uma thread é uma unidade básica de uso da CPU<br />

(escalonada pelo processador) e compreende:<br />

um identificador da thread, um conjunto de registradores<br />

e uma pilha<br />

Compartilha com outras threads do mesmo processo:<br />

seção de código e de da<strong>dos</strong>, arquivos abertos, conexões<br />

de rede e sinais<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Benefícios de threads<br />

Processos e threads<br />

Menos tempo para criar uma thread do que um processo filho<br />

Menos tempo para terminar uma thread do que um processo<br />

Menos tempo para trocar o contexto entre threads do mesmo<br />

processo<br />

Mais eficiência de comunicação através do uso de memória<br />

compartilhada dentro de um mesmo processo<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


Exercícios<br />

<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Processos e threads<br />

1 O que é um “sistema de computação”?<br />

2 Por que o sistema de memória é organizado em diferentes<br />

níveis e dispositivos? (custos e conceito de localidade)<br />

3 De que forma essa forma de organização da memória pode<br />

afetar a programação concorrente? (armazenamento local<br />

de valores globais, ex., registradores, cache)<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


Exercícios<br />

<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Processos e threads<br />

1 O que é um “processo”? O que é uma “thread”?<br />

2 Como o sistema de computação provê a ilusão de execução<br />

simultânea de vários processos?<br />

3 De que forma isso se relaciona com a programação<br />

concorrente?<br />

4 Dê exemplos de como o sistema de computação pode afetar a<br />

corretude de um programa?<br />

5 Dê exemplos de como o sistema de computação pode afetar o<br />

desempenho de um programa?<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação


<strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação<br />

Memória e processador<br />

O papel do Sistema Operacional<br />

Referências bibliográficas<br />

Processos e threads<br />

Computer Systems - A Programmer’s Perspective, Bryant and<br />

O’Hallaron, 2ed (Cap.1)<br />

(http://csapp.cs.cmu.edu/public/ch1-preview.pdf)<br />

Prof. Silvana Rossetto <strong>Visão</strong> <strong>geral</strong> <strong>dos</strong> sistemas de computação

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!