- •Ответы на вопросы
- •1.Оценка скорости печати
- •2. Все про многопоточность и многопроцесоррность.
- •2,1 В чем смысл использовать потоки в одном одноядерном процессоре:
- •2,2 Что такое потоки
- •2,3 Доступ к данным разных потоков
- •3 Формат чисел с плавающей запятой
- •4 Почему повышение приоритетов потоков может влиять на степень распараллеливания при вычислении много поточного приложения намногоядернном компе?
- •5 Что такое и для чего numproc,myid. Все об mpi кароч
- •6 (3) Все про регистр cs
- •7 (3,1) Способы адресации
- •8 (4) Типы флешпамяти
- •9 Зачем flash память применяется в процессоре (может на материнской плате)
- •10 Что такое контекст потока и должен ли он отличаться от контекста процесса:
- •11 Что происходит при проверке занятости мьютекса потоком, если мьютекс уже находится в несигнальном состоянии?
- •12 Что такое привязка потоков к ядрам и как она может выполняться?
- •Какие функции реализует применительно к mpi программа smpd
- •В каком случае можно получить выигрыш в быстродействиии при использовании программ, основанных лишь на mpi, лишь на одном компьютере?
- •Ответы на вопросы по билетам
- •В чем смысл использовать потоки в одном одноядерном процессоре:
- •Как программно определить причину произошедшего прерывания в подпрограмме обработки прерывания?
- •Мьютексы Доступ к данным разных потоков
- •Приоритет потоков
- •Формат чисел с плавающей запятой
Ответы на вопросы по билетам
1 билет:
-
MPI какая цель использования. Программа с mpi и как её открыть чтобы она улучшила свои возможности
MPI позволяет разрабатывать параллельные программы
mpi.h библиотека
Первой вызываемой функцией int MPI_Init ( int *agrc, char **argv );
Последней int MPI_Finalize (void);
количества процессов MPI_Comm_size(comm, *size);
определения ранга MPI_Comm_rank (comm, *rank);
Для передачи сообщения процесс-отправитель должен выполнить функцию:
MPI_Send(……….);
Для приема сообщения процесс-получатель должен выполнить функцию: MPI_Recv(**********)
передачи данных от одного процесса всем процессам программы
MPI_Bcast(******)
MPI_Reduce (*****)
Все Int
MPI_DOUBLE double MPI_FLOAT float MPI_INT int MPI_LONG long MPI_LONG_DOUBLE long double
#include "mpi.h" int main (int argc, char *argv[]) { <программный код без использования MPI функций> MPI_Init(&agrc, &argv); <программный код с использованием MPI функций> MPI_Finalize(); <программный код без использования MPI функций> return 0; }
2) Типы флешпамяти
Флеш память относится к полупроводникам электрически перепрограммируемой памяти (EEPROM).
Является аналогом жесткого диска, т.к. считывание и запись осуществляются последовательно бит за битом.
NOR (объем меньше) лежит алгоритм (или не) память обладает высокой скоростью чтения. Но скорость записи и стирания не велико. Используется например на какой-то аппарат за заводе. Где нужно записать и всегда использовать этот записанный материал.
в транзисторе с плавающим затвором слишком малое напряжение на затворе обозначае тединицу. Для удаления(стирания)данных на управляющий затвор подаётся достаточно высокоеотрицательное напряжение, что приводит к обратному эффекту (электроны с плавающего затвора с помощью туннельного эффекта переходят на исток)
NAND (объем больше) лежит алгоритм (и не) там ячейки становятся поврежденными часто. Но она имеет доп память. Которая и будет использоваться для замещения плохих блоков хорошими без уменьшенеия объема.
-
SLC одноуровневые ячейки
-
MLC многоуровневые ячейки
3)МНОГОПОТОЧНОСТЬ ( Что такое потоки)
Потоки также называют нитями от англ Thread-нить. Потоки – это часть программы. Которая может выполнятся одновременно с другими частями. Поток можно создать функцией CreateThread() (его обязательно нужно закрыть CloseHandle()) .При наличии двух процессоров процессы могут выполняться одновременно. А именно код одного процесса совсем не будет замечать рядом проходящего другого…….после того как один поток отработал он приостанавливается системой. И запускается другой поток. Который был приостановлен ранее. Переключение поток происходит очень быстро как и процессов. И пользователь не замечает этого переключения.
2 билет:
-
В чем смысл использовать потоки в одном одноядерном процессоре:
Потоки выполняются в режиме разделения времени. По очереди в течении определенного времени. Это время называется квантом. Использование потоков на одноядерном процессоре может быть оправданно тем, что у каждого потока будет свой квант.
Процессор одноядерный. Так как два потока выполняются у нас одновременно, то нужно создать для пользователя (визуально) эту самую одновременность выполнения. Операционная система, делает хитро: происходит переключение между выполнением этих двух потоков (эти переключения мгновенныи пользователь не замечает). То есть, система немного «повыполняла» первую задачу, потом резко переключилась на вторую задачу, потом назад на 1 задача и тд. А у пользователя создается впечатление одновременного выполнения этих двух задач. Но теряется производительность.
-
Дана часть программы: Mpi_comm_size (..., &numprocs) Mpi_comm_rank (..., &myid) Какой смысл переменной myid для чего может быть потом использована? Для чего используется numprocs?
MPI позволяет разрабатывать параллельные программы
mpi.h библиотека
Первой вызываемой функцией int MPI_Init ( int *agrc, char **argv );
Последней int MPI_Finalize (void);
количества процессов MPI_Comm_size(comm, *size);
определения ранга MPI_Comm_rank (comm, *rank);
Для передачи сообщения процесс-отправитель должен выполнить функцию:
MPI_Send(……….);
Для приема сообщения процесс-получатель должен выполнить функцию: MPI_Recv(**********)
передачи данных от одного процесса всем процессам программы
MPI_Bcast(******)
MPI_Reduce (*****)
Все Int
MPI_DOUBLE double MPI_FLOAT float MPI_INT int MPI_LONG long MPI_LONG_DOUBLE long double
#include "mpi.h" int main (int argc, char *argv[]) { <программный код без использования MPI функций> MPI_Init(&agrc, &argv); <программный код с использованием MPI функций> MPI_Finalize(); <программный код без использования MPI функций> return 0; }
переменная Rank будет принимать различные значения в разных процессах.
-
С какой скоростью происходит сканирование полноцветным сканером изображения А4 с разрешением 300 dpi если скорость передачи по USB порту 12 мбит/с?
Оценка скорости печати
Размер в страницах умножаем на количество точек в дюйме (dpi) умножаем все это на размер памяти каждой точки (черно белое 1 бит. С оттенками серого 8 бит) и делим все это на скорость передачи порта
( ( (8,27 * 11,69) * dpi ) * размероднойточкивбитах ) / скорость порта в битах
Порт LPT скорость от 800Кбит\с – 16Мбит\с -- принтеры сканеры
(8 × 12 × 300 × 32) / (12 × 1048576) = 0,0732421875
3 билет:
1)что такое привязка потоков к ядрам и как выполняется
Вообще поток – это объект ядра ОС..еще с каждым потоком связанно:
-через объект ядра ОС хранит статическую информацию а также управляет потоком
2)расчетная задача,типо черно-белый лазерный принтер,какая то скорость..найти Макс.скорость
Размер в страницах умножаем на количество точек в дюйме (dpi) умножаем все это на размер памяти каждой точки (черно белое 1 бит. С оттенками серого 8 бит) и делим все это на скорость передачи порта
( ( (8,27 * 11,69) * dpi ) * размероднойточкивбитах ) / скорость порта в битах
Порт LPT скорость от 800Кбит\с – 16Мбит\с -- принтеры сканеры
(1200 × 8 × 12 × 1) / (12 × 1048576) = 0,00915527343
1,5, 12 и 480 Мбит/с для LS, FS и HS соответственно
3) обработка прерываний, что будет если убрать префикс замены переменных
Что произойдет если фрагмент кода:
mov al, cx:symbol inc al:symbol
поменять на
mov al, symbol inc symbol
. Прямая адресация - если известен адрес операнда располагающегося в памяти
mov ax,es:0001
mov ax, es:word_var
В последнем случае ассемблер сам заменит слово word_var на соответствующий адрес