Сертификат "Common Intermediate Language и системное программирование в Microsoft .NET"
  • Сертификат "Common Intermediate Language и системное программирование в Microsoft .NET"
  • Сертификат "Common Intermediate Language и системное программирование в Microsoft .NET"
Сертификат "Common Intermediate Language и системное программирование в Microsoft .NET"
  • Сертификат "Common Intermediate Language и системное программирование в Microsoft .NET"
  • Сертификат "Common Intermediate Language и системное программирование в Microsoft .NET"

Common Intermediate Language и системное программирование в Microsoft .NET

700,00 руб.
В течение часа!
Экзамен "Common Intermediate Language и системное программирование в Microsoft .NET" для пользователей и системных администраторов.
Количество
Есть в наличии!

Форма сдачи теста: Экстерн
Количество вопросов: 30
Проходной балл: 90% и выше
Срок действия сертификата: неограничен

Сертификат появляется в профиле ресурса INTUIT, и Вы можете заказать его бумажную версию на сайте INTUIT.
10000 шт.
Внимание !
Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier!

Рабочим названием платформы .NET было:

Next Generation Web Services
Project 42
COM Object Runtime
COM+ 2.0
Lightning
COM



Платформа .NET разработана:

Microsoft
Sun
Oracle
Borland



Разработка платформы .NET началась в:

2000 г.
1997 г.
1998 г.
1996 г.



Для чего используются метаинструменты?

для трансформации программ
для разработки программ
для тестирования программ
для анализа и преобразования программ



Какая составляющая современного компилятора осуществляет лексический и синтаксический анализ программы и переводит программу в некоторое промежуточное представление?

"Right-end"
"Top-end"
"Front-end"
"Bottom-end"
"Back-end"
"Down-end"



Какой организацией стандартизована спецификация основной части платформы .NET?

European Computer Manufactures Association
Institute of Electrical and Electronics Engineers
Computer and Business Equipment Manufacturers Association
American National Standards Institut



Для принципов выполнения программ в UCSD p-System и .NET верно:

программы на CIL непосредственно выполнялись интерпретатором
заметных отличий в выполнении программ не имеется
программы на CIL перед выполнением транслируются в код для конкретного процессора
программы, закодированные в p-коде, непосредственно выполнялись интерпретатором



К предшественникам платформы .NET можно отнести:

Язык Fortran
Технология ANDF
Платформа Java
UCSD p-System



Операционная система UCSD p-System была разработана в:

1981 году
1978 году
1979 году
1980 году



Для платформы Java верно:

в настоящее время является основным конкурентом платформы .NET
по архитектуре и своим возможностям наиболее близка к платформе .NET
краеугольным камнем является виртуальная машина
широкому распространению способствовало развитие Internet-технологий
Java byte-code - это набор инструкций виртуальной машины
была разработана в середине 1990-х годов в Sun Microsystems



Две разнесенные во времени и пространстве фазы процесса компиляции программ технологии ANDF - это?

перевод программы из формата ANDF
трансляция программы, представленной в формате ANDF, в исполняемый файл
интерпретация программы, представленной в формате ANDF, в исполняемый файл
перевод программы в формат ANDF



Для формата ANDF верно:

не зависит от инсталляторов
не зависит от операционных систем
не зависит от особенностей аппаратных платформ
не зависит от языков программирования



Из каких компонентов состоит платформа .NET?

Common Language Runtime
Common Runtime .NET
.NET Framework Library
.NET Framework Class Library



На основе спецификации CLI, разрабатываются следующие ее реализации:

GNU
Rotor
проект Portable .NET
платформа Mono



Составными частями спецификации CLI являются:

Metadata System
Common Type System
Virtual Execution System
Common Language Specification
Common Intermediate Language
Common File System



С точки зрения обеспечения безопасности в классификацию CIL-кода можно включить:

независимый код
верифицируемый код
безопасный код
недопустимый код
допустимый код
открытый код



Программа ngen представляет собой:

JIT-компилятор четвертого типа
JIT-компилятор второго типа
JIT-компилятор первого типа
JIT-компилятор третьего типа



Укажите типичные ошибки при управлении памятью:

преждевременное освобождение памяти
двойное освобождение
утечки памяти
фрагментация адресного пространства



Абстрагировавшись от конкретных особенностей .NET, можно сказать, что основная цель системы типов заключается в:

фиксации определенного класса ошибок в программе до ее выпонения
предотвращении определенного класса ошибок в программе до ее выпонения
исправлении определенного класса ошибок в программе до ее выпонения
отслеживании определенного класса ошибок в программе до ее выпонения



Все ошибки в программах можно разделить на две категории:

перехватываемые и неперехватываемые
критические и не критические
допустимые и недопустимые
теоритические и фактические



В качестве примеров перехватываемых ошибок можно привести:

выход за границы массива
обращение к памяти по нулевому указателю
деление на ноль
передача управления на неправильный адрес



Для программы, написанной на языке со строгой проверкой, справедливы следующие утверждения:

борьба с перехватываемыми ошибками остается в компетенции программиста
перехватываемые ошибки могут возникать
запрещенные перехватываемые ошибки также невозможны
неперехватываемые ошибки не могут возникнуть



Какие пути существуют для диагностики запрещенных ошибок:

динамическая проверка во время выполнения
статическая проверка программы до ее выполнения
фактическая проверка во время выполнения
теоретическая проверка программы до ее выполнения



Неперехватываемые ошибки возникают:

при делении на ноль
при выходе за границы массива
при обращении к памяти по нулевому указателю
при передаче управления на неправильный адрес



Ядро общей системы типов .NET состоит из следующих категорий:

reference types
value types
performance types
system types



Классы могут содержать следующие элементы:

objects
properties
fields
events
methods



Интерфейсы могут рассматриваться как чисто абстрактные классы, содержащие только следующие элементы:

статические поля
статические события
статические методы
абстрактные события
абстрактные свойства
абстрактные методы



Для объектных ссылок и значений типов-значений вводятся следующие отношения:

допустимости
равенства
совместимости
идентичности



Одной из основных причин ухудшения производительности Java-программ является медленная работа сборщика мусора, вызванная:

большим количеством мелких объектов в куче
малым количеством мелких объектов в куче
малым количеством мелких объектов в структурах
большим количеством мелких объектов в структурах



Все структуры неявно наследуют от библиотечного класса:

System.Enum
System.ValueType
System.Library
System.Value



Дополнительными элементами системы типов .NET являются:

пользовательские типы-значения
кучи
ссылки
указатели



Выберите верные утверждения для упакованных типов-значений:

получение объекта упакованного типа-значения осуществляется путем упаковки
не могут быть объявлены программистом
с помощью упаковки мы можем превратить значение любого типа-значения в объект
эти типы являются ссылочными и самоописывающими
система автоматически определяет тип для типа-значения



В .NET имеются категории указателей:

unmanaged pointers
unsystem pointers
system pointers
managed pointers



Для того чтобы программы оставались безопасными, на использование управляемых указателей наложен целый ряд следующих ограничений:

указатели могут храниться только в локальных переменных и параметрах методов
управляемые указатели могут содержать только адреса ячеек
запрещены указатели на указатели
за каждым указателем закреплен тип ячейки, на которую он может указывать



В реализациях CLI вместо интерпретатора CIL-кода используется:

VES
JIT-компилятор
CIL-транслятор
JVM



Абстрактная виртуальная машина способна выполнять:

произвольный код
избранный код
управляемый код
абстрактный код



VES является значительно более абстрактной моделью, чем:

виртуальная машина Java
UCSD p-System
Технология ANDF
CLI



В чем причина того, что VES является более абстрактной моделью, чем JVM?

изначально Java была ориентирована на реализацию в бытовых приборах
байт-код Java должен был выполняться специальными процессорами
VES не является более абстрактной моделью, чем JVM
аппаратная реализация VES никогда даже не предполагалась



Изучение работы виртуальной машины CLI заключается в том, чтобы понять:

что представляет собой виртуальная машина
что представляет собой состояние виртуальной машины
как изменяется виртуальная машина при трансляции программ
как состояние виртуальной машины меняется во времени



Нити (threads) могут:

