Единое окно доступа к образовательным ресурсам

Операционные системы. Теория и практика: Учебное пособие

Голосов: 2

В учебном пособии изложены особенности функционирования, назначения и архитектуры современных операционных систем (ОС). В работе отражены: понятие и эволюция операционных систем, архитектурные особенности и классификация ОС по различным критериям, особенности управления процессами и памятью, основы организации файловых систем и некоторые их конкретные примеры, рассмотрены консолидированные серверные системы хранения данных большого объема RAID. Для получения практических навыков работе в операционных системах (на примере систем семейства Unix-Linux) учебное пособие освещает вопросы разработки программных проектов с использованием специализированных утилит, а также по управлению процессами и потоками и средствами их синхронизации. Предназначено для студентов, обучающихся по направлению 230100 Информатика и вычислительная техника.

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.
    щем случае дескриптор процесса, как правило, содержит следующую
информацию:
      идентификатор процесса (Process Identifier, PID);
      тип (или класс) процесса, который определяет для супервизора
некоторые правила предоставления ресурсов;
      приоритет процесса, в соответствии с которым супервизор
предоставляет ресурсы (в рамках одного класса процессов в первую
очередь обслуживаются более приоритетные процессы);
      переменную состояния, которая определяет, в каком состоянии
находится процесс (готов к работе, выполняется, ожидает устройства
ввода-вывода и т. д.);
      контекст задачи, то есть защищенную область памяти (или адрес
такой области), в которой хранятся текущие значения регистров процес-
сора, когда процесс прерывается, не закончив работы;
      информацию о ресурсах, которыми процесс владеет и/или имеет
право пользоваться (указатели на открытые файлы, информация о неза-
вершенных операциях ввода-вывода и др.);
      место (или его адрес) для организации общения с другими про-
цессами;
      параметры времени запуска (момент времени, когда процесс
должен активизироваться, и периодичность этой процедуры);
      в случае отсутствия системы управления файлами адрес задачи
на диске в ее исходном состоянии и адрес на диске, куда она выгружает-
ся из оперативной памяти (ОП), если ее вытесняет другая задача (по-
следнее справедливо для диск-резидентных задач, которые постоянно
находятся во внешней памяти на системном магнитном диске и загру-
жаются в ОП только на время выполнения).
     В некоторых ОС количество описателей определяется жестко и за-
ранее (на этапе генерации варианта ОС или в конфигурационном файле,
который используется при загрузке ОС), в других по мере необходимо-
сти система может выделять участки памяти под новые описатели. На-
пример, в уже мало кому известной системе OS/2, которая несколько лет
тому назад многими специалистами считалась одной из лучших ОС для
персональных компьютеров, максимально возможное количество описа-
телей задач указывается в конфигурационном файле CONFIG.SYS.
Например, строка THREADS = 1024 в файле CONFIG.SYS означает, что
всего в системе может параллельно существовать и выполняться до 1024
задач, включая вычислительные процессы и их потоки. В системах
Windows NT/2000/XP количество описателей в явном виде не задается –
это переменная величина и она определяется самой ОС. Текущее коли-
чество таких описателей представлено в окне Диспетчера задач.
                                  51


     Описатели задач, как правило, постоянно располагаются в ОП с це-
лью ускорить работу супервизора, который организует их в списки (оче-
реди) и отображает изменение состояния процесса перемещением соот-
ветствующего описателя из одного списка в другой. Для каждого состо-
яния (за исключением состояния исполнения для однопроцессорной си-
стемы) ОС ведет соответствующий список задач, находящихся в этом
состоянии. Однако для состояния ожидания обычно имеется не один
список, а столько, сколько различных видов ресурсов могут вызывать
состояние ожидания.
     Очереди процессов представляют собой дескрипторы отдельных
процессов, объединенные в списки – каждый дескриптор, кроме всего
прочего, содержит, по крайней мере, один указатель на другой дескрип-
тор, соседствующий с ним в очереди. Такая организация очередей поз-
воляет легко их переупорядочивать, включать и исключать процессы,
переводить процессы из одного состояния в другое.
     В ОСРВ чаще всего количество процессов фиксируется, и, следова-
