Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5fan_ru_ПАРАДИГМИ ПРОГРАМУВАННЯ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.32 Mб
Скачать

5.1.2 Загально мовне середовище виконання – clr – динамічна складова ms.Net Framework

Базовий рівень підсистеми MS.NET Framework складає загальномовне середовище виконання (Common Language Runtime або CLR). В Windows XP його код міститься в mscorlib.dll. Це головна бібліотека .NET CLR.

Середовище виконання CLR реалізує управління пам'яттю, типами даних, міжмовною взаємодією, розгортанням (deployment) застосувань.

Середовище CLR активізує виконуваний код, виконує для нього перевірку безпеки, розташовує цей код в пам'яті і виконує його. Важливою частиною роботи середовища CLR є управління пам'яттю, а саме автоматичне вивільнення пам'яті, що звільняється при роботі програм (збірка сміття).

Для забезпечення можливості багатомовної розробки програмний код, після компіляції на одній з алгоритмічних мов платформи MS.Net, представляється на спеціально розробленій спільній проміжній мові (Common Intermediate Language або CIL). Ця мова, з одного боку, достатньо близька до машинно-залежних мов – асемблерів, з іншого боку, CIL забезпечує вищий рівень представлення різних комп'ютерних платформ. Як результат, програма на мові CIL залишається платформо-незалежною, проте вимагає деякої додаткової настройки (компіляції) перед початком свого виконання.

В ході компіляції програма на .NET-сумісній мові програмування трансформується відповідно до наперед заданої узагальненої специфікації типів Common Type System (CTS). Система типів CTS повністю описує всі типи даних, які підтримуються середовищем виконання, визначає їх взаємозв'язки і зберігає їх відображення в систему типів .NET.

Програмні файли на мові CIL, одержувані після компіляції програм на алгоритмічних мовах платформи MS.Net, називаються збірками (assembly), інше їх найменування - переносимі виконувані файли (Portable Executable або PE).

Збірки є файлами з розширеннями exe або dll і складаються з безпосередньо програмного коду на мові CIL і додаткових службових даних, які називаються метаданими (у складі метаданих необхідна інформація про збірку – відомості про типи, дані про версію, посилання на зовнішні збірки і т.п.).

Збірки перед своїм виконанням повинні пройти певну настройку для роботи в умовах конкретної вибраної платформи – для виконання таких настройок у складі середовища CLR є ряд JIT-компіляторів (Just-Іn-Time compilers), що викликаються для перекладу програмного коду на проміжній мові (CIL-кода) в машинний (native) код платформи виконання.

Таким чином, має місце 2-етапна компіляція модулів:

1. На першому етапі створюється незалежний від платформи PE-файл (керований модуль). Цей файл містить код на проміжній мові MSIL (Microsoft Intermediate Language) і метадані, які містять всю необхідну інформацію про програму для її подальшого використання.

2. На другому етапі за допомогою JIT (Just In Time Compiler) виконується компіляція і верифікація модулів, формування збірок для конкретної платформи та їх виконання.

5.1.3. Система типів даних в Microsoft .Net

Cистема типів Microsoft .NET утворює ієрархію із зростанням спільності знизу вгору, в якій явно виділяються дві великі групи типів, а саме, типи-значення (value type) і типи-посилання (reference type).

Ця система типів спільна для всіх мов, які підтримуються в .NET. Існує також механізм відображення типів з CTS (Common Type System) на типи конкретних мов і навпаки.

Типи даних також об’єднуються в простори імен (namespace).

Рис. 5.1. Структура системи типів Microsoft .NET

Типи-значення є статичними типами, пам’ять для них виділяється у стеку і вивільняється після завершення роботи програми.

Типи-значення не беруть участь в наслідуванні. Крім того, типи-значення копіюються при привласненні значення.

Посилкові типи потребують використовування покажчиків на об’єкти, що типізуються, а також централізованого зберігання і вивільнення пам'яті. Отже, об’єкти цього типу є динамічними, пам’ять під них виділяється з «кучі» і вивільняється після знищення об’єкти («збірка сміття»).

Посилкові типи можуть приймати одну з трьох форм:

1) об'єктні типи (object type);

2) інтерфейсні типи (interface type);

3) типи-покажчики (pointer type).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]