Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Лекции - Операционные системы - файл 1.doc


Лекции - Операционные системы
скачать (314 kb.)

Доступные файлы (1):

1.doc314kb.16.11.2011 16:58скачать

содержание

1.doc

  1   2   3   4
Лекция 1. Общие сведения об операционных системах

Операционная система (ОС) представляет собой комплекс взаимосвязанных программ, являющихся интерфейсом между приложениями пользователя и аппаратурой компьютера. С одной стороны, ОС можно рассматривать как виртуальную машину [1]. Виртуальная машина управляется командами более высокого уровня, чем реальная. Для решения своих задач пользователь может обойтись без знания аппаратного устройства компьютера. Например, при работе с диском достаточно представлять его в виде некоторого набора файлов с именами. Последовательность действий при работе с файлом заключается в его открытии, выполнении одной или нескольких операций чтения/записи и в его закрытии.

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

• планирование ресурса, т.е. определение, какой задаче и в каком количестве следует выделить данный ресурс;

• удовлетворение запросов на ресурсы;

• разрешение конфликтов между задачами.

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

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

Многозадачные операционные системы позволяют запускать сразу несколько программ в одном сеансе. Мультипрограммирование или многозадачность – способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ, совместно использующих ресурсы компьютера: процессор, оперативную и внешнюю память, устройства ввода/вывода. Например, MS-DOS является однозадачной ОС, а Windows 98 многозадачной.

Многопользовательские операционные системы разделения времени предоставляют пользователям возможность интерактивной работы с несколькими приложениями. Всем приложениям попеременно выделяется квант процессорного времени. Так как каждый пользователь может запустить несколько задач, данные системы являются и многозадачными. Например, Windows 2000 Server, UNIX системы и операционные системы мэйнфреймов [5] являются многопользовательскими. Мэйнфреймами называют большие компьютеры с сотнями дисков и терабайтами данных. Обычно они включают три вида обслуживания:

• пакетная обработка – выполнение задач в пакете без интерак-тивного воздействия (бухгалтерские пакеты, отчеты по продажам и т.д.);

• обработка транзакций – управление большим количеством маленьких запросов (банковские операции, бронирование авиабилетов и т.д.);

• разделение времени.

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

Многопроцессорные операционные системы устанавливаются на серверах и мощных компьютерах. Многопроцессорная (мультипроцессорная) обработка – такой способ организации вычислительного процесса в системах с несколькими процессорами, когда несколько программ (процессов) могут одновременно выполняться на разных процессорах системы [3,5,6]. По логической организации среди многопроцессорных ОС можно выделить две модели [5]:

• Системы с общей памятью (Shared Memory).

• Системы с распределенной памятью (Distributed Memory).

^ Системы с общей памятью

Все процессоры совместно используют общую память, и каждый имеет доступ к программам и данным в памяти. Наиболее распространенной архитектурой является симметричная многопроцессорная система (SMP – Symmetric MultiProcessor). Данная архитектура предполагает однородный доступ к памяти (UMA –Uniform Memory Access), т.е. каждое слово данных может быть считано с одинаковой скоростью. Простейшей из архитектур SMP UMA является архитектура с общей шиной [3], представленная на рис. 1.1. Несколько процессоров и модулей памяти одновременно используют общую шину. Когда процессору необходимо прочитать слово в памяти, он сначала проверяет, свободна ли шина. Если свободна, процессор выставляет на нее адрес нужного слова, подает несколько управляющих сигналов и ждет, пока память не выставит нужное слово на шину данных. Если шина занята, процессор ждет, пока она не освободится. Для снижения времени простоя каждому процессору добавляется кэш. Кэш может располагаться внутри микросхемы процессора или рядом с процессором. Может быть несколько уровней кэш памяти. Наличие кэш памяти позволяет сократить число запросов к шине данных, так как большое количество обращений к памяти может быть удовлетворено прямо из кэша.

Так как в каждом локальном кэше хранится образ части основной памяти, в результате изменения слова в одном кэше, в других кэшах слово может оказаться неверным. Поэтому существует аппаратный механизм изменения слова в остальных кэшах, который называется согласованностью кэшей [5]. Даже при оптимальном использовании кэша наличие всего одной общей шины ограничивает число UMA – мультипроцессоров до 32 -64.

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

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

