Проблема настройки адресов. Концепция виртуальной памяти.
Общепринятая в настоящее время концепция виртуальной памяти появилась достаточно давно. Она позволила решить целый ряд актуальных вопросов организации вычислений. Прежде всего к числу таких вопросов относится обеспечение надежного функционирования мультипрограммных систем.
В любой момент времени компьютер выполняет множество процессов или задач, каждая из которых располагает своим адресным пространством. Было бы слишком накладно отдавать всю физическую память какой-то одной задаче тем более, что многие задачи реально используют только небольшую часть своего адресного пространства. Поэтому необходим механизм разделения небольшой физической памяти между различными задачами. Виртуальная память является одним из способов реализации такой возможности. Она делит физическую память на блоки и распределяет их между различными задачами. При этом она предусматривает также некоторую схему защиты, которая ограничивает задачу теми блоками, которые ей принадлежат. Большинство типов виртуальной памяти сокращают также время начального запуска прои на процессоре, поскольку не весь программный код и данные требуются ей в физической памяти, чтобы начать выполнение.
Другой вопрос, тесно связанный с реализацией концепции виртуальной памяти, касается организации вычислений на компьютере задач очень большого объема. Если программа становилась слишком большой для физической памяти, часть ее необходимо было хранить во внешней памяти (на диске) и задача приспособить ее для решения на компьютере ложилась на программиста. Программисты делили прои на части и затем определяли те из них, которые можно было бы выполнять независимо, организуя оверлейные структуры, которые загружались в основную память и выгружались из нее под управлением прои пользователя. Программист должен был следить за тем, чтобы программа не обращалась вне отведенного ей пространства физической памяти. Виртуальная память освободила программистов от этого бремени. Она автоматически управляет двумя уровнями иерархии памяти: основной памятью и внешней (дисковой) памятью.
Кроме того, виртуальная память упрощает также загрузку программ, обеспечивая механизм автоматического перемещения программ, позволяющий выполнять одну и ту же программу в произвольном месте физической памяти.Системы виртуальной памяти можно разделить на два класса: системы с фиксированным размером блоков, называемых страницами, и системы с переменным размером блоков, называемых сегментами. Ниже рассмотрены оба типа организации виртуальной памяти.
31. Приостановка и возобновление работы процессов.
Система может приостановить процесс в следующих случаях: -если система работает ненадежно и есть признаки, что она может отказать, то текущие процессы можно приостановить, чтобы вновь активизировать впоследствии после исправления ошибки;
-некоторые процессы можно приостанавливать в моменты кратковременных пиков нагрузки системы, с тем чтобы возобновлять их выполнение после того, как нагрузка возвратится к обычному уровню.
диаграмма состояний процесса, модифицированная с учетом операций приостановки и возобновления. В диаграмму введены два новых состояния, а именно «приостановлен_готов» и «приостановлен_блокирован». На рисунке выше штриховой линии изображены активные состояния, а ниже — состояния приостановки.
Инициатором приостановки может быть либо сам процесс, либо другой процесс. В однопроцессорной машине выполняющийся процесс может приостановить только сам себя. В мультипроцессорной машине выполняющийся процесс может быть приостановлен и другим процессом, выполняющимся на другом процессоре.
Процесс, находящийся в состоянии готовности, может быть приостановлен только другим процессом. При этом происходит следующая смена состояния: приостановка(имяпроцесса): готов ? приостановлен_готов Процесс, находящийся в состоянии «приостановлен_готов», может быть переведен в состояние готовности другим процессом. Состояния меняются следующим образом: ?= ->
возобновление(имяпроцесса): риостановлен_готов ? готов Заблокированный процесс может быть переведен в состояние приостановки другим процессом. При этом состояния меняются:
приостановка(имяпроцесса): блокирован ? приостановлен_блокирован Процесс, находящийся в состоянии «приостановлен_блокирован», может быть активизирован другим процессом. При этом состояния меняются: возобновление(имяпроцесса): приостановлен_блокирован ? блокирован
24 Страничная модель управления памятью: механизм преобразования адресов. Структура элемента таблицы страниц.
В системах со страничной организацией основная и внешняя память (главным образом дисковое пространство) делятся на блоки или страницы фиксированной длины. Каждому пользователю предоставляется некоторая часть адресного пространства, которая может превышать основную память компа и которая ограничена только возможностями адресации, заложенными в системе команд. Эта часть адресного пространства называется виртуальной памятью пользователя. Каждое слово в виртуальной памяти пользователя определяется виртуальным адресом, состоящим из двух частей: старшие разряды адреса рассматриваются как номер страницы, а младшие - как номер слова (или байта) внутри страницы.
Управление различными уровнями памяти осуществляется программами ядра ОС, которые следят за распределением страниц и оптимизируют обмены между этими уровнями. При страничной организации памяти смежные виртуальные страницы не обязательно должны размещаться на смежных страницах основной физической памяти. Для указания соответствия между виртуальными страницами и страницами основной памяти ОС должна сформировать таблицу страниц для каждой прои и разместить ее в основной памяти машины. При этом каждой странице прои, независимо от того находится ли она в основной памяти или нет, ставится в соответствие некоторый элемент таблицы страниц. Каждый элемент таблицы страниц содержит номер физической страницы основной памяти и специальный индикатор. Единичное состояние этого индикатора свидетельствует о наличии этой страницы в основной памяти. Нулевое состояние индикатора означает отсутствие страницы в оперативной памяти.
Для увеличения эффективности такого типа схем в процессорах используется специальная полностью ассоциативная кэш-память, которая также называется буфером преобразования адресов (TLB traнсlation-lookasidebuffer). Хотя наличие TLB не меняет принципа построения схемы страничной организации, с точки зрения защиты памяти, необходимо предусмотреть возможность очистки его при переключении с одной прои на другую. Поиск в таблицах страниц, расположенных в основной памяти, и загрузка TLB может осуществляться либо программным способом, либо специальными аппаратными средствами. В последнем случае для того, чтобы предотвратить возможность обращения пользовательской прои к таблицам страниц, с которыми она не связана, предусмотрены специальные меры. С этой целью в процессоре предусматривается дополнительный регистр защиты, содержащий описатель (дескриптор) таблицы страниц или базово-граничную пару. База определяет адрес начала таблицы страниц в основной памяти, а граница - длину таблицы страниц соответствующей прои. Загрузка этого регистра защиты разрешена только в привилегированном режиме. Для каждой прои ОС хранит дескриптор таблицы страниц и устанавливает его в регистр защиты процессора перед запуском соответствующей прои. Отметим некоторые особенности, присущие простым схемам со страничной организацией памяти. Наиболее важной из них является то, что все прои, которые должны непосредственно связываться друг с другом без вмешательства ОС, должны использовать общее пространство виртуальных адресов. Это относится и к самой операционной системе, которая, вообще говоря, должна работать в режиме динамического распределения памяти. Поэтому в некоторых системах пространство виртуальных адресов пользователя укорачивается на размер общих процедур, к которым прои пользователей желают иметь доступ. Общим процедурам должен быть отведен определенный объем пространства виртуальных адресов всех пользователей, чтобы они имели постоянное место в таблицах страниц всех пользователей. В этом случае для обеспечения целостности, секретности и взаимной изоляции выполняющихся программ должны быть предусмотрены различные режимы доступа к страницам, которые реализуются с помощью специальных индикаторов доступа в элементах таблиц страниц. Следствием такого использования является значительный рост таблиц страниц каждого пользователя. Одно из решений проблемы сокращения длины таблиц основано на введении многоуровневой организации таблиц. Частным случаем многоуровневой организации таблиц является сегментация при страничной организации памяти. Необходимость увеличения адресного пространства пользователя объясняется желанием избежать необходимости перемещения частей программ и данных в пределах адресного пространства, которые обычно приводят к проблемам переименования и серьезным затруднениям в разделении общей инфы между многими задачами.
27. Планирование процессов. Требования к алгоритмам планирования, необходимые свойства алгоритмов планирования. Вытесняющее и не вытесняющее планирование.
Планирование необходимо для того, чтобы организовать наиболее производительную работу многозадачной, многопользовательской ОС. В однозадачный однопользовательских ОС ,ОСистемой не ведется никакого планирования запуска на выполнения отдельных процессов. Все задачи планирования в этом случи выполняет пользователь, работающий за однозадачной однопользовательской ОС. Однако для многозадачных многопользовательских ОС (UNIX) есть необходимость в таком планировании, т.к. в очереди на выполнение обычно стоят большое количество различных процессов. Планирование проявляется так же в выделении различных приоритетов, объема ОП, количество выделяемых ресурсов и процессорного времени, предоставляемого отдельным процессам. Для всех ОС соблюдается следующие принципы планирования: Предоставление каждому процессу справедливого (одинакового) количество процессорного времени. Производится принудительное выполнение политики приоритетов выполняющихся процессов.
Планирование производится таким образом чтобы поддерживался максимальный баланс занятости системы. Например: в очереди на выполнение имеются 4 процесса, 2 из которых требуют значительного количество работы устройств ввода вывода и малого количество процессорного времени, а 2 других процесса требуют большого количество процессорного времени и малого времени работы устройств ввода вывода. Все процессы будут выполнятся значительно скорее если они будут запускаться попарно: процесс требующий большого количество работы устройств ввода вывода и малого количество времени процессора, а так же процесс требующий большого количество процессорного времени и малого времени работы устройств ввода вывода.
Для ОС пакетной обработки данных кроме того используются следующие критерии планирования:
Максимальная пропускная способность ЭВМ в целом.
Максимальное использование процессора.
Минимальное время выполнения одного задания (процесса).
Для интерактивных ОС при планировании ведется учет того, что ОС должна обладать минимальным временем отклика на запрос пользователя.
Кроме того в этом случи ОС должна уметь настраиваться под пожелания отдельных пользователей.
Для ОС реального времени при планировании должно обеспечиваться окончание работы процесса к заданному времени для предотвращения потери данных, исключения возможных взаимоблокировок процессов, предсказуемости поведения ОС.
Операции над процессами
Системы, управляющие процессами, должны иметь возможность выполнять определенные операции над процессами, в том числе: -создание (образование) процесса; -уничтожение процесса;
-возобновление процесса;-изменение приоритета процесса; -блокирование процесса; -пробуждение процесса; -запуск (выбор) процесса.
Создание процесса состоит из многих операций, включая такие как: присвоение имени процессу; включение этого имени в список имен процессов, известных системе; определение начального приоритета процесса; формирование блока управления процессом РСВ; выделение процессу начальных ресурсов. Процесс может породить новый процесс. В этом случае первый, порождающий процесс называется родительским процессом, а второй, созданный процесс — дочерним процессом. Для создания дочернего процесса необходим только один родительский процесс. При таком подходе создается иерархическая структура процессов, подобная показанной на рис. 3.4, в которой у дочернего процесса есть только один родительский процесс, но у каждого родительского процесса может быть много дочерних процессов. Уничтожение процесса означает его удаление из системы.
Возобновление процесса – это активизация процесса, выполнение которого было приостановлено. Операция возобновления подразумевает не только непосредственно повторный запуск процесса, но и подготовку процесса к повторному запуску с той точки, в которой он был приостановлен.
Изменение приоритета процесса, как правило, означает модификацию значения приоритета в блоке управления данным процессом.