Лекция 1. Введение в архитектуру Microsoft .NET Framework
Обзор учебного курса. Предшественники платформы .NET, составные части платформы .NET, спецификация CLI. Роль типизации в языках программирования. Ядро и дополнительные элементы системы типов .NET.
Тест 1. 12 заданий
Лекция 2. Виртуальная система выполнения. Автоматическое управление памятью
Состояние виртуальной машины .NET. Состояние метода: стек вычислений, локальные переменные и параметры, область локальных данных. Автоматическое управление памятью, алгоритм сборки мусора.
Тест 2 .12 заданий
Лекция 3. Структура программных компонентов
Управление памятью в Windows. Обзор структуры исполняемых файлов в формате Portable Executable (PE). Пример генерации PE-файла.
Тест 3 .11 заданий
Лекция 4. Формат метаданных. Взаимодействие программных компонентов
Расположение метаданных и кода внутри сборки, структура метаданных, таблицы метаданных. Обзор компонентных технологий, взаимодействие компонентов в среде .NET, общая спецификация языков.
Тест 4. 12 заданий
Лекция 5. Common Intermediate Language
Поток инструкций языка CIL. Инструкции для загрузки и сохранения значений, арифметические инструкции, инструкции для организации передачи управления.
Тест 5. 12 заданий
Лекция 6. Язык CIL: инструкции для поддержки объектной модели
Инструкции для работы с объектами и массивами. Инструкции для работы с типами-значениями и типизированными ссылками.
Тест 6. 12 заданий
Лекция 7. Язык CIL: обработка исключений. Синтаксис ILASM
Механизмы поддержки обработки исключений в .NET, семантика обработки исключений. Основные элементы лексики и синтаксиса ассемблера ILASM.
Тест 7. 12 заданий
Лекция 8. Анализ кода на CIL
Граф потока управления. Алгоритм преобразования линейной последовательности инструкций в граф потока управления.
Тест 8. 12 заданий
Лекция 9. Верификация CIL-кода. Библиотеки для создания метаинструментов
Алгоритм верификации CIL-кода. Обзор и сравнение возможностей библиотек Metadata Unmanaged API и Reflection API.
Тест 9. 12 заданий
Лекция 10. Динамическая генерация кода
Введение в динамическую генерацию кода на примере численного интегрирования функции. Особенности генерации кода для стековой машины.
Тест 10. 12 заданий
Лекция 11. Основы многозадачности
Основные термины и понятия, необходимые для обсуждения параллельных вычислений; общие подходы к созданию многопроцессорных вычислительных установок и планирование потоков в операционных системах.
Тест 11. 12 заданий
Лекция 12. Общие подходы к реализации приложений с параллельным выполнением операций
Асинхронный ввод-вывод и вызов процедур, создание потоков, планируемых ядром операционной системы или пользователем (волокна); вводятся понятия описателей идентификаторов процессов и потоков.
Тест 12. 12 заданий
Лекция 13. Разработка параллельных приложений для ОС Windows
Рассматривается порт завершения ввода-вывода как механизм эффективного управления пулом потоков; использование стандартного порта завершения ввода-вывода и обсуждается изоляция данных разных потоков и волокон.
Тест 13. 12 заданий
Лекция 14. Взаимодействие процессов и потоков
Упорядоченный доступ к разделяемым данным, основные способы синхронизации и взаимной блокировки потоков. Создание процессов, базовые средства управления адресным пространством процессов и обмен данными между процессами с использованием разделяемой памяти.
Тест 14. 12 заданий
Лекция 15. Параллельные операции в .NET
Основные классы .NET, применяемые для создания многопоточных приложений и их соответствие механизмам Windows.
Тест 15. 12 заданий
Дополнительный материал 1Приложение A
Дополнительный материал 2. Приложение Б
Дополнительный материал 3. Приложение B
Экзамен