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

Количество вопросов - 537

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

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

Дуги графа потока управления изображают:

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

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

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

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

Для .NET верно:

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

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

Инструкция newarr выделяет память под одномерный массив, индексируемый:

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

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

Инструкция initobj потребляет со стека вычислений адрес значения:

Диаграмма стека для инструкций ldelem выглядит так:

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

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

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

Современные операционные системы, как правило, поддерживают:

Администратор системы может в некоторой степени изменить поведение системы при:

Общая система типов не допускает присваивание ячейке несовместимого с ее типом:

Когда определяется какой-либо делегат функции, для него будут определены методы:

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

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

В случае платформ, не поддерживающих многопоточные приложения, PAL должен:

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

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

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

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

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

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

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

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

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

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

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

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

Тип bool будет иметь следующее имя в .NET Framework Class Library:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В каком поле заголовка CLI указываются RVA и размер в байтах ресурсов сборки:

Программа pegen написана на языке:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Инструкция conv.ovf.u8.un имеет следующий код:

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

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

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

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

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

Какая инструкция загружает значение поля объекта:

Какая инстукция создает на вершине стека объект-строку:

Диаграмма стека для инструкции newarr:

Диаграмма стека для инструкций stelem:

Какая инструкция имеет следующую диаграмму стека: ..., obj ->..., ptr?

Какая инструкция применяется для работы с библиотекой рефлексии:

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

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

Инструкция refanyval имеет код:

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

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

Встроенный операнд int32 имеют следующие инструкции:

Диаграмма стека для инструкции endfinally:

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

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

В составе .NET Framework SDK поставляется ассемблер:

Идентификаторы и метки чаще всего представляют последовательности символов, начинающиеся с латинской буквы (или с символов "_", "$", "@" и "?"), за которой следуют:

Несколько идентификаторов могут будут объединены в один идентификатор в следующем примере:

В каком примере происходит объявление неэкспортируемого интерфейса:

Объявление конструктора с двумя параметрами происходит в следующем случае:

В следующем примере:
.class public SampleClass{ .method public static void Demo() {  .entrypoint  .maxstack 3  ldc.r8 	  0.0  ldc.r8 	  0.0  newobj 	  void Point::.ctor(float64,float64)  ldc.r8 	  1.0  ldc.r8 	  1.0  newobj 	  void Point::.ctor(float64,float64)  call 		  float64 Point::Distance(valuetype Point, valuetype Point)  call 	  void [mscorlib]System.Console::WriteLine (float64)  ret   }}
метод Demo будет вычислять расстояние между точками:

Код метода в сборке .NET представляет собой:

При использовании метода find для поиска элемента в массиве, в случае если элемент найден возвращается:

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

Номер дуги должен задавать ее:

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

Блок обработки исключений:

Обработка исключений требует введения в граф особых дуг, которые отражают:

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

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

Дан массив инструкций B размера G и массив предложений обработки исключений OP размера Z. На входе этапа создания дерева блоков мы имеем:

Дан массив инструкций B размера G и массив предложений обработки исключений OP размера Z. На выходе этапа создания дерева блоков мы получаем вспомогательный массив T, каждый элемент которого состоит из следующих полей:

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

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

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

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

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

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

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

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

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

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

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

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

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

Для проверки работоспособности алгоритма следующего алгоритма:
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 abstract class Expression{ public abstract string GenerateCS(); public abstract void GenerateCIL(ILGenerator il); public abstract double Evaluate(double x);}
метод GenerateCIL:

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

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

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

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

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

Следующее правило:
LogExpr ::= LogExpr ComparisonOp LogExpr
можно описать так:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В данном случае:
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 проверяет состояние операции и, если она еще не завершена, вызывает функцию:

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

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

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

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

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

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

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

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

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

Создавать новый порт завершения ввода-вывода с помощью функции CreateIoCompletionPort можно так:

С помощью функции PostQueuedCompletionStatus можно помещать в очередь порта запросы:

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

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

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

Thread Local Storage - это:

Какая функция изменяет значение в соответствующей ячейке:

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

Маска, назначаемая потоку, должна быть:

В данном примере:
#include <stdio.h>#include <process.h>#include <windows.h>#define THREADS 10#define ASIZE  10000000static 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;}
несколько потоков увеличивают значение элементов общего массива на:

Для увеличения значения целочисленных переменных ОС Windows предоставляет следующие функции:

Для уменьшения значения целочисленных переменных ОС Windows предоставляет следующие функции:

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

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

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

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

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

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

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

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

При запуске .NET приложения автоматически создается:

