ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
154
16.Пусть
н
t
– время начальной подготовки,
с
t
– время передачи служебных дан-
ных между 2 соседними процессорами,
к
t
– время передачи одного слова
данных по одному каналу передачи данных,
m
– размер сообщения,
l
– длина
маршрута передачи данных. Тогда полное время пересылки данных
пд
t
опре-
деляется по формуле
a)
(
)
l t
mt
t
t
с
к
н
пд
+ + =
;
b)
(
)
l t tm t
t
с
к
н
пд
+ + =
;
c)
(
)
lt
mt
t
t
с
к
н
пд
+ + =
;
d)
(
)
l t t
t
t
с
к
н
пд
+ + =
.
17.Время передачи сообщений между двумя процессорами в топологии “кольцо”
из
p
процессоров составляет
a)
2
к
н
/pmt
t
+
;
b)
2
2
к
н
/p mt
t
+
;
c)
p log mt
t
к
н
2
+
.
18.Время передачи пакетов между двумя процессорами в топологии “решетка-
тор” из
p
процессоров составляет
a)
2
с
к
н
/p t
mt
t
+ +
;
b)
2
2
с
к
н
/p t
mt
t
+ +
;
c)
p log t
mt
t
с
к
н
+ +
.
19.Просмотрите фрагмент кода на языке С++
enum state { UNLOCKED, LOCKED };
typedef struct {
char status[2]; /* байт статуса для каждого из двух процессов
*/
char turn; /* какой из процессов будет следующим */
} lock_t;
void init_lock(lock_t* lock) {
lock->status[0] =UNLOCKED;
lock->status[l] =UNLOCKED;
lock->turn = 0;
}
void lock(volatile lock_t* lock) {
/* устанавливаем блокировку для текущего процесса */
lock->status[cur_proc_id()] = LOCKED;
/* проверяем, не установлена ли блокировка другим процессом */
while ( lock->status[other_proc_id()] == LOCKED) {