Безопасность операционных систем. Безбогов А.А - 29 стр.

UptoLike

Вытесняющая мультизадачностьэто такой режим работы ОС, когда операционная система в любой момент време-
ни может приостановить развитие активного процесса, сохранив его состояние во внешней памяти ("вытеснить" процесс), и
активизировать вместо него другой процесс.
Процессы. Важнейшей частью операционной системы, непосредственно влияющей на функционирование вычисли-
тельной машины, является подсистема управления процессами.
Процесс (или по-другому, задача) – абстракция, описываю-
щая выполняющуюся программу. Для операционной системы процесс представляет собой единицу работы, заявку на по-
требление системных ресурсов. Подсистема управления процессами планирует выполнение процессов, т.е. распределяет
процессорное время между несколькими одновременно существующими в системе процессами, а также занимается создани-
ем и уничтожением процессов, обеспечивает процессы необходимыми системными ресурсами, поддерживает взаимодейст-
вие между процессами.
Контекст и дескриптор процесса. На протяжении существования процесса его выполнение может быть многократно
прервано и продолжено. Для того чтобы возобновить выполнение процесса, необходимо восстановить состояние его опера-
ционной среды. Состояние операционной среды отображается состоянием регистров и программного счетчика, режимом
работы процессора, указателями на открытые файлы, информацией о незавершенных операциях ввода-вывода, кодами оши-
бок выполняемых данным процессом системных вызовов и т.д. Эта информация называется
контекстом процесса.
Кроме этого, операционной системе для реализации планирования процессов требуется дополнительная информация:
идентификатор процесса, состояние процесса, данные о степени привилегированности процесса, место нахождения кодового
сегмента и другая информация. В некоторых ОС (например в ОС Unix) информацию такого рода, используемую ОС для
планирования процессов, называют
дескриптором процесса.
Дескриптор процесса по сравнению с контекстом содержит более оперативную информацию, которая должна быть легко
доступна подсистеме планирования процессов. Контекст процесса содержит менее актуальную информацию и используется
операционной системой только после того, как принято решение о возобновлении прерванного процесса.
Очереди процессов представляют собой дескрипторы отдельных процессов, объединенные в списки. Таким образом,
каждый дескриптор, кроме всего прочего, содержит, по крайней мере, один указатель на другой дескриптор, соседствующий
с ним в очереди. Такая организация очередей позволяет легко их переупорядочивать, включать и исключать процессы, пере-
водить процессы из одного состояния в другое.
Программный код только тогда начнет выполняться, когда для него операционной системой будет создан процесс. Соз-
дать процессэто значит:
создать информационные структуры, описывающие данный процесс, т.е. его дескриптор и контекст;
включить дескриптор нового процесса в очередь готовых процессов;
загрузить кодовый сегмент процесса в оперативную память или в область свопинга.
Нити. Многозадачность является важнейшим свойством ОС. Для поддержки этого свойства ОС определяет и оформля-
ет для себя те внутренние единицы работы, между которыми и будет разделяться процессор и другие ресурсы компьютера.
Эти внутренние единицы работы в разных ОС носят разные названия: задача, задание, процесс, нить. В некоторых случаях
сущности, обозначаемые этими понятиями, принципиально отличаются друг от друга.
Говоря о процессах, мы отмечали, что операционная система поддерживает их обособленность: у каждого процесса
имеется свое виртуальное адресное пространство, каждому процессу назначаются свои ресурсыфайлы, окна, семафоры и
т.д. Такая обособленность нужна для того, чтобы защитить один процесс от другого, поскольку они, совместно используя
все ресурсы машины, конкурируют с друг другом. В общем случае процессы принадлежат разным пользователям, разде-
ляющим один компьютер, и ОС берет на себя роль арбитра в спорах процессов за ресурсы.
При мультипрограммировании повышается пропускная способность системы, но отдельный процесс никогда не может
быть выполнен быстрее, чем если бы он выполнялся в однопрограммном режиме (всякое разделение ресурсов замедляет ра-
боту одного из участников за счет дополнительных затрат времени на ожидание освобождения ресурса). Однако задача, ре-
шаемая в рамках одного процесса, может обладать внутренним параллелизмом, который в принципе позволяет ускорить ее
решение. Например, в ходе выполнения задачи происходит обращение к внешнему устройству, и на время этой операции
можно не блокировать полностью выполнение процесса, а продолжить вычисления по другой "ветви" процесса.
Для этих целей современные ОС предлагают использовать сравнительно новый механизм
многонитевой обработки
(multithreading). При этом вводится новое понятие "нить" (thread), а понятие "процесс" в значительной степени меняет
смысл.
Мультипрограммирование теперь реализуется на уровне нитей, и задача, оформленная в виде нескольких нитей в рамках од-
ного процесса, может быть выполнена быстрее за счет псевдопараллельного (или параллельного в мультипроцессорной системе)
выполнения ее отдельных частей. Например, если электронная таблица была разработана с учетом возможностей многонитевой
обработки, то пользователь может запросить пересчет своего рабочего листа и одновременно продолжать заполнять таблицу. Осо-
бенно эффективно можно использовать многонитевость для выполнения распределенных приложений, например, многонитевый
сервер может параллельно выполнять запросы сразу нескольких клиентов.
Нити, относящиеся к одному процессу, не настолько изолированы друг от друга, как процессы в традиционной много-
задачной системе, между ними легко организовать тесное взаимодействие. Действительно, в отличие от процессов, которые
принадлежат разным, вообще говоря, конкурирующим приложениям, все нити одного процесса всегда принадлежат одному
приложению, поэтому программист, пишущий это приложение, может заранее продумать работу множества нитей процесса
таким образом, чтобы они могли взаимодействовать, а не бороться за ресурсы.
В традиционных ОС понятие "нить" тождественно понятию "процесс". В действительности часто бывает желательно
иметь несколько нитей, разделяющих единое адресное пространство, но выполняющихся квазипараллельно, благодаря чему
нити становятся подобными процессам (за исключением разделяемого адресного пространства).
Нити иногда называют облегченными процессами или мини-процессами. Действительно, нити во многих отношениях
подобны процессам. Каждая нить выполняется строго последовательно и имеет свой собственный программный счетчик и
стек. Нити, как и процессы, могут, например, порождать нити-потомки, могут переходить из состояния в состояние. Подоб-
но традиционным процессам (т.е. процессам, состоящим из одной нити), нити могут находится в одном из следующих со-