Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » 10_Модульное программирование

10_Модульное программирование (В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования), страница 5

PDF-файл 10_Модульное программирование (В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования), страница 5 Практика расчётов на ПЭВМ (37023): Книга - 1 семестр10_Модульное программирование (В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования) - PDF, страница 5 (37023) - СтудИзба2019-04-28СтудИзба

Описание файла

Файл "10_Модульное программирование" внутри архива находится в папке "В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования". PDF-файл из архива "В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 1 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 5 страницы из PDF

Аналогично, в поле с именем N второго операнда командыmov cx,Nзапишется значение 1000:mov cx,1000Итак, если для каждого внешнего имени найдена входная точка в другом объектном модуле, торедактор внешних связей нормально заканчивает свою работу, выдавая в качестве результата загрузочный модуль. Загрузочный модуль, как и объектный, состоит из тела модуля и паспорта. Тело загрузочного модуля содержит все его сегменты, 2 а в паспорте собраны необходимые для дальнейшейработы данные:• информация обо всех сегментах (длина и класс сегмента), в частности, данные о сегментестека;• информация обо всех ещё неопределённых полях в сегментах модуля;• информация о расположении входной точки программы (в нашем примере – меткиStart);• другая необходимая информация.На рис.

10.2 показан схематический вид загрузочного модуля, полученного для первого вариантанашего примера (со склеиваемыми сегментами). Заметьте, что параметры сегментов public и common уже не нужны. Внутри сегмента кода показаны незаполненные поля (они подчёркнуты). МеткуStart можно рассматривать как единственную входную точку загрузочного модуля.1В некоторых технологиях программирования программные комплексы разрабатываются большими коллективами программистов, которые, вообще говоря, могут быть разбросаны по всему миру, и общаться междусобой только по сети.

В таких системах предпринимаются специальные меры, обеспечивающие уникальностьвсех внешних имён (в частности, и имён самих модулей). См. например [19].2В загрузочном модуле могут не храниться "пустые" сегменты данных, которые состоят только из директив резервирования памяти без начальных значений. Для сегментов данных, в которых есть области памяти,как с начальными значениями, так и без начальных значений, лучше сначала описывать области памяти с начальными значениями. Это даёт возможность помещать такой сегмент данных в загрузочный модуль в "урезанном" виде, все области данных без начальных значений в файл не записываются, что позволяет уменьшить размер файла загрузочного модуля.

Заметим, что некоторые компиляторы с языков высокого уровня создают дляэтих целей разные сегменты данных для констант, инициализированных переменных и переменных без начальных значений. Разумеется, в паспорте загрузочного модуля хранится полная информация обо всех его сегментах (в частности, об их длине).13p.exeStk segment stackData segmentCode segmentStart: mov ax,Data. . .call Code:Sum. . .Рис. 10.2. Схематический вид загрузочного модуля, незаполненные поля в сегментах подчёркнуты.Вот теперь всё готово для запуска программы на счёт. Осталось только поместить нашу программу в оперативную память, задать значения незаполненным полям и передать управление на начало программы (в нашем примере – на метку с именем Start). Эту работу делает служебная программа, которая называется статическим загрузчиком (далее мы познакомимся и с другим видом загрузчика – динамическим загрузчиком).

Сейчас мы рассмотрим схему работы статического загрузчика.10.3. Схема работы статического загрузчикаПри своём вызове статический загрузчик (в дальнейшем – просто загрузчик) получает в качествепараметра имя файла, в котором хранится загрузочный модуль. Работа начинается с чтения паспортазагрузочного модуля и определения объёма памяти, необходимого для счёта программы.

Обычно этосумма длин всех сегментов программы, однако иногда в процессе счёта программа может запрашивать и дополнительные сегменты (или, как говорят, блоки) памяти. Эти блоки чаще всего используются для размещения динамических переменных, так как заранее неизвестно, сколько памяти потребуется для хранения этих динамических переменных. Иногда в паспорте можно указать минимальный объём дополнительной памяти, без наличия которого нельзя запускать программу на счёт, имаксимальный объём такой памяти, который может запросить программа. 1Итак, если на компьютере нет необходимого объёма свободной памяти, то загрузчик выдаёт аварийную диагностику о нехватке памяти (insufficient memory) и не запускает программу на счёт.