тельно, целесообразно заранее определять (на этапе генерации или кон-
фигурирования ОС) количество дескрипторов. Для использования таких
ОС в качестве систем общего назначения (что в настоящее время неха-
рактерно) обычно количество дескрипторов бралось с некоторым запа-
сом, и появление новой задачи связывалось с заполнением этой инфор-
мационной структуры. Поскольку дескрипторы процессов постоянно
располагаются в оперативной памяти (с целью ускорить работу диспет-
чера), то их количество не должно быть очень большим.
     Для более эффективной обработки данных в ОСРВ целесообразно
иметь постоянные задачи, полностью или частично существующие в си-
стеме независимо от того, поступило на них требование или нет. Каждая
постоянная задача обладает некоторой собственной областью оператив-
ной памяти (ОЗУ-резидентная задача или просто резидентная задача)
независимо от того, выполняется задача в данный момент или нет. Эта
область, в частности, может использоваться для хранения данных, полу-
ченных задачей ранее. Данные могут храниться в ней и тогда, когда за-
дача находится в состоянии ожидания или даже в состоянии бездей-
ствия.
     Для аппаратной поддержки работы ОС с этими информационными
структурами (дескрипторами задач) в процессорах могут быть реализо-
ваны соответствующие механизмы. Так, например, в микропроцессорах
Intel 80x86 имеется специальный регистр (Task Register – TR), указыва-
ющий местонахождение специальной информационной структуры –
сегмента состояния задачи (Task State Segment – TSS), в котором при пе-
реключении с задачи на задачу автоматически сохраняется содержимое
регистров процессора.
                                  52


    3.2.4    Состояния процесса
     Все, что выполняется в вычислительных системах (не только про-
граммы пользователей, но и, возможно, определенные части ОС), орга-
низовано как набор процессов. Понятно, что реально на однопроцессор-
ной компьютерной системе в каждый момент времени может испол-
няться только один процесс. Для мультипрограммных вычислительных
систем псевдопараллельная обработка нескольких процессов достигает-
ся с помощью переключения процессора с одного процесса на другой.
Пока один процесс выполняется, остальные ждут своей очереди на по-
лучение процессора.
     Каждый процесс может находиться как минимум в двух состояни-
ях: процесс исполняется и процесс не исполняется. Диаграмма состоя-
ний процесса в такой модели изображена на рис. 9.


                             Выбран для исполнения
 Вход         Процесс не исполняется             Процесс исполняется   Выход

                                  Приостановка

            Рисунок 9 – Простейшая диаграмма состояний процесса
    Процесс, находящийся в состоянии процесс исполняется, может
через некоторое время завершиться или быть приостановлен ОС и снова
переведен в состояние процесс не исполняется. Приостановка процесса
может произойти, например, по следующим причинам: для его даль-
нейшей работы потребовалось возникновение какого-либо события
(например, завершения операции ввода-вывода) или истек временной
интервал, отведенный ОС для работы этого процесса. После этого ОС по
определенному алгоритму выбирает для исполнения один из процессов,
находящихся в состоянии процесс не исполняется, и переводит его в со-
стояние процесс исполняется. Новый процесс, появляющийся в системе,
первоначально помещается в состояние процесс не исполняется.
    Приведенная модель является очень грубой. Она не учитывает, в
частности то, что процесс, выбранный для исполнения, может все еще
ждать события, из-за которого он был приостановлен, и реально к вы-
полнению не готов. Для того чтобы избежать такой ситуации, разобьем
состояние процесс не исполняется на два новых состояния: готовность
и ожидание (рис. 10).
    Всякий новый процесс, появляющийся в системе, попадает в состо-
яние готовность. Операционная система, пользуясь каким-либо алго-
ритмом планирования, выбирает один из готовых процессов и переводит
                                        53


его в состояние исполнение. В состоянии исполнение происходит непо-
средственное выполнение программного кода процесса. Покинуть это
состояние процесс может по трем причинам:
      либо он завершает свою деятельность;
      либо в результате возникновения прерывания в вычислительной
системе (например, прерывания от таймера по истечении дозволенного
времени выполнения) его возвращают в состояние готовность;
      либо он не может продолжать свою работу, пока не произойдет
некоторое событие, и ОС (по прерыванию) переводит его в состояние
ожидание.
                                                        Вход


            Ожидание        Событие произошло        Готовность

                                   Прерывание
         Ожидание события                       Выбран для
                                                исполнения
                                Исполнение



                                  Выход
             Рисунок 10 – Диаграмма 3-х состояний процесса
    Эта модель хорошо описывает поведение процессов во время их
