Главная / Программирование /
Common Intermediate Language и системное программирование в Microsoft .NET / Тест 13
Common Intermediate Language и системное программирование в Microsoft .NET - тест 13
Упражнение 1:
Номер 1
При разработке параллельных приложений необходимо обеспечить:
Ответ:
 (1) их согласованное выполнение 
 (2) своевременный обмен данными 
 (3) произвольный обмен данными 
 (4) их линейное выполнение 
Номер 2
Разработка серверов, обслуживающих асинхронно поступающие запросы является:
Ответ:
 (1) одной из типовых задач 
 (2) одной из специальных задач 
 (3) нетипичной задачей 
 (4) одной из легких задач 
Номер 3
Реализация однопоточного сервера для обслуживания асинхронно поступающие запросы нецелесообразна по следующим причинам:
Ответ:
 (1) запросы могут приходить в то время, пока сервер занят выполнением предыдущего 
 (2) такой сервер не сможет эффективно задействовать многопроцессорную систему 
 (3) такой сервер не сможет эффективно задействовать операционную систему 
 (4) запросы могут приходить в то время, пока сервер простаивает 
Упражнение 2:
Номер 1
Для реализации пула потоков необходимо создание:
Ответ:
 (1) некоторого количества потоков 
 (2) диспетчера с очередью запросов 
 (3) диспетчера с очередью задач 
 (4) некоторого количества нитей 
Номер 2
При использовании пула потоков имеет смысл ограничивать общее число рабочих потоков:
Ответ:
 (1) числом доступных процессоров 
 (2) числом кратным числу доступных процессоров 
 (3) числом не кратным числу доступных процессоров 
Номер 3
Если при использовании пула потоков последние занимаются исключительно вычислительной работой, то их число не должно превышать:
Ответ:
 (1) число процессоров 
 (2) число блоков 
 (3) число секций 
 (4) число процессов 
Упражнение 3:
Номер 1
В Windows поддержка пула потоков реализована в виде:
Ответ:
 (1) порта завершения ввода 
 (2) порта завершения ввода-вывода 
 (3) порта завершения вывода 
 (4) порта завершения исполнения 
Номер 2
В Windows порта завершения ввода-вывода берет на себя функциональность, необходимую для организации:
Ответ:
 (1) очереди запросов 
 (2) списков рабочих потоков 
 (3) очереди процедур 
 (4) списков рабочих процессов 
Номер 3
Что касается порта завершения ввода-вывода в Windows, то с точки зрения разработчика приложения необходимо:
Ответ:
 (1) создать пакет запросов 
 (2) создать порт завершения ввода-вывода 
 (3) создать пул потоков 
 (4) обеспечить передачу запросов порту 
 (5) обеспечить передачу на пул 
Упражнение 4:
Номер 1
Порт завершения создается с помощью функции:
Ответ:
 (1) HANDLE CreateIoCompletionPort(
HANDLE FileHandle, HANDLE ExistingCompletionPort,
ULONG_PTR CompletionKey, DWORD NumberOfConcurrentThreads
); 
 (2) CreateIoCompletionPort(
HANDLE FileHandle, HANDLE ExistingCompletionPort,
CompletionKey, DWORD NumberOfConcurrentThreads
); 
 (3) HANDLER CreateIoCompletionPort(
HANDLER FileHandle, HANDLER ExistingCompletionPort,
ULONG_PTR CompletionKey, DWORD NumberOfConcurrentThreads
); 
 (4) HANDLE CreateIoCompletionPort(
HANDLE FileHandle, HANDLE ExistingCompletion,
ULONG_PTR CompletionKey, DWORD ConcurrentThreads
); 
Номер 2
Типичными формами применения функции CreateIoCompletionPort
являются:
Ответ:
 (1) создание нового порта завершения ввода-вывода 
 (2) ассоциирование порта с файлом 
 (3) ассоциирование порта с пулом 
 (4) создание нового порта ввода-вывода 
