Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 13
Текст из файла (страница 13)
Приэтом у пользователей возникает иллюзия, что у каждого из них имеется собственная вычислительная система. Очевидно, что для организации мультитерминального доступа к вычислительной системе необходимо обеспечить мультипрограммныйрежим работы. В качестве одного из примеров мультитерминальных операционных систем для персональных компьютеров можно назвать Linux. Некая имитация мультитерминальных возможностей имеется и в системе Windows XP. В этойоперационной системе каждый пользователь после регистрации (входа в систему)получает свою виртуальную машину. Если необходимо временно предоставитькомпьютер другому пользователю, вычислительные процессы первого можно незавершать, а просто для этого другого пользователя система создает новую виртуальную машину.
В результате компьютер будет выполнять задачи и первого, и второго пользователя. Количество параллельно работающих виртуальных машин определяется имеющимися ресурсами.Основной особенностью операционных систем реального времени (ОСРВ) являетсяобеспечение обработки поступающих заданий в течение заданных интервалов времени, которые нельзя превышать. Поток заданий в общем случае не является планомерным и не может регулироваться оператором (характер следования событий можнопредсказать лишь в редких случаях), то есть задания поступают в непредсказуемыемоменты времени и без всякой очередности. В то время как в ОС, не предназначенных для решения задач реального времени, имеются некоторые накладные расходыпроцессорного времени на этапе инициирования задач (в ходе которого ОС распознает все пожелания пользователей относительно решения своих задач, загружает воперативную память нужную программу и выделяет другие необходимые для еевыполнения ресурсы), в ОСРВ подобные затраты могут отсутствовать, так как набор задач обычно фиксирован, и вся информация о задачах известна еще до поступления запросов.
Для подлинной реализации режима реального времени необходима(хотя этого и недостаточно) организация мультипрограммирования. Мультипрограммирование является основным средством повышения производительности вычислительной системы, а для решения задач реального времени производительностьстановится важнейшим фактором. Лучшие характеристики по производительностидля систем реального времени обеспечиваются однотерминальными ОСРВ. Средства организации мультитерминального режима всегда замедляют работу системыв целом, но расширяют функциональные возможности системы.
Одной из наиболееизвестных ОСРВ для персональных компьютеров является ОС QNX.По основному архитектурному принципу операционные системы разделяются намикроядерные и макроядериые {монолитные). В некоторой степени это разделение тоже условно, однако можно в качестве яркого примера микроядерной ОСпривести ОСРВ QNX, тогда как в качестве монолитной можно назвать Windows95/98 или ОС Linux. Если ядро ОС Windows мы не можем изменить, нам недоступны его исходные коды и у нас нет программы для сборки (компиляции) этогоядра, то в случае с Linux мы можем сами собрать то ядро, которое нам необходимо,включив в него те программные модули и драйверы, которые мы считаем целесообразным включить именно в ядро (ведь к ним можно обращаться и из ядра).Контрольные вопросы и задачи49Контрольные вопросы и задачи1.
Что такое операционная система? Перечислите основные функции операционных систем.2. Что означает термин «авторизация»? Что означает термин «аутентификация»?Какая из этих операций выполняется раньше и почему?3. Что такое операционная среда? Какие основные, наиболее известные операционные среды вы можете перечислить?4. Что такое прерывание? Какие шаги выполняет система прерываний при возникновении запроса на прерывание? Какие бывают прерывания?5. Перечислите известные дисциплины обслуживания прерываний; объясните,как можно реализовать каждую из этих дисциплин.6. С какой целью в операционные системы вводится специальный системныймодуль, иногда называемый супервизором прерываний?7.
Как можно и как следует толковать процесс — одно из основных понятий операционных систем? Объясните, в чем заключается различие между такимипонятиями, как «процесс» и «задача»?8. Изобразите диаграмму состояний процесса, поясните все возможные переходы из одного состояния в другое.9. Объясните значения терминов «задача», «процесс», «поток выполнения»? Какони между собой соотносятся?10.
Для чего каждая задача получает соответствующий дескриптор? Какие поля,как правило, содержатся в дескрипторе процесса (задачи)? Что такое «контекст задачи»?11. Объясните понятие ресурса. Почему понятие ресурса является одним из фундаментальных при рассмотрении операционных систем? Какие виды и типыресурсов вы знаете?12. Как вы считаете, сколько и каких списков дескрипторов задач может быть в системе? От чего должно зависеть это число?13. В чем заключается различие между повторно входимыми и реентерабельными программными модулями? Как они реализуются?•*14. Что такое привилегированный программный модуль? Почему нельзя создатьмультипрограммную операционную систему, в которой бы не было привилегированных программных модулей?Глава 2.
УправлениезадачамиПонятия процесса (process) и потока выполнения (thread) нам уже известны. Мытеперь знаем, в чем здесь имеется сходство, а в чем — существенное различие. Однако в данной главе при рассмотрении вопросов распределения процессорноговремени мы не всегда будем разделять эти понятия. Дело в том, что по отношениюк этому ресурсу — процессорному времени — оба этих понятия практически эквиваленты. Они выступают просто как некоторая работа, для выполнения которойнеобходимо предоставить центральный процессор.
Поэтому мы будем в основномиспользовать термин задача (task), который является как бы обобщающим. Ведькаждый поток выполнения на самом деле получает статус задачи, и для него создается соответствующий дескриптор. Но мы должны помнить о различиях междудескриптором процесса и дескриптором задачи. Даже если процесс состоит из единственного потока, мы говорим о дескрипторе процесса, содержащем информацию,с помощью которой операционная система отслеживает все ресурсы, необходимые процессу для его выполнения. Один из основных модулей супервизора операционной системы — диспетчер задач — переводит процессы в одно из состоянийв зависимости от того, доступен тот или иной ресурс или не доступен.
И поскольку в мультизадачной системе любой процесс содержит хотя бы один поток, то потоку (то есть задаче) ставится в соответствие дескриптор задачи, в котором сохраняется контекст этих вычислений. Сказанное справедливо для мультипрограммныхсистем, поддерживающих мультизадачный режим. В мультипрограммных системах, не поддерживающих мультизадачность, контекст прерванного процесса хранится в дескрипторе этого процесса. Заметим, что повсеместно распространенныесистемы Windows 9x/NT/2000/XP являются и мультипрограммными, и мультизадачными. Не случайно начиная с Windows NT и Windows 95 компания Microsoftотказалась от термина «задача» и стала использовать понятия процесса и потокавыполнения (треда, нити).
Правда, для изложения вопросов диспетчеризации этостановится неудобным, ибо здесь чаще используется обобщающее понятие.Еще одним доводом в пользу термина «задача» при рассмотрении вопросов организации распределения процессорного времени между выполняющимися вычислениями является аналогичный выбор этой сущности разработчиками про-Управление задачами51пессоров.
Именно для отображения этой ситуации и обеспечения дополнительными возможностями системных программистов в решении вопросов распределения процессорного времени они вводят специальные информационные структуры и аппаратную поддержку для работы с ними. Во многих современныхмикропроцессорах, предназначенных для построения на их основе мощных мультипрограммных и мультизадачных систем, имеются дескрипторы задач. Примером, подтверждающим этот тезис, являются микропроцессоры, совместимые сархитектурой ia32, то есть с 32-разрядными процессорами фирмы Intel.
Основные архитектурные особенности этих микропроцессоров, специально проработанные для организации мультизадачных операционных систем, рассматриваются достаточно подробно в главе 4. Здесь мы лишь отметим тот факт, что в этихпроцессорах имеется специальная аппаратная поддержка организации мультизадачного (и мультипрограммного) режима. Речь идет о сегменте состояния задачи (Task State Segment, TSS), который предназначен, прежде всего, для сохранения контекста потока или процесса и который легко позволяет организовать имультипрограммный, и мультизадачный режимы. Не случайно был введен термин «задача», ибо он здесь применим и по отношению к полноценному вычислительному процессу, и по отношению к легковесному процессу (потоку выполнения, треду, нити).