Файл: Сетевые операционные системы(Структура сетевой операционной системы).pdf
Добавлен: 02.04.2023
Просмотров: 317
Скачиваний: 1
СОДЕРЖАНИЕ
Глава 1. Сетевые операционные системы
1.1. Структура сетевой операционной системы
1.2.Классы сетей сетевых операционных систем
1.3. Сетевые операционные системы для предприятий
Глава 2. Характеристика операционной системы, процессы и нити ОС.
2.1 Требования к современным операционным системам.
2.3 Алгоритм планирования процессов и нитей
Нужно также отметить, что в зависимости от области применения конкретной операционной системы может изменяться и состав предъявляемых к ней требований.
Подводя итог, отмечаем, что современная операционная система должна быть эффективной, надёжной, безопасной, предсказуемой в действиях, переносимой с процессора одного типа на другой, совместимой с другими операционными системами, удобной в пользовании и масштабируемой.
2.2 Процессы и нити
В традиционных ОС процессы используются по-разному. Сами различия заключаются в том, какими именно структурами данных представлены процессы, как они называются, какими способами защищены друг от друга и какие отношения существуют непосредственно между ними. Процессы Windows NT могут быть обусловленны следующими критериями:
- Процессы Windows NT использованы в форме объектов, и доступ к ним осуществляется посредством службы объектов.
- Процесс Windows NT имеет многонитевую организацию. Как объекты-процессы, так и объекты-нити имеют встроенные средства синхронизации.
- Менеджер процессов Windows NT не поддерживает между процессами отношений типа "родитель-потомок".
В любой системе понятие "процесс" будет включать следующее: исполняемый код, собственное адресное пространство, представляющее собой совокупность виртуальных адресов, которые может использовать процесс, ресурсы системы, такие как файлы, семафоры и т.п., предназначенные процессу операционной системой, хотя бы одну выполняемую нить.
Адресное пространство каждого процесса должно иметь защиту от вмешательства в него любого другого вида процесса. Это обеспечивается механизмами виртуальной памяти. Операционная система, конечно, тоже защищена от прикладных процессов, ведь, чтобы выполнить какую-либо процедуру ОС или прочитать что-либо из ее области памяти, нить должна обязательно реализовываться в режиме ядра. Пользовательские процессы получают возможность доступа к функциям ядра посредством системных вызовов. В пользовательском режиме выполняются не только прикладные программы, но и защищенные подсистемы Windows NT. В Windows NT процесс - это обычный простой объект, создаваемый и уничтожаемый менеджером объектов. Объект -процесс, как и другие объекты, содержит заголовок, который создает и использует менеджер объектов. Менеджер процессов определяет значения, хранимые в теле объекта-процесса, а также обеспечивает системный сервис, который восстанавливает и изменяет эти показатели. В число значений тела объекта -процесса входят:
- Идентификатор процесса - уникальное значение, которое идентифицирует процесс в рамках операционной системы.
- Токен доступа - выполняемый объект, содержащий всю информацию о безопасности.
- Базовый приоритет – главная часть для исполнительного приоритета нитей процесса.
- Процессорная совместимость - набор процессоров, на которых могут выполняться нити процесса.
- Предельные значения квот - максимальное количество страничной и нестраничной системной памяти, дискового пространства, предназначенного для загрузки страниц, процессорного времени - которые могут быть реализуемыми процессами пользователя.
- Время исполнения - то количество времени, в которое выполняется процесс исполнения.
Так вот напомним, что нить сама по себе является выполняемой единицей, которая находится в адресном пространстве процесса и реализует ресурсы, выделенные процессу. Аналогично процессу, нить в Windows NT выполненна в форме объекта и управляется менеджером объектов.
Объект - нить имеет следующие атрибуты тела: идентификатор клиента - уникальное значение, которое идентифицирует нить при ее обращении к серверу, контекст нити - информация, которая нужна ОС для того, чтобы продолжить выполнение процесса прерванной нити. Контекст нити может содержать в себе текущее состояние регистров, стеков и индивидуальной области памяти, которая используется подсистемами и библиотеками. Динамический приоритет - значение приоритета нити на данный момент. Базовый приоритет - нижний предел динамического приоритета нити. Процессорная совместимость нитей - список типов процессоров, на которых должна выполняться нить. Время выполнения нити - суммарное время выполнения нити в пользовательском режиме и в режиме ядра, накопленное за период существования нити. Состояние предупреждения - флаг, который показывает, что нить обязана выполнять вызов асинхронной процедуры. Счетчик приостановок - текущее количество приостановок выполнения нити. Кроме перечисленных, существуют и другие значения.
Как видно из списка выше, многие атрибуты объекта-нити аналогичны атрибутам объекта-процесса. Весьма сходны и сервисные функции, которые могут быть выполнены над объектами-процессами и объектами-нитями: создание, открытие, завершение, приостановка, запрос и установка информации, запрос и установка контекста и другие функции.
2.3 Алгоритм планирования процессов и нитей
Выяснив основные требования к современным ОС, разобравшись с процессами и нитями, необходимо рассмотреть алгоритм планирования процессов и нитей. Начнем с того, что в Windows NT реализована вытесняющая многозадачность, при которой операционная система не ждет, когда нить сама захочет освободить процессор, а собственноручно снимает ее с выполнения после того, как та потратила отведенное ей время (квант), или если в очереди готовых появилась нить с более высоким приоритетом. При подобной организации разделения процессора ни одна нить не займет процессор на очень долгое время.
В ОС Windows NT нить, в ходе своего существования, может иметь одно из шести состояний (см.Приложение 3). Жизненный цикл нити начинается именно в тот момент, когда программа создает новую нить. Запрос передается NT executive, и менеджер процессов выделяет память для объекта-нити и обращается к ядру, чтобы инициализировать объект-нить ядра. После инициализации процесс должен переходить в различные следующие состояния. Рассмотрим их.
Готовность. Когда начинает происходить поиск нити для выполнения, диспетчер начинает просматривать только нити, находящиеся в состоянии готовности, у которых есть все для выполнения и для качества работы не хватает только процессора.
Первоочередная готовность. Абсалютно для каждого процесса системы выбирается только одна нить, которая будет выполняться следующей (самая первая нить в очереди). Если условия позволяют, то может происходить переключение на контекст этой нити.
Выполнение. Как только происходит переключение контекстов, нить начинает переходить в состояние выполнения и находится в нем до той поры, пока ядро не вытеснит ее из-за того, что появилась более приоритетная нить или ожидается окончание кванта времени, выделенный этой нити, либо нить завершится вообще, либо она по собственной инициативе перейдет в состояние ожидания.
Ожидание. Нить должна входить в состоянии ожидание различными спосабами а именно: нить по своей инициативе ожидает некоторый объект для того, чтобы синхронизировать свое выполнение; операционная система (например, подсистема ввода-вывода) может ожидать в интересах нити; подсистема окружения может непосредственно заставить нить приостановить себя. Когда ожидание нити подходит к концу, она начинает возвращаться в состояние готовности.
Переходное состояние. Нить входит в переходное состояние, если она готова к выполнению, но ресурсы, которые требуются ей для этого, уже заняты. Например, страница, содержащая стек нити, может быть загружена из ОЗУ на диск, но при освобождении ресурсов нить переходит в состояние готовности.
Завершение. Когда выполнение нити закончилось, она входит в состояние завершения. Когда нить находится в этом состоянии, она может быть либо удалена, либо не удалена. Это зависит от алгоритма работы менеджера объектов, в сравнении с которым он и решает, когда удалять объект. Если executive имеет указатель на объект-нить, то она может быть инициализирована и использована снова.
Диспетчер ядра использует для определения порядка выполнения нитей алгоритм, основанный на приоритетах, в соответствии с которым каждой нити присваивается число – преимущество и нити с более высоким преимуществом выполняются раньше нитей с меньшим преимуществом. В самом начале стадии нить получает преимущество от процесса, который создает ее. В свою очередь процесс получает преимущество в тот момент, когда его создает подсистема той или иной прикладной среды. Значение базового приоритета присваивается процессу системой по умолчанию или системным администратором. Нить наследует базовый приоритет и может изменить его, немного увеличив или уменьшив. На основании получившегося в результате приоритета, называемого приоритетом планирования, начинается выполнение нити. В ходе выполнения приоритет планирования может изменяться.
Windows NT поддерживает 32 уровня приоритетов, разделенных на два класса: класс реального времени и класс переменных приоритетов. Нити реального времени, приоритеты которых находятся в диапазоне от 16 до 31, являются наиболее приоритетными процессами и используются для выполнения задач, критичных ко времени.
Каждый раз, когда требуется выбрать нить для выполнения задач, диспетчер прежде всего просматривает очередь готовых нитей реального времени и обращается к другим нитям, только когда очередь нитей реального времени пуста. Большинство нитей в системе попадают в класс нитей с переменными приоритетами, диапазон приоритетов которых от 0 до 15. Этот класс обычно называют переменными приоритетами, потому что диспетчер настраивает систему, выбирая (понижая или повышая) приоритеты нитей этого класса.
Алгоритм планирования нитей в Windows NT соединяет в себе обе базовых концепции - квантование и приоритеты. Как и во всех других алгоритмах, основанных на квантовании, каждой нити назначается квант, в течение которого она может реализовываться. Нить освобождает процессор, только в некоторых случаях а именно:
- блокируется, уходя в режим ожидания;
- завершается;
- исчерпан квант;
- в очереди готовых появляется более приоритетная нить.
Использование динамических приоритетов, изменяющихся во времени, позволяет выполнять адаптивное планирование, при котором не дискриминируются интерактивные задачи, часто выполняющие операции ввода-вывода и недоиспользующие выделенные им кванты. Если нить полностью исчерпала свой квант, то ее приоритет понижается на некоторую величину. В то же время приоритет нитей, которые перешли в состояние ожидания, не использовав полностью выделенный им квант, повышается. Приоритет не изменяется в том случае, если нить вытеснена более приоритетной нитью.
Для того, чтобы создать лучшее время реакции системы, алгоритм планирования использует наряду с квантованием концепцию абсолютных приоритетов. В соответствии с этой концепцией при появлении в очереди готовых нитей такой, у которой приоритет выше, чем у выполняющейся в данный момент, происходит смена активной нити на нить с самым высоким приоритетом.
Итак, в многопроцессорных системах при диспетчеризации и планировании нитей играет роль их процессорная совместимость: после того, как ядро выбрало нить с наивысшим преимуществом, оно начинает проверять, какой процессор может выполнить данную программу и, если атрибут нити "процессорная совместимость" не позволяет нити реализовываться ни на одном из свободных процессоров, то выбирается следующая в порядке приоритетов нить.
2.4 Вытесняющие, и невытесняющие планирование процессов
В сетевых операционных системах есть два вида процедур спланирования
процессов а именно: вытесняющие и невытесняющие, о них мы поговорим дальше, но с начала рассмотрим общий процесс обычного планирования который включает в себя решение некоторых задач а именно:
1) определение момента времени для смены выполняемого процесса
2) выбор процесса на выполнение из очереди готовых процессов
3) переключение контекстов "старого" и "нового" процессов
Есть очень много разных алгоритмов спланирования процессов которыми по разному можно решить вышестоящие задачи. Они ищут разные цели и выполняют отличное качество мультипрограммирования . Среди этого огромного количества алгоритмов важными являются 2 группы которые чаще всего встречаются в алгоритмах, а именно : алгоритмы, основанные на квантовании, и алгоритмы, основанные на приорететах (преимуществах).