могут отображаться на нити операционной системы
работать последовательно
работать параллельно
работать в режиме вытесняющей многозадачности
могут отображаться на процессы



Состояние виртуальной машины является совокупностью состояний:

процессов
нитей
состояния кучи
состояния виртуальной памяти



Виртуальная машина может выполнять сразу несколько:

классов
нитей
программ
объектов



Состояние кучи определяется состояниями содержащихся в ней:

нитей
объектов
методов
классов



Если активный метод закончит свою работу, то его состояние будет:

занесено в историю списка
удалено из списка
добавлено в начало списка
добавлено в конец списка



Состояние нити представляет собой односвязный список состояний:

методов
объектов
классов
кучи



Элементы состояния метода можно условно разделить на следующие группы:

неизменяемые данные
временные данные
изменяемые данные
системные данные



Изменяемые данные доступны из тела метода для:

чтения
записи
исполнения



Для неизменяемых данных верно:

предназначены для внутреннего использования в системе выполнения
доступны только для записи
предназначены для системного использования
доступны только для чтения



Элементами состояния метода, входящими в группу изменяемых данных являются:

Evaluation Stack
Local Variable Array
Local Memory Pool
Instruction Pointer
Argument Array



Что из изменяемых данных содержит адрес следующей инструкции в теле метода, которая будет выполнена системой выполнения:

Evaluation Stack
Argument Array
Local Memory Pool
Instruction Pointer



В группу неизменяемых данных входят следующие элементы состояния метода:

methodInfo handle
Local Memory Pool
Return State Handle
Local Variable Array
Security Descriptor



Глубина стека в VES задается:

динамически в названии объекта
динамически в заголовке метода
статически в заголовке метода
статически в названии объекта



Тип F представляет собой:

8-байтовое целое со знаком
число с плавающей точкой
управляемый указатель
объектная ссылка
4-байтовое целое со знаком



В виртуальной системе выполнения вместо регистров применяется:

объекты
стек вычислений
слоты
ячейки



Беззнаковый тип unsigned int32 при загрузке на стек вычислений становится:

float64
знаковым int32
float32
знаковым int64


Память из области локальных данных может быть явно выделена с помощью инструкции:

localoc
local
localloc
loc



Слоты, из которых состоят массивы переменных и параметров:

имеют специальный флаг
не имеют значений
адресуемы
не имеют адреса



Работает на основе построения графа достижимости объектов:

механизм автоматического управления памятью
группа объектов
управляемая куча
сборщик мусора с поколениями



Одной из основных особенностей платформы .NET, делающих ее привлекательной для разработки приложений, является механизм:

garbage collection
generational garbage collector
managed heap
system heap



По спецификации CLI память для объектов, используемых в программе, выделяется в:

механизме автоматического управления памятью
сборщике мусора с поколениями
управляемой куче
структуре объектов



Специальный указатель HeapPtr содержит адрес, по которому будет выделена память:

для следующего объекта
для текущего объекта
для последнего объекта
для предыдущего объекта



Для некоторых объектов определены методы Finalize, выполняющие некие действия:

при добавлении объекта в кучу
при создании объекта в куче
при выполнении объекта в куче
при удалении объекта из кучи



Функция malloc выполняет следующие действия:

внесение необходимых изменений в список блоков
поиск свободного блока нужного размера
разбивку блока
форматирование блоков



Дефрагментация заключается в сдвиге достижимых объектов:

к концу кучи на место удаляемых недостижимых объектов
к середине кучи на место удаляемых недостижимых объектов
к началу кучи на место удаляемых недостижимых объектов
к метке кучи на место удаляемых недостижимых объектов



Что такое корень (root)

указатель на кучу, расположенный вне кучи
указатель на объект кучи, расположенный вне кучи
указатель на кучу, расположенный в куче
указатель на объект кучи, расположенный в куче



Запуск сборщика мусора осуществляется в тот момент, когда совокупный размер объектов в куче:

становится меньше некоторой границы
достигает некоторой границы
превышает допустимый максимум



Все объекты делятся на следующие категории:

поколение 1
поколение 3
поколение 0
поколение 2



Большими считаются объекты, размер которых превышает:

100 000 байт
85 000 байт
80 000 байт
75 000 байт



Файл, который может быть загружен в память загрузчиком операционной системы и затем исполнен - это:

исполняемый файл
системый файл
модульный файл
интерпретируемый файл



В операционной системе Windows исполняемые файлы, как правило, имеют расширения:

".exe"
".com"
".bat"
".dll"



Основным форматом для хранения исполняемых файлов в операционной системе Windows является:

COM Executable (CE)
Linear Executable (LE)
New Executable (NE)
Portable Executable (PE)



Смысл раздельной компиляции заключается в том, что части программы (модули) компилируются независимо в объектные файлы, которые затем связываются:

интерпретатором в один исполняемый файл
компилятором в один исполняемый файл
компоновщиком в один исполняемый файл
транслятором в один исполняемый файл



Управление памятью в Windows NT/2k/XP/2k3 осуществляет:

task scheduler
virtual-memory manager
event viewer
system manager



В ".NET Framework Glossary" утверждается, что:

COFF - это формат объектных файлов
COFF - это формат исполняемых файлов
PE - это формат исполняемых файлов
PE - это формат объектных файлов



Менеджер виртуальной памяти использует страничную схему управления памятью, при которой вся физическая память делится на одинаковые отрезки размером в:

2512 байт
4096 байт
1024 байт
512 байт



Каждый процесс в Windows запускается в своем виртуальном адресном пространстве размером в:

8 Гб
1 Гб
2 Гб
4 Гб



Для memory-mapped files верно:

это мощная возможность операционной системы
это отображаемые в кэш-память файлы
не каждое обращение к отображенному в память файлу вызывает операцию чтения/записи
это отображаемые в память файлы



Секция в PE-файле представляет:

код
глобальные переменные
таблицы импорта
ресурсы



Разность виртуального адреса данного элемента и базового адреса, по которому PE-файл загружен в память - это:

секция PE-файла
образ PE-файла
RVA некоторого элемента PE-файла
PE некоторого элемента RVA-файла



Как правило, все exe-файлы содержат в поле ImageBase значение:

0x000000
0x400000
0x440002
0x400004
0x400044
0x400001



Какая секция описывает функции, которые PE-файл импортирует из динамических библиотек?

".rsrc"
".idata"
".edata"
".text"



Информация об экспортируемых функциях хранится внутри PE-файла в специальной секции:

".text"
".rdata"
".reloc"
".edata"



Сразу после заголовка MS-DOS следует сигнатура PE-файла, состоящая из четырех байт:

0x10, 0x00, 0x10, 0x00
0x20, 0x15, 0x00, 0x00
0x00, 0x45, 0x00, 0x10
0x50, 0x45, 0x00, 0x00



Заголовок PE-файла состоит из следующих полей:

long NumberOfSymbols;
unsigned short Machine;
long TimeDateStamp;
unsigned short NumberOfSections;



В дополнительном заголовке PE-файла поле longCodeSize; - это:

RVA точки входа в программу
cуммарный размер всех кодовых секций
младшее число версии компоновщика
старшее число версии компоновщика



Поля дополнительного заголовка можно разделить на следующие группы:

поля, специфичные для Windows NT.
системные поля
директории данных
стандартные поля



Cекция содержит исполняемый код в следующем случае:

0x80000000
0x20000000
0x02000000
0x00000020


Структура Hint/Name состоит из следующих полей:

char Pad;
short Pad;
char Name[x];
short Hint;



Внесение исправления в 32-разрядное значение, которое находится по адресу FixupAddress, выполняется так:

*FixupAddress += ActualAddress + ImageBase;
*FixupAddress = ActualAddress + ImageBase;
*FixupAddress = ActualAddress - ImageBase;
*FixupAddress += ActualAddress | ImageBase;
*FixupAddress += ActualAddress - ImageBase;



Какие поля в заголовоке CLI содержат информацию о версии CLR, для которой предназначена данная сборка:

long Flags;
short MajorRuntimeVersion;
short MinorRuntimeVersion;
long EntryPointToken;



Описывает свойства сборки следующее поле заголовока CLI:

