Что вырабатывает транслятор переводящий программу на машинный язык

Компилятор – система программ, осуществляющая трансляцию всей исходной программы в машинную.

Ассемблер – системная программа, осуществляющая процесс перевода исходной программы, заданной на машинно-ориентированном языке (ассемблере), в машинную программу.

Интерпретатор -системная программа, осуществляющая синтаксический контроль операторов исходной программы и последовательное выполнение ее команд.

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

Супервизор – управляющая программа, определяющая очередность выполнения программирования.

Информационное обеспечение (ИО)– совокупность информационных связей, необходимых для выполнения автоматического выполнения (рис. 3.5).

Система управления базой данных
Прогнозы, планы
Справочные данные
Типовые проектные решения
Система документации
Система классификации и кодирования Файлы, блоки данных

Рис. 3.5. Структурная схема информационного обеспечения

Машинный Перевод Против Человеческого / Прогноз: нужен ли английский в будущем?

Лингвистическое обеспечение (ЛО) – совокупность языков программирования, включающая термины, определения, правила формализации естественного языка (рис. 3.6).

Правила формализации естественного языка
ЯПn
Методы сжатия и развертывания текстов

Рис. 3.6. Структурная схема лингвистического обеспечения

Техническое обеспечение (ТО) – совокупность взаимодействий и взаимосвязей технических средств САПР. Ориентировочная структура ТС САПР приведена на рис..

При организации структуры ТС САПР сохраняется принцип иерархичности: каждая система может рассматриваться как самостоятельная система, выполняющая определенные функции САПР независимо от другой.

Методическое обеспечение (МТО) – совокупность документов, описывающих проведение проектировочных работ в целом и по этапам выполнения проектных процедур и содержащих методику описания расчетных и проектных задач. МТО охватывает проведение работ в целом и выделяет этапы выполнения проектных процедур, методику описания проектных задач и тому подобное.

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

В состав ОО входят положения о САПР, инструкции, штатное расписание, функции подразделений и тому подобное.

Рис. 3.7 Структурная схема технических средств САПР

Контрольные вопросы для самопроверки

1. Назовите основные принципы, заложенные в основу автоматизированного проектирования тканей.

2. На каких формах научного познания базируется методология САПР тканей.

3. Что Вы подразумеваете под термином «методология».

Ликбез #2 / Как работают трансляторы: Компилятор vs Интерпретатор

4. Назовите преимущества блочно-иерархического принципа проектирования.

5. В чем заключается цель и сущность деления процесса проектирования на стадии и уровни проектирования.

6. Что такое пространство проектирования.

7. Проанализируйте отличия между стадиями и уровнями проектирования.

9. Назовите признаки классификации САПР.

10. Охарактеризуйте структуру САПР и покажите ее структурный состав автоматизированного комплекса средств проектирования ткани.

11. Назовите и дайте определения структурным подразделениям САПР

Источник: studopedia.su

