игра брюс 2048
Главная / Программирование / 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)

 (2)

 (3)

 (4)

 (5)

 (6)


Упражнение 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) множеством маски процесса 




Главная / Программирование / Common Intermediate Language и системное программирование в Microsoft .NET / Тест 13