long
Flags;
long CodeManagerTable[2];
struct { long RVA, Size; } VTableFixups;
long Cb;



В заголовоке CLI поле "long Cb;":

содержит информацию о версии CLR
описывает свойства сборки
не используется и всегда заполнено нулями
содержит размер заголовка в байтах



Какое поле заголовка CLI не используется и всегда заполнено нулями:

long ManagedNativeHeader[2];
long CodeManagerTable[2];
long ExportAddressTableJumps[2];
struct { long RVA, Size; } StrongNameSignature;
struct { long RVA, Size; } Resources;
struct { long RVA, Size; } VTableFixups;



Токен метаданных, указывающий на точку входа в сборку для заголовока CLI - это:

long EntryPointToken;
long Flags;
short MinorRuntimeVersion;
long CodeManagerTable[2];



Блок входных параметров описывается структурой:

DLL_TYPE
INPUT_PARAMETERS
IMAGE_SUBSYSTEM_WINDOWS_GUI
IMAGE_SUBSYSTEM_WINDOWS_CUI



В данном примере:

void make_file (FILE* file, PINPUT_PARAMETERS inP)
{
  make_headers             (file, inP);
  make_text_section    (file, inP);
  make_cli_section     (file, inP);
  make_reloc_section    (file, inP);
};

функция make_file вызывает:

2 функции
3 функции
4 функции
1 функцию



В следующей форме в программе находится CIL-код методов:

unsigned char cilcode[] = {
  0x56, 0x72, 0x01, 0x00, 0x00, 0x70, 0x28, 0x02,
  0x00, 0x00, 0x0A, 0x28, 0x01, 0x00, 0x00, 0x0A,
  0x28, 0x02, 0x00, 0x00, 0x0A, 0x2A
};


unsigned cilcode[] = {
  0x56, 0x72, 0x01, 0x00, 0x00, 0x70, 0x28, 0x02,
  0x00, 0x00, 0x0A, 0x28, 0x01, 0x00, 0x00, 0x0A,
  0x28, 0x02, 0x00, 0x00, 0x0A, 0x2A
};


char cilcode[] = {
  0x56, 0x72, 0x01, 0x00, 0x00, 0x70, 0x28, 0x02,
  0x00, 0x00, 0x0A, 0x28, 0x01, 0x00, 0x00, 0x0A,
  0x28, 0x02, 0x00, 0x00, 0x0A, 0x2A
};


unsigned char {
  0x56, 0x72, 0x01, 0x00, 0x00, 0x70, 0x28, 0x02,
  0x00, 0x00, 0x0A, 0x28, 0x01, 0x00, 0x00, 0x0A,
  0x28, 0x02, 0x00, 0x00, 0x0A, 0x2A
};



Можно выделить следующие этапы выполнения программы:

заполнение заголовка PE-файла
генерация секции ".cli"
генерация секции ".reloc"
генерация секции ".text"



Сообщением об успешной генерации сборки hello.exe будет:

File - hello.exe generated
File: hello.exe generated
File - generated
File: hello.exe
hello.exe generated
File: generated



Метаданные хранятся:

в системных файлах
в архивных файлах
в исполняемых файлах
в пользовательских файлах



Для хранения метаданных используется:

двоичный формат
шестнадцатеричный формат
восьмеричный формат
текстовый формат



Метаданные служат для:

описания объектов, находящихся в сборке .NET
назначения секций, находящихся в сборке .NET
создания классов, находящихся в сборке .NET
описания типов, находящихся в сборке .NET



Расположение метаданных задается:

в начале секции ".text"
в секции ".reloc"
в телах методов
в заголовке CLI


Метаданные и CIL-код практически не зависят от остальных элементов:

формата исполняемого файла
формата системного файла
формата интерпретируемого файла
формата транслируемого файла



Для формата исполняемых файлов .NET верно:

расположение данных внутри секций является более или менее произвольным
расположение секций является более или менее произвольным
исполняемые файлы могут содержать несколько секций
исполняемые файлы могут содержать только одну секцию



Метаданные начинаются с заголовка, называемого:

основанием метаданнных
классом метаданных
корнем метаданных
объектом метаданных



Корень метаданных начинается с 32-разрядной сигнатуры:

0x424A5341
0x424A5342
0x424A5242
0x434A5342



Если каждый байт начальной сигнатуры корня метаданных рассматривать в виде ASCII-кода, то получится строка:

"SJBB"
"JBSB"
"SBJB"
"BSBJ"
"BSJB"



Корень метаданных заканчивается:

8-разрядным целым числом
32-разрядным целым числом
16-разрядным целым числом
64-разрядным целым числом



Основными разработчиками .NET Framework являются:

Bill Evans
Susan Radke-Sproull
Brian Harry
Jason Zander



В заголовке потока метаданных полем с размером этого потока в байтах является:

long Offset;
char Name[x];
long Size;
long Set;



Представляет собой последовательность 128-битных глобальных идентификаторов следующий поток метаданных:

куча двоичных данных
куча GUID'ов
куча пользовательских строк
куча строк



Поток таблицы метаданных имеет следующее имя потока:

"#Blob"
"#GUID"
"#US"
"#~"



Имя "#Blob" имеет следующий поток:

куча строк
куча двоичных данных
куча GUID'ов
таблицы метаданных
куча пользовательских строк



Различные биты какого поля заголовка таблиц метаданных задают размеры индексов, используемых для адресации куч метаданных:

char Valid;
char Valid[8];
char HeapSizes;
unsigned long Rows[7];



В каком поле таблицы членов импортируемых типов специальным образом закодированная информация об импортируемом типе:

short Class;
short Object;
short Name;
short Signature;



К таблицам метаданных можно отнести:

AssemblyRef - 0x23
Assembly - 0x20
Method - 0x06
TypeDef - 0x02
MemberDef - 0x0B
Module - 0x00
MemberRef - 0x0A
TypeRef - 0x01



В качестве примера компонентный подход к разработке программного обеспечения можно привести:

C++
Microsoft Visual Studio .NET
Microsoft Office
C



Взаимодействие компонентов, написанных на разных языках:

может существенно снизить эффективность получаемого кода
не может снизить эффективность получаемого кода
требует от разработчика создания различных интерпретаторов
требует от разработчика дополнительных усилий



Преимущества компонентного подхода перевешивают:

проблемы в создании компонентов
проблемы в интерпретации компонентов
проблемы в организации взаимодействия компонентов
проблемы в компиляции компонентов



Отсутствие удовлетворительной технологии взаимодействия компонентов приводит к следующим негативным явлениям:

для разработки программной системы используется только один язык программирования
программа выглядит как гигантский монолит, из которого трудно выделить отдельные части
появляются чрезмерно универсальные языки программирования



В компонентной системе можно выделить следующие виды взаимодействия компонентов:

системное взаимодействие, когда компоненты запушены на одном компьютере
межпроцессное взаимодействие, при котором компоненты работают в разных процессах
взаимодействие в сети, когда компоненты запущены на разных компьютерах
взаимодействие внутри адресного пространства одного процесса



Организация компонентного программирования на базе библиотек подпрограмм обладает следующими недостатками:

библиотеки подпрограмм плохо подходят для объектно-ориентированных языков
библиотека рассчитана на использование конкретного компоновщика
двоичный код библиотеки жестко привязан к аппаратной платформе



В терминах CORBA информационная магистраль называется:

OBR
ORB
BOR
BRO
ROB



Технология COM поддерживает следующие виды взаимодействия компонентов:

взаимодействие внутри адресного пространства процесса
взаимодействие по сети
виртуальное взаимодействие
межпроцессное взаимодействие



Для открытых исходных текстов верны утверждения:

если компоненты написаны на разных языках, то соединить их вместе не просто
исходные тексты могут распространяться по лицензии с назваием GNU Public License
исходные тексты в отличие от двоичных файлов содержат информацию о типах
открытые компоненты почти всегда имеют так называемые "заразные" лицензии



Компоненты на платформе .NET представляют собой:

секции .NET
сборки .NET
объекты .NET
классы .NET



Какие особенности платформы .NET позволяют среде выполнения автоматически обеспечивать взаимодействие компонентов вне зависимости от того, на каком языке они написаны:

