Сист. прогр. Ч2 (Методические указания к выполнению лабораторных работ по СПО), страница 11

2018-01-12СтудИзба

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

Файл "Сист. прогр. Ч2" внутри архива находится в следующих папках: Методические указания к выполнению лабораторных работ по СПО, сист прогр лабы. Документ из архива "Методические указания к выполнению лабораторных работ по СПО", который расположен в категории "". Всё это находится в предмете "операционные системы" из 7 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "операционные системы" в общих файлах.

Онлайн просмотр документа "Сист. прогр. Ч2"

Текст 11 страницы из документа "Сист. прогр. Ч2"

4. Информацию о расположении адресных констант в сегменте и описание того, каким образом, должны изменяться их значения.

5. Машинные коды, полученные в результате трансляции исходной программы, и приписанные относительные адреса.

Рассматриваемая структура схемы загрузки с непосредственным связыванием аналогична применяемой стандартной схеме загрузки Системы 370. Ассемблер вырабатывает объект­ную колоду, состоящую из карт четырех типов: ESD, TXT, RLD и END. Карты словаря внешних символов (ESD) содержат информацию обо всех символах, которые определены в этой про­грамме, но к которым возможно обращение извне, и обо всех символах, к которым имеются обращения в данной программе, но которые определены где-то вне этой программы. Карты текста (ТХТ) содержат действительные объектные коды оттранслированной программы. Карты словаря перемещаемых символов (RLD) содержат информацию о ячейках программы, содержимое которых зависит от расположения программы в. памяти. Для таких ячеек ассемблер должен обеспечить информацию, позволяющую загрузчику скорректировать их содержимое. Карта END отмечает конец объектной программы и задает адрес, с которого должно начинаться выполнение программы, если она не вызывается другой программой, а является «главной».

Карты ТХТ содержат коды ассемблированной программы.

Формат и использование этих карт аналогичны применяемым для абсолютного загрузчика.

Карты RLD содержат следующую информацию:

1. Адрес каждой константы, которая должна изменяться при перемещении программы.

2. Указание на символ, значение которого определяет вели­чину изменения константы.

3. Операцию, с помощью которой вносится изменение.

Первая RLD-карта нашего примера содержит: число 48 в качестве относительного адреса константы, значение которой подлежит изменению; знак плюс, указывающий, что некоторая величина должна быть прибавлена к значению константы, и поле символа, определяющее, что к относительному адресу 48 .должно быть прибавлено значение внешнего символа JOHN. Относительное значение символа JOHN равно 0. Абсолютное значение будет определено в процессе загрузки программы.

Вторая карта RLD указывает на относительный адрес 60 константы, подлежащей изменению. Поле символа определяет, что к относительному адресу 60 должно быть прибавлено значение внешнего символа SUM. Хотя абсолютное значение адреса символа SUM ассемблеру не известно, позднее правильное значение будет обеспечено загрузчиком.

Процесс корректировки адресных констант для внутренних символов, таких, как TABLE, обычно называют перемещением, в то время как процесс определения содержимого адресных констант для внешних символов, таких, как SUM, обычно называется связыванием. По существу RLD-карты используются в обоих случаях, отсюда они и получили свое название карт словаря перемещения и связывания. Читатель может сравнить рассмотренный механизм с методами, используемыми в двоично-символическом настраивающем загрузчике, рассмотренном ранее.

ДРУГИЕ СХЕМЫ ЗАГРУЗКИ- ОБЪЕДИНИТЕЛИ, СВЯЗЫВАЮЩИЕ ЗАГРУЗЧИКИ, ПЕРЕКРЫВАЮЩИЕ ЗАГРУЗЧИКИ, ДИНАМИЧЕСКИЕ ОБЪЕДИНИТЕЛИ

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

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

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

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

В обоих случаях программы, которые предполагается использовать многократно, обрабатываются только один раз, после чего могут быть загружены тогда, когда это потребуется. Построитель образа памяти относительно прост и обеспечивает высокое быстродействие. Редактор связей несколько более сложен, но обеспечивает большую гибкость при распределении памяти и загрузке.

