Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Materialy_po_SP_2013.doc
Скачиваний:
270
Добавлен:
11.05.2015
Размер:
754.69 Кб
Скачать

37 Семафоры. Создание, открытие, освобождение и удаление семафора

Объекты ядра «семафор» используются для учета ресурсов. Как и все объекты ядра, они содержат счетчик числа пользователей, но, кроме того, поддерживают два 32-битных значения со знаком: одно определяет максимальное число ресурсов (контролируемое семафором), другое используется как счетчик текущего числа ресурсов.

Для семафоров определены следующие правила:

  • когда счетчик текущего числа ресурсов становится больше 0, семафор переходит в свободное состояние;

  • если этот счетчик равен 0, семафор занят;

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

  • счетчик текущего числа ресурсов не может быть больше максимального числа ресурсов.

Объект ядра «семафор» создается вызовом CreateSemaphore:

HANDLE CreateSemaphore( PSECURITY_ATTRIBUTE psa,

LONG lInitialCount, LONG lMAXimumCount, PCTRTR pszName);

Разумеется, любой процесс может получить свой («процессо-зависимый») описатель существующего объекта «семафор», вызвав OpenSemaphore.

HANDLE OpenSemaphore( DWORD fdwAcceSS,

BOOL bInhentHandle, PCTSTR pszName);

Параметр lMAXimumCountсообщает системе максимальное число ресурсов, обрабатываемое приложением. Поскольку это 32-битное значение со знаком, предельное число ресурсов может достигать 2 147 483 647. ПараметрlInitiа1Соuntуказывает, сколько из этих ресурсов доступно изначально (на данный момент).

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

Если Wait-функция определяет, что счетчик текущего числа ресурсов равен 0 (семафор занят), система переводит вызывающий поток в состояние ожидания Когда другой поток увеличит значение этого счетчика, система вспомнит о ждущем потоке и снова начнет выделять ему процессорное время (а он, захватив ресурс, уменьшит значение счетчика на 1).

Поток увеличивает значение счетчика текущего числа ресурсов, вызывая функцию ReleaseSemaphore

BOOLReleaseSemaphore(HANDLEhSem,LONGlReleaseCount,

PLONGplPreviousCount);

Она просто складывает величину lReleaseCountсо значением счетчика текущего числа ресурсов. Обычно в параметреlReleaseCountпередают 1, но это вовсе не обязательно: я часто передаю в нем значения, равные или большие 2. Функция возвращает исходное значение счетчика ресурсов в *plPreviousCount.

38 Понятие сетевой операционной системы. Компьютерная сеть

ОС компьютерной сети во многом аналогична ОС автономного компьютера.

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

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

Сетевая ОС играет роль интерфейса, экранирующего от пользователя все детали низкоуровневых программно-аппаратных средств сети.

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

  • Сетевые ОС

  • Распределенные ОС.

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

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

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

В настоящее время практически все сетевые ОС еще очень далеки от истинной распределенности.

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

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

Итак, термин сетевая ОС используется в двух значениях:

1) как совокупность ОС всех компьютеров сети;

2) ОС отдельного компьютера, способного работать в сети.

Использованные источники:

1. Олифер, В.Г. Сетевые операционные системы / В.Г. Олифер, Н.А. Олифер. – СПб.: Питер, 2002.

2. http://mf.grsu.by/UchProc/livak/en/po/lections/setos.htm

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]