segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
Paralelismo e Sincronizao
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
Quem escreve a concluso precisa ler todas as outras partes. Quando escrevendo a concluso, nada anteriormente escrito
pode ser alterado.
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
#include <pthread.h> #include <stdio.h> #include <iostream> using namespace std; static int X = 0; static int Y = 0; static int Z = 0;
void *incrementa(void *pMsg) { ! cout << (const char*)pMsg << endl; ! X = X + 1; ! usleep(10000); ! Y += X + 1; ! usleep(10000); ! Z += Y + 1; } void *imprime(void *pMsg) { ! cout << (const char*)pMsg << endl; ! cout << "X = " << X << endl; ! cout << "Y = " << Y << endl; ! cout << "Z = " << Z << endl; }
Problema?
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
static int X = 0; static int Y = 0; static int Z = 0; pthread_mutex_t mutexX; void *incrementa(void *pMsg) { ! cout << (const char*)pMsg << endl; ! pthread_mutex_lock(&mutexX); ! X = X + 1; ! usleep(10000); ! Y += X + 1; ! usleep(10000); ! Z += Y + 1; ! pthread_mutex_unlock(&mutexX); } void *imprime(void *pMsg) { ! cout << (const char*)pMsg << endl; ! pthread_mutex_lock(&mutexX); ! cout << "X = " << X << endl; ! cout << "Y = " << Y << endl; ! cout << "Z = " << Z << endl; ! pthread_mutex_unlock(&mutexX); }
Soluo!
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
Valor 0 (lock disponvel) / valor 1 (lock indisponvel). Processador tenta pegar o lock colocando o valor 1 em uma
determinada posio de memria.
Requer suporte a leitura e escrita em uma nica instruo. Instruo no pode ser interrompida.
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
Suporte de um par de instrues especiais; Operaes de load e store podem ser executadas de forma
diferente.
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
Exemplo:
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
Exemplo:
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
Exemplo:
Exemplo:
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
Exemplo:
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
Maior quantidade de memria disponvel; Compiladores mais espertos: Quase to expertos quanto
bons programadores na linguagem assembly.
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
Pseudo-instrues permitem que MIPS possua um conjunto de Objetivo principal do assemblador gerar um cdigo de
mquina partir do cdigo assembly recebido.
Controle feito atravs da tabela de smbolos. Tabela de smbolos: Contm um esquema de chave/valor com
associao dos smbolos e respectivos endereos.
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
Arquivos so assemblados de forma isolada. Assemblador no sabe a posio de um mdulo em relao aos
outros.
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
-8000
-7980
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13
www.decom.ufop.br/vicente
segunda-feira, 16 de dezembro de 13