ДИНАМИЧЕСКАЯ ЗАГРУЗКА

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

Обычно разные подпрограммы данной программы действительно требуются в разное время; например, первый и второй просмотры ассемблера взаимно исключают друг друга. Используя явное определение того, какая подпрограмма содержит обращения к другим подпрограммам, можно задать так называемую структуру с перекрытием (оверлейную структуру), которая указывает на взаимоисключающие подпрограммы. На рис. 14.4a показана программа, состоящая из пяти подпрограмм (А, В, С, D и Е), для которых в совокупности требуется 100К байтов па­мяти. Стрелки показывают, что подпрограмма А содержит обращения только к подпрограммам В, D и Е; подпрограмма В - только к подпрограммам С и Е; подпрограмма D - только к Е; подпрограммы С и Е не содержат обращений к другим под­программам. На рис. 14.4,6 показана взаимосвязь процедур. Обратите внимание на то, что процедуры В и D никогда не выполняются одновременно, это же справедливо и для процедур С и Е. Если загрузить в память только те процедуры, которые в действительности могут быть использованы в некоторый конкретный момент времени, требуемое количество памяти окажется равным определяемому самой длинной ветвью структуры с перекрытием. Для примера, представленного на рис. 14.4.в, требуемое количество окажется равным 70К байтов (процедуры А, В и С). На рис. 14.4.в показано распределение памяти для всех процедур, участвующих в рассматриваемой структуре с перекрытием.





Рис. 14.4. Другие схемы загрузки; а — обращения процедур к подпрограммам; б — структура с перекрытием; в — распределение памяти для процедур.

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

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

ДИНАМИЧЕСКОЕ СВЯЗЫВАНИЕ

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

Более того, все рассмотренные схемы требовали от программиста явного указания тех процедур, которые могут потребоваться.

Весьма общий тип схемы загрузки, называется динамическим связыванием. Это механизм, с помощью которого загрузка и связывание по внешним ссылкам откладываются до выполнения программы. Это означает, что ассемблер вырабатывает текст и информацию для объединения и настройки адресов для исходной программы. Загрузчик загружает только основную программу. Когда основная программа выполняет команды перехода по внешним адресам или обращается к внешним переменным, т. е. к переменным, не определенным в данном сегменте, вызывается загрузчик. Только теперь выполняется фактическая загрузка в память сегмента, содержащего внешний адрес, к которому было сделано обращение.

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

15. ЯЗЫКИ ПРОГРАММИРОВАНИЯ

Настоящая глава преследует три основные цели:

1. Отметить наиболее важные свойства языков высокого уровня.

2. Кратко обсудить использование этих свойств в системном
программировании.

3. Познакомить с языком С, как примером входного языка, используемого при создании компилятора.

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

ЗНАЧЕНИЕ ЯЗЫКОВ ВЫСОКОГО УРОВНЯ

Языки высокого уровня приобретают все возрастающую poль в программировании. Они эффективно используются, для решения задач, которые до сих пор считалось необходимым программировать на языке ассемблера. Например, операционная система UNIX написана на С. Мы рассмотрим здесь некоторые преимущества использования таких языков.

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

1. Меньше исполнителей, проще управление.

Исследования показали, что, как правило, количество строк программы, которое программист может написать и отладить в единицу времени, не зависит от уровня применяемого языка программирования. А так как язык высокого уровня обычно приблизительно в 10 раз более выразителен, чем язык ассемблера, т. е. одно предложение языка высокого уровня эквивалентно 10 предложениям языка ассемблера, для решения одной и той же задачи требуется меньше программистов, тем самым упрощается руководство таким коллективом. Кроме того, работа в небольшой группе зачастую способствует дополнительному росту производительности.

2. Сокращение времени обучения.

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

3. Проще отладка.

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

4. Хорошая документация.

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

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