Sistemas Operacionais
Disciplina: Sistemas Operacionais
Período: 2013/1
Professor: Flávio Giraldeli
Turma: BSI3
CH: 60 horas
Introdução à Programação Multithread com PThreads
OBJETIVOS
Introduzir o conceito de programação concorrente com múltiplas threads e seções críticas a serem tratadas.
Analisar comparativamente o desempenho do algoritmo com diferentes números de threads.
GRUPOS
Deverão ser formados grupos com 3 alunos, a serem escolhidos livremente. No caso do número de alunos da turma não ser múltiplo de 3, a decisão deverá ficar a critério do professor.
PONTUAÇÃO
O referido trabalho será avaliado de 0 a 100 e corresponderá a 15% da nota semestral.
IMPLEMENTAÇÃO
O objetivo final do algoritmo é: dada uma matriz de números naturais aleatórios (intervalo 0 a 29999) contabilizar quantos números primos existem e o tempo necessário para isso. No entanto, isso será feito de duas formas:
De modo serial, ou seja, a contagem dos primos será feita um a um, um após o outro. Esse será o seu tempo de referência.
De modo paralelo. Para tanto, o trabalho de verificar cada número e se for primo contabilizá-lo consistirá na subdivisão da matriz em “macroblocos” (submatrizes), sem qualquer cópia, baseando-se apenas nos índices. Como no exemplo abaixo:
1
10
19
28
37
46
55
64
73
2
11
20
29
38
47
56
65
74
3
12
21
30
39
48
57
66
75
4
13
22
31
40
49
58
67
76
5
14
23
32
41
50
59
68
77
6
15
24
33
42
51
60
69
78
7
16
25
34
43
52
61
70
79
8
17
26
35
44
53
62
71
80
9
18
27
36
45
54
63
72
81
Ou seja, a matriz acima é 9 x 9 e cada macrobloco é composto por 9 elementos. O macrobloco 1 vai da coluna 0 a 2 e da linha 0 a 2, e assim sucessivamente. Os macroblocos serão as unidades de trabalho de cada thread. Atenção:
Nem a matriz nem os macroblocos deverão ser obrigatoriamente quadradas. A única exigência é que todos