В случае платформы Windows PAL должен предоставить для CLR функциональность, аналогичную:

Если начальные значения всех элементов матриц равны 1, то результирующая матрица должна быть заполнена числами, равными:

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

Какой потомок абстрактного класса Stream в .NET Framework предоставляет возможность использования байтового массива в качестве источника или получателя данных:

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

В случае с использованием объектов, производных от класса System.Threading.WaitHandle вызов асинхронной процедуры связывается с переводом объекта:

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

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

Какой базовый класс предоставляет .NET, служащий для описания объекта, который находится в одном из двух состояний: занятом или свободном:

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

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

Средствами взаимной синхронизации потоков в .NET являются:

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

Диаграмма стека для инструкций refanyval:

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

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

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

Диаграмма стека для инструкции callvirt:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

При использовании пула потоков имеет смысл ограничивать общее число рабочих потоков:

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

В следующем примере:
class SomeData {  [ThreadStatic]  public static double  xxx;  ...
поле класса SomeData.xxx будет размещено:

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

Использование BeginInvoke позволяет связать с завершением обработки асинхронной процедуры:

Какой потомок абстрактного класса Stream в .NET Framework обеспечивает буферизацию запросов чтения и записи:

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

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

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

Процессы в Windows определяют адресное пространство, которое будет использоваться:

Таймеры могут:

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

Какая функция подготавливает начальный указатель на LIFO список:

Атомарные операции обычно имеют более-менее близкое соответствие:

В данном случае:
DWORD FlsAlloc( PFLS_CALLBACK_FUNCTION lpCallback );VOID WINAPI FlsCallback( PVOID lpFlsData ){  ...}
происходит:

Следует внимательно следить за выделением и освобождением данных, указатели на которые:

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

Очень часто для изоляции данных достаточно их размещать:

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

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

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

При разработке параллельных приложений необходимо обеспечить:

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

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

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

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

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

В данном случае:
ov.Offset = 12345;if (  WriteFile( fh, buffer, sizeof(buffer), &dwWritten, &ov ) ||  GetLastError() == ERROR_IO_PENDING) {  while (!GetOverlappedResult(fh, &ov, &dwWritten, FALSE)){}} else {}
Функция GetOverlappedResult проверяет:

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

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

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

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

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

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

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

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

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

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

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

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

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

Для peephole-оптимизации CIL-кода вместо:
stloc(starg) xldloc(Ldarg) х
можно использовать:

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

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

В данном примере:
public abstract class Expression{ public abstract string GenerateCS(); public abstract void GenerateCIL(ILGenerator il); public abstract double Evaluate(double x);}
метод Evaluate:

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

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

С помощью данного кода:
CoInitialize(NULL);IMetaDataDispenser *dispenser;HRESULT h = CoCreateInstance( CLSID_CorMetaDataDispenser, NULL, CLSCTX_INPROC_SERVER,  IID_IMetaDataDispenserEx, (void **)&dispenser );if (h) printf("Error");
осуществляется:

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

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

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

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

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

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

Дан массив инструкций B размера G и массив предложений обработки исключений OP размера Z. На выходе этапа создания дерева блоков мы получаем:

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

Каждый защищенный блок имеет ссылки на соответствующие:

Главный блок графа, в который непосредственно или транзитивно входят все остальные узлы графа - это:

Количество дуг, исходящих из узла графа, зависит от:

Какая схема представления кода является наиболее компактной?

В каком примере метод find выполняет поиск элемента k в массиве X:

Представленный в теле метода алгоритм в общем случае:

Директивами тела метода являются:

Атрибутами полей являются:

К элементам IL-программы можно отнести:

В каком случае в идентификаторы будут включены символы Unicode:

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

Какие допустимые значения имеет поле Flags предложения обработки исключений:

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

Диаграмма стека для инструкций refanytype:

Диаграмма стека для инструкций mkrefany:

Какая инструкция имеет следующую диаграмму стека: ..., value ->..., obj?

Диаграмма стека для инструкций stobj:

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

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

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

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

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

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

Инструкция ckfinite имеет код:

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

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

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

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

Класс InsertSortedArray:
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) { }}
переопределяет абстрактный метод:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Программы, рассматривающие сборки .NET в качестве объектов анализа, генерации или преобразования - это:

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

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

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

Комментарии в IL-программах записываются так:

Дан массив инструкций P размера N и массив предложений обработки исключений EH размера M. Этап создания узелов графа для каждой инструкции и формирования из созданных узлов массива на C#-подобном псевдоязыке можно записать так:

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

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

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