выполнение любой программы управляется средой выполнения CTS
любая программа, работающая в среде .NET, использует общую систему типов CTS
выполнение любой программы управляется средой выполнения CLR
любая программа, работающая в среде .NET, использует общую систему типов CLR



При взаимодействия двух объектов на платформе .NET, объекты Client и Server находятся в разных компонентах, работающих:

в адресном пространстве двух процессов
в адресном пространстве трех процессов
в адресном пространстве разных процессов
в адресном пространстве одного процесса




Надстройка, использующая проецирование для реальной передачи данных - это:

Sockets
RPC
COM
Pipes



Флаг доступа для членов типа Public имеет следующее значение:

0x00000002
0x00000005
0x00000003
0x00000006
0x00000001
0x00000004



Флаг доступа для членов типа, имеющий значение 0x00000002 - это:

FamAndAssem
Family
FamOrAssem
Assembly



Флаг видимости для типов NestedAssembly имеет следующее значение:

0x00000006
0x00000000
0x00000005
0x00000007



В данном примере:

Default Public ReadOnly Property
    Array (ByVal Index As Integer) As Integer
    Get
      Return Arr(Index)
    End Get
  End Property
  Public ReadOnly Property Count() As Integer
    Get
      Return Arr.Length
    End Get
  End Property

для доступа к отсортированному массиву используются свойства:
Count
Array
Public
Get



Основными правилами Common Language Specification являются:

глобальные поля и методы не поддерживаются спецификацией
методы не должны иметь переменного количества параметров
спецификация распространяется только на доступные извне части экспортируемых из библиотеки типов
объекты исключений должны наследовать от System.Exception
упакованные типы-значения, неуправляемые указатели и типизированные ссылки не должны использоваться
регистр букв в идентификаторах не имеет значения



Класс InsertSorted Array:

using VBLib;
public class InsertSortedArray: SortedArray
{
  protected override void Sort()
  {
    for (int i = 0; i < Arr.Length-1; i++)
    {
      int max = i;
      for (int j = i+1; j < Arr.Length; j++)
        if (Arr[j] > Arr[max])
          max = j;
      int tmp = Arr[i];
      Arr[i] = Arr[max];
      Arr[max] = tmp;
    }
  }
  public InsertSortedArray(int[] A): base(A) { }
}

переопределяет абстрактный метод:

Sort()
SortedArray
Arr[i]
Arr[max]



Язык Common Intermediate Language является независимым от аппаратной платформы:

объектно-ориентированным транслятором
объектно-ориентированным интерпретатором
объектно-ориентированным ассемблером
объектно-ориентированным компилятором



Инструкции CIL можно разделить на следующие основные группы:

неверифицируемые инструкции
инструкции общего назначения
инструкции для работы с объектной моделью
инструкции для генерации и обработки исключений



Инструкция call, вызывающая метод, имеет встроенный операнд, задающий:

положение секций
номер переменной
токен метаданных
номер константы



Операнд int64 имеет размер в байтах равный:

4
2
1
8



Операнд none имеет размер в байтах равный:

4
1
0
2



Операнд token имеет размер в байтах равный:

4
8
0
1
2



Какая инструкция загружает на стек вычислений значение первого аргумента метода:

ldarg.0
isinst System.String
arglist
call System.String::Compare



В каком случае будет произведена динамическая проверка типа объекта на стеке вычислений:

/* 22 | 0000803F */ ldc.r4 1.0
/* 28 | (06)0000CD */ call System.String::Compare
/* 75 | (02)00000F */ isinst System.String
/* FE 00 */ arglist



В каком случае на стек вычислений будет загружен специальный описатель массива переменных параметров метода:

/* 28 | (06)0000CD */ call System.String::Compare
/* FE 00 */ arglist
/* 02 */ ldarg.0
/* 22 | 0000803F */ ldc.r4 1.0
/* 75 | (02)00000F */ isinst System.String
/* 1F | 10 */ ldc.i4.s 16



Ограничениями на последовательности инструкций, введеными для упрощение JIT-компилятора являются следующие:

ограничение на системные переходы
ограничение на обратные переходы
ограничение на структуру стека вычислений
ограничение на размер стека вычислений



Если инструкция, следующая за инструкцией br, имеет абсолютный адрес next_addr, то адрес перехода rel_addr вычисляется так:

reladdr = target_addr - next_addr
reladdr := target_addr - next_addr
reladdr := target_addr + next_addr
reladdr = target_addr + next_addr



Какие инструкции языка CIL, служат для организации вычислений:

арифметические инструкции
инструкции для удаления значений
инструкции для загрузки и сохранения значений
инструкции для организации передачи управления



Инструкция ldnull имеет следующий код:

0x22
0x23
0x20
0x14
0x15
0x21



Для обмена значениями между стеком вычислений и памятью предназначены следующие инструкции:

инструкции для загрузки и сохранения значений
инструкции для организации буфера
системные инструкции
арифметические инструкции



Сколько существует вариантов инструкций для работы с переменными и параметрами:

0
2
3
1



Код 0xDF соответствует инструкции:

stind.r4
stind.i
stind.r8
stind.i1



Инструкция pop имеет следующий код:

0x25
0x10
0x26
0x11
0x57
0x4E



Среди базовых бинарных операций сложением является инструкция:

add
xor
mul
div.un



Арифметические инструкции можно разделить на следующие категории:

унарные операции
инструкции преобразования значений
бинарные операции
инструкция ckfinite



Какие инструкции выполняют унарные арифмитические операции:

ceq
not
clt
neg
add.ovf
shr



Какая инструкция интерпретирует целое значение, лежащее на вершине стека, как не имеющее знака и преобразует его к вещественному типу:

conv.ovf.i
conv.r8
conv.i2
conv.r.un


Инструкция ckfinite имеет код:
0x65
0xC3
0x5E
0xD



Безусловными инструкциями являются:

bgt.un.s
br.
brtrue
brfalse.s
ble
br.s



Сколько существует инструкций безусловного перехода?

0
3
1
2



Инструкции для организации передачи управления можно разделить на следующие категории:

инструкция множественного выбора switch
инструкции безусловного перехода
инструкция вызова метода call
инструкции условного перехода
инструкция возврата из метода ret



Инструкция beq имеет следующий код:

0x3C
0x3E
0x42
0x3D
0x3F
0x3B



Какие инструкции потребляют со стека вычислений один операнд и, в зависимости от его значения, осуществляют или не осуществляют переход по указанному во встроенном операнде относительному адресу:

базовые инструкции условного перехода
дополнительные короткие инструкции безусловного перехода
дополнительные инструкции условного перехода
дополнительные длинные инструкции условного перехода



Диаграмма стека для базовых инструкций условного перехода выглядит следующим образом:

... , value1 , value2 , value3 ,value4 -> ...
... , value1 , value2 -> ...
... , value1 , value2 ,value3 -> ...
... , value -> ...



Какая инструкция имеет следующее описание: clt.un; brtrue.s?

0x36
blt.un.s
bge.un.s
bgt.un.s


Какая инструкция имеет следующее описание: ceq; brtrue.s?
0x2E
0x32
0x31
0x2F



Какая инструкция имеет код 0x42?

ret
call
switch
bge.un.s
bge.s
ble.un



Осуществляет возврат из метода следующая инструкция:

Ret
0x28
0x2A
0x42
switch
call


Работа с критическими секциями сводится к следующим основным функциям:

InterlockedCriticalSection
LeaveCriticalSection
EnterlockedCriticalSection
EnterCriticalSection



В Windows предусмотрен специальный тип данных, предназначенный для реализации критических секций, который называет:

ATTENTION_SECTION
CRITICAL_SECTION
DRIFT_SECTION
STOP_SECTION



Какая функция позволяет при необходимости не входить в секцию, если она занята:

EnterCriticalSection
InitializeCriticalSectionAndSpinCount
TryEnterCriticalSection
SetCriticalSectionSpinCount
InitializeCriticalSection



С точки зрения операционной системы объекты ядра, поддерживающие интерфейс синхронизируемых объектов, могут находиться в следующих состояниях:

stop
nonsignaled
nonstop
signaled



