Перемещаемый модуль - Большая Энциклопедия Нефти и Газа, статья, страница 1
Единственное, о чем я прошу - дайте мне шанс убедиться, что деньги не могут сделать меня счастливым. Законы Мерфи (еще...)

Перемещаемый модуль

Cтраница 1


1 Адреса в исходной программе, объектном и загрузочном модулях и в выполняемой программе. [1]

Перемещаемые модули необходимы также для обеспечения возможности мультипрограммирования. Так как скорость работы центрального процессора гораздо выше скорости работы устройств ввода-вывода, в памяти машины могут располагаться одновременно несколько программ, разделяющих ресурсы системы. Например, если одна программа, занимающая центральный процессор, переходит в состояние ожидания завершения операции ввода-вывода, центральный процессор передается для использования другой программе, имеющей наибольший приоритет и ожидающей его освобождения. Отсюда становится ясно, что одна и та же программа может располагаться при разных запусках в различных местах основной памяти. Место выделяется программе в зависимости от того, какие программы.  [2]

Перемещаемым модулем называется такой модуль, который может быть размещен в любом месте ПАМЯТИ после того, как он оттранслирован. Во время трансляции предполагается, что первой ячейкой памяти, которая может быть занята командами машинного языка каждого модуля, является нулевая ячейка. Все остальные ячейки памяти, необходимые для модуля, назначаются так, как будто это предположение является правильным. Для того чтобы можно было восстановить команды обращения к памяти, во время трансляции создается информация для редактора связей, перемещающего загрузчика и отладки. Эта информация вместе с командами на машинном языке хранится в файле команд на машинном языке, или объектном файле. Позже, когда модули объединяются, или связываются вместе, и когда каждому модулю назначается специальная область в ПАМЯТИ ( когда модуль перемещается в ПАМЯТИ), адрес в каждой команде обращения к памяти настраивается с помощью вышеуказанной информации для редактора связей и перемещающего загрузчика. Независимо от порядка, в котором совершаются редактирование и перемещение, результат должен быть одним и тем же: каждая команда обращения к памяти должна содержать действительный адрес процедуры, структуры данных или команды.  [3]

В библиотеке перемещаемых модулей содержатся модули, которые записаны таким образом, что каждый модуль может быть настроен для работы на любом месте памяти. Модуль может быть завершенной программой или относительно независимой частью большой программы.  [4]

Модули из библиотеки перемещаемых модулей не могут быть считаны в память и выполнены в том виде, в каком они хранятся в библиотеке. Сначала они должны быть помешены в библиотеку готовых программ, либо как постоянный элемент этой библиотеки, либо как временный. Эта функция выполняется Редактором связей. Редактор связей выбирает один пли несколько модулей и объединяет их в одну законченную программу, которую он и помещает в библиотеку готовых программ.  [5]

Может случиться так, что требуемого модуля в библиотеке перемещаемых модулей не окажется, и тогда Редактор связей выдаст сообщение об ошибке.  [6]

С помощью МДОС-86 выполняются следующие основные функции: создание и редактирование исходных текстов; трансляция с языков программирования Макроассемблер-86, Бейсик-86, Фортрак-86, Пас-каль - 86; компоновка перемещаемых модулей из отдельно оттранслированных программ и настройка в загрузочный модуль; отладка программ; загрузка и выполнение программ; инициализация, форматирование, компоновка и восстановление дискет; управление файловой системой.  [7]

Система ДОС 1800 реализует: поддержку двух НГМД с общим объемом памяти 1 Мбайт; доступ к ПУ, к файлам; отладку ( с помощью монитора ДОС 1800); диалоговую интерпретацию команд из файлов на НГМД; динамическое создание и удаление файлов па НГМД и выделение дискового пространства для файлов библиотеку стандартных программ, включая фиксированную и плавающую арифметику; редактирование текстов в командном и экранном режимах и возможность расширения языка редактирования с помощью макросов; программирование на языках высокого уровня ПЛ / М н ФОРТРАН реального времени ( ФОРТРАН РВ); интерпретацию с языка БЕЙСИК; автоматическую компоновку программных модулей в единый объектный перемещаемый модуль; средства настройки на адрес и ведение библиотек объектных модулей; программирование на языке МАКРОАССЕМБЛЕР с расширенными макросредствами и условным ассемблированием.  [8]

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

В DOS пользователю разрешено вызывать подходящую подпрограмму IOCS и для включения ее в свою программу, и для использования ее совершенно независимо от какой бы то ни было программы. Если подпрограмма IOCS включается в программу и представляет вместе с ней единое целое, то поиск в библиотеке во время редактирования не нужен, а если ею будут неоднократно пользоваться как отдельной независимой программой, то объектный модуль должен быть отперфорирован и включен в библиотеку перемещаемых модулей. Когда используются определения DTFCN и DTFSR, подпрограммы IOCS всегда генерируются как часть той программы, которая порождена макрокомандой DTF. Это означает, что если два аналогичных файла определены макрокомандами DTFSR, то одна подпрограмма IOCS будет генерироваться дважды и дважды войдет в программу пользователя. Очевидно, что в этом случае и время трансляции возрастет, и памяти будет использоваться больше, чем на самом деле необходимо. Другие определения порождают для конкретного файла только набор констант, в который входит константа типа V. Для каждого типа определения файла существует своя макрокоманда, порождающая подпрограмму IOCS.  [10]

Если программа, в которой редактируются связи, еще не размещена, редактор связей не может назначить абсолютные адреса памяти для вызовов или для команд обращения к памяти. Он назначает новые перемещаемые адреса и настраивает все адреса в процедурах вызова и командах обращения к памяти относительно нового начального адреса. При этом создается новый перемещаемый модуль на машинном языке из отдельных процедур и модулей, которые были связаны вместе. Связанные таким образом модули могут снова связываться вместе до тех пор, пока, наконец, все вызовы не будут привязаны к соответствующим процедурам. После этого перемещающий загрузчик назначает конкретные ячейки памяти каждой команде в связанном модуле и настраивает адреса каждой команды обращения к памяти, завершая при этом генерацию готового к выполнению модуля.  [11]

На практике, как правило, библиотека сортировки представлена на уровне языка ассемблера или на некотором субъязыковом уровне системы. Субъязыковый уровень - это некоторое представление процедуры, которое не может быть описано или обычно не описывается программистом. В настоящее время программист не пишет процедуры в виде машинных, загружаемых, перемещаемых модулей, а такое представление было бы субъязыковой формой.  [12]

Одной из этих констант будет адресная константа типа V, содержащая название подпрограммы IOCS. Всего имеется несколько сот таких подпрограмм. Обычно для каждой конкретной установки выбирается ряд наиболее часто используемых, и они включаются в библиотеку перемещаемых модулей. Поиск программы по названию, заданному константой типа V, осуществляется автоматически во время работы Редактора связей с помощью предусмотренных в DOS средств, обеспечивающих автоматическое подключение модулей. Найденная программа автоматически включается в редактируемую программу пользователя. Автоматический поиск начинается тогда, когда обнаруживается, что в редактируемом модуле невозможно разрешить какие-либо внешние ссылки.  [13]

Вы должны вызывать загрузчик для любой написанной Вами программы, даже если она состоит только из одного объектного модуля. Если программа состоит из двух или более модулей, то загрузчик сначала объединяет их, а затем преобразует результат в перемещаемый модуль.  [14]



Страницы:      1