Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции_операционные системы (Информатики)

.pdf
Скачиваний:
57
Добавлен:
06.06.2015
Размер:
3.81 Mб
Скачать

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

квант процессорного времени. Если за отведенное время задача не завершается, то она переходит в конец очереди и ждет нового кванта процессорного времени.

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

Основным различием между невытесняющим и вытесняющим типами многозадачности является степень централизации механизма планирования задач. При вытесняющей многозадачности механизм планирования задач целиком сосредоточен в операционной системе,

и программист пишет свое приложение, не заботясь о том, что оно будет выполняться параллельно с другими задачами. При невытесняющей многозадачности разработчик приложений сам проектирует алгоритм планирования, наиболее подходящий для данного приложения и определяет в программе момент времени передачи управления от приложения к системе.

61

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

4.2. Процессы и потоки

До сих пор программу, которая обрабатывается процессором,

мы называли задачей. Однако все не так просто. Внутренними единицами работы операционной системы являются процессы и потоки. С точки зрения процессора и поток, и процесс являются задачами, которые нужно выполнить, но для операционной системы,

которая выделяет ресурсы компьютера, процесс и поток – разные объекты, которые и обслуживать нужно по-разному.

Процессом называют программу в стадии выполнения. Любое запущенное приложение порождает процесс, который обслуживается операционной системой. Ему выделяется адресное пространство в оперативной памяти. Каждый процесс загружается в свое адресное пространство, чтобы ни один процесс не мог получить прямой доступ к командам и данным другого процесса.

Если одновременно выполняется несколько приложений, то операционная система обеспечивает изоляцию процессов друг от друга. Все ресурсы, необходимые для работы процесса, выделяются операционной системой и освобождаются ею после завершения этого процесса. При необходимости взаимодействия процессов между собой посредником опять же выступает операционная система, которая предоставляет средства межпроцессной связи

(конвейеры, разделяемые секции памяти и др.)

В современных многозадачных операционных системах введено еще понятие потока. Поток (англ. thread – нить) –

наименьшая единица обработки, исполнение которой может быть назначено ядром операционной системы. Процесс может состоять из нескольких потоков. Потоки возникли как средство распараллеливания вычислений в рамках одного приложения (как бы многозадачность внутри приложения). Например, в текстовом

62

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

редакторе происходит набор нового текста (один поток),

параллельно идет автосохранение документа на диск (второй поток),

и производится печать документа (третий поток). Механизм многопоточности позволяет учитывать тесные связи между отдельными ветвями вычислений одного и того же приложения. В

отличие от процессов, ОС изолирует потоки в меньшей степени.

Потоки одного процесса используют общее адресное пространство,

общие файлы и устройства. Поэтому, чтобы организовать взаимодействие и обмен данными между потоками, можно обойтись без посредничества ОС. Но, конечно же, потоки разных процессов

(приложений) защищены друг от друга.

В тех операционных системах, которые работают с потоками,

процесс при создании получает все необходимые ресурсы кроме процессорного времени. Процессорное время операционная система выделяет только потокам, порожденным запущенным процессом.

До середины 80-х годов понятия «поток» не существовало.

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

Практика показала, что реализация многозадачности гораздо эффективнее на уровне потоков, а не процессов. Поэтому в современных операционных системах используются две единицы работы – процесс (более крупная единица) и поток (более мелкая единица).

Многозадачная ОС должна обеспечивать эффективное управление процессами и потоками. Этим занимается подсистема управления процессами и потоками, в задачи которой входит их

63

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

создание и завершение, поддержка взаимодействия между ними,

распределение ресурсов, в том числе и процессорного времени.

Дескриптор и контекст процесса.

При создании процесса создается информационная структура,

которая описывает этот процесс и включает информацию,

необходимую операционной системе для управления им

(идентификатор процесса, данные о расположении в памяти,

приоритет и права доступа и т.д.). В ОС Unix такая структура называется дескриптором процесса, в Windows NT – объект-

процесс.

В многопоточной системе при создании процесса ОС создает для каждого процесса как минимум один поток выполнения. При создании потока, как и при создании процесса, создается информационная структура, описывающая поток и содержащая идентификатор потока, данные о правах доступа и приоритете, о