Virtual Execution System - это:

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

Дан массив инструкций B размера G и массив предложений обработки исключений OP размера Z. На выходе этапа создания дерева блоков их минимальное количество в массиве T равно:

Аналогично TLS памяти, Windows поддерживает память, локальную для волокон:

Диаграмма стека для инструкции endfilter:

Инструкция stelem.i8 имеет код:

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

В данном примере:
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 вызывает:

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

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

В командах процессора операции с блокировкой шины имеют префикс:

Самое начало процедуры потока, там, где определяется номер полосы:
public static void ThreadProc(){  int    i,j,k, from, to;  from = ( m_stripused++ ) * m_stripsize;  to = from + m_stripsize;  ...
с помощью атомарных операций можно переписать так:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Загружает адрес статического поля объекта следующая инструкция:

Инструкции ldelem предназначены для загрузки значения элемента:

Диаграмма стека для инструкций sizeof:

Инструкция ldtoken имеет код:

Инструкция mkrefany предназначена для:

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

Система выполнения для обработки сгенерированного исключения на втором этапе:

Ассемблер, входящий в составе .NET Framework SDK позволяет компилировать:

Сборка успешно прошла верификацию в следующем случае:

Блоки обработки исключений в CIL реализованы в виде:

Какой блок имеет более сложную структуру, чем другие блоки обработки исключений:

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

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

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

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

Метод CreateCompiler класса CSharpCodeProvider может создавать экземпляр компилятора C#, к которому можно обращаться через интерфейс:

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

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

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

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

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

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

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

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

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

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

Порт завершения создается с помощью функции:

Ассоциирование порта с файлом можно осуществить так:

Число потоков в пуле обычно превышает число:

В современных реализациях Windows с помощью функции:
BOOL QueueUserWorkItem(  LPTHREAD_START_ROUTINE QueryFunction,  PVOID pContext, ULONG Flags);
предусмотрена возможность:

Какая функция выделяет в ассоциированной с потоком памяти двойное слово, индекс которого возвращается вызвавшей процедуре:

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

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

К организации многопоточных приложений можно отнести:

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

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

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

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

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

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

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

Когда JIT-компилятор доходит до инструкции ldc.0, расположенной непосредственно после инструкции безусловного перехода br L2, он:

IL-формат - это формат файлов, поддерживаемый:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Диаграмма стека для инструкции ldstr:

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

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

Диаграмма стека для инструкции leave:

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

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

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

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

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

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

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

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

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

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

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

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

При использовании _declspec(thread) при описании переменных компилятор будет размещать эти переменные:

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

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

Какие директивы для объявления разделяемого сегмента и помещаемых в него данных можно использовать в Microsoft Visual C++:

Platform Adaptation Layer является прослойкой между основными механизмами CLR и:

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

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

При использовании метода find для поиска элемента в массиве, в случае если элемент не найден возвращается:

Метод EndInvoke служит для ожидания:

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

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

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

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

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

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

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

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

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

Инструкция mkrefany имеет код:

В каком примере происходит объявление поля x типа массив:

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

Блок обработки исключений в графе потока управления имеет:

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

В данном примере:
public abstract class Expression{ public abstract string GenerateCS(); public abstract void GenerateCIL(ILGenerator il); public abstract double Evaluate(double x);}
метод GenerateCS:

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

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

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

Выберите утверждения верные для TLS памяти:

Мониторы в .NET являются аналогами:

Таймеры в .NET могут быть описаны в следующих пространствах имен:

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

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

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

Какой метод содержит все выходные параметры:

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

В данном примере:
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
для доступа к отсортированному массиву используются свойства:

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

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

Какие существуют способы перехвата ошибок, возникающих в процессе работы программы:

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

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

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

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

С помощью флага WT_EXECUTEDEFAULT запрос будет направлен:

Сколько функций предоставляет ОС Windows необходимых для работы с локальной для потока памятью:

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

Потоки в .NET не предусматривают средств:

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

В каком примере диектива заголовка задает имя сборки:

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

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

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

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

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

Инструкция ldelem.u2 имеет код:

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

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

Поток в .NET может находиться в одном из следующих состояний:

Что касается порта завершения ввода-вывода в Windows, то с точки зрения разработчика приложения необходимо:

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

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

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

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

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

Для облегчения процесса переноса .NET на другие платформы в архитектуру CLR включен специальный уровень адаптации к платформе:

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

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

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

Операция увеличения на 1 элемента массива требует:

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

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

Диаграмма стека для инструкции newobj:

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

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