К другому типу архитектуры относятся системы с неоднородным доступом к памяти – NUMA (Non Uniform Memory Access). Мультипроцессоры NUMA представляют единое адресное пространство для всех процессоров, однако доступ к локальной памяти осуществляется быстрее, чем к удаленным модулям [5]. Таким образом, все программы, написанные для UMA, будут работать и на NUMA, но производительность будет ниже. Архитектура NUMA позволяет увеличить число процессоров до нескольких сотен и более.

^ Системы с распределенной памятью

Данный класс систем включает многомашинные системы (мульти-компьютеры) и кластеры [3,5].

Многомашинные системы представляют собой тесно связанные процессоры, у которых нет общей памяти. Каждый процессор имеет свое ОЗУ. Базовый узел многомашинной системы состоит из процессора, памяти, сетевого интерфейса и, иногда, жесткого диска. Данный узел может быть упакован в стандартный корпус ПК. В некоторых случаях может использоваться в качестве узла двух или четырех процессорная плата. Многомашинные системы могут включать до 100 – 1000 узлов. Используются различные топологии соединения узлов:

кольца, решетки, торы и другие.

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

• Единая иерархия файлов. Пользователь видит единую иерархию каталогов файлов в одном корневом.

• Единая виртуальная сеть. Узел кластера может обратиться к любому другому узлу.

• Единое пространство памяти.

• Единый пользовательский интерфейс.

• Единое пространство процессов. Используется единая схема идентификации процессов. Процесс на одном узле может создавать процесс на удаленном узле или взаимодействовать с ним.

• Миграция процессов. Эта функция обеспечивает балансировку загрузки.

Примером кластера является система Windows 2000 Advanced Server (до 8 процессоров, 8 Гбайт ОЗУ) [3].

Сетевые операционные системы можно рассматривать как набор операционных систем отдельных компьютеров, составляющих сеть [1]. Операционные системы отдельных компьютеров, работающих в сети, включают согласованный набор коммуникационных протоколов для организации взаимодействия процессов и разделения ресурсов компьютеров между пользователями сети. На рис. 1.2 показаны основные компоненты сетевой ОС [1]. В их число входят:

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

• сетевые средства, включающие три компонента:

o средства предоставления локальных ресурсов и услуг в общее пользование — серверная часть ОС;

o средства запроса доступа к удаленным ресурсам и услугам — клиентская часть ОС;

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


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

• сетевые службы встроены в ОС;

• сетевые службы объединены в виде оболочки ОС;

• сетевые службы поставляются в виде отдельных компонент. На рис. 1.3 показаны варианты построения сетевых ОС [1]. Первые сетевые ОС представляли собой локальные ОС с надстроенными над ними сетевыми оболочками. В дальнейшем сетевые функции встраиваются в основные модули операционной системы, что позволяет обеспечить более высокую производительность. Примерами таких сетевых ОС являются OS Windows NT/2000, OS/2 Warp и различные версии UNIX.


В настоящее время существуют две основные модели, на основе которых строится компьютерная сеть: одноранговая модель и модель «клиент/сервер»[1]. В одноранговых сетях все узлы равнозначны. Каждый компьютер узла является независимым и использует свои ресурсы, но может предоставлять их другим сетевым узлам. К числу таких ресурсов могут относиться отдельные каталоги с файлами, принтер, компакт-диск. В сетях, созданных на основе модели «клиент/сервер», управление большинством сетевых служб и сетевых ресурсов, используемых клиентскими компьютерами сети, осуществляется одним или несколькими серверами. Сервер играет роль центрального узла администрирования и безопасности сети. Клиент – это программное обеспечение, которое запрашивает сетевые службы.

Сетевые операционные системы, обеспечивающие поддержку выделенного сервера, называются серверными [1]. Серверные ОС поддерживают более широкий набор функций и включают более развитые средства защиты. Примерами серверных ОС являются многие операционные системы семейств UNIX и Linux, Windows 2000 Server, Windows.NET Server. Большинство современных операционных систем, в частности ОС семейства Windows 95/98/XP, включают компоненты для подключения в качестве клиентского компьютера к сети с выделенным сервером и для подключения к одноранговой сети.

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

тема [3].


^ Лекция 2. Архитектура операционной системы