Впротивном случае из загрузочного модуля читаются и размещаются в памяти все сегменты этого модуля, 2 для каждого сегмента, таким образом, определяется адрес его начала в оперативной памяти.Затем загрузчик просматривает паспорт загрузочного модуля и заполняет в его сегментах всеполя, которые ещё не имели необходимых значений.

В нашем предыдущем примере для загрузочного модуля p.exe это поля с именами Data и Code в сегменте команд (см. рис. 10.2). В эти поля загрузчик записывает соответственно адреса начал сегментов данных и кода, делённые на 16. 3 На этомнастройка программы на конкретное месторасположение в оперативной памяти заканчивается.Далее загрузчик, анализируя паспорт, определяет тот сегмент, который будет начальным сегментом стека программы (как мы знаем, этот сегмент имеет параметр Stack в директиве начала сегмента). Адрес начала этого сегмента, делённый на 16, записывается в сегментный регистр SS, а длина1Максимальный объём дополнительной памяти указывается из соображений безопасности, чтобы из-заошибок в программе она не стала запрашивать в цикле всё новые и новые блоки памяти, что может сильно помешать счёту других программ.2Как мы уже упоминали, "пустые" сегменты, содержащие только переменные без начальных значений, взагрузочном модуле обычно не хранятся, такие сегменты не читаются из файла, а просто размещаются на свободных местах памяти и, естественно, области памяти в них не будут иметь конкретных начальных значений.3Наш компилятор с Ассемблера те поля, которые заполняются редактором внешних связей, помечает влистинге программы как 0000 E , а те поля, которые заполняет загрузчик – как ---- R .14этого сегмента – в регистр вершины стека SP.

Таким образом, стек программы теперь готов к работе. 1И, наконец, последним действием загрузчик производит дальний абсолютный переход на началозагруженной программы, например, по командеjmp Code:StartЗдесь Code – адрес начала головного кодового сегмента, а Start – адрес (смещение) входнойточки программы, с которой начинается её выполнение (эта информация, как уже говорилось, содержится в паспорте загрузочного модуля).

Далее начинается собственно выполнение загруженнойпрограммы.Как можно догадаться из описания схемы работы загрузчика, макрокоманда finish должна, вконечном счете, как-то возвратить управление загрузчику, чтобы он освободил занимаемую программой память и подготовился к загрузке следующей программы. Такой же возврат к загрузчикудолжен производиться и при аварийном завершении программы, например, при делении на ноль. 2Очевидно, что это должна делать процедура-обработчик соответствующего прерывания, котороепроисходит при выполнении макрокоманды finish. В нашем курсе мы не будем более подробнорассматривать весь этот механизм.В заключение рассмотрения схемы работы загрузчика отметим, что иногда, хотя и редко, требуется в одной служебной программе объединить функции редактора внешних связей и загрузчика.Например, это может понадобиться в том случае, когда некоторая программа получает новый объектный модуль или изменяет один или несколько существующих объектных модулей и тут же хочетзагрузить и выполнить изменённую программу.

Системная программа, которая объединяет в себефункции редактора внешних связей и загрузчика, называется обычно связывающим загрузчиком. Внашем курсе мы не будем изучать подробности работы связывающего загрузчика.Итак, мы изучили схему разработки и выполнения модульной программы, эта схема включает всебя следующие этапы:• Разбиение задачи на подзадачи.• Реализация каждой такой подзадачи в виде модуля на некотором языке программирования, такой модуль принято называть исходным модулем.• Синтаксическую отладку каждого модуля путём его компиляции в объектный модуль.• Сборка из объектных модулей загрузочного модуля с помощью редактора внешних связей.• Запуск загрузочного модуля на счёт с помощью служебной программы-загрузчика.Два последних этапа определяют схему счёта, которая носит название "статическая загрузка истатическое связывание модулей", здесь имеется в виду, что до начала счёта программы вся она располагается в оперативной памяти компьютера и все статические связи между модулями уже установлены.

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

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

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5209
Авторов
на СтудИзбе
430
Средний доход
с одного платного файла
Обучение Подробнее