Типы адресов. Для идентификации переменных и команд используются символьные имена (метки), виртуальные адреса и физические адреса (рис

Для идентификации переменных и команд используются символьные имена (метки), виртуальные адреса и физические адреса (рис. 2).

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

Символьные имена присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.

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

Рисунок 2. Типы адресов

Например, при использовании 32-разрядных виртуальных адресов этот диапазон задается границами 0000000016 и FFFFFFFF16. Тем не менее, каждый процесс имеет собственное виртуальное адресное пространство. Транслятор присваивает виртуальные адреса переменным и кодам каждой программе независимо.

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

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

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

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

Читайте также:
Как сделать значок для программы

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

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Источник: studopedia.ru

ОС / учебник(см. лекции) Корольковой / глава 3

3 Управление памятью 3.1 Функции ОС по управлению памятью — отслеживание свободной и занятой памяти; — выделение памяти процессам и освобождение памяти по завершении процессов; — организация виртуальной памяти; — настройка адресов программы на конкретную область физической памяти; — динамическое распределение памяти; — дефрагментация памяти; — защита памяти. 3.2 Общие замечания На разных этапах жизненного цикла программы используются различные типы адресов: — символьные имена присваивает пользователь при написании на алгоритмическом языке или ассемблере; — виртуальные адреса вырабатывает транслятор, переводящий программу на машинный язык.

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

Различают максимально возможное виртуальное адресное пространство (определяется архитектурой компьютера) и назначенное (выделенное) процессу виртуальное адресное пространство (фактически нужные процессу адреса, первоначально назначается транслятором, размер его может быть изменен во время выполнения). Обычно виртуальное адресное пространство процесса делится на две непрерывные части: системную и пользовательскую (по умолчанию в Windows 2000 эти части имеют одинаковый размер – по 2 Гбайт; пользовательская часть адресного пространства процесса располагается в диапазоне адресов 00000000-7FFFFFFF, системная – 80000000FFFFFFFF). Системная часть виртуальной памяти в ОС любого типа включает область, подвергаемую страничному вытеснению, и область, на которую страничное вытеснение не распространяется. В невытесняемой области размещаются модули, требующие быстрой реакции и /или постоянного присутствия в памяти, например диспетчер потоков.

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

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

В этом случае помимо линейного адреса может быть использован виртуальный адрес, представляющий собой пару чисел (m,n) , где n определяет сегмент, а m – смещение внутри сегмента. Существуют и более сложные способы организации виртуального адресного пространства.

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

Существует два подхода к преобразованию виртуальных адресов в физические: 1. Пересчет виртуальных адресов в физические выполняется один раз для каждого процесса во время начальной загрузки программы в память. Эту операцию выполняет специальная системная программа – перемещающий загрузчик. 2. Программа загружается в память с неизмененными виртуальными адресами.

Во время выполнения программы при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Это так называемое динамическое преобразование адресов. Виртуализация оперативной памяти осуществляется совместно ОС и аппаратными средствами процессора и включает решение следующих задач: — размещение данных в запоминающих устройствах разного типа, например часть кодов программы – в оперативной памяти, а часть – на диске; — выбор образов процессов или их частей для перемещения из оперативной памяти на диск и обратно; — перемещение по мере необходимости данных между памятью и диском; — преобразование виртуальных адресов в физические.

Виртуализация памяти может быть осуществлена на основе двух различных подходов: — свопинг – образы процессов выгружаются на диск и возвращаются в оперативную память целиком; — виртуальная память – между оперативной памятью и диском перемещаются части (сегменты, страницы и т.п.) образов процессов. В современных ОС свопинг как основной механизм управления памятью почти не используется.

Для временного хранения сегментов и страниц на диске отводится специальная область, которую называют страничный файл (страничный файл для временного хранения сегментов и страниц на диске в ОС Windows 2000 называется Pagefile.sys). Текущий размер страничного файла оказывает влияние на возможности ОС: чем больше страничный файл, тем больше приложений может одновременно выполняться, но это замедляет работу системы, так как значительная часть времени тратится на перекачку кодов и данных из оперативной памяти на диск и обратно. Размер страничного файла в современных ОС является настраиваемым параметром, который выбирается администратором системы для достижения компромисса между уровнем мультипрограммирования и быстродействием системы. 3.3 Алгоритмы распределения памяти Рис. 3.1 3.2.1 Распределение памяти фиксированными разделами

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

Читайте также:
Для чего предназначена программа проверки диска

Рис. 3.2 Распределение памяти фиксированными разделами Подсистема управления памятью в этом случае выполняет следующие задачи: — сравнивая размер программы, поступившей на выполнение, и свободных разделов, выбирает подходящий раздел; — осуществляет загрузку программы и настройку адресов. Достоинство: — простота реализации; Недостаток: — жесткость.

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

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

произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера. На рисунке 3.3 показано состояние памяти в различные моменты времени при использовании динамического распределения. Рис.

3.3 Распределение памяти динамическими разделами Задачами операционной системы при реализации данного метода управления памятью является: — ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти; — при поступлении новой задачи — анализ запроса, просмотр таблицы свободных областей и выбор раздела, размер которого достаточен для размещения поступившей задачи, загрузка задачи в выделенный ей раздел и корректировка таблиц свободных и занятых областей; — после завершения задачи корректировка таблиц свободных и занятых областей. Программный код не перемещается во время выполнения, то есть может быть проведена единовременная настройка адресов с помощью перемещающего загрузчика. По сравнению с методом распределения памяти фиксированными разделами данный метод обладает гораздо большей гибкостью, но ему присущ очень серьезный недостаток — фрагментация памяти. Фрагментация — это наличие большого числа несмежных участков свободной памяти очень маленького размера (фрагментов), настолько маленького, что ни одна из вновь поступающих программ не может поместиться ни в одном из участков, хотя суммарный объем фрагментов может составить значительную величину, намного превышающую требуемый объем памяти. 3.3.3 Перемещаемые разделы

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

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

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

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

При загрузке процесса часть его виртуальных страниц помещается в оперативную память, а остальные — на диск. Для каждого процесса ОС создает таблицу страниц – информационную структуру, содержащую записи обо всех виртуальных страниц процесса (Рис. 3.5). Дескриптор страницы включает в себя следующую информацию: — номер физической страницы, в которую загружена данная виртуальная страница; — признак присутствия; — признак модификации; — признак обращения.

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

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

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

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

В данной ситуации может быть использовано много разных критериев выбора, наиболее популярные из них следующие: — дольше всего не использовавшаяся страница; — первая попавшаяся страница; — страница, к которой в последнее время было меньше всего обращений. После того, как выбрана страница, которая должна покинуть оперативную память, анализируется ее признак модификации (из таблицы страниц).

Читайте также:
Программа чтобы уменьшить песню

Если выталкиваемая страница с момента загрузки была модифицирована, то ее новая версия должна быть переписана на диск. Если нет, то соответствующая физическая страница просто объявляется свободной. Рассмотрим механизм преобразования виртуального адреса в физический при страничной организации памяти (Рис. 3.6).

Виртуальный адрес при страничном распределении может быть представлен в виде пары (p, s ), где p — номер виртуальной страницы процесса (нумерация страниц начинается с 0), а s — смещение в пределах виртуальной страницы. Учитывая, что размер страницы равен 2 в степени к , смещение s может быть получено простым отделением k младших разрядов в двоичной записи виртуального адреса. Оставшиеся старшие разряды представляют собой двоичную запись номера страницы p .

Рис. 3.5. Страничное распределение памяти Рис. 3.6. Механизм преобразования виртуального адреса в физический при страничной организации памяти При каждом обращении к оперативной памяти аппаратными средствами выполняются следующие действия: — на основании начального адреса таблицы страниц (содержимое регистра адреса таблицы страниц), номера виртуальной страницы (старшие разряды виртуального адреса) и длины записи в таблице страниц (системная константа) определяется адрес нужной записи в таблице;

— из этой записи извлекается номер физической страницы; — к номеру физической страницы присоединяется смещение (младшие разряды виртуального адреса). Поскольку размер страницы равен степени 2, можно применить операцию конкатенации (присоединения) вместо более длительной операции сложения, это уменьшает время получения физического адреса, а значит, повышает производительность компьютера.

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

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

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

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

Ее значение особенно актуально для 64-разрядных архитектур, где число виртуальных страниц очень велико. Вариантом решения является применение инвертированной таблицы страниц (inverted page table). Этот подход применяется на машинах PowerPC, некоторых рабочих станциях Hewlett-Packard, IBM RT, IBM AS/400 и ряде других. В этой таблице содержится по одной записи на каждый страничный кадр физической памяти.

Существенно, что достаточно одной таблицы для всех процессов. Таким образом, для хранения функции отображения требуется фиксированная часть основной памяти, независимо от разрядности архитектуры, размера и количества процессов. Например, для компьютера Pentium c 256 Мбайт оперативной памяти нужна таблица размером 64 Кбайт строк. Несмотря на экономию оперативной памяти, применение инвертированной таблицы имеет существенный минус – записи в ней (как и в ассоциативной памяти) не

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

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

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

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

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

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru