Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Екзамен з комп. арх..doc
Скачиваний:
4
Добавлен:
17.09.2019
Размер:
449.02 Кб
Скачать

1. Поняття платформи. Структура та основні складові .Net Framework.

Платформа – це середовище, що забезпечує виконання програмного коду, а також визначається характеристиками процесорів та ОС. До платформи .NET входять 4 програмних продукти:

1) .NET Framework.

2) Набір серверів .NET: SQL Server, …

3) Веб-сервіси.

4) Безпосереднє середовище розробки програми VS.

.NET Framework состоит из двух главных компонентов: библиотеки базовых классов и CLR (Common Language Runtime — общая для языков среда исполнения NET-приложений)

Основні функції:

1) Надання ОО середовища програмування.

2) Надання середовища програмування, яке дозволяє вирішити проблему конфліктів версій.

3) Середовище безпечного виконання коду.

4) Середовище виконання, що покращує продуктивність за рахунок управління пам’яттю.

5) Покращення інтеграції на переносності програм за рахунок використання проміжної мови та common типів.

2. Функції та структура clr.

CLR (Common Language Runtime) - загальномовне виконуюче середовище, яке абстрагує сервіси операційної системи та виконує керовані програми, будь яка дія яких має отримати дозвіл CLR

Class Loader - управляє метаданими; завантаження та розміщення класів

MSIL to Native Compiler – з мови програмування у машиний код

Code Manager - керування виконанням коду

Garbage Collection - Автоматичне управління життєвим циклом об’єктів

Security Engine - забезпечення безпеки

Type checker - механізм перевірки типів

Exception Manager – створення власних помилок

Thread Support – підтримка многопоточності

COM Marshaller –маршалізувати об’єкт – це записати його стан і кодову базу таким чином, щоб при зворотній операції вийшла копія оригіналу об’єкту.

Common Types System – описує всі можливі типи даних і програмні конструкції, які підтримуються в CLR, вказує чином чином ці сукупності подаються у форматі мета-даних.

Ф-ї CLR:

1) Управління кодом. Завантаження та виконання

2) Управління пам"яттю при розміщенні об"єктів

3) Ізоляція пам’яті програм

4) Перевірка безпеки коду

5) Перетворення проміжної мови на машинний код

6) Доступ до метаданих

7) Обробка виключень

8) Взаємодіяя між керованим і некерованим кодом

9) Підтримка сервісів для розробки

3. Поняття збірки. Метадані. Схема виконання .Net-додатку в clr.

В рамках технологии .NET — двоичный файл, содержащий управляемый код. Когда компилятор платформы .NET создает EXE или DLL модуль, содержимое этого модуля называется сборкой. Сборка содержит в себе: номер версии, метаданные и инструкции IL. Сборки являются структурными элементами приложений .NET Framework; они составляют основную единицу развертывания, управления версиями, повторного использования, областей действия активации и разрешений безопасности. Сборка представляет собой коллекцию типов и ресурсов, собранных для совместной работы и образующих логическую функциональную единицу. Сборка предоставляет среде CLR сведения, необходимые для распознавания реализаций типов.

Метаданные в .NET— термин, относящийся к платформе и обозначающий определённые структуры данных, добавляемые в код Common Intermediate Language для описания высокоуровневой структуры кода. Метаданные описывают все классы и члены классов, определённые в сборке, а также классы и члены классов, которые текущая сборка вызывает из другой сборки. Метаданные для метода содержат полное описание метода, включая его класс, еговозвращаемый тип и все параметры этого метода.Каждая сборка, помимо кода на языке MSIL обязательно содержит метаданные, описывающие как её в целом (манифест), так и каждый тип, содержащийся в ней, в отдельности (метаданные). Компилятор .NET-языка создает метаданные и сохраняет их в сборку, содержащую CIL. Когда среда CLR исполняет CIL она делает проверку того, что метаданные вызываемого метода совпадают с метаданными, хранящимися в вызывающем методе. Это гарантирует, что метод может быть вызван именно с корректным числом параметров и именно с корректными типами параметров. . Доступ к метаданным могут получить любые программные компоненты и любые инструменты программирования. Так, компилятор во время компиляции сборки использует информацию о зависимостях между сборками и проверяет соответствие используемых типов, извлекая нужную для этого информацию из метаданных. Метаданные содержат подробнейшую информацию о каждом типе: его имя, типы и имена его полей, описание свойств и методов со всеми их параметрами и возвращаемыми значениями. Здесь же хранится информация о доступности (видимости) всех членов класса и об их атрибутах.

The CLR Code Execution Model

The two important relevant subsystems of the CLR are the class loader and the Just-In-Time (JIT) compiler. It is the job of the loader to read the assembly's metadata and create, in memory, an internal representation of the layout of the classes and methods. The assemblies are usually demand-loaded and then JIT-ed at the time of loading. Demand loading simply means that the class loader does its thing only when a class is referenced. At load time, the assembly goes through some level of verification. The most basic check is that the CLR has to be able to make sense of the IL in order to generate machine code. Higher levels of checking enable the execution engine to ensure that the assembly is memory-safe.Remember: The runtime is NOT an interpreter. It does NOT execute code. Instead, the IL is compiled in memory into native code, and the native code is the thing that is actually executed by the processor. The CLR uses the JIT compiler to do this and the JIT compiler is also demand loaded. A method will only be compiled when it is called.The CLR maintains an in-memory representation similar to a v-table from the metadata. The metadata tells the loader al the information it needs to know about a type and where to find it. When the runtime loads a type, it replaces the address of each method in this v-table like structure with a piece of stub code. When, and only when, the method is called, the JIT compiler is invoked on the method, compiling the method's IL into native X86 assembly code or whatever platform the CLR is running on. This code is cached in memory and the CLR now changes the stub code to point to this native code. So, the next time, the method is referenced, the calls to the method will not invoke the JIT compiler and actually use the cached native code.

The JITed code sticks around in memory and is discarded when the type is unloaded. This is, of course, differerent in the case of pre-jitting, as I refered to above,w ith NGEN. In this case, the initial setup time is longer but the code will execute quicker.