жизни, но она не показывает появление процесса в системе и его исчез-
новение из системы. Поэтому целесообразно показать еще два состоя-
ния процессов: рождение и закончил исполнение (рис. 11).
                              Рождение             Допуск к
                                                 планированию

                          Событие произошло       Готовность
         Ожидание

                                 Прерывание
       Ожидание события                       Выбран для
                                              исполнения
                              Исполнение             Приостановлен -
                                                         готов
                                    Завершение работы
                               Закончил
                              исполнение

       Рисунок 11 – Более детальная диаграмма состояний процесса
                                   54


     Теперь для появления в вычислительной системе процесс должен
пройти через состояние рождение. При рождении процесс получает в
свое распоряжение адресное пространство, в которое загружается про-
граммный код процесса, ему выделяются стек и системные ресурсы;
устанавливается начальное значение программного счетчика этого про-
цесса и т.д. Родившийся процесс переводится в состояние готовность.
При завершении своей деятельности процесс из состояния исполнение
попадает в состояние закончил исполнение.
     Следует отметить, что в ОСРВ могут существовать дополнительное
состояние приостановлен-готов, в которое процесс может перейти из
состояния готовность через дополнительную операцию «приостанов-
ки», а вернуться – через «возобновление». Это играет важную роль в
ОСРВ и используется в следующих случаях:
      при пиковой нагрузке вычислительной системы, когда она не
может обеспечить требуемое быстродействие, при расходах времени на
смену состояний, превышающих полезную работу;
      при ненадежной работе системы и возможном ее отказе;
      в случаях, когда промежуточные результаты работы процесса
вызывают сомнение в правильности работы программы.
     При приостановке (и нехватке памяти) процесс освободит ОП, его
копия сбрасывается на диск в специальный свопинг файл. Также могут
быть освобождены и другие ресурсы.
     Следует помнить, что количество состояний процесса в различных
ОС может быть различно. Например, в ОС Windows NT – 7 состояний, а
в ОС Unix – 9 состояний.
     Изменением состояния процессов занимается ОС, совершая опера-
ции над ними.    Основные операции над процессами удобно объеди-
нить в три пары:
      создание процесса – завершение процесса (для процесса выпол-
няются однократно);
      приостановка процесса (перевод из состояния исполнение в со-
стояние готовность) – запуск процесса (перевод из состояния готовность
в состояние исполнение);
      блокирование процесса (перевод из состояния исполнение в со-
стояние ожидание) – разблокирование процесса (перевод из состояния
ожидание в состояние готовность).
     Кроме того, следует выделить еще одну – непарную операцию: из-
менение приоритета процесса.
     Указанные операции на процессом выполняются в соответствии с
алгоритмом планирования процессов, реализуемым в данной ОС.


                                  55


    3.2.5   Критерии планирования
     Вообще, планирование – это работа по определению того, в какой
момент времени прервать выполнение одного процесса и какому про-
цессу предоставить возможность выполняться. Планирование использо-
вания процессора впервые возникает в мультипрограммных вычисли-
тельных системах, где в состоянии готовность могут одновременно
находиться несколько процессов. Планирование процессов включает в
себя решение следующих задач:
      определение момента времени для смены выполняемого процес-
са;
      выбор процесса на выполнение из очереди готовых процессов;
      переключение контекстов «старого» и «нового» процессов.
     В свою очередь, диспетчеризация – это реализация решения,
найденного в результате планирования. Задачами диспетчеризации яв-
ляются:
      сохранение контекста текущего потока;
      загрузка контекста нового потока;
      запуск нового потока на выполнение.
     При построении алгоритмов планирования выделяют три различ-
ных уровня, которые обуславливают особенности работы этих алгорит-
мов:
      долгосрочное;
      краткосрочное;
      среднесрочное.
     Долгосрочное планирование характеризуется тем, что:
      отвечает за порождение новых процессов в системе, определяя ее
степень мультипрограммирования;
      осуществляется достаточно редко (между появлением процессов
могут проходить минуты и даже десятки минут);
      оказывает влияние на функционирование вычислительной систе-
мы на протяжении достаточно длительного времени;
      в некоторых ОС сведено к минимуму или отсутствует совсем.
     Краткосрочное планирование характеризуется тем, что:
      применяется при планировании использования процессора
(например, при обращении исполняющегося процесса к устройствам
ввода-вывода или по завершении определенного интервала времени);
      осуществляется не реже одного раза в 100 миллисекунд;
      оказывает влияние на функционирование системы до наступле-
