Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Ресурс – это абстрактная структура, имеющая множество атрибутов, характеризующих способы доступа к ресурсу и его физическое представление в системе 1 страница



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

Ресурс может быть выделен задаче операционной системой в трёх случаях:

ресурс свободен и в системе нет запросов на него от задач с более высоким приоритетом;

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

ресурс используется задачей с более низким приоритетом и может быть временно у неё отобран.

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

Внешняя память тоже является разделяемым ресурсом, но её особенностью является разделение как дискового пространства, так и доступа к данным. Дисковое пространство может разделяться одновременно и попеременно, а доступ только попеременно.

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

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

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

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

       
 
 
   
Непривилегированные Привилегированные Реентабельные Повторно входимые


Рис. 1.6. Классификация программных модулей.

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

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

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

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


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

Появление в архитектуре вычислительных систем контроллеров внешних устройств создало возможность разгрузки центрального процессора от операций ввода-вывода. В операционных системах ранних поколений на время операций ввода-вывода центральный процессор стал простаивать, что было непростительной расточительностью для дорогого устройства. Схема такой работы показана на рис. 1.7,а. Процесс развернут во времени t, серыми прямоугольниками показана работа центрального процессора, белыми – работа устройства ввода (или вывода). Буквами А и Б обозначены задачи. Как видно из рис. 1.7,а время ТИ выполнения обеих задач равно сумме длительностей задач, причём в течение длительных отрезков времени процессор будет простаивать.

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

 
 



а)

б)

Рис. 1.7. Монопрограммный (а) и мультипрограммный (б) режимы работы

На рис. 1.7,б показана работа операционной системы в мультипрограм­мном режиме. В этом режиме на время операций ввода-вывода процессор переключается с решения одной задачи на решение другой. В результате время выполнения задач несколько увеличивается, но общее время ТИ выполнения обеих задач уменьшается, т.е. производительность вычислительной системы увеличивается. Мультипрограммирование является синонимом слова "многопроцессность". При этом подразумевается обособление процессов друг от друга посредством выделения индивидуальных виртуальных адресных пространств в памяти и назначения других ресурсов.

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

Поскольку процессы могли содержать разные задачи, то появился многозадачный режим, а т.к. задачи могут принадлежать разным пользователям, то появился и многопользовательский режим. В мультизадачном режиме в противовес мультипрограммному режиму обеспечивается взаимодействие между вычислениями. Для подчёркивания этой разницы были введены термины "легковесные процессы" (thin), они же потоки выполнения, нити и треды (threads). Легковесными они называются потому, что процессору не требуется для их реализации организовывать полноценную виртуальную машину. Единственно, что имеют легковесные процессы своего, это процессорное время, всё остальное у связанных легковесных процессов общее. Наличие легковесных процессов позволило организовать много поточное выполнение задач.

Контрольные вопросы:

Перечислите основные функции операционной системы?

Что такое привилегированные и непривилегированные команды?

Что такое модули операционной системы?

Что такое ядро операционной системы?

Что такое монолитное ядро?

Нарисуйте и поясните структуру слоёной операционной системы?

Что такое супервизор?

Что такое микроядерная операционная система?

Что такое BIOS, где она находится при старте вычислительной машины и где помещается во время её работы?

Что такое переносимый и непереносимый модуль операционной системы?

Что такое системный запрос?

Что такое интерфейс прикладного программирования?

Что такое операционная среда?

В чём причина отказа работы программы пользователя при запуске её в другой операционной системе?

Как обеспечить переносимость программ из одной операционной системы в другую?

Что такое очередь, и как она работает?

Как происходит адресация в стеке?

Что такое стек, и как он работает?

Можно ли прочитать данные, записанные в стек, после их считывания?

Что такое машинная команда? Какова её структура (формат)?

Что такое адресация? Какие существуют способы адресации?

Что такое непосредственная адресация?

Что такое прямая адресация?

Что такое регистровая адресация?

Что такое косвенная адресация?

Каким образом процессор распознаёт способ адресации операндов в машинной команде?

Что такое прерывание?

Что такое состояние процесса вычислений? Где оно хранится?

Что такое контекст программы?

Что такое дескриптор программы, и какова его структура?

Нарисуйте и поясните схему обслуживания прерывания в простых системах?

Нарисуйте и поясните схему обслуживания прерывания в сложных системах?

