Главная / Программирование /
Common Intermediate Language и системное программирование в Microsoft .NET / Тест 14
Common Intermediate Language и системное программирование в Microsoft .NET - тест 14
Упражнение 1:
Номер 1
Существует проблема одновременного конкурирующего доступа нескольких потоков к общим разделяемым данным при реализации:
Ответ:
 (1) мультипрограммирования 
 (2) мультипроцессирования 
 (3) мультиплексирования 
Номер 2
В каких приложения особенно актуальна проблема одновременного конкурирующего доступа нескольких потоков к общим разделяемым данным:
Ответ:
 (1) малопоточных 
 (2) многопоточных 
 (3) максипоточных 
 (4) минипоточных 
Номер 3
В данном примере:#include <stdio.h>
#include <process.h>
#include <windows.h>
#define THREADS 10
#define ASIZE 10000000
static LONG array[ASIZE];
unsigned __stdcall ThreadProc( void *param )
{
int i;
for ( i = 0; i < ASIZE; i++ ) array[i]++;
return 0;
}
int main( void )
{
HANDLE hThread[THREADS];
unsigned dwThread;
int i, errs;
for ( i = 0; i < THREADS; i++ )
hThread[i] = (HANDLE)_beginthreadex(
NULL, 0, ThreadProc, NULL, 0, &dwThread
);
WaitForMultipleObjects( THREADS, hThread, TRUE, INFINITE );
for ( i = 0; i < THREADS; i++ ) CloseHandle( hThread[i] );
for ( errs=i=0; i<ASIZE; i++ )
if ( array[i] != THREADS ) errs++;
if ( errs ) printf("Detected %d errors!\n", errs );
return 0;
}несколько потоков увеличивают значение элементов общего массива на:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
 (5) 4 
 (6) 5 
Упражнение 2:
Номер 1
Операция увеличения на 1 элемента массива требует:
Ответ:
 (1) запроса для считывания данных из памяти 
 (2) увеличения значения на 1 
 (3) удаления данных из памяти 
 (4) сохранения данных в памяти 
Номер 2
Какие существуют в Windows способы решения проблем, возникающих при осуществлении одновременного доступа разных потоков к общим данным:
Ответ:
 (1) атомарные операции 
 (2) критические секции 
 (3) синхронизация с использованием объектов ядра 
 (4) ожидающие таймеры 
Номер 3
В достаточно частых случаях необходимо обеспечить конкурентный доступ к какой-либо целочисленной переменной, являющейся счетчиком. Тогда бывает достаточно просто обеспечить:
Ответ:
 (1) атомарность выполнения операций увеличения 
 (2) атомарность выполнения операций уменьшения 
 (3) атомарность выполнения операций изменения значения переменной 
Упражнение 3:
Номер 1
Атомарные операции обычно имеют более-менее близкое соответствие:
Ответ:
 (1) с командами процессора 
 (2) с системными командами 
 (3) со специальными командами 
 (4) с командами памяти 
Номер 2
В командах процессора операции с блокировкой шины имеют префикс:
Ответ:
 (1) unlock
 
 (2) lock
 
 (3) close
 
 (4) unclose
 
Номер 3
Для увеличения значения целочисленных переменных ОС Windows предоставляет следующие функции:
Ответ:
 (1) InterlockedDecrement, InterlockedDecrement64
 
 (2) InterlockedExchange, InterlockedExchange64
 
 (3) InterlockedIncrement, InterlockedIncrement64
 
 (4) InterlockedCompareExchange, InterlockedCompareExchangePointer
 
 (5) InterlockedExchangeAdd, InterlockedExchangePointer
 
Упражнение 4:
Номер 1
Для уменьшения значения целочисленных переменных ОС Windows предоставляет следующие функции:
Ответ:
 (1) InterlockedDecrement, InterlockedDecrement64
 
 (2) InterlockedCompareExchange, InterlockedCompareExchangePointer
 
 (3) InterlockedExchange, InterlockedExchange64
 
 (4) InterlockedIncrement, InterlockedIncrement64
 
Номер 2
Какая функция подготавливает начальный указатель на LIFO список:
Ответ:
 (1) InterlockedPushEntrySList
 
 (2) InterlockedPopEntrySList
 
 (3) InterlockedFlushSList
 
 (4) InitializeSListHead
 
Номер 3
Некоторый фрагмент кода, который должен выполняться в исключительном режиме - никакие другие потоки и процессы не должны выполнять этот же фрагмент в то же время называется:
Ответ:
 (1) "системная секция" 
 (2) "критическая секция" 
 (3) "главная секция" 
 (4) "блочная секция" 
Упражнение 5:
Номер 1
В Windows предусмотрен специальный тип данных, предназначенный для реализации критических секций, который называет:
Ответ:
 (1) CRITICAL_SECTION
 
 (2) STOP_SECTION
 
 (3) ATTENTION_SECTION
 
 (4) DRIFT_SECTION
 
Номер 2
Работа с критическими секциями сводится к следующим основным функциям:
Ответ:
 (1) EnterCriticalSection
 
 (2) LeaveCriticalSection
 
 (3) InterlockedCriticalSection
 
 (4) EnterlockedCriticalSection
 
Номер 3
Какая функция позволяет при необходимости не входить в секцию, если она занята:
Ответ:
 (1) TryEnterCriticalSection
 
 (2) EnterCriticalSection
 
 (3) InitializeCriticalSectionAndSpinCount
 
 (4) SetCriticalSectionSpinCount
 
 (5) InitializeCriticalSection
 
Упражнение 6:
Номер 1
С точки зрения операционной системы объекты ядра, поддерживающие интерфейс синхронизируемых объектов, могут находиться в следующих состояниях:
Ответ:
 (1) signaled
 
 (2) nonsignaled
 
 (3) stop
 
 (4) nonstop
 
Номер 2
Функции проверяют состояние ожидаемого объекта или ожидаемых объектов и продолжают выполнение, только если:
Ответ:
 (1) объекты заняты 
 (2) объекты свободны 
 (3) объекты в ожидании 
 (4) объекты вызваны 
Номер 3
Функция WaitForSingleObject
осуществляет ожидание:
Ответ:
 (1) одного объекта 
 (2) двух объектов 
 (3) трех объектов 
 (4) четырех объектов 
 (5) пяти объектов 
Упражнение 7:
Номер 1
Некоторый объект, который может находиться в одном из двух состояний: занятом или свободном - это:
Ответ:
 (1) событие 
 (2) семафор 
 (3) мьютекс 
Номер 2
Для ограничения числа потоков, имеющих одновременный доступ к какому-либо ресурсу предназначены:
Ответ:
 (1) семафоры 
 (2) указатели 
 (3) мьютексы 
 (4) события 
Номер 3
Для захвата мьютекса используется функция:
Ответ:
 (1) ReleaseMutex
 
 (2) WaitFor...
 
 (3) CreateMutex
 
 (4) GetMutex
 
Упражнение 8:
Номер 1
Какие объекты предназначены для выполнения операций через заданные промежутки времени или в заданное время:
Ответ:
 (1) специальные таймеры 
 (2) системные таймеры 
 (3) ожидающие таймеры 
Номер 2
Таймеры могут:
Ответ:
 (1) служить в качестве синхронизирующих объектов 
 (2) могут вызывать указанную разработчиком функцию 
 (3) служить в качестве асинхронизирующих объектов 
 (4) не могут вызывать указанную разработчиком функцию 
Номер 3
При необходимости точно планировать время выполнения надо использовать следующие функции:
Ответ:
 (1) timeGetSystemTime
 
 (2) timeBeginPeriod
 
 (3) CreateMutex
 
 (4) EnterCriticalSection
 
Упражнение 9:
Номер 1
Процессы в Windows определяют адресное пространство, которое будет использоваться:
Ответ:
 (1) всеми потоками, работающими в этой процедуре 
 (2) всеми потоками, работающими в этом процессе 
 (3) всеми процессами, работающими в этом потоке 
 (4) всеми процедурами, работающими в этом потоке 
Номер 2
Основные механизмы взаимодействия процессов могут быть разделены на следующие группы:
Ответ:
 (1) использование объектов ядра для взаимной синхронизации 
 (2) проецирование файлов в адресное пространство процесса 
 (3) использование файловых объектов 
 (4) механизмы, ориентированные на обмен оконными сообщениями 
 (5) RPC 
 (6) COM 
Номер 3
Надстройка, использующая проецирование для реальной передачи данных - это:
Ответ:
 (1) Pipes 
 (2) RPC 
 (3) COM 
 (4) Sockets 
Упражнение 10:
Номер 1
Для создания процессов используются функции:
Ответ:
 (1) CreateProcess, CreateProcessAsUser, CreateProcessWithLogonW, CreateProcessWithTokenW
 
 (2) VirtualAlloc, VirtualFree, VirtualAllocEx, VirtualFreeEx, VirtualLock, VirtualUnlock
 
 (3) CreateProcessAlloc, CreateProcessAllocEx, VirtualProcessWithLogonW, CreateProcessUnlock
 
Номер 2
Для управления адресным пространством предназначены функции:
Ответ:
 (1) VirtualAlloc
 
 (2) VirtualFree
 
 (3) VirtualAllocEx
 
 (4) VirtualFreeEx
 
 (5) VirtualLock
 
 (6) VirtualUnlock
 
Номер 3
Для проецирования файла или его части в память предназначены функции:
Ответ:
 (1) MapViewOfFile
 
 (2) MapViewOfFileEx
 
 (3) UnmapViewOfFile
 
 (4) CreateFileMapping
 
 (5) OpenFileMapping
 
 (6) LoadLibraryEx
 
Упражнение 11:
Номер 1
Проецирование файлов используется:
Ответ:
 (1) для создания адресной памяти 
 (2) для создания разделяемой памяти 
 (3) для создания общей памяти 
 (4) для создания изолированной памяти 
Номер 2
Для явного сброса данных из оперативной памяти в файл можно использовать следующую функцию:
Ответ:
 (1) FlushViewOfFile
 
 (2) UnmapViewOfFile
 
 (3) VirtualAlloc
 
 (4) CreateProcess
 
Номер 3
Механизм проецирования файлов является базовым средством для передачи данных:
Ответ:
 (1) между адресными пространствами потоков 
 (2) между адресными пространствами процедур 
 (3) между адресными пространствами процессов 
 (4) между адресными пространствами секций 
Упражнение 12:
Номер 1
Работа с разделяемыми данными посредством проецирования файлов связана:
Ответ:
 (1) с объявлением специальных разделяемых сегментов в приложении 
 (2) с объявлением специальных не разделяемых сегментов в приложении 
 (3) с объявлением специальных разделяемых секций в приложении 
 (4) с объявлением специальных не разделяемых секций в приложении 
Номер 2
В случае работы с разделяемыми данными посредством проецирования файлов связана с объявлением специальных разделяемых сегментов в приложении, которые:
Ответ:
 (1) будут не доступны для всех копий этого приложения 
 (2) будут локальными для всех копий этого приложения 
 (3) будут глобальными для всех копий этого приложения 
 (4) будут общими для всех копий этого приложения 
Номер 3
Какие директивы для объявления разделяемого сегмента и помещаемых в него данных можно использовать в Microsoft Visual C++:
Ответ:
 (1) #pragma
 
 (2) #close
 
 (3) #open
 
 (4) _ _special
 
 (5) _ _declspec