Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 2. Основи C#.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
276.18 Кб
Скачать

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

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

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

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

В ході компіляції програма на .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.4. CLR: загальна схема виконання збірок

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

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

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

2.6. Універсальна система типів

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

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

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

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

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

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

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

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

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

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

Управління типами в CTS

• Типи можуть використовуватися після ініціалізації (з урахуванням методу виклику, властивостей get і set і т.д.).

• Над типами можуть виконуватися перетворення (як явним, так і неявним чином).

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

Таблиця 2.2. Вбудовані типи-значення в CTS

Відповідає FCL-типу

System.SByte

Цілий. 8-розрядне із знаком. Діапазон значень: –128 ... 127

System.Byte

Цілий. 8-розрядне без знаку. Діапазон значень: 0 ... 255

System.Int16

Цілий. 16-розрядне із знаком. Діапазон значень: –32768 ... 32767

System.UInt16

Цілий. 16-розрядне без знаку. Діапазон значень: 0 ... 65535

System.Int32

Цілий. 32-розрядне із знаком. Діапазон значень: –2147483648 ... 2147483647

System.UInt32

Цілий. 32-розрядне без знаку. Діапазон значень: 0 ... 4294967295

System.Int64

Цілий. 64-розрядне із знаком. Діапазон значень: –9223372036854775808 ... 9223372036854775807

System.UInt64

Цілий. 64-розрядне без знаку. Діапазон значень: 0 ... 18446744073709551615

System.Char

16 (!) розрядний символ UNICODE

System.Single

Плаваючий. 32 разряди. Стандарт IEEE

System.Double

Плаваючий. 64 розряди. Стандарт IEEE

System.Decimal

128-розрядне значення підвищеної точності з плаваючою крапкою

System.Boolean

Значення true або false

Висновки

Під платформою Microsoft.NET слід розуміти інтегровану систему (інфраструктуру) засобів розробки, розгортання і виконання складних (як правило, розподілених) програмних систем.

Основа .Net – це Microsoft .Net Framework – своєрідний каркас, набір засобів і технологій для розробки і виконання програмних систем.

До складу MS.NET Framework входить: загальномовне середовище виконання (Common Language Runtime або CLR) і бібліотека класів підсистеми MS.NET Framework.

Бібліотека класів FCL (Framework Class Library) – це статична складова платформи.

Загальномовне середовище виконання CLR (Common Language Runtime) - динамічна складова платформи.

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

В Microsoft .Net Framework має місце 2-етапна компіляція модулів:

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

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