Функция WaitForSingleObject осуществляет ожидание:

четырех объектов
одного объекта
трех объектов
двух объектов
пяти объектов



Функции проверяют состояние ожидаемого объекта или ожидаемых объектов и продолжают выполнение, только если:

объекты вызваны
объекты свободны
объекты в ожидании
объекты заняты



Некоторый объект, который может находиться в одном из двух состояний: занятом или свободном - это:

мьютекс
семафор
событие



Для захвата мьютекса используется функция:

CreateMutex
GetMutex
ReleaseMutex
WaitFor...



Для ограничения числа потоков, имеющих одновременный доступ к какому-либо ресурсу предназначены:

семафоры
события
мьютексы
указатели



Какие объекты предназначены для выполнения операций через заданные промежутки времени или в заданное время:

специальные таймеры
ожидающие таймеры
системные таймеры


Внимание !
Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier!

Процесс автоматического доказательства того, что этот код не разрушает память - это:

верификация кода
трансляция кода
интерпретация кода
компиляция кода



Алгоритмы верификации являются:

произвольными алгоритмами
емкими алгоритмами
интерпретируемыми алгоритмами
метавычислительными алгоритмами



Код программ не разрушает память, если эти программы, будучи запущенными в одном адресном пространстве:

корректно зависимы друг от друга
корректно изолированы друг от друга
корректно объединены друг с другом
корректно распараллелены друг с другом



Алгоритмы верификации в общем случае имеют следующие проблемы:

потенциальная нетерминируемость
потенциальная детерминируемость
сложная дискретизация
экспоненциальная сложность



Сколько известно подходов для алгоритмов верификации кода, позволяющие снизить их сложность и добиться терминируемости:

1
4
2
0
3
5



Верификаторы, предназначенные для выявления определенного класса ошибок в программах, используются при разработке программ на этапе:

тестирования
кодирования
разработки
отладки



Сколько существует подходов для ограничения задачи для верификаторов?

3
1
5
2



Верификаторы, способные доказать, что программа, принадлежащая некоторому классу программ, не разрушает память, служат:

для обеспечения безопасности
для обеспечения дискретизации
для подготовки отладки
для обеспечения терминируемости



Верификатор кода .NET может доказать, что сборки, генерируемые компиляторами C#, J# и Visual Basic .NET:

не разрушают буфер
разрушают память
не разрушают память
разрушают буфер



Верификатор .NET предназначен:

для проверки интерпретируемости кода
для процесса отладки
для поиска ошибок в программах
для обеспечения безопасности системы



Отметьте верные утверждения, касающиеся разрушающего память кода:

всем перечисленным может воспользоваться злоумышленник
любой CIL-код можно непосредственно компилировать с помощью ILASM
существуют компиляторы, которые в общем случае могут порождать такой код
в языке C# предусмотрены unsafe-блоки и unsafe-методы, внутри которых может находиться такой код



Алгоритм верификации представляет собой вариант:

абстрактного JIT-компилятора
абстрактного компилятора CIL-кода
абстрактного транслятора CIL-кода
абстрактного интерпретатора CIL-кода



Код, для которого верификатор доказал, что он не разрушает память:

транслируемый код
верифицированный код
верифицируемый код
компилируемый код



Код, для которого верификатор может доказать, что он не разрушает память:

верифицируемый код
верифицированный код
интерпретируемый код
транслируемый код



Данные о количестве слотов на стеке и типы значений, лежащих в этих слотах - это:

буфер стека
конфигурация стека
состояние стека
объем стека



Правилами совместимости типов S и T будут следующие:

S[] := T[], если S := T и размерности массивов совпадаю
S := T, если S и T - интерфейсы, и реализация T требует реализации S
S := null, если S - объектный тип или интерфейс
S& := T&, если S := T



Алгоритм верификации работает со следующими данным:

изменяемые данные
пользовательские данные
произвольные данные
неизменяемые данные



Генерация новой сборки .NET осуществляется:

интерпретаторами
трансляторами
RAD-средствами
компиляторами



В составе .NET Framework SDK поставляются следующие библиотеки:

Reflection Extension API
AbsIL SDK
Reflection API
Metadata Unmanaged API



При использовании Metadata Unmanaged API метаинструмент работает:

со сборкой в памяти
с образом сборки в памяти
с отпечатком образа сборки в памяти
со сборкой в буфере



Взаимодействие с Metadata Unmanaged API осуществляется через набор:

стандартных интерфейсов
.NET-интерфейсов
API-интерфейсов
COM-интерфейсов



Для того чтобы использовать Metadata Unmanaged API из программы, написанной на Visual C++, необходимо включить в программу следующие строки:


#include <corhlpr.h>
#pragma comment(lib, "format.lib")

#include <corhlpr.h>

#pragma comment(lib, "format.lib")

#include; #pragma comment(lib, "format.lib")



С помощью данного кода:

CoInitialize(NULL);
IMetaDataDispenser *dispenser;
HRESULT h = CoCreateInstance(
 CLSID_CorMetaDataDispenser,
 NULL,
 CLSCTX_INPROC_SERVER,
 IID_IMetaDataDispenserEx,
 (void **)&dispenser
 );
if (h)
 printf("Error");

осуществляется:
начало работы с .NET
получение указателя на интерфейс IMetadataDispenserEx:
начало работы с Metadata Unmanaged API
инициализации системы COM



Генерация метаданных осуществляется через методы интерфейса IMetadataEmit, которые можно условно разделить на следующие группы:

методы DefineXXX
методы FindXXX
методы EnumXXX
методы SetXXX
методы GetXXX



При завершении работы с Metadata Unmanaged API необходимо освободить указатели на полученные интерфейсы следующим образом:

dispenser->OpenScope();
mdimp->Release();

mdimp->OpenScope();
dispenser->"test.exe"

mdimp->Release();
dispenser->Release();



Класс Module, позволяет получить набор экземпляров класса:

Module
ConstructorInfo
Type
MethodInfo
Assembly
FieldInfo



Библиотека рефлексии содержит классы для работы с метаданными на высоком уровне, которые располагаются в пространствах имен:

System.Reflection.Emit
System.Reflection.API
System.Reflection
System.Reflection.Stat



Метаинструмент, использующий библиотеку рефлексии, получает доступ к метаданным сборки через экземпляр класса:

Module
Assembly
MethodInfo
ConstructorInfo



Информацию о любом элементе метаданных можно прочитать из свойств соответствующего ему:

метода рефлексии
метаинструмента рефлексии
инструмента рефлексии
объекта рефлексии



Если нас интересует текущая работающая сборка, то экземпляр класса Assembly можно получить так:

Assembly assembly = Assembly.GetAssembly(typeof(int))
Assembly assembly = Assembly.LoadFrom("test.exe")
Assembly assembly = Assembly.GetExecutingAssembly()



Библиотека рефлексии спроектирована таким образом, что создание объектов рефлексии, соответствующих элементам метаданных, осуществляется:

путем вызова методов других методов рефлексии
путем вызова методов других объектов рефлексии
путем вызова объектов других объектов рефлексии
путем вызова объектов других методов рефлексии



Кроме чтения метаданных, библиотека рефлексии позволяет:

изменять значения полей
вызывать методы типов, входящих в обрабатываемую сборку
создавать экземпляры типов, входящих в обрабатываемую сборку
читать значения полей



Для генерации метаданных и CIL-кода в библиотеке рефлексии предназначены классы:

ILGenerator
пространтсва имен System.Reflection.API
Generator
пространтсва имен System.Reflection.Emit



Библиотеки Reflection API и Metadata Unmanaged API не имеет следующих возможностей:

чтение CIL-кода
генерация метаданных
генерация CIL-кода
чтение метаданных



Прием программирования, заключающийся в том, что фрагменты кода порождаются и запускаются непосредственно во время выполнения программы - это:

динамическая генерация кода
динамическая фрагментация кода
динамическая интерпретация кода
динамическая трансляция кода



Целью динамической генерации кода является использование информации, доступной только во время выполнения программы, для:

повышения качества компиляции исполняемого кода
повышения качества исполняемого кода
повышения динамичночти исполняемого кода
повышения качетсва верификации исполняемого кода