Номер 3
Создавать новый порт завершения ввода-вывода с помощью функции CreateIoCompletionPort
можно так:
Ответ:
 (1) CONCURRENTS 4
HANDLE hCP;
hCP = CreateIoCompletionPort(
INVALID_HANDLE_VALUE, NULL, NULL, CONCURRENTS
); 
 (2) #define CONCURRENTS 4
HANDLE hCP;
hCP = CreateIoCompletionPort(); 
 (3) #define CONCURRENTS 4
hCP = CreateIoCompletionPort(
INVALID_HANDLE_VALUE, NULL, NULL, CONCURRENTS
); 
 (4) #define
HANDLE hCP;
INVALID_HANDLE_VALUE, NULL, NULL, CONCURRENTS; 
Упражнение 5:
Номер 1
При простом создании порта завершения ввода-вывода достаточно указать только:
Ответ:
 (1) минимальное число одновременно работающих потоков 
 (2) максимальное число одновременно работающих потоков 
 (3) предполагаемое число одновременно работающих потоков 
 (4) произвольное число одновременно работающих потоков 
Номер 2
Ассоциирование порта с файлом можно осуществить так:
Ответ:
 (1) #define
CreateIoCompletionPort( ); 
 (2) #define SOME_NUMBER 123
CreateIoCompletionPort; 
 (3) SOME_NUMBER 123
CreateIoCompletionPort( hFile, hCP, SOME_NUMBER, 0 ); 
 (4) #define SOME_NUMBER 123
CreateIoCompletionPort( hFile, hCP, SOME_NUMBER, 0 ); 
Номер 3
С помощью функции PostQueuedCompletionStatus
можно помещать в очередь порта запросы:
Ответ:
 (1) имитирующие завершение ввода-вывода 
 (2) имитирующие завершение вывода 
 (3) имитирующие начало ввода-вывода 
 (4) имитирующие начало ввода 
Упражнение 6:
Номер 1
Число потоков в пуле обычно превышает число:
Ответ:
 (1) произвольно работающих потоков 
 (2) одновременно работающих потоков 
 (3) последовательно работающих потоков 
 (4) линейно работающих потоков 
Номер 2
Чтобы порт завершения ввода-вывода не связывать с файлами, для размещения запроса можно воспользоваться функцией:
Ответ:
 (1) ExistingCompletionPort
 
 (2) CreateIoCompletionPort
 
 (3) CompletionKey
 
 (4) PostQueuedCompletionStatus
 
Номер 3
В общем виде поток в пуле реализует цикл с выбором запросов из очереди с помощью функции:
Ответ:
 (1) CompletionKey
 
 (2) PostQueuedCompletionStatus
 
 (3) GetQueuedCompletionStatus
 
 (4) CreateIoCompletionPort
 
Упражнение 7:
Номер 1
В современных реализациях Windows с помощью функции:BOOL QueueUserWorkItem(
LPTHREAD_START_ROUTINE QueryFunction,
PVOID pContext, ULONG Flags
);предусмотрена возможность:
Ответ:
 (1) динамического создания и управления потоками 
 (2) автоматического создания и управления потоками 
 (3) автоматического создания и управления пулом потоков 
 (4) динамического создания и управления пулом потоков 
Номер 2
С помощью флага WT_EXECUTEDEFAULT
запрос будет направлен:
Ответ:
 (1) обычному потоку из пула 
 (2) обычному потоку из процедуры 
 (3) обычному потоку из задачи 
 (4) обычному потоку из процессов 
Номер 3
Флаг WT_EXECUTEINIOTHREAD
заставит систему обрабатывать запрос в потоке, который находится:
Ответ:
 (1) в состоянии оповещения 
 (2) в состоянии ожидания оповещения 
 (3) в состоянии ожидания потока 
 (4) в состоянии ожидания процессов 
Упражнение 8:
Номер 1
При разработке многопоточных приложений возникает необходимость обеспечивать не только параллельное исполнение кода потоков, но также их взаимодействие:
Ответ:
 (1) обмен данными 
 (2) доступ к общим, разделяемым всеми потоками данным 
 (3) изоляцию некоторых данных одного потока от других 
