
- •Системное программное обеспечение Кошкин в. В.
- •Место программных средств в вычислительных системах
- •Состав по
- •Общие требования к программному обеспечению
- •Требования к проектируемому программному обеспечению
- •(2) Основные принципы проектирования программного обеспечения (по).
- •Механизмы выполнения программы
- •Последовательность выполнения программы. Основные положения.
- •2) Понятие процедур.
- •(3) Прерывания
- •(4) Процедура ввода/вывода.
- •Управление реальной памятью.
- •Управление виртуальной памятью.
- •Р абота с файлами.
- •Планирование заданий.
- •Распределение ресурсов
- •Защита пользователей.
- •Синхронизация процессов. (1) Синхронизация. Мониторы как инструмент синхронизации.
- •(2) Синхронизация. Реализация взаимного исключения. Семафоры.
- •Загрузчики.
- •Загрузчик, абсолютный загрузчик
- •Перемещающий загрузчик.
- •Управление процессами загрузки.
- •Связывающие загрузчики.
- •Динамическое связывание.
- •Макропроцессоры. (1) понятия о макропроцессорах.
- •(2 )Варианты построения макропроцессоров.
- •Компиляторы Основные функции компиляторов. Последовательность компиляции.
- •Свойства компиляторов, варианты построения.
- •Интерпретаторы.
- •Компиляторы в р-код.
- •Автоматизация процедуры компиляции.
- •Тестовое по. Основные принципы построения тестового по.
- •Основы методики тестирования.
- •Генерация тестовых последовательностей.
- •Вопросы для подготовки к экзаменам по Системному программному обеспечению
- •Объектный файл 1.Obj
- •Выполняемый файл 1.Exe
- •Если нужны изменения
Управление реальной памятью.
В простых вычислителях, когда процессор выполняет одну процедуру последовательно, формирование адресов в память, модификация их не представляет затруднения, поскольку вся информация находиться в регистрах: счетчике команд, сегментных, базовых, индексных. При переходе к подпрограммам содержимое этих регистров автоматически сохраняется в стеке и не теряется. «Потеря адреса» может произойти лишь при невнимательности, при сохранении значений регистра. Другое дело, если вычислитель решает несколько задач, т.е. в режиме мультипрограммирования. Переход из одной задачи в другую требует не только сохранения содержимого основных регистров, но и изменение адресов операндов, с которыми работает задача. Вероятность появления ошибки здесь значительно выше. Если загружается несколько заданий ОС должна обеспечить разделение памяти между процессами.
Существует два подхода к разделению памяти: 1) статический – когда каждому процессу выделяется свой раздел и область. Разделы, их количество их размер и расположение в памяти заранее определены. Поэтому их называют разделы фиксированной длины. 2) динамический – когда разделы назначаются перед выполнением задания. Размеры их переменные, после выполнения задания разделы меняются.
Разделы фиксированной длины.
Н
Задание 4
Задание
3
Задание
2
Задание
1
свободно
апример,
в поле памяти выделено 4 области,
соответственно в каждую загружено
задание 1;2;3;4. Причем не обязательно, что
и но загружаются в последовательные
области, каждое задание размещается в
области памяти, близкой по объему к
заданию и лишь последнее – что достанется.
Условие – область памяти превышает
требуемый объем задания. При выполнении
текущего задания, пока оно было не
завершено, оно остается в области, куда
было загружено. Если задание закончено,
в эту область записывается следующее,
если может в ней разместиться. Если не
размещается, записывается то задание,
которое стоит в очереди. Нет очереди,
тогда новое задание запишется после
освобождения соответствующего раздела.
Самое важное – выбор величины размера.
Для выполнения больших заданий число
разделов д.б. большим, но вместе с тем
д.б. и малые разделы, чтобы обеспечить
эффективное использование всей памяти.
Статический способ эффективен тогда,
когда размеры большинства заданий
находятся в приделах отведенных разделов.
При неизменном деление каждое задание
отождествляется со страницей. И
эффективные адреса формируются в
приделах страницы, запись с учетом
адреса страницы.
При переменном размере разделов, каждому поступающему заданию отводиться свой объем памяти. Допустим первому заданию от 0, второму дальше и т.д. Промежутков между областями памяти нет. По мере того как загруженные задания выполняются, на их место могут размещаться следующие. При условии, что свободные объем не меньше требуемого. В результате через некоторое время может образоваться несколько фрагментов- заданий, разделенных пустыми областями. Конечно, эти пропуски динамичны, в зависимости от объема задания. В ОС нет необходимости назначать размер заранее, но ее обязанность следить какие области заняты, какие свободны. Поэтому ведется связной список. Когда раздел свободен, отведенная ему память объединяется со смежными областями. В не зависимости от используемого способа, разделы памяти должны быть защищены. При выполнении задания в одном разделе программ, другие разделы д.б. для него закрыты. При этом требование записи в другие разделы отменяется всегда. Процедура чтения иногда допускается. Поскольку при формировании адресов запись чтение должна выполняться в приделах своего раздела, механизм защиты памяти основан на адресном принципе. Первый вариант – в систему вводиться два граничных регистра. Первый содержит начальный адрес раздела, второй – конечный адрес раздела. Эти регистры аппаратные. Программа пользователя не может изменить содержимое этих регистров, они переписываются в режиме супервизора. Необходимость перезаписи содержимого в граничных регистрах возникает при смене задания, т.е. каждое задание отражается в граничных регистрах крайними адресами. Каждая процедура доступа к памяти (адрес сравнивается с содержимым граничных регистров) при не совпадении (вне интервала) формируется сигнал прерывания. Не смотря на то, что этот метод прост и надежен, он требует дополнительных аппаратных средств, поэтому применяют второй путь – вводиться специальный ключ (регистр) с малой разрядностью, называемый ключ защиты памяти. Содержимое этого ключа устанавливается программно. Каждый пользовательский процесс, программа имеет свой N разрядный код – индитификатор процессора. Этот номер записывается в ССП. Когда происходит распределение памяти ОС присваивает ключам всех блоков памяти значение индитификатора (как бы регистр расширения). При обращении пользовательской программы к памяти автоматически сравнивается содержимое индитификатора из ССП с ключом защиты адресуемой памяти. При несовпадении формируется программное прерывание – захват. Аппаратные затраты здесь меньше, но 1) увеличивается разрядность ССП 2) ключи также нужно перераспределять программно, значит требуется память и для них. Таким образом, в обоих вариантах процедура защиты (дозволенности) требует дополнительных аппаратных средств (либо регистров со схемами, либо увеличение требуемой памяти.).
Если в вычислителе нет защиты памяти, для корректной работы необходимо более тщательно контролировать адреса, формируемые при обращении к памяти.
Поскольку распределение памяти чаще применят динамическое, одна из проблем - возникновения свободные (не занятых) областей памяти.
Ограниченный объем таких разделов часто не позволяет записать новое задание, поскольку не укладывается не в один из свободных разделов. Отсюда необходимость перемещения в памяти занятых используемых разделов.
Фрагментация. При фрагментации не занятые области объединяются, а занятые становятся смежными. Освобождается большое единое пространство, в которое можно разместить новый большой процесс (или следующий). Поскольку перемещение в памяти фрагментов, требует процедур перезаписи, фрагментация занимает определенное время. Но только времени мало. При перезаписи изменяются текущие адреса, перенесенные из одной области в другую. Адреса переходов, абсолютно назначенные в перенесенной программе, д.б. изменены автоматически. С этой целью выделяется специальный регистр – регистр перемещений, который является как бы базовым. И реальный адрес переходов формируется с учетом значений этого регистра. Т.о. текущий адрес вычисляется с учетом регистра перемещений. Ос должна выполнять эту процедуру так, чтобы пользователь ее не замечал. Процедура фрагментации – дополнительное при размещении в памяти задание.