Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСиСП. Часть 3. Контрольная работа 1.doc
Скачиваний:
39
Добавлен:
01.04.2014
Размер:
238.59 Кб
Скачать

Министерство образования Республики Беларусь

Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники»

Факультет непрерывного и дистанционного обучения

Кафедра программного обеспечения информационных технологий

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к контрольной работе № 1

по курсу «Операционные системы и системное программирование. Часть 3»

Студент: гр. 801021 Коноплёв А.П.

Руководитель: Прохорчик Р.В.

Минск 2011

Содержание

Работа с неуправляемым кодом………………………………………………….…3

1. Управляемый и неуправляемый код……………………………………………3

2. Службы Platform Invoke…………………………………………………………5

2.1. Службы COM Interoperability………………………………………………5

2.2. Обзор механизма преобразования………………………………………….6

2.3. Работа службы Platform Invoke. Запуск функций WinAPI……………….7

3. C++ .NET. Совмещение управляемого и неуправляемого кодов……………10

3.1. Управляемая библиотека…………………………………………………..13

3.2. Управляемая библиотека в управляемом коде……………………………14

3.3. Управляемая библиотека в неуправляемом коде…………………………15

3.4. Вызов неуправляемых функций из управляемого модуля………………15

3.5. Идентификация вызываемой функции……………………………………16

3.6. Создание класса для размещения библиотечной функции………………17

3.7. Прототипы в управляемом коде……………………………………………17

4. Небезопасный код………………………………………………………………19

Список использованных источников……………………………………….……..23

Работа с неуправляемым кодом

  1. Управляемый и неуправляемый код

Управляемый код (англ. managed code) — термин, введённый Microsoft для обозначения кода программы, исполняемой виртуальной машиной .NET под управлением CLR.

С формальной точки зрения управляемым кодом является любой программный код, исполняемый в среде отладчика.

Неуправляемый код (англ. unmanaged code) — обычный машинный код,  программный код, выполняющийся вне среды выполнения CLR.

Слово управляемый здесь относится к методу обмена информацией между программой и исполняющей средой. Оно означает, что в любой точке исполнения управляющая среда может приостановить исполнение и получить информацию, специфичную для текущего состояния.

Необходимая для этого информация представлена в управляемом коде на языке Intermediate Language и в связанных с этим кодом метаданных.

CIL (англ. Common Intermediate Language)  — промежуточный язык, разработанный фирмой Microsoft для платформы .NET Framework.

CLR (англ. Common Language Runtime) — общая среда выполнения языков .NET.

Результатом проекта, написанного на C# и скомпилированного в Visual Studio 2008, является сборка (assembly), которая содержит IL-код (Intermediate Language код) проекта и манифест, полностью описывающий сборку. Сборка может быть создана на одном компьютере, на одной платформе, а выполняться на другом компьютере с другим типом процессора, с другой операционной системой. Для выполнения сборки необходимо и достаточно установки на целевом компьютере соответствующей версии Framework .Net, представляющего надстройку над операционной системой.

Когда мы говорим о сборках, язык программирования, на котором создавался исходный код, уже не имеет значения, его особенности никак не отражаются в сборке. Сборки, созданные на VB или C++ с управляемыми расширениями, неотличимы от сборок, которые созданы на C# или других языках, включенных в состав Visual Studio 2008 и использующих каркас Framework .Net при компиляции управляемого кода.

С другой стороны, понятно, что в состав Visual Studio 2008 могут включаться языки, не применяющие Framework .Net, не создающие сборки с управляемым кодом, а использующие собственные библиотеки и собственные каркасы приложений (Framework Applications). В частности, на языке С++ в рамках Visual Studio 2008 можно писать проекты, работающие с библиотеками MFC и ATL, ориентированные исключительно на С++ и создающие в результате компиляции проекта обычные exe-файлы.

Сегодня на всех компьютерах, работающих под управлением любой из версий Windows, установлена соответствующая версия Framework .Net, так что на таких компьютерах могут выполняться и сборки, и обычные exe-файлы. Поскольку Framework .Net, так же как и C#, стандартизован и является свободно распространяемым программным продуктом, его можно встретить и на тех компьютерах, где нет Windows.

На рис. 1 показана схема функционирования компьютера, позволяющего выполнять как сборки - управляемый код, так и обычные exe-файлы - неуправляемый код.

Рис. 1.  Управляемый и неуправляемый код

Следует заметить, что два типа программ, выполняемые по-разному, могут взаимодействовать друг с другом - из управляемого кода возможен вызов программ с неуправляемым кодом и наоборот. В проектах, написанных на C#, можно управлять офисными приложениями - документами Word и Excel. Офисные документы - это COM-объекты, принадлежащие миру неуправляемого кода, а проекты C# - это сборки, относящиеся к миру с управляемым кодом.

Примеры неуправляемого программного кода, вызываемого из управляемых C# приложений:

  • функции Win32 API;

  • функции DLL-библиотек;

  • компоненты COM;

  • интерфейсы Microsoft ActiveX.

Microsoft .NET Framework позволяет взаимодействовать с COM-компонентами, COM+-службами, внешними типами библиотек и разными службами операционной системы. Перехват исключений различается в управляемом и неуправляемом коде. Платформа .NET Framework предлагает две службы взаимодействия управляемого кода с неуправляемым — Platform Invoke и COM interoperability, которые используют реальные возможности проекта.