Применение динамической генерации оправдано, если:

запуск этого фрагмента осуществляется многократно
выполнение фрагмента не связано с затратами времени процессора
запуск этого фрагмента осуществляется однократно
выполнение фрагмента связано с существенными затратами времени процессора



В .NET доступны следующие способы организации динамической генерации кода:

порождение программы на языке C++ и вызов компилятора C#
порождение программы на языке C и вызов компилятора C
непосредственное порождение метаданных и CIL-кода
порождение программы на языке C# и вызов компилятора C#



При динамической генерации кода тип процессора - эта та часть информации, которая становится известной:

только во время выполнения программы
после выполнения программы
до выполнения программы
до или во время выполнения программы



Программно вычисление численного интегрирования функции можно выполнять следующими способами:

путем динамической генерации программы на языке C#
путем динамической генерации метаданных и CIL-кода
без динамической генерации кода



Имея какой класс мы можем записать обобщенный алгоритм интегрирования методом прямоугольников:

Math
Abstract
Func
Function



В .NET доступны следующие способы организации динамической генерации кода:

порождение программы на языке C++ и вызов компилятора C#
порождение программы на языке C и вызов компилятора C
непосредственное порождение метаданных и CIL-кода
порождение программы на языке C# и вызов компилятора C#



Идеальным вариантом представления функции, которое бы не зависело от конкретного способа вычисления значения функции является:

вещественный класс Function
реальный класс Function
псевдокласс Function
абстрактный класс Function



Для проверки работоспособности алгоритма следующего алгоритма:

static double Integrate(Function f, double a, double b, int n)
{
  double h = (b-a)/n, sum = 0.0;
  for (int i = 0; i < n; i++)
    sum += h*f.Eval((i+0.5)*h);
  return sum;
}

можно объявить тестовый класс TestFunction, реализующий вычисление функции f(x) = x * sin(x) следующим образом:

public class TestFunction: Function
{
 public override double Eval(double x)
  {
  }
}


public class TestFunction: Function
{
 public override double Eval
  {
     return x * Math.Sin(x);
  }
}


public class TestFunction: Function
{
 public override double Eval(double x)
  {
     return x * Math.Sin;
  }
}


public class TestFunction: Function
{
 public override double Eval(double x)
  {
     return x * Math.Sin(x);
  }
}



В данном примере:

public abstract class Expression
{
 public abstract string GenerateCS();
 public abstract void GenerateCIL(ILGenerator il);
 public abstract double Evaluate(double x);
}

метод GenerateCS:

транслирует выражение в CIL-код
выполняет непосредственное вычисление значения выражения
транслирует выражение в фрагмент программы на C#



В данном примере:

public abstract class Expression
{
 public abstract string GenerateCS();
 public abstract void GenerateCIL(ILGenerator il);
 public abstract double Evaluate(double x);
}

метод Evaluate:
выполняет непосредственное вычисление значения выражения
транслирует выражение в фрагмент программы на C#
транслирует выражение в CIL-код



В данном примере:

public abstract class Expression
{
 public abstract string GenerateCS();
 public abstract void GenerateCIL(ILGenerator il);
 public abstract double Evaluate(double x);
}

метод GenerateCIL:

выполняет непосредственное вычисление значения выражения
транслирует выражение в CIL-код
транслирует выражение в фрагмент программы на C#



Классы, отвечающие за компиляцию исходного кода, относятся:

к пространству имен System.CodeDom.Compiler
к пространству имен System.Compiler
к пространству имен CodeDom.Compiler
к пространству имен System.CodeDom.Compiler.Text



Порождение текста C#-программы и компиляция этой программы с помощью компилятора C#, доступного через библиотеку классов .NET является:

самым сложным способом автоматической генерации кода
самым сложным способом динамической генерации кода
самым простым способом автоматической генерации кода
самым простым способом динамической генерации кода



При трансляции выражений в CIL метод начинается:

с создания заготовки для будущей динамической сборки
с создания заготовки для будущей сборки
с создания динамической сборки



Вызывая метод DefineDynamicAssembly домена приложений мы можем получить:

метод класса AssemblyBuilder
класс Assembly
объект класса AssemblyBuilder
класс AssemblyBuilder



Компилятор C# создает конструкторы:

без параметров по умолчанию
с параметрами по умолчанию
с специальными параметрами
без специальных параметров



При каком способе вычисления значения функции на динамическую сборку будет затрачено 547 мс, на компьютере с процессором Intel Pentium 4 с тактовой частотой 3000 МГц и 1 Гб оперативной памяти:

интерпретация дерева выражения
предварительная компиляция С#
предварительная компиляция в CIL



Результаты измерений эффективности трех способов вычисления выражений, проведенных на компьютере с процессором Intel Pentium 4 с тактовой частотой 3000 МГц и 1 Гб оперативной памяти показывают, что динамическая генерация кода может:

на два порядка уменьшить время работы программы
на четыре порядка увеличить время работы программы
на три порядка уменьшить время работы программы
на пять порядков увеличить время работы программы



При генерации динамической сборки через классы пространства имен System.Reflection.Emit конструкторы:

добавляются автоматически
добавляются статически
автоматически не добавляются



Правило Expr ::= local x assign Expr можно описать так:

пустой список фактических параметров метода
операция присваивания переменной x значения выражения
параметр метода с именем x
унарный минус



Определим набор функций, отображающих различные деревья абстрактного синтаксиса в соответствующие им последовательности инструкций CIL, можно считать, что каждая функция принимает в качестве параметра:

дерево реального синтаксиса
абстрактный синтаксис
дерево абстрактного синтаксиса
реальный синтаксис



Линейными участками можно называть участки кода:

не содержащие развилки и содержащие защищенные блоки
содержащие развилки и не содержащие защищенных блоков
не содержащие развилок и защищенных блоков
содержащие развилки и защищенные блоки



Для peephole-оптимизации CIL-кода вместо:

stloc(starg) x
ldloc(Ldarg) х

можно использовать:

idc.i4.0
stloc(starg) x

pop

ldloc(ldarg) x
dup

dup
stloc(starg) x

pop
pop



Использование каких структурных конструкций позволяет существенно упростить генерацию развилок:

множественный выбор
последовательность
цикл с постусловием
выбор
цикл с предусловием



Алгоритм peephole-оптимизации использует понятие:

пакета
блока
фрейма
секции



Разделить фаз генерации и оптимизации кода позволяет

существенно упростить генератор
сделать генератор независимым от оптимизатора
повторно использовать генератор с другими оптимизаторами
повторно использовать оптимизатор с другими генераторами



Функций какого набора транслируют деревья абстрактного синтаксиса в последовательности инструкций:

StatementAbs
AbsStatementTree
GenStatementTree
GenStatement




При записи абстрактного синтаксиса управляющих конструкций используется нетерминал LogExpr для представления:

описания условий
определения последовательностей
циклов
условий выбора



Следующее правило:

LogExpr ::= LogExpr
 ComparisonOp LogExpr

можно описать так:

применение логического ИЛИ
больше
сравнение двух выражений
равенство



Правило Statement ::= Statement StatementList можно описать так:

цикл с постусловием
выбор с двумя альтернативами
непустая последовательность предложений
цикл с предусловием



Для обнаружения избыточных инструкций сохранения значений выполняется анализ использования переменной, состоящий из следующих фаз:

выполнение графа использования переменной
анализ графа использования переменной
построение графа использования переменной.



Функций какого набора транслируют деревья абстрактного синтаксиса в последовательности инструкций:

GenStatementTree
GenStatement
StatementAbs
AbsStatementTree



При удалении псевдонима Y переменной X осуществляются следующие действия:

все использования переменной Y заменяются использованиями переменной X
инструкция инициализации переменной Y заменяется инструкцией pop
инструкция инициализации переменной Y заменяется инструкцией dup



При воспроизведении константы C, являющейся значением переменной Y осуществляются следующие действия:

инструкция инициализации переменной Y заменяется инструкцией pop
инструкция инициализации переменной Y заменяется инструкцией dup
инструкции ldloc(ldarg) Y заменяются инструкциями ldr C
инструкции ldloc(ldarg) Y заменяются инструкциями ldc C