ния очередного аналогичного события.


                                 56


    Среднесрочное планирование, в свою очередь, характеризуется тем,
что применяется в вычислительных системах для повышения произво-
дительности при «swapping»7.
     3.2.6    Цели и свойства алгоритмов планирования
      Для каждого уровня планирования процессов можно предложить
много различных алгоритмов. Выбор конкретного алгоритма определя-
ется классом задач, решаемых вычислительной системой, и целями, ко-
торые должны быть достигнуты планированием. К числу таких целей
можно отнести следующие:
       Справедливость. Гарантировать каждому заданию или процессу
определенную часть времени использования процессора в компьютер-
ной системе, стараясь не допустить «захвата» процессора одним процес-
сом.
       Эффективность. Постараться занять процессор на 100% рабоче-
го времени, не позволяя простаивать ему в ожидании процессов, гото-
вых к исполнению. В реальных вычислительных системах загрузка про-
цессора составляет 40% - 90%.
       Сокращение полного времени выполнения (англ. turnaround time).
Обеспечить минимальное время между стартом процесса или постанов-
кой задания в очередь для исполнения и его завершением.
       Сокращение времени ожидания (англ. waiting time). Сократить
время, которое проводят процессы в состоянии готовность в очереди
для исполнения.
       Сокращение времени отклика (англ. response time). Минимизиро-
вать время, которое требуется процессу в интерактивных системах для
ответа на запрос пользователя.
      Многие из приведенных выше целей и свойств являются противо-
речивыми. Улучшая работу алгоритма с точки зрения одного критерия,
можно ухудшить его с точки зрения другого, поэтому задача разработ-
чика алгоритма планирования заключается в поиске разумного компро-
мисса.
      Кроме целей планирования, которые необходимо достигнуть, жела-
тельно также, чтобы алгоритмы обладали следующими свойствами:
       Предсказуемость. Одно и то же задание должно выполняться
приблизительно за одно и то же время.
       Минимальные накладные расходы. По сути означает, что tисполне-
ния процесса >> tвыбора процесса. Другими словами, если на каждые 100 милли-
секунд, выделенные процессу для использования процессора, будет

7
 Временное удаление какого-либо частично выполнившегося процесса из оперативной памяти на
диск, а позже – его возвращение для дальнейшего выполнения.
                                           57


приходиться 200 миллисекунд на определение того, какой именно про-
цесс получит процессор в свое распоряжение, и на переключение кон-
текста, то такой алгоритм, очевидно, применять не стоит.
      Равномерная загрузка ресурсов вычислительной системы, отда-
вая предпочтение тем процессам, которые будут занимать малоисполь-
зуемые ресурсы.
      Масштабируемость. Рост количества процессов в системе в два
раза не должен приводить к увеличению полного времени выполнения
процессов на порядок.
     Для достижения целей планирования алгоритмы планирования
должны опираться на некоторые характеристики – параметры планиро-
вания как вычислительной системы в целом, так и самих процессов.
     Среди параметров планирования вычислительной системы выде-
ляют следующие:
      Статические (не изменяемые в ходе функционирования) – пре-
дельные значения ресурсов системы: размер оперативной памяти, мак-
симальное количество памяти на диске для осуществления свопинга,
количество подключенных устройств ввода-вывода и т.п.).
      Динамические (изменяемые в ходе функционирования) – значе-
ния ресурсов системы на текущий момент.
     К статическим параметрам процессов относятся характеристики,
как правило, присущие заданиям уже на этапе загрузки:
      пользователь, запустивший процесс;
      приоритетность выполнения поставленной задачи;
      соотношение процессорного времени и времени, необходимого
для осуществления операций ввода-вывода;
      номенклатура (оперативная память, устройства ввода-вывода,
специальные библиотеки и системные программы и т.д.) и величина не-
обходимых заданию ресурсов вычислительной системы.
     Алгоритмы долгосрочного планирования процессов используют в
своей работе:
      параметры вычислительной системы (статические и динамиче-
ские);
      статические параметры процессов (динамические параметры
процессов на этапе загрузки заданий еще не известны);
     Алгоритмы краткосрочного и среднесрочного планирования про-
цессов дополнительно учитывают и динамические характеристики про-
цессов. Для алгоритмов среднесрочного планирования в качестве дина-
мических характеристик может использоваться следующая информация:
      время с момента выгрузки процесса на диск или его загрузки в
