Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 12
Текст из файла (страница 12)
Системные однократно используемые программные модули, как правило, задействуются только на этапе загрузки операционной системы. При этом следует иметь в виду тот очевидный факт, что собственно двоичные файлы, которыеПроцесс обращения к данным.44Глава 1. Основные понятияобычно хранятся на системном диске и в которых и записаны эти модули, не портятся, а потому могут быть повторно использованы при следующем запуске операционной системы.Повторно используемые программные модули, в свою очередь, могут быть непривилегированными, привилегированными и реентерабельными. Все они допускают корректное повторное выполнение программного кода при обращении к немуиз другой программы.Привилегированные программные модули работают в так называемом привилегированном режиме, то есть при отключенной системе прерываний (часто говорят,что прерывания закрыты), когда никакие внешние события не могут нарушитьестественный порядок вычислений.
Как результат, программный модуль выполняется до своего конца, после чего он может быть вновь вызван на исполнение издругой задачи (другого вычислительного процесса). С позиций стороннего наблюдателя по отношению к вычислительным процессам, которые попеременно (причем, возможно, неоднократно) в течение срока своей «жизни» вызывают некоторый привилегированный программный модуль, такой модуль будет выступать какпопеременно разделяемый ресурс.
Структура привилегированных программныхмодулей изображена на рис. 1.8. Здесь в первой секции программного модуля выключается система прерываний. Следовательно, при выполнении вычисленийв первой секции ничто не может их прервать, и беспокоиться о промежуточныхпеременных нет необходимости. В последней секции, напротив, система прерываний включается. Даже если тут же возникнет прерывание и другой процесс запросит этот же привилегированный модуль, все равно все вычисления уже выполнены и ничто не сможет их испортить.ОтключениепрерыванийСобственно тело программного модуляВключениепрерыванийРис.
1.8. Структура привилегированного программного модуляНепривилегированные программные модули — это обычные программные модули,которые могут быть прерваны во время своей работы. Следовательно, такие модули в общем случае нельзя считать разделяемыми, потому что если после прерываниявыполнения такого модуля, исполняемого в рамках одного вычислительного процесса, запустить его еще раз по требованию другого вычислительного процесса, топромежуточные результаты для прерванных вычислений могут быть потеряны.В противоположность этому, реентерабельные программные модули1 допускаютповторное многократное прерывание своего исполнения и повторный их запускпо обращению из других задач (вычислительных процессов).
Для этого реентерабельные программные модули должны быть созданы таким образом, чтобы было1Реентерабельный — допускающий повторные прерывания (дословный перевод с английского слова«re-enterable»).Основные виды ресурсов и возможности их разделения;45обеспечено сохранение промежуточных результатов для прерываемых вычислений и возврат к ним, когда вычислительный процесс возобновляется с прерваннойранее точки. Это может быть реализовано двумя способами: с помощью статических и динамических методов выделения памяти под сохраняемые значения.Основным и наиболее часто используемым является динамический способ выделения памяти для сохранения всех промежуточных результатов вычисления, относящихся к реентерабельному программному модулю (рис.
1.9).Привилегированныймодуль,заказывающийв системной областипамяти блок ячеекпамяти для хранениятекущих(промежуточных)данныхпОсновное тело реентерабельногопрограммного модуля, котороеи может быть прервано. Работаетв непривилегированном режимеПривилегированныймодуль,освобождающийв системной областипамяти блок памяти,использованныйдля храненияпромежуточныхданныхСистемная областьпамяти, используемаядинамическимобразомдля буферированноговвода/выводаи реентерабельнойобработкиБлок ячеек памятидля текущихпеременныхРис. 1.9. Структура реентерабельного программного модуляОсновная идея построения и работы реентерабельного программного модул* заключается в том, что в первой (головной) своей части путем обращения из системной привилегированной секции осуществляется запрос на получение в системнойобласти памяти блока ячеек, необходимого для размещения всех текущих (промежуточных) данных.
При этом на вершину стека помещается указатель на началообласти данных и ее объем. Все текущие переменные реентерабельного программного модуля в этом случае располагаются в системной области памяти. Адресацияэтих переменных осуществляется относительно вершины стека. Поскольку в конце привилегированной секции система прерываний включается, то во время работы центральной (основной) части реентерабельного модуля возможно ее прерывание. Если прерывания не возникает, то в третьей (заключительной) секции46Глава 1. Основные понятияосуществляется запрос на освобождение используемого блока системной областипамяти. При освобождении этой области памяти модифицируется значение стека.Если же во время работы центральной секции возникает прерывание, и другойвычислительный процесс обращается к тому же самому реентерабельному программному модулю, то для этого нового процесса вновь заказывается новый блокпамяти в системной области памяти, и на вершину стека записывается новый указатель.
Очевидно, что возможно многократное повторное вхождение в реентерабельный программный модуль до тех пор, пока в области системной памяти, выделяемой специально для реентерабельной обработки, есть свободные области, объемакоторых достаточно для выделения нового блока.Что касается статического способа выделения памяти, то здесь речь может идти,например, о том, что заранее для фиксированного числа вычислительных процессов резервируются области памяти, в которых будут располагаться переменныереентерабельных программных модулей: для каждого процесса — своя областьпамяти. Чаще всего в качестве таких процессов выступают процессы ввода-выво1да, и речь идет о реентерабельных драйверах .Кроме реентерабельных программных модулей существуют еще повторно входимые(re-entrance). Этим термином называют программные модули, которые тоже допускают свое многократное параллельное использование, но, в отличие от реентерабельных, их нельзя прерывать.
Повторно входимые программные модули состоят изпривилегированных секций, и повторное обращение к ним возможно только послезавершения какой-нибудь из таких секций. После выполнения очередной такой привилегированной секции управление может быть передано супервизору, которыйможет предоставить возможность выполняться другой задаче, а значит, возможноповторное вхождение в рассматриваемый программный модуль. Другими словами,в повторно входимых программных модулях четко предопределены все допустимые (возможные) точки входа. Следует отметить, что повторно входимые программные модули встречаются гораздо чаще реентерабельных (повторно прерываемых).Наконец, имеются и информационные ресурсы, то есть в качестве ресурсов могутвыступать данные. Информационные ресурсы могут существовать как в виде переменных, находящихся в оперативной памяти, так и в виде файлов.
Если процессыиспользуют данные только для чтения, то такие информационные ресурсы можноразделять. Если же процессы могут изменять информационные ресурсы, то необходимо специальным образом организовывать работу с такими данными. Это одна изнаиболее сложных проблем, достаточно подробно она обсуждается в главах 9 и 10.Классификация операционных системВыше мы уже дали определение операционной системы (ОС).
Поэтому простоповторим, что основным предназначением ОС является организация эффективных и надежных вычислений, создание различных интерфейсов для взаимодействия с этими вычислениями и с самой вычислительной системой.Реентерабельный драйвер может управлять параллельно несколькими однотипными устройствами —более подробно см. в главе 5.Классификация операционных систем47Широко известно высказывание, согласно которому любая наука начинается склассификации. Само собой, что вариантов классификации может быть очень много, здесь все будет зависеть от выбранного признака, по которому один объект мыбудем отличать от другого.
Однако, что касается ОС, здесь уже давно сформировалось относительно небольшое количество классификаций: по назначению, по режиму обработки задач, по способу взаимодействия с системой и, наконец, по способам построения (архитектурным особенностям системы).Прежде всего, традиционно различают ОС общего и специального назначения. ОСспециального назначения, в свою очередь, подразделяются на ОС для носимыхмикрокомпьютеров и различных встроенных систем, организации и ведения базданных, решения задач реального времени и т.
п. Еще не так давно операционныесистемы для персональных компьютеров относили к ОС специального назначения. Сегодня современные мультизадачные ОС для персональных компьютеровуже многими относятся к ОС общего назначения, поскольку их можно использовать для самых разнообразных целей — так велики их возможности.По режиму обработки задач различают ОС, обеспечивающие однопрограммный имультипрограммный (мультизадачный) режимы.
К однопрограммным ОС относится, например, всем известная, хотя нынче уже практически и не используемаяMS DOS. Напомним, что под мультипрограммированием понимается способ организации вычислений, когда на однопроцессорной вычислительной системе создается видимость одновременного выполнения нескольких программ. Любая задержка в решении программы (например, для осуществления операций ввода-выводаданных) используется для выполнения других (таких же либо менее важных) программ. Иногда при этом говорят о мультизадачном режиме, причем, вообще говоря, термины «мультипрограммный режим» и «мультизадачный режим» — это несинонимы, хотя и близкие понятия.
Основное принципиальное отличие этих терминов заключается в том, что мультипрограммный режим обеспечивает параллельное выполнение нескольких приложений, и при этом программисты, создающиеэти программы, не должны заботиться о механизмах организации их параллельной работы (эти функции берет на себя сама ОС; именно она распределяет междувыполняющимися приложениями ресурсы вычислительной системы, осуществляет необходимую синхронизацию вычислений и взаимодействие). Мультизадачный режим, наоборот, предполагает, что забота о параллельном выполнении и взаимодействии приложений ложится как раз на прикладных программистов. Хотяв современной технической и тем более научно-популярной литературе об этомразличии часто забывают и тем самым вносят некоторую путаницу. Можно, однако, заметить, что современные ОС для персональных компьютеров реализуюти мультипрограммный, и мультизадачный режимы.Если принимать во внимание способ взаимодействия с компьютером, то можноговорить о диалоговых системах и системах пакетной обработки.
Доля последнихХоть и не убывает в абсолютном исчислении, но в процентном отношении она существенно сократилась по сравнению с диалоговыми системами.При организации работы с вычислительной системой в диалоговом режиме можно говорить об однопользовательских (однотерминальных) и мультитерминаль-48Глава 1. Основные понятияных ОС. В мультитерминальных ОС с одной вычислительной системой одновременно могут работать несколько пользователей, каждый со своего терминала.