Структурная организация ОС на основе различных программных компонент определяет ее архитектуру. В наиболее общем виде операционную систему можно разбить на две части: ядро и вспомогательные модули. Ядро является основным компонентом ОС и выполняет наиболее важные функции по организации вычислительного процесса и поддержки приложений, в число которых входят управление процессами, виртуальной памятью, вводом-выводом и файлами, обработка прерываний [1]. К вспомогательным модулям относятся

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

Монолитные ОС представляют собой многоуровневые модульные структуры с иерархической организацией функций [1,3]. Взаимодействие осуществляется между функциями, находящимися на соседних уровнях в соответствии с определенными правилами. На рис. 1.4 показана многослойная структура ядра, состоящего из следующих слоев [1]:

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

• Машинно-зависимые компоненты ОС. Этот слой образуют программные модули, в которых отражается специфика аппаратной платформы компьютера. В идеале этот слой полностью экранирует вышележащие слои ядра от особенностей аппаратуры. Это позволяет разрабатывать вышележащие слои на основе машинно-независимых модулей для всех типов аппаратных платформ, поддерживаемых данной ОС. Примером экранирующего слоя может служить слой HAL операционных систем Windows NT/2000.

• Базовые механизмы ядра. Данный слой выполняет примитивные операции ядра: программное переключение контекстов процессов, диспетчеризацию прерываний, перемещение страниц из памяти на диск и обратно и т. п. Модули данного слоя являются исполнительными механизмами для модулей верхних слоев. Например, решение о прерывании выполнения текущего процесса A и выполнении процесса B, принимается менеджером процессов на вышележащем слое, а слою базовых механизмов передается директива о выполнении переключения с контекста текущего процесса на контекст процесса В.

• Менеджеры ресурсов. Этот слой включает функциональные модули управления основными ресурсами вычислительной системы. В их число входят менеджеры (называемые также диспетчерами) процессов, ввода-вывода, файловой системы и виртуальной памяти.

• Интерфейс системных вызовов. Этот слой является самым верхним слоем ядра и взаимодействует непосредственно с приложениями и системными утилитами, образуя прикладной программный интерфейс(API) операционной системы. Функции API, обслуживающие системные вызовы, предоставляют возможность использования средств операционной системы при разработке прикладных программ. Например, в операционной системе UNIX с помощью системного вызова fd = open("/doc/a.txt",

0_RDONLY) приложение открывает файл a.txt, хранящийся в каталоге /doc, а с помощью системного вызова read(fd, buffer, count) читает из этого файла в область своего адресного пространства, имеющую имя buffer, некоторое количество байт [1]. Для осуществления таких действий системные вызовы обращаются к функциям слоя менеджеров ресурсов, причем для выполнения одного системного вызова может понадобиться несколько таких обращений.


Микроядерные ОС предполагают наличие микроядра, работающего в привилегированном режиме и состоящего из машинно-зависимых модулей, реализующих базовые функции операционной системы [1,2,3]. В число таких функций входят:

• управление процессами;

• управление виртуальной памятью;

• управление устройствами ввода-вывода и прерываниями;

• межпроцессорные коммуникации.

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

На рис. 1.5 схематично показан механизм обращения к серверам ОС через микроядро [1]. Клиент (прикладная программа или другой компонент ОС) запрашивает выполнение некоторой функции у соответствующего сервера, посылая ему сообщение. Микроядро имеет доступ к адресным пространствам обоих приложений, поскольку выполняется в привилегированном режиме, и потому является посредником.

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

К числу достоинств архитектуры с микроядром относятся следующие качества [1,3]:

• расширяемость, т.е. возможность добавлять новые сервисы, или модифицировать, или убирать старые.

• переносимость, т.е. минимум изменений кода микроядра за счет его компактности.

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

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

Основным недостатком архитектур с микроядром является их низкая производительность. Создание сообщения и отправка его через микроядро следующим получением ответа занимает больше времени, чем непосредственный вызов сервиса. Наиболее ярким представителем ОС с архитектурой микроядра является ОС реального времени QNX [2]. Микроядро QNX имеет объем всего несколько десятков килобайт и поддерживает только планирование и диспетчеризацию процессов, взаимодействие процессов, обработку прерываний и сетевые службы нижнего уровня. Основная область ее применения – встроенные системы.


^ Лекция 3. Процессы и потоки

Основные определения