Номер 2
Поскольку все потоки разделяют общее адресное пространство процесса, то все они имеют общий и равноправный доступ:
Ответ:
 (1) ко всем данным, хранимым в адресном пространстве 
 (2) ко всем данным, хранимым в потоках 
 (3) ко всем данным, хранимым в процедурах 
 (4) ко всем данным, хранимым в общем пространстве 
Номер 3
Очень часто для изоляции данных достаточно их размещать:
Ответ:
 (1) в стеке 
 (2) в потоке 
 (3) в процедуре 
 (4) в памяти 
Упражнение 9:
Номер 1
Thread Local Storage - это:
Ответ:
 (1) механизм управления данными, локальными для потока 
 (2) механизм управления данными, глобальными для потока 
 (3) механизм управления данными, внешними для потока 
 (4) механизм управления данными, внутренними для потока 
Номер 2
Выберите утверждения верные для TLS памяти:
Ответ:
 (1) полное название Thread Local Storage 
 (2) в специальном блоке данных возможно хранение произвольных данных 
 (3) в специальном блоке данных размещаются указатели на данные большего объема 
Номер 3
Сколько функций предоставляет ОС Windows необходимых для работы с локальной для потока памятью:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
 (5) 4 
 (6) 5 
Упражнение 10:
Номер 1
Какая функция выделяет в ассоциированной с потоком памяти двойное слово, индекс которого возвращается вызвавшей процедуре:
Ответ:
 (1) DWORD TlsAlloc(void)
 
 (2) TlsFree
 
 (3) SetThreadIdealProcessor
 
 (4) GetNumaNodeProcessorMask
 
Номер 2
Для доступа к данным зарезервированной ячейки используется функция:
Ответ:
 (1) TlsSetValue
 
 (2) TlsGetValue
 
 (3) GetNumaHighestNodeNumber
 
 (4) GetNumaProcessorNode
 
Номер 3
Какая функция изменяет значение в соответствующей ячейке:
Ответ:
 (1) TlsSetValue
 
 (2) TlsGetValue
 
 (3) DWORD TlsAlloc(void)
 
Упражнение 11:
Номер 1
В Visual Studio работа с локальной для потока памятью может быть упрощена при использовании:
Ответ:
 (1) _declspec(thread)
при описании потоков 
 (2) _declspec(thread)
при описании процедур 
 (3) _declspec(thread)
при описании переменных 
 (4) _declspec(thread)
при описании констант 
Номер 2
При использовании _declspec(thread)
при описании переменных компилятор будет размещать эти переменные:
Ответ:
 (1) в специальном сегменте данных (_TLS)
 
 (2) в специальном сегменте данных (_SLT)
 
 (3) в специальном сегменте данных (_TSL)
 
Номер 3
Следует внимательно следить за выделением и освобождением данных, указатели на которые:
Ответ:
 (1) сохраняются в потоках 
 (2) сохраняются в TLS памяти 
 (3) сохраняются в процедурах 
 (4) сохраняются в процессах 
Упражнение 12:
Номер 1
Аналогично TLS памяти, Windows поддерживает память, локальную для волокон:
Ответ:
 (1) LFS память 
 (2) FLS память 
 (3) SFL память 
Номер 2
В данном случае:DWORD FlsAlloc( PFLS_CALLBACK_FUNCTION lpCallback );
VOID WINAPI FlsCallback( PVOID lpFlsData )
{
...
}происходит:
Ответ:
 (1) выделения ячейки FLS памяти 
 (2) выделения ячейки TLS памяти 
 (3) выделения ячейки PLS памяти 
Номер 3
Маска, назначаемая потоку, должна быть:
Ответ:
 (1) элементом подмножеством маски процесса 
 (2) элементов множества маски процесса 
 (3) подмножеством маски процесса 
 (4) множеством маски процесса