Чем отличаются схемы обслуживания прерывания в простых и сложных системах?

Какова структура программы, обслуживающей прерывание?

Что такое синхронные (внутренние), асинхронные (внешние) и программные (события) прерывания?

Перечислите источники внешних прерываний.

Перечислите источники внутренних прерываний.

Что такое маскирование прерываний?

Как решается вопрос о порядке обслуживания одновременно возникших запросов на прерывания?

Что такое приоритет прерываний? Как можно изменить приоритет?

Что такое режим прерываний? Как он устанавливается?

Что такое дисциплина обслуживания прерывания? Для чего необходимо это понятие?

Перечислите и поясните основные дисциплины обслуживания прерываний.

Что такое дисциплина обслуживания прерываний с относительными приоритетами?

Что такое дисциплина обслуживания прерываний с абсолютным приоритетом?

Что такое дисциплина обслуживания прерываний LCFS (FIFO)?

Расположите в порядке возрастания приоритета источники прерываний: системный таймер, внешние устройства, средства контроля процессора и программные прерывания.

Расположите в порядке возрастания приоритета источники прерываний: сетевое оборудование, терминалы, магнитные диски.

Что такое процесс? Приведите примеры.

Дайте современное определение понятия "Задача".

Что такое ресурс? Приведите примеры ресурсов.

Что такое дескриптор процесса, и какова его структура?

Нарисуйте и поясните диаграмму состояния процесса.

Что такое делимые и неделимые ресурсы? Приведите примеры.

Опишите три ситуации выделения ресурса задаче.

Что такое одновременное и параллельное (попеременное) разделение ресурсов? Приведите примеры.

В чём особенность оперативной памяти как разделяемого ресурса?

Как разделяется внешняя память? В чём особенность разделения памяти как ресурса?

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

Опишите классификацию программных модулей как разделяемых и неразделяемых ресурсов.

Что такое однократно используемые программные модули? Могут ли они быть разделяемыми ресурсами? Почему?

Что такое непривилегированные программные модули? Могут ли они быть разделяемыми ресурсами? Почему?

Что такое привилегированные программные модули? Могут ли они быть разделяемыми ресурсами?

Почему привилегированные программные модули могут быть разделяемыми ресурсами?

Что такое реентабельные программные модули? Могут ли они быть разделяемыми ресурсами?

Почему реентабельные модули могут быть разделяемыми ресурсами?

Что такое повторно входимые программные модули? Могут ли они быть разделяемыми ресурсами? Почему?

Что такое мультипрограммный режим работы операционной системы? Поясните временной диаграммой.

Почему в мультипрограммном режиме производительность вычислительной системы увеличивается? Поясните временной диаграммой.

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

Что такое мультизадачный режим работы операционной системы?

Что такое легковесные процессы?

Что такое потоки выполнения?

Что такое нити?

Что такое треды?

Что такое разделение времени?


2. УПРАВЛЕНИЕ ПАМЯТЬЮ В ОПЕРАЦИОННЫХ СИСТЕМАХ

2.1. Память и отображения,
виртуальное адресное пространство

Оперативная память – второй по важности разделяемый ресурс вычислительной системы. От механизма её распределения зависят производительность системы и возможности программистов по созданию своих программ. При выборе механизма распределения памяти руководствуются двумя соображениями:

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

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

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

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

 
 


Рис. 2.1. Память и отображения

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

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

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

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

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

Рассматривая соотношение объёмов виртуальной памяти VV и физической памяти VР, можно выявить три очевидных случая:

VV < VР – ныне практически не встречается, характерно для 16-разрядных машин и предусматривает:

деление оперативной памяти на разделы размером по 64 К;

загрузку программы в один из разделов

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

VV = VР – часто встречающийся случай, характерный для недорогих вычислительных комплексов

VV > VР – наиболее часто встречающийся случай, характерный даже для персональных компьютеров и, тем более, для более сложных вычислительных систем.

2.2. Простое непрерывное распределение
и распределение с перекрытием

Для операционных систем, не поддерживающих режим мультипрограммирования, часто применяется простое непрерывное распределение памяти, которое является первой схемой распределения памяти. Это распределение предусматривает выделение в памяти трёх основных областей:

области, занимаемой операционной системой;

области, занимаемой задачей;

свободной области памяти.

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

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

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

2.3. Распределение памяти статическими разделами

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

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

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

