Common Intermediate Language и системное программирование в Microsoft.Net. Макаров А.В - 5 стр.

UptoLike

ix
ОБ АВТОРАХ
Макаров Андрей Владимирович – старший преподаватель МГТУ
им. Н.Э. Баумана. В течении многих лет читает курсы по архитектуре компь-
ютеров, операционным системам, системному программированию, програм-
мированию под ОС Windows.
Скоробогатов Сергей Юрьевич – ассистент МГТУ им. Н.Э. Баумана.
Ведет занятия по курсам алгоритмических языков, функциональному про-
граммированию, разработке программного обеспечения.
Чеповский Андрей Михайлович – доцент, к.т.н. Преподает в МГТУ
им. Н.Э. Баумана и на дополнительном образовании механико-математическо-
го факультета МГУ им. М.В. Ломоносова, консультант МГУП. На протяжении
многих лет читал различные курсы по программированию: алгоритмические
языки, функциональное программирование, теоретическое программирова-
ние, теория формальных языков, информационные системы и базы данных,
распределенные системы обработки информации, параллельное программи-
рование.
viii
Оглавление
Глава 1. Введение в архитектуру Microsoft .NET Framework . . . . . . . . . . . 1
1.1. Знакомство с .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1. Главные темы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2. Предшественники платформы .NET . . . . . . . . . . . . . . . 3
1.1.3. Обзор архитектуры .NET . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2. Общая система типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.1. Ядро системы типов .NET . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.2. Дополнительные элементы системы типов .NET . . . . 17
1.3. Виртуальная система выполнения . . . . . . . . . . . . . . . . . . . . . . 21
1.3.1. Состояние виртуальной машины . . . . . . . . . . . . . . . . . 21
1.3.2. Состояние метода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4. Автоматическое управление памятью . . . . . . . . . . . . . . . . . . . . 28
1.4.1. Выделение памяти в управляемой куче . . . . . . . . . . . . 28
1.4.2. Алгоритм сборки мусора . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.4.3. Основные приемы повышения эффективности сборки
мусора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Глава 2. Структура программных компонентов . . . . . . . . . . . . . . . . . . . . . 32
2.1. Формат исполняемых файлов . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.1.1. Управление памятью в Windows . . . . . . . . . . . . . . . . . . . 34
2.1.2. Обзор структуры PE-файла . . . . . . . . . . . . . . . . . . . . . . 36
2.1.3. Заголовки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.1.4. Особые секции PE-файла . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1.5. Заголовок CLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.1.6. Пример генерации PE-файла . . . . . . . . . . . . . . . . . . . . . 53
2.2. Формат метаданных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.2.1. Расположение метаданных и кода внутри сборки . . . . 65
2.2.2. Структура метаданных . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.2.3. Таблицы метаданных . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.3. Взаимодействие программных компонентов . . . . . . . . . . . . . . 72
2.3.1. Обзор компонентных технологий . . . . . . . . . . . . . . . . . 73
2.3.2. Взаимодействие компонентов в среде .NET . . . . . . . . 76
2.3.3. Общая спецификация языков . . . . . . . . . . . . . . . . . . . . 82
viii                                                                                                                                                                                      ix


                             ОБ АВТОРАХ
                                                                            Оглавление
     Макаров Андрей Владимирович – старший преподаватель МГТУ
им. Н.Э. Баумана. В течении многих лет читает курсы по архитектуре компь-   Глава 1. Введение в архитектуру Microsoft .NET Framework . . . . . . . . . . . 1
ютеров, операционным системам, системному программированию, програм-
                                                                                 1.1. Знакомство с .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
мированию под ОС Windows.
                                                                                       1.1.1. Главные темы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
     Скоробогатов Сергей Юрьевич – ассистент МГТУ им. Н.Э. Баумана.                    1.1.2. Предшественники платформы .NET . . . . . . . . . . . . . . . 3
Ведет занятия по курсам алгоритмических языков, функциональному про-                   1.1.3. Обзор архитектуры .NET . . . . . . . . . . . . . . . . . . . . . . . . . 5
граммированию, разработке программного обеспечения.                              1.2. Общая система типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
                                                                                       1.2.1. Ядро системы типов .NET . . . . . . . . . . . . . . . . . . . . . . . 11
     Чеповский Андрей Михайлович – доцент, к.т.н. Преподает в МГТУ
                                                                                       1.2.2. Дополнительные элементы системы типов .NET . . . . 17
им. Н.Э. Баумана и на дополнительном образовании механико-математическо-
го факультета МГУ им. М.В. Ломоносова, консультант МГУП. На протяжении           1.3. Виртуальная система выполнения . . . . . . . . . . . . . . . . . . . . . . 21
многих лет читал различные курсы по программированию: алгоритмические                  1.3.1. Состояние виртуальной машины . . . . . . . . . . . . . . . . . 21
языки, функциональное программирование, теоретическое программирова-                   1.3.2. Состояние метода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
ние, теория формальных языков, информационные системы и базы данных,             1.4. Автоматическое управление памятью . . . . . . . . . . . . . . . . . . . . 28
распределенные системы обработки информации, параллельное программи-
                                                                                       1.4.1. Выделение памяти в управляемой куче . . . . . . . . . . . . 28
рование.
                                                                                       1.4.2. Алгоритм сборки мусора . . . . . . . . . . . . . . . . . . . . . . . . . 29
                                                                                       1.4.3. Основные приемы повышения эффективности сборки
                                                                                              мусора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
                                                                            Глава 2. Структура программных компонентов . . . . . . . . . . . . . . . . . . . . . 32
                                                                                 2.1. Формат исполняемых файлов . . . . . . . . . . . . . . . . . . . . . . . . . . 32
                                                                                       2.1.1. Управление памятью в Windows . . . . . . . . . . . . . . . . . . . 34
                                                                                       2.1.2. Обзор структуры PE-файла . . . . . . . . . . . . . . . . . . . . . . 36
                                                                                       2.1.3. Заголовки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
                                                                                       2.1.4. Особые секции PE-файла . . . . . . . . . . . . . . . . . . . . . . . . 49
                                                                                       2.1.5. Заголовок CLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
                                                                                       2.1.6. Пример генерации PE-файла . . . . . . . . . . . . . . . . . . . . . 53
                                                                                 2.2. Формат метаданных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
                                                                                       2.2.1. Расположение метаданных и кода внутри сборки . . . . 65
                                                                                       2.2.2. Структура метаданных . . . . . . . . . . . . . . . . . . . . . . . . . . 67
                                                                                       2.2.3. Таблицы метаданных . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
                                                                                 2.3. Взаимодействие программных компонентов . . . . . . . . . . . . . . 72
                                                                                       2.3.1. Обзор компонентных технологий . . . . . . . . . . . . . . . . . 73
                                                                                       2.3.2. Взаимодействие компонентов в среде .NET . . . . . . . . 76
                                                                                       2.3.3. Общая спецификация языков . . . . . . . . . . . . . . . . . . . . 82