состоянии потока и другую информацию.

При управлении процессами ОС использует две информационные структуры: дескриптор процесса и контекст процесса.

Дескриптор процесса содержит оперативную информацию,

необходимую ОС для организации его обслуживания: состояние процесса, расположение кодов и данных в оперативной памяти и на диске, приоритет, идентификатор пользователя, создавшего процесс,

какие процессы родственны, события, ожидаемые процессом и др.

Дескрипторы отдельных процессов объединены в список –

таблицу процессов. На основании информации в таблице процессов операционная система делает планирование и синхронизацию процессов.

64

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

Контекст процесса содержит дополнительную информацию о процессе, необходимую для возобновления выполнения процесса с прерванного места: содержимое регистров процесса, коды ошибок выполняемых процессом системных вызовов, информация обо всех открытых процессом файлах, незавершенных операциях ввода-

вывода и др.

Ресурсы процесса.

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

Выделение ресурсов процессам и потокам и их освобождение осуществляет менеджер ресурсов.

Часть ресурсов выделяется процессу при его создании –

статические ресурсы, часть – во время исполнения по запросу процесса – динамические ресурсы.

Ресурсы, которые в каждый момент времени могут принадлежать только одному процессу, называются монопольными

(например, раздел оперативной памяти, в который загружен процесс). Ресурсы, которые одновременно могут выделяться нескольким процессам, хотя фактически в каждый момент времени обслуживают только один, называются совместно используемыми

(например, процессор, файлы). Многократно используемые

65

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

несколькими процессами и не изменяемые ими ресурсы называются

реентерабельными. В отличие от совместно используемых ресурсов,

реентерабельные ресурсы в любой момент времени обслуживают сразу несколько процессов (например, разделяемые библиотеки).

По способу реализации различают реальные и виртуальные ресурсы. Реальные ресурсы – реальные физические устройства компьютера. Виртуальные ресурсы реально не существуют, но моделируется с помощью некоторой совокупности аппаратно-

программных средств. Виртуальные ресурсы применяются для преобразования физически монопольного ресурса в совместно используемый.

4.3. Планирование и диспетчеризация

При одновременном выполнении нескольких процессов возникает проблема разделения ресурсов. Может получиться ситуация, когда всем процессам понадобиться одно и то же устройство с последовательным доступом и процессы вынуждены будут простаивать в очереди, ожидая, когда этот ресурс освободится. Таким образом, еще в системах пакетной обработки встала задача планирования процессов, суть которой заключается в подборе такого множества процессов, которые при своем выполнении будут как можно реже конфликтовать за ресурсы. В

современных ОС большинство процессов порождаются динамически (во время работы), поэтому нельзя предвидеть заранее какие процессы будут совместно работать в определенное время.

Поэтому на первый план вышли задачи динамического,

краткосрочного планирования – наиболее эффективного распределения ресурсов на текущий момент работы системы. Задачи динамического планирования называются диспетчеризацией.

66

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

Самый главный ресурс – процессорное время. Многозадачная ОС должна разделить этот ресурс таким образом, чтобы обеспечить оптимальную работу запущенных пользователем и самой системой программ. Задача распределения процессорного времени в системе называется диспетчеризацией и занимается этим диспетчер задач.

Если в системе поддерживаются потоки выполнения, то процессорное время распределяется только между потоками, так как процесс выполняется посредством порожденных им потоков. Если в операционной системе не поддерживаются потоки, то тогда идет диспетчеризация процессов. Чтобы снять эту неопределенность,

будем говорить о диспетчеризации задач, имея в виду соответственно диспетчеризацию потоков или процессов,

выполняющихся процессором.

Процесс диспетчеризации предполагает:

сохранение контекста текущей задачи, выполнение которой прерывается;

загрузку контекста новой задачи, выбранной диспетчером задач;

запуск новой задачи на выполнение.

Диспетчер задач распределяет процессорное время между задачами, руководствуясь определенными правилами, или алгоритмами управления очередью задач (эти правила иногда называют дисциплиной обслуживания). Как мы отмечали выше (см.

типы многозадачности) в зависимости от того, какие правила используются, различают несколько типов многозадачности.