Серьёзный недостаток распределения памяти на статические разделы привёл к попыткам распределения памяти на разделы с переменными границами (динамическим разделами) и к фрагментации задач.

2.4. Распределение памяти с динамическими разделами

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

выделяется первый подходящий раздел;

выделяется самый подходящий раздел;

выделяется самый неподходящий раздел, имеющий больший объём, чем задача (самый эффективный способ).

При завершении задачи освободившийся фрагмент по возможности присоединяется к смежному с ним свободному фрагменту.

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

2.5. Распределение памяти с фрагментацией задач

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

Сегментная организация памяти (рис. 2.2) предусматривает:

разбиение программы на логические части, которые называются сегментами;

выделение каждому сегменту физической памяти, раз мер которой определяется исходя из заявленного объёма сегмента.

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

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

 
 


Рис. 2.2. Схема адресации при сегментной организации памяти

При передаче управления задаче операционная система заносит в регистр таблицы дескрипторов сегментов адрес (А) указанной таблицы. Виртуальный адрес элемента программы (ЭП) состоит из номера сегмента (S) и смещения (D). Сумма адреса А и номера сегмента S является адресом дескриптора сегмента в таблице дескрипторов сегментов текущей задачи. Сумма адреса начала сегмента NS и смещения D даёт адрес элемента программы ЭП в текущем сегменте. Бит Р=1 указывает, что сегмент находится в оперативной памяти машины.

Как показывает практика, далеко не все сегменты программы должны находиться в памяти. Поэтому можно часть неиспользуемых сегментов выгружать из памяти на диск, а с диска загружать сегменты других задач. Этот приём называется свопингом сегментов. Свопинг сегментов позволяет увеличивать число задач, размещённых в памяти. Вследствие этого происходит повышение производительности системы. Свопинг сегментов осуществляется в соответствии со следующими дисциплинами замещения сегментов:

FIFO (First In First Out) – первым пришёл, первым выбыл;

LRU (Least Resently Used) – выбывает дольше других неиспользуемый;

LFU (Least Frequently Used) – выбывает реже других используемый;

Random – случайный выбор сегмента, подлежащего выбытию.

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

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

Недостатками сегментного способа организации памяти являются:

большие потери времени на чтение дескриптора и вычисление физического адреса ячейки;

значительные затраты памяти и процессорного времени на ведение и обработку таблиц дескрипторов;

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

Страничный способ организации памяти (рис. 2.3) предполагает равенство фрагментов программ по размеру и кратными степени двойки. В этом случае операция сложения можно заменить операциями слияния, которые выполняются быстрее. Все фрагменты программы, кроме последних, имеют одинаковый размер. Одинаковыми становятся и размеры памяти, выделяемой для каждого фрагмента. Фрагмент памяти, хранящий фрагмент программы называется страницей. Таким образом, оперативная память разбивается на физические страницы, а программы – на виртуальные. Часть виртуальных страниц задачи размещается во внутренней памяти, а часть – во внешней на магнитных дисках. Место хранения страниц во внешней памяти называют страничным файлом, файлом подкачки или swap-файлом. Некоторые операционные системы, в частности UNIX, хранят выгруженные из внутренней памяти страницы в специальных разделах диска.

Операционная система в этом случае ведёт таблицу страниц. Виртуальный адрес элемента программы (рис. 2.3,б) состоит из номера страницы Pg и номера ячейки I внутри страницы (индекса). Благодаря одинаковому размеру физических страниц памяти стало возможно говорить о двумерной модели адресного пространства (рис. 2.3,а). Одной из координат пространства является номер страницы, а второй – индекс. Описание страницы, включающее в себя адрес страницы NP в памяти, код прав доступа, бит присутствия в памяти P и т.д. называется дескриптором страницы.

Процесс определения адреса элемента программы ЭП аналогичен ранее описанному процессу, но операция сложения при вычислении адреса используется только при вычислении адреса дескриптора страницы в таблице страниц. Вторая операция сложения заменена операцией конкатенации (слияния) адреса начала страницы NP и индекса I (к адресу страницы справа приписывается индекс), которая выполняется быстрее.


Рис. 2.3. Двумерная модель адресного пространства (а) и схема адресации (б)
при страничной организация памяти





Дата публикования: 2014-11-18; Прочитано: 2778 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.033 с)...