Евгений Борисов
21 октября 2000 г.
Возможности наращивания производительности ЭВМ путем
повышения скорости работы процессора в настоящее время
приближаются к пределу и связаны с существенным увеличением
стоимости аппаратуры. Большие возможности и резервы
открываются в использовании многопроцессорных архитектур.
При одинаковой потенциальной производительности система
с большим числом процессоров может обладать большей
гибкостью, допуская различные формы организации вычислительных
процессов. Необходимо отметить, что такие системы требуют
специальных операционных систем.
Многопроцессорные системы могут быть классифицированы в
зависимости оттого, как решаются три основные проблемы,
определяющие их организацию : управление, память и связь.
Связь между процессорами представляет собой наиболее сложную проблему и имеет много решений. Удобно различать универсальные и специальные системы связи.
где
v0 v1 p z0 z1 z0 z0 z1 z1 z0 z1
v0 v1 p z0 p p p z1 p r p
v0 v1 (z0,...,z0) (z1,z0,...,z0) (z0,...,z0) (z1,z0,...,z0) (z1,z1,z0,...,z0) (z0,...,z0) ... ... ... (z1,...,z1,z0) (z1,...,z1) (z0,...,z0) (z1,...,z1) (z0,...,z0) (z0,...,z0)
v0 v1 (z0,...,z0) (v0,p,...,p) (v1,...,v1) (z1,z0,...,z0) (p,v0,p,...,p) (v1,...,v1) ... ... ... (z1,...,z1,z0) (p,...,p,v0) (v1,...,v1) (z1,...,z1) (v1,...,v1) (v1,...,v1)
Отдаем задание первому свободному вычислительному модулю. Если свободных нет, то ждем освобождения ресурсов (собираем результаты). v1 на вход - конец работы (собираем результаты).
В этой работе предлагается простая система шифрования данных, которую можно отнести к классу симметричных криптосистем, и ''взломщик'' шифра. Процедура шифрования заключается в сложении по модулю 2 побайтно закрываемого текста и заданного пользователем ключа. Вскрытие кода осуществляется последовательным подбором ключа. Таким образом, количество необходимых для вскрытия итераций равно 2n, где n - размерность ключа. Например, при n = 24 (трехбуквенный ключ) необходимо произвести 16777216 итераций. Ключ такой длинны был использован при контрольных прогонах программы.
# serv -= crypt sever v.2 =- (c) Borisov E.S. Kiev UA usage: serv <params> params: -p <server port> (default 5041) -w <wordlist file> close ..... ok # serv -w data/test.lex -= crypt sever v.2 =- create ......... ok (port 5041) wordlist 'data/test.lex'-14 words readed accept ..... ok disconnect ........ ok close ......... ok #_
# cl -= crypt client v.2 =- (c) Borisov E.S. Kiev UA usage: cl <params> params: -c <config file> -f <cryptogram file> -k <max key length> disconnect .... ok #_
Одна машина
# cl -k3 -= crypt client v.2 =- ----------- localhost:5041 ----------- create connection (localhost:5041) ... ok disconnect .... ok create connection (localhost:5041) ... ok disconnect .... ok ----------- time = 318 sec. RESULT : key="REX" disconnect .... ok #_
Две машины
# cl -k3 -= crypt client v.2 =- ----------- localhost : 5041 qnx_1 : 5041 ----------- create connection (localhost : 5041) ... ok disconnect .... ok create connection (qnx_1 : 5041) ... ok disconnect .... ok create connection (localhost : 5041) ... ok disconnect .... ok create connection (qnx_1 : 5041) ... ok disconnect .... ok ----------- time = 160 sec. RESULT : key = "REX" disconnect .... ok #_
Число будем вычислять как определенный интеграл :
Согласно правилу прямоугольников интеграл можно заменить суммой:
# pi.serv -? -= PI calculation server (TCP) v.1 =- (c) Borisov E.S. Kiev UA usage: pi.serv <params> params: -p <server port number> (def.5041) -w - write more information # pi.serv -= PI calculation server (TCP) v.1 =- create ........ ok (port 5041) accept ........ ok disconnect .... ok close ......... ok #_
# pi.cl -= PI calculation client (TCP) v.1 =- (c) Borisov E.S. Kiev UA usage: pi.cl <params> params: -h <server name> - shutdown server -p <server port number> (def. 5041) -i <size of interval> # pi.cl -h localhost -= PI calculation client (TCP) v.1 =- connect to localhost:5041 ... ok disconnect .................. ok #_
# PI servers localhost: 5041 qnx_1 : 5041
Одна машина
# pi.cl -i20000000 -= PI calculation client (TCP) v.1 =- ------ PI servers -------- qnx_1:5041 -------------------------- connect to qnx_1:5041 ... ok disconnect .............. ok connect to qnx_1:5041 ... ok disconnect .............. ok ------------------------- time = 69 sec. pi=3.141592753589926 #_
Две машины
# pi.cl -i20000000 -= PI calculation client (TCP) v.1 =- ------ PI servers -------- qnx_1:5041 localhost:5041 -------------------------- connect to qnx_1:5041 ....... ok disconnect .................. ok connect to localhost:5041 ... ok disconnect .................. ok connect to qnx_1:5041 ....... ok disconnect .................. ok connect to localhost:5041 ... ok disconnect .................. ok -------------------------- time = 36 sec. pi=3.141592753589926 #_