Программа – статический объект, представляющий собой файл или совокупность файлов с кодами и данными. Для того чтобы программа могла быть запущена на выполнение, операционная система должна создать окружение или среду выполнения задачи, включающую возможности доступа к различным системным ресурсам (память, устройства ввода-вывода, файлы и т.д.). Такое окружение получило название процесса [4]. Процесс представляет собой исполняемый образ программы, включающий отображение в памяти исполняемого файла, полученного в результате компиляции и связывания исходного кода программы, кодов данных и библиотек, стека, а также ряда структур данных ядра, необходимых для управления процессом.

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

Процессы можно условно разбить на три категории:

системные;

фоновые (демоны);

прикладные (пользовательские).

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

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

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

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

Большинство процессоров поддерживают два режима работы:

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

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

^ Модель процесса

Можно рассматривать все функционирующее на компьютере программное обеспечение, включая операционную систему, в виде набора процессов. Каждый процесс можно описать набором параметров, включая текущие значения счетчика команд, регистров и переменных. С позиций данной абстрактной модели у каждого процесса есть собственный виртуальный центральный процессор [5].В действительности реальный процессор переключается с одного процесса на другой. Это переключение и называется многозадачностью или мультипрограммированием.

Для реализации модели процессов операционная система содержит системную таблицу процессов (массив структур) с одним элементом для каждого процесса. Данный элемент называется блоком управления или дескриптором процесса. В дескрипторе процесса прямо или косвенно (через указатели на связанные с процессом структуры) содержится информация о состоянии процесса, его приоритетах, идентификаторе, параметрах планирования, о расположении образа процесса в оперативной памяти и на диске, об ожидаемых процессом событиях, а также другая оперативная информация, необходимая ядру системы в течение всего жизненного цикла процесса, независимо от того, находится ли процесс в активном или пассивном состоянии[1]. При управлении процессами ядро ОС кроме дескриптора использует другую информационную структуру, называемую контекстом процесса. Контекст процесса содержит более объемную часть информации о процессе, необходимую для возобновления выполнения прерванного процесса. Эта информация включает содержимое регистров процессора, данные об открытых файлах и незавершенных операциях ввода-вывода, коды ошибок выполняемых системных вызовов и другие данные, характеризующие состояние вычислительной среды в момент прерывания.

Каждому процессу операционной системой выделяется виртуальное адресное пространство, представляющее собой набор виртуальных адресов, необходимых для выполнения процесса. Для прикладных программ эти адреса первоначально назначаются транслятором при создании сегментов кода и данных. Затем, при создании процесса, ОС фиксирует назначенное виртуальное адресное пространство в собственных системных таблицах. В ходе выполнения процесс может увеличить размер назначенного виртуального адресного пространства, запросив у ОС создания дополнительных сегментов или увеличения существующих. Максимальный размер виртуального адресного пространства ограничивается разрядностью адреса данной архитектуры компьютера. Например, для 32-разрядных процессоров Intel Pentium ОС может предоставить каждому процессу виртуальное адресное пространство до 4 Гбайт. Содержимое назначенного процессу виртуального адресного пространства представляет собой образ процесса.

Выполнение процесса может происходить в двух режимах: в режиме ядра (kernel mode) или режиме задачи (user mode). В режиме задачи процесс выполняет инструкции прикладной программы, допустимые на непривилегированном уровне защиты процессора. При этом процессу недоступны системные структуры данных [4]. Для получения услуг ядра процессу необходимо сделать системный вызов, после чего выполнение процесса переходит на привилегированный уровень (в режим ядра). Таким образом, ядро системы защищает собственное адресное пространство от доступа прикладного процесса, который может нарушить целостность структур данных ядра. Соответственно и образ процесса состоит из двух частей: данных режима задачи и данных режима ядра. Образ процесса в режиме задачи состоит из сегментов кода, данных, стека, библиотек. Образ процесса в режиме ядра состоит из структур данных, которые используются ядром для управления процессом.


^ Лекция 4. Управление процессами

Для управления процессами и выделяемыми им ресурсами ОС использует четыре вида управляющих таблиц [3].

￿ Таблицы памяти – используются для отслеживания оперативной и виртуальной памяти. Содержат следующую информацию:

￿ объем оперативной и виртуальной памяти, отведенной процессу;

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

￿ данные, необходимые для управления виртуальной памятью.

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

