logo search
Kniga_Osnovy_informatiki_i_informatsionnyh_tehn

Управление основными ресурсами

Основными ресурсами, используемыми программами во время выполнения, являются оперативная память и время процессора.

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

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

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

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

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

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

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

Порядок выделения времени процессора (планирования, диспетчеризации) определяется приоритетами программ. Приоритет – это числовая величина, характеризующая степень важности программы, срочность получения ответа от нее. Приоритеты программ зависят от режима их выполнения. В ОС MS Windows и OS/2 реализованы четыре основных приоритетных класса, которые назначаются программам при их выполнении:

– программы реального времени имеют наивысший приоритет, они получают время процессора в первую очередь;

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

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

– программы с низким уровнем приоритета (в этот класс входят скринсэйверы – программы сохранения экрана, заставки, которые запускаются на выполнение только тогда, когда нет активных программ с более высоким уровнем приоритета, когда пользователь не «проявляет» себя, некоторые служебные программы).

Для реализации более гибкой системы распределения времени между программами число приоритетных классов в последних версиях ОС MS Windows увеличено.

В рамках каждого приоритетного класса задачи распределяются по уровням приоритетов.

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

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

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

Так как потребности программ в этом ресурсе могут быть весьма велики, а объем физической памяти ограничен, во всех современных ОС реализована виртуальная память.

Возможности 32-разрядной адресации современных процессоров обеспечивают доступ к 4 Гб памяти. Реально же объем физически установленной памяти бывает значительно меньше. Поскольку разработчики программ не знают, память какой емкости окажется доступной программе во время ее выполнения, они пишут программы в расчете на виртуальное (воображаемое, кажущееся доступным) адресное пространство. Это пространст-во ограничивается возможностями адресации, потребностями самой ОС, которая также требует для своего выполнения ресурсов (в OS/2 в распоря-жении прикладной программы остается 512 Мб, в Windows NT – почти 2 Гб). Но в действительности в распоряжении программы оказывается значительно меньший объем физической памяти (обычно до 128‑512 Мб), которая, к тому же, должна быть распределена между несколькими параллельно выполняющимися программами. Эта проблема решается путем создания вирту-альной памяти.

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

Физической памятью в системах с виртуальной памятью фактически является дисковая память и объем этого ресурса ограничивается лишь возможностями адресации процессора (по 32‑разрядной шине адреса процессор может обратиться к 4 Гб памяти), потребностями ОС и объемом свободной памяти на диске. «Ненужные», временно не используемые данные выгружаются ОС на диск, освобождая оперативную память для текущей работы. При обращении к данным они снова загружаются в оперативную память. Это происходит незаметно для пользователя. Каждой программе «кажется», что ей выделена вся память (рис. 2.4). Однако в том случае, когда запущено большое количество программ, а объем ОЗУ невелик, система большую часть времени будет тратить не на выполнение программ, а на обмен данными между оперативной памятью и дисками. Такая ситуация называется «пробуксовкой».

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

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