Очень сильно зависит от того, какая вычислительная система и какие аспекты работы этой системы рассматриваются с точки зрения многозадачности:

конкретная реализция языка программирования
конкретная реализация многозадачности
конкретная реализция среды программирования
конкретная реализция операционной системы



Для современных операционных систем и для различных систем программирования в современном мире поддержка разработки и реализация:

интеграции стала необходимой
многозадачности стала необходимой
изоляции стала необходимой



Способом реализации многозадачности могут быть:

использование механизмов передачи сообщений
использование асинхронных операций ввода-вывода
обмен данными через область совместно доступной памяти



Одновременное выполнение нескольких задач на одном или нескольких процессорах:

программирование
мультипроцессирование
процессирование
мультипрограммирование



Использование нескольких процессоров для одновременного выполнения задач - это:

программирование
процессирование
мультипрограммирование
мультипроцессирование



В современных компьютерах одновременно сосуществует несколько различных реализаций мультипроцессирования, но практически всегда применяются следующие функционально различные устройства:

видеосистема
интеллектуальные периферийные устройства
контроллеры прямого доступа к памяти
центральный процессор



Для каких систем критической становится среда передачи данных:

MPP
SMP
NUMA
cc-NUMA



В каких компьютерах несколько процессоров подключены к общей оперативной памяти и имеют к ней равноправный и конкурентный доступ:

MPP системам
NUMA и cc-NUMA архитектуры
SMP машины



В случае невытесняющей многозадачности решение о переключении принимает:

следующая после выполняемой в данный момент задачи
операционная система
выполняемая в данный момент задача
контроллер домена



Для cc-NUMA архитектуры верно:

формально на ней могут работать операционные системы, созданные для SMP систем
каждый процессорный узел имеет некоторый объем оперативной памяти
оперативная память является общей и разделяемой между всеми процессорами
на аппаратном уровне решены вопросы когерентности кэш-памяти различных процессоров



На многопроцессорных системах при реальной возможности распараллеливания задач по разным процессорам, обычно используют механизм разделения времени:

на произвольном процессоре
на одном из доступных процессоров
на двух параллельных процессорах
на каждом из доступных процессоров



Большинство современных операционных систем используют комбинированные планировщики, одновременно применяющие:

квантование с переменной продолжительностью кванта
абсолютные приоритеты
локальные приоритеты
относительные приоритеты



Для процесса верны следующие утверждения:

не подлежит планированию
не является потребителем процессорного времени
подлежит планированию
является потребителем процессорного времени



Типичными причинами коррекции приоритета являются:

очистка процессора
продолжительное ожидание в очереди
запуск задачи
частый вызов операций ввода-вывода



Дескриптор должен содержать:

приоритет
переменные окружения
величину кванта
права доступа, назначенные потоку



Термин "fiber" может переводиться так:

"нить"
"волокно"
"секция"
"элемент"



Фактически для волокон реализуется (в операционной системы Windows):

невытесняющая многозадачность средствами операционной системы
вытесняющая многозадачность средствами приложения
невытесняющая многозадачность средствами приложения
вытесняющая многозадачность средствами операционной системыя



В Windows управление волокнами возложено на:

приложения пользователя
потоки
переменные окружения
сетевые приложения



В современных полновесных реализациях Windows планировщик ядра выделяет процессорное время:

секциям
блокам
потокам
переменным окружения



В Windows определен следующий список событий, которые приводят к перепланированию потоков:

выделенный потоку квант исчерпан
изменена привязка к процессору
изменен приоритет потока
создание и завершение потока
поток перешел в состояние ожидания
поток вышел из состояния ожидания



При выборе потока для выполнения учитываются приоритеты потоков (абсолютные приоритеты) - система начинает выполнять:

код потока с наименьшим приоритетом из числа готовящихся к исполнению
код потока с наибольшим приоритетом из числа готовящихся к исполнению
код потока с наименьшим приоритетом из числа готовых к исполнению
код потока с наибольшим приоритетом из числа готовых к исполнению



При переходе из состояния "ожидание" в "готовность": если ожидание было долгим, то стек потока может быть выгружен:

из оперативной памяти
из буфера системы
из системной памяти
из операционной системы



Диспетчер памяти Windows при выделении памяти для запускаемого процесса старается учитывать доступность памяти для назначенного процессора в случае:

MPP системы
NUMA системы
SMP системы



Процессор, на котором запускается приложение в первый раз:

"первичный"
"идеальный"
"экспериментальный"
"центральный"



Процесс выбора потока для выполнения усложняется в случае SMP систем, когда помимо приоритета готового к исполнению потока учитывается:

на каком процессоре ранее выполнялся код данного потока
на каком процессоре ранее выполнялся код предыдущего потока
на каком процессоре может выполнялся код данного потока
на каком процессоре выполнятся код данного потока



Планировщик Windows динамически изменяет:

длительность квантов
приоритеты, назначаемые потокам
задачи выполняемые потоками



Если на одном из процессоров в многопроцессорной системе работает поток с меньшим приоритетом, то последний вытесняется:

и заменяется новым потоком
и образ памяти разрушается
и стек потока обнуляется
и процессор начинает простаивать



Квантование потоков осуществляется:

по тикам системного таймера
по тикам системного времени
по тикам сетевого таймера
по тикам встроенного бипера



Фиксированная длительность короткого кванта со значением 1 равна:

6
36
12
18



Какой параметр реестра предназначен для управления квантованием:

HKLM\SYSTEM\CurrentControlSet\PriorityControl\Win32PrioritySeparation
HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\Win32PrioritySeparation
HKLM\SYSTEM\Control\PriorityControl\ Win32PrioritySeparation
HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\



Какие приоритеты соответствуют динамическим уровням приоритетов:

приоритеты с 16 по 31
приоритет 0
приоритеты с 1 по 15
приоритеты с 32 по 41



Сколько уровней приоритетов выделяется в Windows?

32
12
42
22



Планировщик операционной системы может корректировать уровень приоритета в случае пробуждении GUI потоков:

на 1 - 8 уровней
на 2 уровня
на 1 уровень
на 5 уровней



Наиболее типичным примером относительно универсальных средств взаимодействия с устройствами являются средства:

асинхронного ввода-вывода
параллельного ввода-вывода
синхронного ввода-вывода



Когда процесс запускается, операционная система в нем самостоятельно создает:

вторичный поток, начинающий исполнение кода этого процесса
первичный поток, начинающий исполнение кода следующего процесса
первичный поток, начинающий исполнение кода этого процесса
вторичный поток, начинающий исполнение кода предыдущего процесса



Используемые в операционной системе средства реализации многозадачности можно разделить на следующие группы:

средства управления потоками и волокнами
взаимодействие потоков в рамках разных процессов
взаимодействие между процессами разных компьютеров
взаимодействие с устройствами
взаимодействие потоков в рамках одного процесса
взаимодействие между процессами одного компьютера



Гибрид средств управления потоками и асинхронного ввода-вывода в Windows называется:

"порт окончания ввода-вывода"
"порт исполнения ввода-вывода"
"порт завершения ввода-вывода"
"порт ожидания ввода-вывода"



Потоки, работающие в рамках одного процесса, имеют возможность взаимодействовать друг с другом:

используя общее пространство процесса
используя общее адресное пространство потоков
используя общее адресное пространство
используя общее адресное пространство процесса



Взаимодействие потоков, работающие в рамках одного процесса может:

приводить к конфликтам произвольного доступа потока к общим данным процесса
приводить к конфликтам одновременного доступа
требовать средств изоляции некоторых данных одного потока от данных другого
требовать средств изоляции некоторых данных одного потока от общих данных



При взаимодействие между процессами одного компьютера диспетчер памяти операционной системы должен предусмотреть средства организации:

разделяемых между процессами данных
разделяемой между процессами памяти
разделяемой между потоками памяти
разделяемых потоков



В общем случае память разных компьютеров можно рассматривать как:

интегрированную друг с друга
изолированную друг от друга
отображаемую друг в друга
общее адресное пространство



Многие операционные системы предоставляют дополнительные средства межпроцессного взаимодействия, многие из них являются:

надстройками над средствами работы с файловыми системами
надстройками над средствами работы с данными
надстройками над средствами работы с разделяемой памятью
надстройками над средствами работы с потоками



В Windows для реализации асинхронного ввода-вывода предусмотрены функции типа:

WriteFile
ReadFile
WriteFileEx
ReadFileEx



Обычные операции ввода-вывода происходят:

в асинхронном режиме
в произвольном режиме
в параллельном режиме
в синхронном режиме



В Windows для реализации асинхронного ввода-вывода предусмотрена следующая специальня структура:

OVERLAPPED
APPED
OVERLAPPEDD
OVERLAPPE



Специальная структура OVERLAPPED используется для:

взаимодействия с последовательной операцией
взаимодействия с асинхронной операцией
взаимодействия с параллельной операцией
взаимодействия с синхронной операцией



Выяснить состояние асинхронной операции, дождаться ее завершения или отменить ее, не дожидаясь завершения можно с помощью следующего набора функций:

ExitFile, OpStop, OperationComplete
ReadFile, WriteFile, ReadFileEx, WriteFileEx
CancelIo, GetOverlappedResult, HasOverlappedIoCompleted



Какой способ может обеспечить самую быструю реакцию на завершение операции ввода-вывода, но ценой более высокой загрузки процессора:

выполнение синхронных операций с ожиданием на объектах ядра
выполнение асинхронных операций с опросом состояния
выполнение асинхронных операций с ожиданием на объектах ядра
выполнение синхронных операций с опросом состояния



В данном случае:

ov.Offset = 12345;
ov.hEvent = CreateEvent((LPSECURITY_ATTRIBUTES)NULL, TRUE, FALSE, 0);

if (
  WriteFile( fh, buffer, sizeof(buffer), &dwWritten, &ov ) ||
  GetLastError() == ERROR_IO_PENDING
) {
  GetOverlappedResult( fh, &ov, &dwWritten, TRUE );
} else {
}

функция GetOverlappedResult проверяет состояние операции и, если она еще не завершена, вызывает функцию:

ForSingleObject
WaitForSingle
WaitForSingleObjectResult
WaitForSingleObject



В данном случае:

ov.Offset = 12345;
if (
  WriteFile( fh, buffer, sizeof(buffer), &dwWritten, &ov ) ||
  GetLastError() == ERROR_IO_PENDING
) {
  while (!GetOverlappedResult(fh, &ov, &dwWritten, FALSE)){}
} else {
}

Функция GetOverlappedResult проверяет:

состояние операции ввода-вывода и возвращает признак ее завершения
состояние операции ввода-вывода и возвращает признак ее исполнения
состояние операции вывода и возвращает признак ее завершения
состояние операции ввода и возвращает признак ее завершения



Для реализации асинхронного ввода-вывода в операционной системе предусмотрен специальный механизм, основанный на:

асинхронных вызовах процедур
APC
Аsynchronous Procedure Call



Для реализации APC операционная система ведет:

списки процессов
списки процедур
списки потоков
списки нитей



С помощью какой функции можно ставить в APC очередь запросы для вызова собственных функций:

CloseHandle
WaitForSingleObjectEx
DuplicateHandle
OpenEvent
QueueUserAPC
CreateFile



Для перевода потока в состояние ожидания оповещения Win32 API предусматривает специальный набор функций:

SleepEx, WaitForSingleObjectEx
CloseHandle, DuplicateHandle
ReadFile, WriteFile, ReadFileEx, WriteFileEx
CreateFile, CreateProcess, CreateEvent



Alertable waiting как состояние потока - это:

ожиданиe оповещения
ожидание информирования
ожидание ввода-вывода
ожидание объявления



Обычно APC используются самой системой для реализации:

асинхронного вывода
синхронного ввода-вывода
синхронного ввода
асинхронного ввода-вывода



Для того, чтобы процесс или поток мог ссылаться на объекты ядра, созданные другим процессом или потоком предусмотрены следующие механизмы:

объекты могут быть унаследованы дочерним процессом при его создании
процесс-владелец объекта может передать его описатель любому другому процессу
объект может иметь собственное уникальное имя



Объектами ядра являются:

потоки
почтовые ящики
файлы
процессы
события



Дескриптор безопасности (Security Descriptor) содержит информацию:

о владельце объекта
первичной группе пользователей
один список управления доступом
два списка управления доступом



Какая функция превращает псевдоописатель процесса в настоящий описатель, действующий только в текущем процессе:

HANDLE hrealThread;
DuplicateHandle(
  OpenProcess, GetCurrentProcess(),
  OpenProcess, &hrealThread,
  DUPLICATE_SAME_ACCESS, FALSE, 0
);


HANDLE hrealThread;
DuplicateHandle(
  GetPriorityClass, GetCurrentProcess(),
  SetPriorityClass, &hrealThread,
  DUPLICATE_SAME_ACCESS, FALSE, 0
);


HANDLE hrealThread;
DuplicateHandle(
  OpenThread, GetCurrentProcess(),
  OpenThread, &hrealThread,
  DUPLICATE_SAME_ACCESS, FALSE, 0
);

HANDLE hrealThread;
DuplicateHandle(
  GetCurrentProcess(), GetCurrentProcess(),
  GetCurrentProcess(), &hrealThread,
  DUPLICATE_SAME_ACCESS, FALSE, 0
);



В Windows для идентификации процессов и потоков используют их:

сертификаты
имена
идентификаторы
описатели



С помощью каких функций можно узнать идентификаторы текущего процесса и потока:

GetCurrentThreadId, GetCurrentProcessId
OpenProcess, OpenThread
GetPriorityClass, SetPriorityClass
GetProcessId, GetThreadId



В случае Visual Studio многопоточные версии библиотек выбираются ключами:

/MTd
/MD
/MLd
/MDd
/ML
/MT



Какие функции Win32 API предоставляет для изменения класса приоритета для процесса:

GetThreadPriority, SetThreadPriority
GetProcessPriorityBoost, SetProcessPriorityBoost
GetPriorityClass, SetPriorityClass
GetThreadPriorityBoost, SetThreadPriorityBoost



Windows предоставляет следующие способы измерения интервалов:

"мультимедийный" таймер
высокоточный таймер
таймер высокого разрешения
таймер низкого разрешения



Если стандартное разрешение мультимедийного таймера на данном компьютере хуже 5-10 мс, то у функции timeBeginPeriod есть побочный эффект - улучшение разрешения повлияет на работу:

плнировщика всех потоков
планировщика отдельного процесса
планировщика отдельного потока
планировщика во всей системе



Планировать исполнение исполнение волокон можно с помощью:

SwitchToFiber
DeleteFiber
CreateFiber
ConvertFiberToThread



Разработка серверов, обслуживающих асинхронно поступающие запросы является:

одной из типовых задач
одной из специальных задач
нетипичной задачей
одной из легких задач



Реализация однопоточного сервера для обслуживания асинхронно поступающие запросы нецелесообразна по следующим причинам:

запросы могут приходить в то время, пока сервер простаивает
запросы могут приходить в то время, пока сервер занят выполнением предыдущего
такой сервер не сможет эффективно задействовать многопроцессорную систему
такой сервер не сможет эффективно задействовать операционную систему


Механизм проецирования файлов является базовым средством для передачи данных:

между адресными пространствами потоков
между адресными пространствами процедур
между адресными пространствами секций
между адресными пространствами процессов



Для явного сброса данных из оперативной памяти в файл можно использовать следующую функцию:

VirtualAlloc
FlushViewOfFile
UnmapViewOfFile
CreateProcess



Проецирование файлов используется:

для создания адресной памяти
для создания общей памяти
для создания разделяемой памяти
для создания изолированной памяти



Дан массив инструкций P размера N и массив предложений обработки исключений EH размера M, какое поле является количество инструкций, входящих в защищенную область:

TryLength
TryOffset
ClassToken
FilterOffset


Вы можете обратится к нам напрямую, через:

skype По Skype: molodoyberkut
telegram По Telegram: @MolodoyBerkut
icq По ICQ: 657089516

Или через форму обратной связи на нашем сайте
Пока сочиняется...
4.png