Курс лекций по дисциплине Операционные системы Часть 1 для студентов очного отделения специальностей 09. 02. 03 Программирование в компьютерных системах
Скачать 229.5 Kb.
|
Ресурсы и их классификацияПроце́сс — абстрактное понятие, относящееся к программе. Часто процессом называют программу и все её элементы: адресное пространство, глобальные переменные , регистры, стек, счетчик команд, открытые файлы, дочерние процессы и т. д. Примеры процессов: прикладные программы пользователей; утилиты и другие системные обрабатывающие программы; редактирование какого-либо текста; трансляция исходной программы, ее компоновка, исполнение. Для операционной системы процесс представляет собой единицу работы, заявку на потребление системных ресурсов. Термин "ресурс" обычно применяется по отношению к повторно используемым, относительно стабильным и часто недостающим объектам, которые запрашиваются, используются и освобождаются процессами в период их активности. Другими словами, ресурсом называется всякий объект, который может распределяться внутри системы. Ресурсы могут быть разделяемыми, когда несколько процессов могут их использовать одновременно (в один и тот же момент времени) или параллельно (в течение некоторого интервала времени процессы используют ресурс попеременно), а могут быть и неделимыми (см. рисунок). В настоящее время понятие ресурса превратилось в абстрактную структуру с целым рядом атрибутов, характеризующих способы доступа к этой структуре и ее физическое представление в системе. Помимо системных ресурсов, к ресурсам относят также такие объекты, как сообщения и синхросигналы, которыми обмениваются задачи. Современные ОС поддерживают мультипрограммирование и стараются эффективно использовать ресурсы путем организации к ним очередей запросов, составляемых тем или иным способом. Общая схема выделения ресурсов такова: При необходимости использовать какой-то ресурс (оперативную память, устройство ввода/вывода, массив данных и т.п.) задача обращается к супервизору ОС и сообщает о своем требовании. При этом указывается вид ресурса и, если надо, его объем (например, количество адресуемых ячеек оперативной памяти, количество дорожек или секторов на системном диске, устройство печати и объем выводимых данных и т.п.). Директива обращения к ОС передает ей управление, переводя процессор в привилегированный режим работы. Ресурс может быть выделен задаче, обратившейся к супервизору с соответствующим запросом, если: он свободен и в системе нет запросов к этому же ресурсу от задач более высокого приоритета; текущий запрос и ранее выданные запросы допускают совместное использование ресурсов; ресурс используется задачей низшего приоритета и может быть временно отобран (разделяемый ресурс). Получив запрос, операционная система либо удовлетворяет его и возвращает управление задаче, выдавшей данный запрос, либо, если ресурс занят, ставит задачу в очередь к ресурсу, переводя ее в состояние ожидания (блокируя). После окончания работы с ресурсом задача с помощью специального вызова супервизора (посредством соответствующей директивы) сообщает операционной системе об отказе от ресурса, или ОС забирает ресурс сама, если управление возвращается супервизору после выполнения какой-либо системной функции. Супервизор ОС, получив управление по этому обращению, освобождает ресурс и проверяет, имеется ли очередь к освободившемуся ресурсу. Если очередь есть, то в зависимости от принятой дисциплины обслуживания и приоритетов заявок он выводит из состояния ожидания задачу, ждущую ресурс, и переводит ее в состояние готовности к выполнению. После этого управление либо передается данной задаче, либо возвращается к той, которая только что освободила ресурс. При выдаче запроса на ресурс задача может указать, нужен ей ресурс монопольно или допускается его совместное использование. Например, с файлом можно работать монопольно, а можно и совместно с другими задачами. Основные виды ресурсов и способы их разделения. Одним из важнейших ресурсов является сам процессор, точнее, процессорное время. Процессорное время делится попеременно (параллельно). Оперативная память, которая может быть разделена и одновременным способом (в памяти одновременно может располагаться несколько потоков), и попеременно (в разные моменты времени память может предоставляться для разных вычислительных процессов). Внешняя память (например, память на магнитных дисках) и доступ к ней считаются разными видами ресурса, каждый из которых может предоставляться независимо от другого. Но для полной работы с внешней памятью необходимо иметь оба этих ресурса. Собственно внешняя память может разделяться одновременно, а доступ к ней – попеременно. Внешние устройства, могут разделяться параллельно в случае, если используются механизмы прямого доступа. Если же устройство работает с последовательным доступом, то оно не может считаться разделяемым ресурсом. Например, принтером или накопителем на магнитной ленте невозможно воспользоваться попеременно двум параллельно выполняющимся потокам. Программные модули, и прежде всего – системные программные модули. Однократно используемые модули правильно выполняются только один раз (выполняются на этапе загрузки ОС) и являются неделимым ресурсом. Они обычно вообще не распределяются как ресурс системы. Повторно используемые программные модули могут быть непривилегированными, привилегированными, реентерабельными и повторно входимыми. Привилегированные программные модули работают при отключенной системе прерываний, т.ч. никакие внешние события не могут нарушить естественный порядок вычислений. После окончания своей работы данный модуль может быть вызван снова из другой задачи. Такой модуль выступает как попеременно разделяемый ресурс. В первой его секции выключается система прерываний, а в последней – снова включается. Непривилегированные программные модули – обычные модули, которые могут быть прерваны во время своей работы. Их нельзя считать разделяемыми, поскольку после прерывания такого модуля его нельзя запустить еще раз из другого вычислительного процесса, т.к. промежуточные результаты для прерванных вычислений могут быть потеряны. Реентерабельные (reenterable) программные модули допускают многократное прерывание своего исполнения и повторный их запуск из других задач. Они создаются таким образом, чтобы было обеспечено сохранение промежуточных вычислений в случае прерывания и возврат к сохраненным результатам при возобновлении процесса с прерванной ранее точки. Для этого могут использоваться статический или динамический способы выделения памяти под сохраняемые значения. Повторно входимые (re-entrance) модули также допускают многократное параллельное использование, но, в отличие от реентерабельных, их нельзя прерывать. Они состоят из привилегированных секций (в которых запрещены прерывания) и имеют четко определенные точки входа. Они встречаются чаще реентерабельных. Информационные ресурсы, т.е. в качестве ресурсов могут выступать данные. Они могут существовать как в виде переменных, так и в виде файлов. Если потоки используют данные только для чтения, то такие информационные ресурсы можно разделять. Если же потоки могут изменять данные, то необходимо организовывать работу с ними особым образом. |