Конспект лекции дисциплины «Графические системы и интерфейс оператора»


НазваниеКонспект лекции дисциплины «Графические системы и интерфейс оператора»
страница8/17
Дата публикации13.03.2013
Размер1.2 Mb.
ТипКонспект
userdocs.ru > Информатика > Конспект
1   ...   4   5   6   7   8   9   10   11   ...   17
^

P2. Лекция № 7. С# и С++ в приложениях систем управления


С# и С++ в приложениях систем управления. Управляемый и не управляемый код. Преимущества и недостатки неуправляемого кода. Управление памятью, сборщик мусора в C#. Обработка исключений.

Программный код, выполняющийся под управлением CLR, называется управляемым кодом.

Программный код, выполняющийся вне среды выполнения CLR, называется неуправляемым кодом.

Представителями неуправляемого программного кода являются:

  • функции Win32 API;

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

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

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

CLR скрывает имеющиеся в управляемой и неуправляемой моделях различия. Проблемы, связанные с типами данных, механизмами обработки ошибок и т. д. в управляемой и неуправляемой моделях, решаются CLR "незаметно" как для вызывающей стороны (клиента), так и для вызываемой стороны (сервера). Таким образом, организация взаимодействия между управляемым и неуправляемым кодом выглядит проще, чем могло быть...

Реализованные в .NET языки программирования позволяют создавать управляемый код, который может взаимодействовать с неуправляемыми библиотеками Win32 и компонентами на основе модели компонентных объектов Microsoft (COM).

Язык программирования C++ .NET является единственным, который позволяет создавать как управляемый, так и неуправляемый код. Это дает возможность не только использовать неуправляемый библиотечный код, но и смешивать управляемый и неуправляемый коды в одном приложении.
^

Базовые различия


При работе с управляемым кодом программист размещает объекты в управляемой динамически распределяемой области памяти, используя оператор new (создать), причем освобождать их с помощью соответствующих операторов delete (удалить) не нужно. Это освобождает программиста от заботы об утечках памяти, и позволяет сосредоточить основное внимание на важных и полезных задачах, таких как более точная реализация проекта программы, что повышает производительность программирования и качество программного обеспечения.
Неуправляемый код C++ .NET должен самостоятельно управлять динамически распределяемой областью в памяти традиционными способами C++, используя операторы new (создать) и delete (удалить). Так как одним из наиболее общих недостатков в программах на C++ является ужасающая утечка памяти, поэтому использование управляемого кода C++ .NET может оказать очень положительное воздействие на многие разработки программного обеспечения.
^

Сборка мусора в .NET Framework


Сборщик мусора - это подсистема платформы .Net, предназначенная для того, чтобы очищать память. Идея состоит в том, что вся динамически выделяемая память распределяется в области кучи. Всякий раз когда .NET обнаруживает, что управляемая куча данного процесса заполнилась и нуждается в приведении в порядок, он вызывает сборщик мусора. Этот сборщик мусора проходит по всем переменным, находящимся в контексте вашего кода, и проверяет ссылки на объекты, расположенные в области кучи, чтобы идентифицировать, какие из них доступны из кода, то есть, чтобы узнать, на какие объекты существуют ссылки. Любой объект с отсутствием ссылок рассматривается как такой, к которому больше не будет осуществляться доступ из кода, потому объект может быть удален. Подобный этому механизм сборки мусора применяется и в Java.

Сборка мусора работает в .NET потому что IL спроектирован так, чтобы облегчить этот процесс. Принципы организации IL гласят, что вы не можете получить ссылки на существующий объект иначе, кроме как копированием существующих ссылок, а также то, что IL - язык безопасный к типам. В данном контексте мы имеем в виду, что если существует какая-то ссылка на обьект, то в этой ссылке содержится информация, достаточная для того, чтобы в точности определить тип объекта.

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

Одно важное свойство сборки мусора заключается в том, что это недетерминированный процесс. Другими словами, вы не можете знать, когда будет вызван сборщик мусора; он будет вызван тогда, когда CLR решит, что в этом есть необходимость, хотя также можно перекрыть этот процесс и вызвать сборщик мусора из вашего приложения.
^

Ограничения на использование управляемых типов в C++


Существует множество правил, которые ограничивают использование управляемых типов (классов, структур, интерфейсов), что ведет к затруднениям в работе с ними по сравнению с традиционными неуправляемыми типами в C++:

  1. Управляемый тип не может быть наследован из неуправляемого типа. С другой стороны, неуправляемый тип не может быть наследован из управляемого типа. Это значит, что структуры иерархий наследственности управляемых и неуправляемых классов всегда отделены друг от друга.

  2. В отличие от неуправляемых типов, управляемые не поддерживают множественную наследуемость реализации.

  3. Управляемый тип может, очевидно, содержать член, который является указателем на управляемый объект. Управляемый тип также может содержать элемент данных, который является неуправляемым объектом или указателем на таковой. С другой стороны, неуправляемый тип не может включать в себя экземпляр управляемого типа или указатель на таковой.

  4. Неуправляемый класс, в котором не указан явно базовый класс, является независимым корневым классом. В то же время, управляемый класс, в котором не указан явно ни один класс в качестве базового, является производным от корневого класса System: :Object.

  5. К объекту, участвующему в сборке мусора (т.е. к экземпляру управляемого класса), можно получить доступ только посредством указателя (или ссылки) на объект в управляемой динамически распределяемой области памяти. Это является отличием от неуправляемых типов, которые могут содержаться либо непосредственно в переменной типа значения, либо к ним можно получить доступ посредством указателя на неуправляемую динамически распределяемую область памяти.
^

Причины смешивания управляемого и неуправляемого кодов


  1. Как и в других средах, где проводится автоматическая сборка мусора (таких как Java), во время выполнения часто снижается производительность из-за накладных расходов на отслеживание использования объектов (отслеживание ссылок) и удаление их в нужное время.

  2. Нежелательным эффектом, который часто ассоциируется с автоматической сборкой мусора, является повышение объема физической памяти, требуемой для хранения объектов, которые могут быть удалены, но еще не удалены сборщиком мусора. Более агрессивные схемы сборки мусора проигрывают в производительности, а менее агрессивные — в избыточном использовании памяти. В традиционной программе C++ программист сам решает, когда именно каждый объект удаляется из динамически распределяемой области памяти. Такой подход потенциально позволяет программисту написать программу, которая одновременно выиграет и в производительности, и в использовании памяти.

  3. Если имеются приложения Win32, написанные на языке C++, которые течение некоторого периода времени нужно преобразовать в приложения .NET. Тогда, в течение переходного периода, будет существовать программа, содержащая смесь управляемого и неуправляемого кода.

  4. Наиболее весомым аргументом является то, что для управляемого кода пока не создано расширения реального времени для Windows. Поэтому компоненты поддерживающие работу в реальном времени разрабатываются в неуправляемом коде.

Рассмотрим пункты 1 и 2 этого списка. В большинстве программ вопросы производительности наиболее эффективно решаются за счет оптимизации относительно небольших, но критичных фрагментов программы. Таким образом, часто имеет смысл изначально реализовать программу, используя управляемые расширения (или даже С# или VB.NET), a затем, после внимательного анализа производительности, те участки программы, которые окажутся критичными, могут быть оптимизированы с использованием неуправляемого кода на C++.

Вопросы


  1. Особенности управляемого кода, CLR, возможность создание неуправляемого кода на платформе .Net.

  2. Сборка мусора в .NET Framework.

  3. Ограничения по использованию управляемых типов в C++.

  4. Причины смешивания управляемого и неуправляемого кодов.


1   ...   4   5   6   7   8   9   10   11   ...   17

Похожие:

Конспект лекции дисциплины «Графические системы и интерфейс оператора» iconПлан-конспект лекции Тема лекции «Культура Античности»
Зелинский Ф. Ф. Древний мир и мы. Научно популярные статьи [1904]. Спб., 1997. ("Из жизни идей", т. 2)
Конспект лекции дисциплины «Графические системы и интерфейс оператора» iconВопросы к зачёту (1-й семестр)
Прикладное программное обеспечение: системы управления базами данных, графические редакторы
Конспект лекции дисциплины «Графические системы и интерфейс оператора» iconЛабораторная работа Оценка соответствия эргономических параметров рабочего места оператора пэвм
Рассмотреть составляющие элементы рабочего места оператора персонального компьютера (ПК). Ознакомиться с принципами оптимальной организации...
Конспект лекции дисциплины «Графические системы и интерфейс оператора» iconКонспект лекции План лекции Цель, задачи и объекты анализа финансовой...
Одним из видов экономического анализа является финансовый анализ, который с определенной долей условности подразделяется на внутренний...
Конспект лекции дисциплины «Графические системы и интерфейс оператора» iconС. П. Филин Концепции современного естествознания: конспект лекций
Конспект лекций соответствует требованиям Государственного образовательного стандарта высшего профессионального образования РФ и...
Конспект лекции дисциплины «Графические системы и интерфейс оператора» iconДжеф Раскин, Интерфейс: новые направления в проектировании компьютерных систем
...
Конспект лекции дисциплины «Графические системы и интерфейс оператора» icon«Психодиагностика. Конспект лекций»: Эксмо; Москва; 2008 isbn 978-5-699-26681-4
Книга предназначена длястудентов-психологов и представляет собой конспект лекций по психодиагностике. Подробное изложение материала...
Конспект лекции дисциплины «Графические системы и интерфейс оператора» iconПрограмма лекции Адрес Время проведения лекции Участники лекции 12...

Конспект лекции дисциплины «Графические системы и интерфейс оператора» iconТема №1 Первичные графические элементы композиции и основные принципы ее организации
Онятие. Система, структура. Психологические особенности восприятия визуальной информации. Зоны активного восприятия. Взаимосвязь...
Конспект лекции дисциплины «Графические системы и интерфейс оператора» iconДисциплины
Всего часов 108, из них аудиторных занятий 48 (лекции – 32, практические занятия –16)
Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2015
контакты
userdocs.ru
Главная страница