При невытесняющей многозадачности, когда задача занимает столько процессорного времени, сколько ей необходимо и освободить процессор задача может только добровольно,

планировщик может запустить другую задачу из очереди только

67

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

после того, как текущая задача освободит процессор. При создании приложений программисты использовали правило «уступки управления», когда приложения регулярно возвращали процессор в распоряжение системы. Плюсом такой организации является простота реализации, однако, при такой реализации многозадачности существует проблема зависания всей системы,

если задача, занявшая процессор, не освобождает его.

При вытесняющей многозадачности решение о переключении процессора с выполнения одной задачи на другую принимает операционная система (диспетчер задач). Процессорное время делится на кванты, и диспетчер задач распределяет их между всеми запущенными задачами. Используются следующие алгоритмы.

Равномерное квантование, когда задачам выделяется одинаковый квант времени по принципу FIFO (First In First Out

первый пришел – первый ушел, т.е. обычная очередь). Если за отведенное время задача не завершилась, то она переходит в конец очереди и ждет нового кванта процессорного времени.

Планирование согласно приоритетам, когда на порядок предоставления процессорного времени влияет приоритет задачи.

Приоритеты задачам присваивает планировщик и решает, в каком порядке, как долго и какие будут выполняться задачи. Планировщик может вытеснить выполняющуюся задачу и передать процессор задаче с более высоким приоритетом.

Состояния процессов (потоков).

В результате диспетчеризации каждая задача (т.е. процесс или поток) в ОС в течение своего существования может находиться в различных состояниях и переходить из одного состояния в другое.

Модели состояний процесса различаются в разных ОС. Например, в

Windows NT различают 7 состояний процесса, в Unix – 9 состояний.

68

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

Основными состояниями процесса (потока) являются: готовность,

выполнение, ожидание.

При запуске происходит создание процесса (потока), ему выделяются необходимые ресурсы, после чего процесс (поток)

переходит в состояние готовности. Готовность – процесс (поток)

встает в очередь и может начать выполнение сразу, как только диспетчер предоставит процессорное время. Выполнение (активное состояние) – процесс (поток) занимает процессорное время, т.е.

выполняется процессором. Ожидание – процесс (поток)

блокируется, так как ожидает выполнения некоторого события,

например, ввода с клавиатуры, освобождения какого-либо необходимого ему ресурса и др., как только ожидаемое событие выполняется, процесс (поток) переходит в состояние готовности

(встает в очередь на получение процессорного времени). После завершения работы процесс (поток) освобождает все используемые ресурсы и выгружается из памяти.

Рис. 4.2. Состояния процесса (потока).

4.4. Диспетчеризация прерываний

Идея прерывания, появившаяся в середине 50-х годов, внесла огромный вклад в развитие вычислительной техники и операционных систем. Прерывания – это механизм, позволяющий координировать параллельную работу отдельных устройств компьютера, операционной системы и других запущенных

69

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

приложений и реагировать на особые состояния, возникающие при работе процессора. Прерывание происходит при возникновении определенного события и влечет за собой принудительную передачу управления от выполняющейся программы к системе, а через нее к соответствующей программе обработки прерывания. Прерывание всегда влечет за собой изменение порядка выполнения команд процессора.

Прерывания реализуются аппаратно-программными средствами.

Взависимости от источника прерывания различают:

внешние прерывания;

внутренние прерывания;

программные прерывания.

Внешние прерывания – прерывания от аппаратных устройств,

в том числе вызванные действиями пользователя. Поэтому часто внешние прерывания называют аппаратными. Аппаратура передает электрический сигнал, который попадает на специальный вход прерывания процессора.

Внутренние прерывания – прерывания, которые возникают при появлении аварийной ситуации в ходе выполнения какой-либо инструкции программы (деление на нуль, ошибки защиты памяти,

обращение к несуществующему адресу и т.п.).

Программные прерывания – прерывания, возникающие при выполнении специальной команды процессора, которая имитирует прерывание и инициирует переход на новую последовательность инструкций. Программные прерывания были специально введены для того, чтобы переключение на системные программные модули происходило не просто как переход на подпрограмму, а точно таким же образом, как и обычное прерывание. Этим обеспечивается

70