ОП;
                                58


      размер занимаемой процессом ОП;
      количество процессорного времени, предоставленного процессу
на данный момент.
    3.2.7   Виды планирования
     Существует два основных вида алгоритмов планирования процес-
сов – невытесняющие (non-preemptive, применяются в ОС NetWare) и
вытесняющие (preemptive, применяются в ОС Unix, Windows, OS/2,
VMS).
     Невытесняющая многозадачность (non-preemptive multitasking) –
это способ планирования процессов, при котором активный процесс вы-
полняется до тех пор, пока он сам, по собственной инициативе, не от-
даст управление планировщику ОС для того, чтобы тот выбрал из оче-
реди другой, готовый к выполнению процесс.
     Вытесняющая многозадачность (preemptive multitasking) – это та-
кой способ планирования, при котором решение о переключении про-
цессора с выполнения одного процесса на выполнение другого процесса
принимается планировщиком ОС, а не самим активным процессом.
     Алгоритмы планирования могут быть:
      основаны на квантовании;
      основаны на приоритетах.
     В соответствии с алгоритмами, основанными на квантовании, смена
активного процесса происходит, если:
      процесс завершился и покинул систему;
      произошла ошибка;
      процесс перешел в состояние «ожидание»;
      исчерпан квант процессорного времени, отведенный данному
процессу.
     Другая группа алгоритмов основана на понятии приоритет – чис-
ле, характеризующем степень привилегированности процесса при ис-
пользовании ресурсов вычислительной машины, в частности, процес-
сорного времени (чем выше приоритет, тем выше привилегии). Приори-
тет может выражаться целыми или дробными, положительным или от-
рицательным значением. Чем выше привилегии процесса, тем меньше
времени он будет проводить в очередях. Приоритет может назначаться
директивно администратором системы в зависимости от важности рабо-
ты или внесенной платы, либо вычисляться самой ОС по определенным
правилам, он может оставаться фиксированным на протяжении всей
жизни процесса либо изменяться во времени в соответствии с некото-
рым законом (динамические приоритеты).


                                 59


     Выделяют две разновидности приоритетного планирования: обслу-
живание с относительными приоритетами и обслуживание с абсолют-
ными приоритетами. В обоих случаях выбор потока на выполнение из
очереди готовых осуществляется одинаково – выбирается поток, имею-
щий наивысший приоритет. Отличие заключается в определении мо-
мента смены активного потока. В системах с относительными приорите-
тами активный поток выполняется до тех пор, пока он сам не покинет
процессор, перейдя в состояние ожидания (или произойдет ошибка или
поток завершится). В системах с абсолютными приоритетами выполне-
ние активного потока прерывается, если в очереди готовых потоков по-
явился поток, приоритет которого выше приоритета активного потока.
     В системах, в которых планирование осуществляется на основе от-
носительных приоритетов, минимизируются затраты на переключение
процессора с одной работы на другую. С другой стороны, здесь могут
возникать ситуации, когда одна задача занимает процессор долгое вре-
мя. Ясно, что для систем разделения времени и реального времени такая
дисциплина обслуживания не подходит: интерактивное приложение
может ждать своей очереди часами, пока вычислительной задаче не по-
требуется ввод-вывод. А вот в системах пакетной обработки (в том чис-
ле известной ОС OS/360) относительные приоритеты использовались
широко.
     Во многих ОС алгоритмы планирования носят «смешанный» харак-
тер и построены как с использованием квантования, так и приоритетов.
Например, в основе планирования лежит квантование, но величина
кванта и/или порядок выбора потока из очереди готовых определяется
приоритетами потоков. Именно так реализовано планирование в системе
Windows NT, в которой квантование сочетается с динамическими абсо-
лютными приоритетами.
    3.2.8   Алгоритмы планирования
    Рассмотрев цели, свойства и виды алгоритмов планирования, кото-
рые могут существовать в вычислительной системе, перейдем к кратко-
му рассмотрению некоторых конкретных алгоритмов планирования
(применительно задачам кратковременного планирования).
    FCFS. Простейшим алгоритмом планирования является алгоритм,
который принято обозначать аббревиатурой FCFS по первым буквам его
английского названия – First Come, First Served (первым пришел, пер-
вым обслужен). Схема обслуживания задач согласно этой дисциплине
представлена на рис. 12.



                                 60



    
Яндекс цитирования Яндекс.Метрика