￿ Таблицы файлов – содержат информацию о существующих файлах, их расположении, текущем состоянии и других атрибутах.

Основная часть этой информации поддерживается файловой системой.

￿ Таблицы процессов – содержат указатели на образы процессов.

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

Управление процессами осуществляется ОС в режиме ядра и включает следующие функции:

- создание и завершение процессов;

- планирование и диспетчеризация процессов;

- переключение процессов;

- синхронизация и обмен информацией между процессами;

- организация управляющих блоков процессов.

^ Создание и завершение процессов

Для создания нового процесса операционной системе необходимо выполнить определенную последовательность действий [3]:

• присвоить новому процессу уникальный идентификатор, т.е. занести новую запись в таблицу процессов;

• выделить пространство для процесса, т.е. выделить адресное пространство для всех элементов образа процесса;

• инициализировать управляющий блок процесса;

• поместить процесс в список “готовых” или “готовых приостановленных процессов”;

• загрузить часть кодов и данных процесса в оперативную память.

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

Основными причинами создания процессов являются:

• запуск задач пользователей и заданий в среде пакетной обработки;

• поступление запросов от приложений на выполнение некоторых функций;

• порождение процессов другими процессами.

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

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

Основными причинами завершения процессов являются:

• нормальное завершение;

• превышение предельного лимита времени;

• превышение лимита отведенной памяти;

• ошибки при выполнении;

• вмешательство пользователя, администратора или ОС;

• завершение родительского процесса.

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

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

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

Если бы все процессы всегда были готовы к выполнению, то очередь на рис 2.2 могла бы работать эффективно, т.е. обслуживать имеющиеся в наличии процессы карусельным (round robin) методом, когда каждому процессу отводится определенный промежуток времени, по истечении которого процесс возвращается обратно в очередь. Однако модель с двумя состояниями не является адекватной. Некоторые из невыполняющихся процессов готовы к выполнению, в то время как другие являются заблокированными и ждут окончания операции ввода-вывода. Поэтому более адекватной реальности является модель процесса с пятью состояниями:

￿ выполняющийся;

￿ готовый к выполнению;

￿ блокированный (процесс не может выполниться до наступления некоторого события, например до завершения операции ввода-вывода);

￿ новый (только что созданный процесс, который еще не помещен ОС в пул выполнимых процессов и не загружен в ОЗУ);

￿ завершающийся (процесс, удаленный ОС из пула выполнимых процессов).

На рис. 2.3 показаны типы событий, соответствующие каждому из возможных переходов из одного состояния в другое. Возможны следующие переходы:

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

￿ Новый/Готовый. ОС переводит процесс в состояние готового к выполнению по мере готовности к обработке дополнительных процессов. Существуют ограничения на количество запущенных процессов и на объем выделяемой для

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

￿ Готовый/Выполняющийся. ОС выбирает один из готовых для выполнения процессов в соответствии с принятой стратегией планирования.

￿ Выполняющийся/Завершающийся. ОС прекращает выполнение процесса по одной из причин завершения процессов.

￿ Выполняющийся/Готовый. ОС прерывает выполнение процесса или вытесняет процесс по истечении заданного кванта времени или из-за наличия другого процесса с более высоким приоритетом.

￿ Выполняющийся/Блокированный. Процесс переводится в заблокированное состояние, если для продолжения работы требуется наступление некоторого события (ожидание завершения операции ввода-вывода, сообщения от другого процесса и т.п.).

￿ Блокированный/Готовый. Заблокированный процесс переходит в состояние готовности к выполнению при наступлении ожидаемого события.

￿ Готовый/Завершающийся. Родительский процесс может прервать выполнение дочернего процесса. Дочерний процесс может прекратиться при завершении родительского процесса.

￿ Блокированный/Завершающийся. Аналогично предыдущему пункту.

Обобщением модели с пятью состояниями является модель с семью состояниями, позволяющая более адекватно смоделировать реализацию операционных систем. В данной модели вводится дополнительно понятие приостановленного процесса и два новых состояния:

￿ Блокированный/Приостановленный. Процесс, выгруженный на диск и ожидающий какого-то события.

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

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

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

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

• приостановка дочерних процессов родительским для их проверки или координации;

• приостановка пользовательского процесса для отладки программы;

• приостановка фоновых процессов операционной системой в случае выявления проблем.

  1   2   3   4



Скачать файл (314 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации