КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Тема 3.7 Создание оверлейных модулей
Тема: Долговременно хранимые модули
Цель работы Научиться использовать стандартные модули Турбо Паскаля
Стандартный модуль System - единственный, который не нужно указывать в предложении Uses -содержит "библиотеку времени выполнения" (стан-дартные математические функции и т.п.). Имеются следующие стандартные модули: System, dos, Crt, Overlay, Printer, Graph, Turbo3 и Graph3. Они, кроме З последних, содержатся в файле Turbo.TPL ("библиотека модулей"),.a Graph.TPU — в директории BGI. ТигbоЗ и Graph3 даны для совместимости с ранней версией Турбо Паскаля. Модуль dos содержит блоки, обеспечивающие доступ ко всем средствам операционной системы PC DOS. Блоки "даты-времени", позволяющие датировать последовательные версии файла, распечатки программы, измерять время выполнения ее частей. Модули Strings (библиотека блоков для работы со строками типа PChar) и WinDos — с целью реализации возможностей системы MS DOS с использо-ванием строк типа PChar. Модуль WinDos используется взамен модуля dos. Пример. Процедура GetTime дает текущее время: час, минуты, секунды, доли секунды. Измерим время выполнения "бессодержательного" цикла: ……… Uses dos; Var hour, min, sec, dec: Word; j, t1: longint; Begin GetTime(hour min,sec,dec); t1:= hour*3600 + min*60 + sec; For j:= 1 to 10000000 do; {"Пустой" цикл} GetTime(hour,min,sec,dec); Writeln(hour*3600 + min*60 +sec - t1) End. Библиотечный файл TURBO.TPL можно расширять. Длительно и коллективно используемые библиотеки блоков лучше хранить не в виде TPU-файлов, а "встроить" в систему путем помещения их в файл Turbo.TPL. Вам поможет это сделать утилита (вспомогательная системная программа) TPUMOVER. В результате упрощается использование библиотечных блоков. Следует иметь в виду, что файл Turbo.TPL автоматически загружается компилятором в оперативную память и чрезмерное его увеличение нежелательно.
Вопросы для самоконтроля
1.Какие стандартные модули имеются в Турбо Паскале 2.Какие из них необязательно объявлять в предложении Uses 3.Какие из стандартных модулей содержатся в файле Turbo.tpl Цель работы: Научиться создавать и отлаживать оверлейные модули Модули входящие в программу могут быть указаны как оверлейные, то есть потенциально перекрывающие друг друга в памяти. На этапе выполнения основная программа и модули постоянно хранятся в памяти, а оверлеи заносятся в оверлейный буфер. Оверлеи – это модули которые не нужны одновременно. На рисунке 18 показана оверлейная структура, а под нею минимальный расход памяти для этой структуры, длина элементов изображает расходуемый объем памяти.
Рисунок 18- оверлейная структура
Использование языка Turbo Pascal для программирования реальных задач в ряде случаев осложняется ограничениями, связанными с размещением больших программ в оперативной памяти. В общем случае без использования специальных Средств максимальный размер программы не может превышать объем свободной оперативной памяти. В целях преодоления этого естественного ограничения в системе Turbo Pascal имеется специальный механизм, который называется оверлейным. Применение оверлейного механизма позволяет разрабатывать большие и сложные программы, размер которых значительно превышает объем оперативной памяти. Базовым принципом оверлейного механизма является представление программы в виде совокупности фрагментов, которые попеременно занимают одну и ту же область оперативной памяти. При необходимости выполнения того или иного фрагмента он загружается в оперативную память, быть может, вытесняя из нее ранее выполнявшийся фрагмент. Оверлейный механизм является известным и наиболее распространенным методом преодоления ограничений по оперативной памяти в отсутствие у операционной системы средств виртуализации памяти. Кроме системы Turbo Pascal, развитый оверлейный механизм используется, например, при формировании объектного кода в системе Clipper. Как правило, алгоритм размещения и удаления оверлейных фрагментон реализуется специальным системным монитором, который поменяется в код разрабатываемой программы. Естественно, оверлейная программа будет выполняться медленнее, чем выполняется (или могла бы выполняться) эквивалентная ей обычная программа, за счет времени подкачки оверлейных фрагментов. Однако это замедление является необходимой платой за выигрыш в общем размере программы. Средства построения оверлейных структур в языке Turbo Pascal достаточно просты для использования (сохраняя в этом отношении общий дух ясности и компактности языка Pascal), и базируются на следующих основных принципах.
1. Оверлейная программа должнабыть реализована как управляющия (резидентная) часть, которая постоянно будет находиться в памяти, и несколько оверлейных фрагментов, коды которых будут попеременно загружаться в специальный оверлейный буфер в оперативной памяти, который автоматически выделяется между сегментом стека и динамической областью памяти. По умолчанию для оверлейного буфера выбирается минимальный возможный размер, но во время выполнения программы его размер может быть легко увеличен путем выделения дополнительной области.
2. Оверлейные фрагменты должны быть оформлены в виде МОДУЛЕЙ, снабженных специальной директивой ($0+).
3 Никаких дополнительных языковых конструкций для оверлейного механизма не предусматривается; все средства управления оверлеями сосредоточены в системном модуле Overlay.
4. При трансляции оверлейной программы Turbo Pascal-компилятор работает следующим образом: управляющая (неоверлейная) часть программы оформляется в виде ЕХЕ-файла; все оверлейные части (то есть коды модулей) объединяются в файл с тем же самым именем, но с расширением.ovr: 5. Все обращения к оверлейным процедурам и функциям должны осуществляться посредством дальнего типа вызовов. Для этого такие подпрограммы (или оверлейные модули в целом), а также основную программу необходимо компилировать с включенной директивой $F или добавив после заголовка подпрограмм служебное слово tar.
6. Основная часть оверлейной программы должна, естественно, содержать описатель uses, в котором перечисляются используемые оверлейные модули (в этом же описании могут быть указаны и неоверлейные модули, используемые программой). Первым модулем в описании должен быть указан системный модуль Overlay. Кроме того, вслед за этим описанием должны размещаться директивы компилятора, указывающие, какие модули из перечисленных в описании uses являются оверлейными. Каждая такая директива имеет вид: ($0 Имя_модуля) Имя_модуля в этой директиве должно идентифицировать дисковый файл с кодом оверлейного модуля (tpu-файла). Допускаегся указание дисковода и/или цепочки объемлющих каталогов. Расширение имени (tpu) может быть опущено. Заметим, что из всех системных модулей Turbo Pascal в качестве оверлейного может быть использован ТОЛЬКО модуль dos.
7. В теле главной программы перед первым обращением к какой-либо оверлейной подпрограмме должен быть вызов стандартной процедуры Ovrlnit из модуля Overlay. Эта процедура инициализирует подсистему управления оверлеями; единственным ее параметром является строка с именем файла, в котором собраны коды оверлейных модулей (ovr-файл).
Дата добавления: 2014-01-07; Просмотров: 643; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |