Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Answers.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
1.55 Mб
Скачать

Нити Диспетчеризация процессов (нитей)

Операционная система NetWare включает в себя следующие очереди (рисунок 2.4), в которых находятся различные нити, ожидая освобождения центрального процессора (ЦП):

  • очередь WorkToDoList (только для версии 4.х),

  • очередь RunList,

  • очередь DelayedWorkToDo,

  • очередь LowPriority.

Очереди перечислены в порядке убывания приоритетов обслуживания нитей. Внутри каждой очереди нити диспетчируются в соответствии с дисциплиной FIFO: "первый пришёл - первый обслужен".

Уже отмечалось, что нить - это или внутренняя задача ОС, или задача, связанная с NLM-модулем. Операционная система идентифицирует и отслеживает каждую нить по её блоку управления процессом PCB (Process Control Block).

Рис. 2.3. Функциональная схема ОС NetWare

Обычно в NetWare нить сама себя переводит в неактивное состояние (ставит в очередь). Это происходит в одном из следующих случаев (рисунок 2.4).

  1. Нить выполняет функцию SheduleWorkToDo (для версии 4.х). Создаётся новая нить, которая заимствуется из ядра NetWare и помещается в очередь WorkToDoList, имеющую высший приоритет для планирования на ЦП. Старая нить помещается в конец очереди RunList.

  2. Нить приостанавливается, устанавливая семафор (функция WaitOnLocalSemaphore) или ожидая активизации со стороны другой нити (функция SuspendThread). В этом случае нить помещается в конец очереди RunList, но не диспетчируется (не планируется) до наступления требуемого события.

  3. Нить выполняет функцию ThreadSwitch, чтобы переключить контекст (т. е. чтобы активизировать другую нить из очереди). В этом случае нить помещается в конец очереди RunList и диспетчируется, когда до неё доходит очередь.

  4. Нить выполняет функцию BeginThread. Создаётся новая нить, которая помещается в конец очереди RunList. Старая нить продолжает выполняться.

Рис. 2.4. Очереди к процессору

  1. Нить выполняет функцию ThreadSwitchWithDelay. Нить помещается в конец очереди DelayedWorkToDo и приостанавливается на 50 переключений контекста (нитей), после чего она помещается в конец очереди RunList. Число переключений контекста (50) можно изменить с помощью функции SetThreadHandicap (при этом говорят, что устанавливается постоянный гандикап). Часто функцию ThreadSwitchWithDelay используют для того, чтобы активизировать задачи из очереди LowPriority, т.к. нити из этой очереди выполняются только в том случае, если пуста очередь RunList. Аналогичные действия выполняются, если встречается функция Delay (задержать нить на определённый интервал времени).

  2. Нить выполняет функцию ThreadSwitchLowPriority. В этом случае нить помещается в очередь LowPriority, имеющую самый низкий приоритет. Нити в этой очереди выполняются только в том случае, если пуста очередь RunList, и нет нитей, для которых установлен постоянный гандикап. Типичные низкоприоритетные нити - это создание резервной копии или упаковка файла.

Кольца защиты Первый уровень защиты sft-I

Первый уровень защиты SFT-I включает следующие решения:

  • дублирование таблиц DET и FAT тома,

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

  • динамическая переадресация блоков (Hot Fix).

Рассмотрим эти решения подробнее.

Дублирование таблиц DET и FAT тома

Таблицы DET и FAT дублируются для каждого тома файлового сервера (рисунок 2.39).

Эти дубли используются NLM-модулем VREPAIR.NLM в процессе "ремонта" тома. Эта программа последовательно читает записи DET и FAT, сопоставляет их, при необходимости корректирует эти записи и затем записывает изменения в обе копии таблиц.

Рис. 2.39. Дублирование таблиц DET и FAT

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

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

Считается, что запись на диск выполнена успешно, если записанные и прочитанные данные совпадают. Режим проверки записи последующим чтением можно включить для всех дисков файлового сервера с помощью SET-параметра ENABLE DISK READ AFTER WRITE. Для конкретного диска этот режим можно включить/выключить с помощью утилиты MONITOR.NLM (пункт меню Disk Information/Read After Write Verify).

Рис 2.40. Проверка записи последующим чтением

Динамическая переадресация дефектных блоков (Hot Fix)

Если записанные и затем прочитанные данные не совпадают, то считается, что соответствующая область на диске является дефектной, и блок записывается в область переназначения Hot Fix (рисунок 2.41).

Рис. 2.41. Динамическая переадресация дефектных блоков

При чтении блока с файлового сервера NetWare сначала просматривает таблицу переназначения, и если блок описан в этой таблице, то он читается из области переназначения Hot Fix. В противном случае блок читается из основной области раздела NetWare.

Размер области Hot Fix устанавливается при инсталляции файлового сервера.

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