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