Студопедия

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника



Базовые классы VCL




Читайте также:
  1. Базовые
  2. Базовые алгоритмы
  3. БАЗОВЫЕ ДВИЖЕНИЯ
  4. Базовые документы по PR
  5. Базовые знания анатомии человека
  6. Базовые идеи анархизма, национализма, фашизма, пацифизма, феминизма, глобализма, антиглобализма, религиозного фуендаментализма.
  7. Базовые категории финансового менеджмента
  8. Базовые классы VCL. Характеристика. Примеры.
  9. Базовые конструкции структурного программирования

В основе иерархии объектов библиотеки VCL лежит класс TObject. Он обеспечивает выполнение важнейших функций “жизнедеятельности” любого объекта. Благодаря ему каждый класс получает в наследство механизмы создания экземпляра объекта и его уничтожения.

Обычно разработчик не задумывается о том, как объект будет создан, и что необходимо сделать для его корректного уничтожения. Компоненты VCL создаются и освобождают занимаемые ресурсы автоматически. Иногда разработчику приходится создавать и удалять объекты самостоятельно. Но даже в этом случае ему достаточно вызвать соответствующие конструктор и деструктор:

Var SomeList : TStrings;

. .

SomeList := TStrings.Create;

. . .

SomeList.Free;

За кажущейся простотой этих операций скрывается довольно сложная реализация указанных процессов. Практически весь исходный код класса TОbject написан на ассемблере для обеспечения наибольшей эффективности операций, которые будут выполняться в каждом его потомке. Кроме того, класс TОbject обеспечивает создание и хранение информации об экземпляре объекта и обслуживание очереди сообщений.

Класс TРersistent происходит непосредственно от класса TОbject. Он обеспечивает своих потомков возможностью взаимодействовать с другими объектами и процессами на уровне данных. Его методы позволяют передавать данные в потоки, а также обеспечивают взаимодействие объекта с инспектором объектов.

Класс TСomponent служит основой для всех компонентов Delphi. Этот класс задает базовое поведение всех компонентов – их основные свойства и методы. К ним относятся:

возможность отображения компонента в палитре компонентов и управления им в дизайнере форм;

возможность выступать контейнером для других компонентов;

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

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

Для создания визуальных компонентов базовым является TСontrol, а для создания компонентов, имеющих окна, – класс TWinControl. Визуальные компоненты являются элементами управления. Элементы управления – это варианты стандартных элементов управления Windows. Примером элемента управления является “кнопка”. Пользователь может произвести некоторое действие, выполнив щелчок на этой кнопке. Компонент “Меню” видим и доступен для редактирования только разработчику приложения. Для него этот компонент является инструментом, используемым для создания меню. Во время работы программы пользователь видит только результат работы “Меню”, а не сам элемент.



В дальнейшем изложении эти два понятия компонент и элемент управления являются синонимами. Все элементы управления являются компонентами, но не все компоненты – элементы управления.

Общие предки обуславливают общие свойства компонентов. Рассмотрим только те, которые имеют самое широкое распространение.

 

 

151. Странично – сегментная организация памяти

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



Из рисунка сразу видно, что этот способ организации виртуальной памяти вносит ещё большую задержку доступа к памяти. Необходимо сначала вычислить адрес дескриптора сегмента и прочитать его, затем вычислить адрес элемента таблицы страниц этого сегмента и извлечь из памяти необходимый элемент, и уже только после этого можно к номеру физической страницы приписать номер ячейки в странице (индекс). Задержка доступа к искомой ячейке получается по крайней мере в три раза больше, чем при простой прямой адресации. Чтобы избежать этой неприятности, вводится кэширование, причем кэш, как правило, строится по ассоциативному принципу. Другими словами, просмотры двух таблиц в памяти могут быть заменены одним обращением к ассоциативной памяти.

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



Оценим достоинства сегментно-страничного способа. Разбиение программы на сегменты позволяет размещать сегменты в памяти целиком. Сегменты разбиты на страницы, все страницы сегмента загружаются в память. Это позволяет уменьшить обращения к отсутствующим страницам, поскольку вероятность выхода за пределы сегмента меньше вероятности выхода за пределы страницы. Страницы исполняемого сегмента находятся в памяти, но при этом они могут находиться не рядом друг с другом, а «россыпью», поскольку диспетчер памяти манипулирует страницами. Наличие сегментов облегчает реализацию разделения программных модулей между параллельными процессами. Возможна и динамическая компоновка задачи. А выделение памяти страницами позволяет минимизировать фрагментацию.

Однако, поскольку этот способ распределения памяти требует очень значительных затрат вычислительных ресурсов и его не так просто реализовать, используется он редко, причем в дорогих, мощных вычислительных системах. Возможность реализовать сегментно-страничное распределение памяти заложена и в семейство микропроцессоров i80x86, однако вследствие слабой аппаратной поддержки, трудностей при создании систем программирования и операционной системы, практически он не используется в ПК.

 


Дата добавления: 2014-12-23; просмотров: 20; Нарушение авторских прав







lektsii.com - Лекции.Ком - 2014-2021 год. (0.026 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты