На главную страницу
Форум txt.version   



Статья :: 10.2 ДИСКОВЫЕ ДРАЙВЕРЫ : Морис Бах

10.2 ДИСКОВЫЕ ДРАЙВЕРЫ

Так сложилось исторически, что дисковые устройства в системах UNIX разбивались на разделы, содержащие различные файловые системы, что означало "деление [дискового] пакета на несколько управляемых по-своему частей" (см. [System V 84b]). Например, если на диске располагаются четыре файловые системы, администратор может оставить одну из них несмонтированной, одну смонтировать только для чтения, а две других только для записи. Несмотря на то, что все файловые системы сосуществуют на одном физическом устройстве, пользователи не могут ни обращаться к файлам немонтированной файловой системы, используя методы доступа, описанные в главах 4 и 5, ни записывать файлы в файловые системы, смонтированные только для чтения. Более того, так как каждый раздел (и, следовательно, файловая система) занимает на диске смежные дорожки и цилиндры, скопировать всю файловую систему легче, чем в том случае, если бы раздел занимал участки, разбросанные по всему дисковому тому.

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

Рисунок 10.7. Разделы на диске RP07

Исторически сложилось так, что размеры дисковых разделов устанавливаются в зависимости от типа диска. Например, диск DEC RP07 разбит на разделы, характеристика которых приведена на Рисунке 10.7. Предположим, что файлы "/dev/dsk0", "/dev/dsk1", "/dev/dsk2" и "/dev/dsk3" соответствуют разделам диска RP07, имеющим номера от 0 до 3, и имеют аналогичные младшие номера. Пусть размер логического блока в файловой системе совпадает с размером дискового блока. Если ядро пытается обратиться к блоку с номером 940 в файловой системе, хранящейся в "/dev/dsk3", дисковый драйвер переадресует запрос к блоку с номером 336940 (раздел 3 начинается с блока, имеющего номер 336000; 336000 + 940 = 336940) на диске.

Размеры разделов на диске варьируются и администраторы располагают файловые системы в разделах соответствующего размера: большие файловые системы попадают в разделы большего размера и т. д. Разделы на диске могут перекрываться. Например, разделы 0 и 1 на диске RP07 не пересекаются, но вместе они занимают блоки с номерами от 0 до 1008000, то есть весь диск. Раздел 7 так же занимает весь диск. Перекрытие разделов не имеет значения, поскольку файловые системы, хранящиеся в разделах, размещаются таким образом, что между ними нет пересечений. Иметь один раздел, включающий в себя все дисковое пространство, выгодно, поскольку весь том можно быстро скопировать.

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

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

Сервисные программы могут непосредственно обращаться к диску в обход стандартного метода доступа к файловой системе, рассмотренного в главах 4 и 5, как пользуясь блочным интерфейсом, так и не прибегая к структурированию данных. Непосредственно работают с диском две важные программы — mkfs и fsck. Программа mkfs форматирует раздел диска для файловой системы UNIX, создавая при этом суперблок, список индексов, список свободных дисковых блоков с указателями и корневой каталог новой файловой системы. Программа fsck проверяет целостность существующей файловой системы и исправляет ошибки, как показано в главе 5.

Рассмотрим программу, приведенную на Рисунке 10.8, в применении к файлам "/dev/dsk15" и "/dev/rdsk15", и предположим, что команда ls выдала следующую информацию:


ls -l /dev/dsk15 /dev/rdsk15

br-------- 2 root root 0,21 Feb 12 15:40 /dev/dsk15

crw-rw---- 2 root root 7,21 Mar 7 09:29 /dev/rdsk15


Отсюда видно, что файл "/dev/dsk15" соответствует устройству блочного типа, владельцем которого является пользователь под именем "root", и только пользователь "root" может читать с него непосредственно. Его старший номер 0, младший — 21. Файл "/dev/rdsk15" соответствует устройству посимвольного ввода-вывода, владельцем которого является пользователь "root", однако права доступа к которому на запись и чтение есть как у владельца, так и у группы. Его старший номер — 7, младший — 21. Процесс, открывающий файлы, получает доступ к устройству через таблицу ключей устройств ввода-вывода блоками и таблицу ключей устройств посимвольного ввода-вывода, соответственно, а младший номер устройства 21 информирует драйвер о том, к какому разделу диска производится обращение, например, дисковод 2, раздел 1. Поскольку младшие номера у файлов совпадают, они ссылаются на один и тот же раздел диска, если предположить, что это одно устройство[31]. Таким образом, процесс, выполняющий программу, открывает один и тот же драйвер дважды (используя различные интерфейсы), позиционирует головку к смещению с адресом 8192 и считывает данные с этого места. Результаты выполнения операций чтения должны быть идентичными при условии, что работает только одна файловая система.


#include "fcntl.h"

main() {

 char buf1[4096], buf2[4096];

 int fd1, fd2, i;

 if (((fd1 = open("/dev/dsk5/", O_RDONLY)) == -1) || ((fd2 = open("/dev/rdsk5", O_RDONLY)) == -1)) {

  printf("ошибка при открытии\n");

  exit();

 }

 lseek(fd1, 8192L, 0);

 lseek(fd2, 8192L, 0);

 if ((read(fd1, buf1, sizeof(buf1)) == -1) || (read(fd2,  buf2, sizeof(buf2)) == -1)) {

  printf("ошибка при чтении\n");

  exit();

 }

 for (i = 0; i ‹ sizeof(buf1); i++) if (buf1[i] != buf2[i]) {

  printf("различие в смещении %d\n", i);

  exit();

 }

 printf("данные совпадают\n");

}

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


Программы, осуществляющие чтение и запись на диск непосредственно, представляют опасность, поскольку манипулируют с чувствительной информацией, рискуя нарушить системную защиту. Администраторам следует защищать интерфейсы ввода-вывода путем установки прав доступа к файлам дисковых устройств. Например, дисковые файлы "/dev/dsk15" и "/dev/rdsk15" должны принадлежать пользователю с именем "root", и права доступа к ним должны быть определены таким образом, чтобы пользователю "root" было разрешено чтение, а всем остальным пользователям и чтение, и запись должны быть запрещены.

Программы, осуществляющие чтение и запись на диск непосредственно, могут также нарушить целостность данных в файловой системе. Алгоритмы файловой системы, рассмотренные в главах 3, 4 и 5, координируют выполнение операций ввода-вывода, связанных с диском, тем самым поддерживая целостность информационных структур на диске, в том числе списка свободных дисковых блоков и указателей из индексов на информационные блоки прямой и косвенной адресации. Процессы, обращающиеся к диску непосредственно, обходят эти алгоритмы. Пусть даже их программы написаны с большой осторожностью, проблема целостности все равно не исчезнет, если они выполняются параллельно с работой другой файловой системы. По этой причине программа fsck не должна выполняться при наличии активной файловой системы.

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

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

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

Преимущество использования символьного интерфейса состоит в скорости, если не возникает необходимость в кешировании данных для дальнейшей работы. Процессы, обращающиеся к устройствам ввода — вывода блоками, передают информацию блоками, размер каждого из которых ограничивается размером логического блока в данной файловой системе. Например, если размер логического блока в файловой системе 1 Кбайт, за одну операцию ввода-вывода может быть передано не больше 1 Кбайта информации. При этом процессы, обращающиеся к диску с помощью символьного интерфейса, могут передавать за одну дисковую операцию множество дисковых блоков, в зависимости от возможностей дискового контроллера. С функциональной точки зрения, процесс получает тот же самый результат, но символьный интерфейс может работать гораздо быстрее. Если воспользоваться примером, приведенным на Рисунке 10.8, можно увидеть, что когда процесс считывает 4096 байт, используя блочный интерфейс для файловой системы с размером блока 1 Кбайт, ядро производит четыре внутренние итерации, на каждом шаге обращаясь к диску, прежде чем вызванная системная функция возвращает управление, но когда процесс использует символьный интерфейс, драйвер может закончить чтение за одну дисковую операцию. Более того, использование блочного интерфейса вызывает дополнительное копирование данных между адресным пространством задачи и буферами ядра, что отсутствует в символьном интерфейсе.




10.2 ДИСКОВЫЕ ДРАЙВЕРЫ : Морис Бах

страницы в данном разделе 
Архитектура операционной системы UNIX : Морис Бах 1.1 ИСТОРИЯ : Морис Бах
1.2 СТРУКТУРА СИСТЕМЫ : Морис Бах 1.3 ОБЗОР С ТОЧКИ ЗРЕНИЯ ПОЛЬЗОВАТЕЛЯ : Морис Бах
1.3.1 Файловая система : Морис Бах 1.3.2 Среда выполнения процессов : Морис Бах
1.3.3 Элементы конструкционных блоков : Морис Бах 1.4 ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ : Морис Бах
1.5 ПРЕДПОЛАГАЕМАЯ АППАРАТНАЯ СРЕДА : Морис Бах продолжение 9 : Морис Бах
1.1 ИСТОРИЯ : Морис Бах 1.2 СТРУКТУРА СИСТЕМЫ : Морис Бах
1.3.1 Файловая система : Морис Бах 1.3.2 Среда выполнения процессов : Морис Бах
1.3.3 Элементы конструкционных блоков : Морис Бах 1.3.1 Файловая система : Морис Бах
1.3.2 Среда выполнения процессов : Морис Бах 1.3.3 Элементы конструкционных блоков : Морис Бах
1.4 ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ : Морис Бах 1.5 ПРЕДПОЛАГАЕМАЯ АППАРАТНАЯ СРЕДА : Морис Бах
продолжение 20 2.1 АРХИТЕКТУРА ОПЕРАЦИОННОЙ СИСТЕМЫ UNIХ : Морис Бах
2.2 ВВЕДЕНИЕ В ОСНОВНЫЕ ПОНЯТИЯ СИСТЕМЫ : Морис Бах 2.2.1 Обзор особенностей подсистемы управления файлами : Морис Бах
2.2.2 Процессы : Морис Бах продолжение 25 : Морис Бах
2.2.2.1 Контекст процесса : Морис Бах 2.2.2.3 Переходы из состояния в состояние : Морис Бах
2.2.2.4 Сон и пробуждение : Морис Бах 2.5 ВЫВОДЫ И ОБЗОР ПОСЛЕДУЮЩИХ ГЛАВ : Морис Бах
2.1 АРХИТЕКТУРА ОПЕРАЦИОННОЙ СИСТЕМЫ UNIХ : Морис Бах 2.2.1 Обзор особенностей подсистемы управления файлами : Морис Бах
2.2.2 Процессы : Морис Бах продолжение 33 : Морис Бах
2.2.2.1 Контекст процесса : Морис Бах 2.2.2.3 Переходы из состояния в состояние : Морис Бах
2.2.2.4 Сон и пробуждение : Морис Бах 2.2.1 Обзор особенностей подсистемы управления файлами : Морис Бах
2.2.2 Процессы : Морис Бах 2.2.2.1 Контекст процесса : Морис Бах
2.2.2.3 Переходы из состояния в состояние : Морис Бах 2.2.2.4 Сон и пробуждение : Морис Бах
продолжение 42 2.2.2.1 Контекст процесса : Морис Бах
2.2.2.3 Переходы из состояния в состояние : Морис Бах 2.2.2.4 Сон и пробуждение : Морис Бах
2.5 ВЫВОДЫ И ОБЗОР ПОСЛЕДУЮЩИХ ГЛАВ : Морис Бах ГЛАВА 3. БУФЕР СВЕРХОПЕРАТИВНОЙ ПАМЯТИ (КЕШ) : Морис Бах
3.1 ЗАГОЛОВКИ БУФЕРА : Морис Бах 3.2 СТРУКТУРА ОБЛАСТИ БУФЕРОВ (БУФЕРНОГО ПУЛА) : Морис Бах
3.3 МЕХАНИЗМ ПОИСКА БУФЕРА : Морис Бах 3.4 ЧТЕНИЕ И ЗАПИСЬ ДИСКОВЫХ БЛОКОВ : Морис Бах
3.5 ПРЕИМУЩЕСТВА И НЕУДОБСТВА БУФЕРНОГО КЕША : Морис Бах 3.6 ВЫВОДЫ : Морис Бах
3.7 УПРАЖНЕНИЯ : Морис Бах продолжение 55
3.1 ЗАГОЛОВКИ БУФЕРА : Морис Бах 3.2 СТРУКТУРА ОБЛАСТИ БУФЕРОВ (БУФЕРНОГО ПУЛА) : Морис Бах
3.3 МЕХАНИЗМ ПОИСКА БУФЕРА : Морис Бах 3.4 ЧТЕНИЕ И ЗАПИСЬ ДИСКОВЫХ БЛОКОВ : Морис Бах
3.5 ПРЕИМУЩЕСТВА И НЕУДОБСТВА БУФЕРНОГО КЕША : Морис Бах 3.6 ВЫВОДЫ : Морис Бах
3.7 УПРАЖНЕНИЯ : Морис Бах ГЛАВА 4. ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ФАЙЛОВ : Морис Бах
4.1 ИНДЕКСЫ : Морис Бах 4.1.1 Определение : Морис Бах
4.1.2 Обращение к индексам : Морис Бах 4.2 СТРУКТУРА ФАЙЛА ОБЫЧНОГО ТИПА : Морис Бах
4.3 КАТАЛОГИ : Морис Бах 4.4 ПРЕВРАЩЕНИЕ СОСТАВНОГО ИМЕНИ ФАЙЛА (ПУТИ ПОИСКА) В ИДЕНТИФИКАТОР ИНДЕКСА : Морис Бах
4.6 НАЗНАЧЕНИЕ ИНДЕКСА НОВОМУ ФАЙЛУ : Морис Бах 4.7 ВЫДЕЛЕНИЕ ДИСКОВЫХ БЛОКОВ : Морис Бах
4.9 ВЫВОДЫ : Морис Бах 4.10 УПРАЖНЕНИЯ : Морис Бах
продолжение 74 4.1 ИНДЕКСЫ : Морис Бах
4.1.2 Обращение к индексам : Морис Бах 4.1.1 Определение : Морис Бах
4.1.2 Обращение к индексам : Морис Бах 4.2 СТРУКТУРА ФАЙЛА ОБЫЧНОГО ТИПА : Морис Бах
4.3 КАТАЛОГИ : Морис Бах 4.4 ПРЕВРАЩЕНИЕ СОСТАВНОГО ИМЕНИ ФАЙЛА (ПУТИ ПОИСКА) В ИДЕНТИФИКАТОР ИНДЕКСА : Морис Бах
4.6 НАЗНАЧЕНИЕ ИНДЕКСА НОВОМУ ФАЙЛУ : Морис Бах 4.7 ВЫДЕЛЕНИЕ ДИСКОВЫХ БЛОКОВ : Морис Бах
4.9 ВЫВОДЫ : Морис Бах 4.10 УПРАЖНЕНИЯ : Морис Бах
ГЛАВА 5. СИСТЕМНЫЕ ОПЕРАЦИИ ДЛЯ РАБОТЫ С ФАЙЛОВОЙ СИСТЕМОЙ : Морис Бах 5.1 OPEN : Морис Бах
5.2 READ : Морис Бах 5.3 WRIТЕ : Морис Бах
5.5 УКАЗАНИЕ МЕСТА В ФАЙЛЕ, ГДЕ БУДЕТ ВЫПОЛНЯТЬСЯ ВВОД-ВЫВОД — LSEEК : Морис Бах 5.6 CLOSЕ : Морис Бах
5.7 СОЗДАНИЕ ФАЙЛА : Морис Бах 5.8 СОЗДАНИЕ СПЕЦИАЛЬНЫХ ФАЙЛОВ : Морис Бах
5.9 СМЕНА ТЕКУЩЕГО И КОРНЕВОГО КАТАЛОГА : Морис Бах 5.12 КАНАЛЫ : Морис Бах
5.12.1 Системная функция pipе : Морис Бах 5.12.2 Открытие поименованного канала : Морис Бах
5.12.3 Чтение из каналов и запись в каналы : Морис Бах 5.12.5 Примеры : Морис Бах
5.13 DUР : Морис Бах 5.14 МОНТИРОВАНИЕ И ДЕМОНТИРОВАНИЕ ФАЙЛОВЫХ СИСТЕМ : Морис Бах
продолжение 102 : Морис Бах 5.14.1 Пересечение точек монтирования в маршрутах поиска имен файлов : Морис Бах
5.14.2 Демонтирование файловой системы : Морис Бах 5.15 LINК : Морис Бах
5.16 UNLINК : Морис Бах продолжение 107 : Морис Бах
5.16.1 Целостность файловой системы : Морис Бах 5.16.2 Поводы для конкуренции : Морис Бах
5.17 АБСТРАКТНЫЕ ОБРАЩЕНИЯ К ФАЙЛОВЫМ СИСТЕМАМ : Морис Бах 5.18 СОПРОВОЖДЕНИЕ ФАЙЛОВОЙ СИСТЕМЫ : Морис Бах
5.20 УПРАЖНЕНИЯ : Морис Бах продолжение 113
5.1 OPEN : Морис Бах 5.2 READ : Морис Бах
5.3 WRIТЕ : Морис Бах 5.5 УКАЗАНИЕ МЕСТА В ФАЙЛЕ, ГДЕ БУДЕТ ВЫПОЛНЯТЬСЯ ВВОД-ВЫВОД — LSEEК : Морис Бах
5.6 CLOSЕ : Морис Бах 5.7 СОЗДАНИЕ ФАЙЛА : Морис Бах
5.8 СОЗДАНИЕ СПЕЦИАЛЬНЫХ ФАЙЛОВ : Морис Бах 5.9 СМЕНА ТЕКУЩЕГО И КОРНЕВОГО КАТАЛОГА : Морис Бах
5.12.1 Системная функция pipе : Морис Бах 5.12.2 Открытие поименованного канала : Морис Бах
5.12.3 Чтение из каналов и запись в каналы : Морис Бах 5.12.5 Примеры : Морис Бах
5.12.1 Системная функция pipе : Морис Бах 5.12.2 Открытие поименованного канала : Морис Бах
5.12.3 Чтение из каналов и запись в каналы : Морис Бах 5.12.5 Примеры : Морис Бах
5.13 DUР : Морис Бах 5.14 МОНТИРОВАНИЕ И ДЕМОНТИРОВАНИЕ ФАЙЛОВЫХ СИСТЕМ : Морис Бах
5.14.1 Пересечение точек монтирования в маршрутах поиска имен файлов : Морис Бах 5.14.2 Демонтирование файловой системы : Морис Бах
продолжение 134 5.14.1 Пересечение точек монтирования в маршрутах поиска имен файлов : Морис Бах
5.14.2 Демонтирование файловой системы : Морис Бах 5.15 LINК : Морис Бах
5.16 UNLINК : Морис Бах 5.16.1 Целостность файловой системы : Морис Бах
5.16.2 Поводы для конкуренции : Морис Бах продолжение 141
5.16.1 Целостность файловой системы : Морис Бах 5.16.2 Поводы для конкуренции : Морис Бах
5.17 АБСТРАКТНЫЕ ОБРАЩЕНИЯ К ФАЙЛОВЫМ СИСТЕМАМ : Морис Бах 5.18 СОПРОВОЖДЕНИЕ ФАЙЛОВОЙ СИСТЕМЫ : Морис Бах
5.20 УПРАЖНЕНИЯ : Морис Бах 6.1 СОСТОЯНИЯ ПРОЦЕССА И ПЕРЕХОДЫ МЕЖДУ НИМИ : Морис Бах
6.2 ФОРМАТ ПАМЯТИ СИСТЕМЫ : Морис Бах продолжение 149 : Морис Бах
6.2.1 Области : Морис Бах 6.2.2 Страницы и таблицы страниц : Морис Бах
6.2.3 Размещение ядра : Морис Бах 6.2.4 Пространство процесса : Морис Бах
6.3 КОНТЕКСТ ПРОЦЕССА : Морис Бах 6.4 СОХРАНЕНИЕ КОНТЕКСТА ПРОЦЕССА : Морис Бах
6.4.1 Прерывания и особые ситуации : Морис Бах 6.4.2 Взаимодействие с операционной системой через вызовы системных функций : Морис Бах
6.4.3 Переключение контекста : Морис Бах j159.html
6.5 УПРАВЛЕНИЕ АДРЕСНЫМ ПРОСТРАНСТВОМ ПРОЦЕССА : Морис Бах продолжение 161 : Морис Бах
6.5.2 Выделение области : Морис Бах 6.5.3 Присоединение области к процессу : Морис Бах
6.5.4 Изменение размера области : Морис Бах 6.5.5 Загрузка области : Морис Бах
6.5.8 Копирование содержимого области : Морис Бах 6.6 ПРИОСТАНОВКА ВЫПОЛНЕНИЯ : Морис Бах
6.6.1 События, вызывающие приостанов выполнения, и их адреса : Морис Бах 6.6.2 Алгоритмы приостанова и возобновления выполнения : Морис Бах
6.7 ВЫВОДЫ : Морис Бах 6.8 УПРАЖНЕНИЯ : Морис Бах
6.1 СОСТОЯНИЯ ПРОЦЕССА И ПЕРЕХОДЫ МЕЖДУ НИМИ : Морис Бах 6.2 ФОРМАТ ПАМЯТИ СИСТЕМЫ : Морис Бах
6.2.1 Области : Морис Бах продолжение 175
6.2.1 Области : Морис Бах 6.2.2 Страницы и таблицы страниц : Морис Бах
6.2.3 Размещение ядра : Морис Бах 6.2.4 Пространство процесса : Морис Бах
6.3 КОНТЕКСТ ПРОЦЕССА : Морис Бах 6.4.1 Прерывания и особые ситуации : Морис Бах
6.4.2 Взаимодействие с операционной системой через вызовы системных функций : Морис Бах 6.4.3 Переключение контекста : Морис Бах
j184.html 6.4.1 Прерывания и особые ситуации : Морис Бах
6.4.2 Взаимодействие с операционной системой через вызовы системных функций : Морис Бах 6.4.3 Переключение контекста : Морис Бах
j188.html 6.5 УПРАВЛЕНИЕ АДРЕСНЫМ ПРОСТРАНСТВОМ ПРОЦЕССА : Морис Бах
6.5.2 Выделение области : Морис Бах 6.5.3 Присоединение области к процессу : Морис Бах
6.5.4 Изменение размера области : Морис Бах 6.5.5 Загрузка области : Морис Бах
6.5.8 Копирование содержимого области : Морис Бах продолжение 195
6.5.2 Выделение области : Морис Бах 6.5.3 Присоединение области к процессу : Морис Бах
6.5.4 Изменение размера области : Морис Бах 6.5.5 Загрузка области : Морис Бах
6.5.8 Копирование содержимого области : Морис Бах 6.6.1 События, вызывающие приостанов выполнения, и их адреса : Морис Бах
6.6.2 Алгоритмы приостанова и возобновления выполнения : Морис Бах 6.6.1 События, вызывающие приостанов выполнения, и их адреса : Морис Бах
6.6.2 Алгоритмы приостанова и возобновления выполнения : Морис Бах 6.7 ВЫВОДЫ : Морис Бах
6.8 УПРАЖНЕНИЯ : Морис Бах ГЛАВА 7. УПРАВЛЕНИЕ ПРОЦЕССАМИ : Морис Бах
7.1 СОЗДАНИЕ ПРОЦЕССА : Морис Бах 7.2 СИГНАЛЫ : Морис Бах
продолжение 210 : Морис Бах 7.2.1 Обработка сигналов : Морис Бах
7.2.3 Посылка сигналов процессами : Морис Бах 7.3 ЗАВЕРШЕНИЕ ВЫПОЛНЕНИЯ ПРОЦЕССА : Морис Бах
7.4 ОЖИДАНИЕ ЗАВЕРШЕНИЯ ВЫПОЛНЕНИЯ ПРОЦЕССА : Морис Бах 7.5 ВЫЗОВ ДРУГИХ ПРОГРАММ : Морис Бах
7.6 КОД ИДЕНТИФИКАЦИИ ПОЛЬЗОВАТЕЛЯ ПРОЦЕССА : Морис Бах 7.7 ИЗМЕНЕНИЕ РАЗМЕРА ПРОЦЕССА : Морис Бах
7.8 КОМАНДНЫЙ ПРОЦЕССОР SHELL : Морис Бах 7.9 ЗАГРУЗКА СИСТЕМЫ И НАЧАЛЬНЫЙ ПРОЦЕСС : Морис Бах
7.10 ВЫВОДЫ : Морис Бах 7.11 УПРАЖНЕНИЯ : Морис Бах
продолжение 222 7.1 СОЗДАНИЕ ПРОЦЕССА : Морис Бах
7.2 СИГНАЛЫ : Морис Бах 7.2.1 Обработка сигналов : Морис Бах
7.2.3 Посылка сигналов процессами : Морис Бах продолжение 227
7.2.1 Обработка сигналов : Морис Бах 7.2.3 Посылка сигналов процессами : Морис Бах
7.3 ЗАВЕРШЕНИЕ ВЫПОЛНЕНИЯ ПРОЦЕССА : Морис Бах 7.4 ОЖИДАНИЕ ЗАВЕРШЕНИЯ ВЫПОЛНЕНИЯ ПРОЦЕССА : Морис Бах
7.5 ВЫЗОВ ДРУГИХ ПРОГРАММ : Морис Бах 7.6 КОД ИДЕНТИФИКАЦИИ ПОЛЬЗОВАТЕЛЯ ПРОЦЕССА : Морис Бах
7.7 ИЗМЕНЕНИЕ РАЗМЕРА ПРОЦЕССА : Морис Бах 7.8 КОМАНДНЫЙ ПРОЦЕССОР SHELL : Морис Бах
7.9 ЗАГРУЗКА СИСТЕМЫ И НАЧАЛЬНЫЙ ПРОЦЕСС : Морис Бах 7.10 ВЫВОДЫ : Морис Бах
7.11 УПРАЖНЕНИЯ : Морис Бах 8.1 ПЛАНИРОВАНИЕ ВЫПОЛНЕНИЯ ПРОЦЕССОВ : Морис Бах
8.1.2 Параметры диспетчеризации : Морис Бах 8.1.3 Примеры диспетчеризации процессов : Морис Бах
8.1.5 Планирование на основе справедливого раздела : Морис Бах 8.1.6 Работа в режиме реального времени : Морис Бах
8.2 СИСТЕМНЫЕ ОПЕРАЦИИ, СВЯЗАННЫЕ СО ВРЕМЕНЕМ : Морис Бах 8.3 ТАЙМЕР : Морис Бах
продолжение 246 : Морис Бах 8.3.2 Внутренние системные тайм-ауты : Морис Бах
8.3.3 Построение профиля : Морис Бах 8.3.4 Учет и статистика : Морис Бах
8.5 УПРАЖНЕНИЯ : Морис Бах 8.1.2 Параметры диспетчеризации : Морис Бах
8.1.3 Примеры диспетчеризации процессов : Морис Бах 8.1.5 Планирование на основе справедливого раздела : Морис Бах
8.1.6 Работа в режиме реального времени : Морис Бах 8.1.2 Параметры диспетчеризации : Морис Бах
8.1.3 Примеры диспетчеризации процессов : Морис Бах 8.1.5 Планирование на основе справедливого раздела : Морис Бах
8.1.6 Работа в режиме реального времени : Морис Бах 8.2 СИСТЕМНЫЕ ОПЕРАЦИИ, СВЯЗАННЫЕ СО ВРЕМЕНЕМ : Морис Бах
8.3 ТАЙМЕР : Морис Бах 8.3.2 Внутренние системные тайм-ауты : Морис Бах
8.3.3 Построение профиля : Морис Бах 8.3.4 Учет и статистика : Морис Бах
продолжение 264 8.3.2 Внутренние системные тайм-ауты : Морис Бах
8.3.3 Построение профиля : Морис Бах 8.3.4 Учет и статистика : Морис Бах
8.5 УПРАЖНЕНИЯ : Морис Бах ГЛАВА 9. АЛГОРИТМЫ УПРАВЛЕНИЯ ПАМЯТЬЮ : Морис Бах
9.1 СВОПИНГ : Морис Бах 9.1.1 Управление пространством на устройстве выгрузки : Морис Бах
9.1.2 Выгрузка процессов : Морис Бах продолжение 273 : Морис Бах
9.1.3 Загрузка (подкачка) процессов : Морис Бах 9.2 ПОДКАЧКА ПО ЗАПРОСУ : Морис Бах
продолжение 276 : Морис Бах 9.2.1 Структуры данных, используемые подсистемой замещения страниц : Морис Бах
продолжение 278 : Морис Бах 9.2.1.1 Функция fork в системе с замещением страниц : Морис Бах
9.2.1.2 Функция exec в системе с замещением страниц : Морис Бах 9.2.2 "Сборщик" страниц : Морис Бах
9.2.3 Отказы при обращениях к страницам : Морис Бах 9.2.3.1 Обработка прерываний по отказу из-за недоступности данных : Морис Бах
9.2.3.2 Обработка прерываний по отказу системы защиты : Морис Бах 9.2.4 Замещение страниц на менее сложной технической базе : Морис Бах
9.3 СИСТЕМА СМЕШАННОГО ТИПА СО СВОПИНГОМ И ПОДКАЧКОЙ ПО ЗАПРОСУ : Морис Бах 9.4 ВЫВОДЫ : Морис Бах
9.5 УПРАЖНЕНИЯ : Морис Бах продолжение 289
9.1.1 Управление пространством на устройстве выгрузки : Морис Бах 9.1.2 Выгрузка процессов : Морис Бах
продолжение 292 : Морис Бах 9.1.3 Загрузка (подкачка) процессов : Морис Бах
9.1.1 Управление пространством на устройстве выгрузки : Морис Бах 9.1.2 Выгрузка процессов : Морис Бах
продолжение 296 9.1.3 Загрузка (подкачка) процессов : Морис Бах
9.2 ПОДКАЧКА ПО ЗАПРОСУ : Морис Бах 9.2.1 Структуры данных, используемые подсистемой замещения страниц : Морис Бах
продолжение 300 : Морис Бах 9.2.1.1 Функция fork в системе с замещением страниц : Морис Бах
9.2.1.2 Функция exec в системе с замещением страниц : Морис Бах 9.2.2 "Сборщик" страниц : Морис Бах
9.2.3 Отказы при обращениях к страницам : Морис Бах 9.2.3.1 Обработка прерываний по отказу из-за недоступности данных : Морис Бах
j306.html 9.2.4 Замещение страниц на менее сложной технической базе : Морис Бах
продолжение 308 9.2.1 Структуры данных, используемые подсистемой замещения страниц : Морис Бах
9.2.1.1 Функция fork в системе с замещением страниц : Морис Бах 9.2.1.2 Функция exec в системе с замещением страниц : Морис Бах
продолжение 312 9.2.1.1 Функция fork в системе с замещением страниц : Морис Бах
9.2.1.2 Функция exec в системе с замещением страниц : Морис Бах 9.2.2 "Сборщик" страниц : Морис Бах
9.2.3.1 Обработка прерываний по отказу из-за недоступности данных : Морис Бах 9.2.3.2 Обработка прерываний по отказу системы защиты : Морис Бах
9.2.3.1 Обработка прерываний по отказу из-за недоступности данных : Морис Бах 9.2.3.2 Обработка прерываний по отказу системы защиты : Морис Бах
9.2.4 Замещение страниц на менее сложной технической базе : Морис Бах 9.3 СИСТЕМА СМЕШАННОГО ТИПА СО СВОПИНГОМ И ПОДКАЧКОЙ ПО ЗАПРОСУ : Морис Бах
9.4 ВЫВОДЫ : Морис Бах 9.5 УПРАЖНЕНИЯ : Морис Бах
ГЛАВА 10. ПОДСИСТЕМА УПРАВЛЕНИЯ ВВОДОМ-ВЫВОДОМ : Морис Бах 10.1 ВЗАИМОДЕЙСТВИЕ ДРАЙВЕРОВ С ПРОГРАММНОЙ И АППАРАТНОЙ СРЕДОЙ : Морис Бах
10.1.1 Конфигурация системы : Морис Бах 10.1.2 Системные функции и взаимодействие с драйверами : Морис Бах
продолжение 328 : Морис Бах 10.1.2.1 Open : Морис Бах
10.1.2.2 Closе : Морис Бах 10.1.2.3 Read и Writе : Морис Бах
10.1.2.4 Стратегический интерфейс : Морис Бах 10.1.2.5 Ioctl : Морис Бах
10.1.3 Программы обработки прерываний : Морис Бах 10.2 ДИСКОВЫЕ ДРАЙВЕРЫ : Морис Бах
10.3 ТЕРМИНАЛЬНЫЕ ДРАЙВЕРЫ : Морис Бах продолжение 337 : Морис Бах
10.3.1 Символьные списки : Морис Бах 10.3.2 Терминальный драйвер в каноническом режиме : Морис Бах
10.3.3 Терминальный драйвер в режиме без обработки символов : Морис Бах 10.3.4 Опрос терминала : Морис Бах
10.3.5 Назначение операторского терминала : Морис Бах 10.3.6 Драйвер косвенного терминала : Морис Бах
10.3.7 Вход в систему : Морис Бах 10.4 ПОТОКИ : Морис Бах
продолжение 346 : Морис Бах 10.4.1 Более детальное рассмотрение потоков : Морис Бах
10.4.2 Анализ потоков : Морис Бах 10.5 ВЫВОДЫ : Морис Бах
10.6 УПРАЖНЕНИЯ : Морис Бах продолжение 351
10.1.1 Конфигурация системы : Морис Бах 10.1.2 Системные функции и взаимодействие с драйверами : Морис Бах
продолжение 354 : Морис Бах 10.1.2.1 Open : Морис Бах
10.1.2.2 Closе : Морис Бах 10.1.2.3 Read и Writе : Морис Бах
10.1.2.4 Стратегический интерфейс : Морис Бах 10.1.2.5 Ioctl : Морис Бах
10.1.3 Программы обработки прерываний : Морис Бах 10.1.1 Конфигурация системы : Морис Бах
10.1.2 Системные функции и взаимодействие с драйверами : Морис Бах 10.1.2.1 Open : Морис Бах
10.1.2.2 Closе : Морис Бах 10.1.2.3 Read и Writе : Морис Бах
10.1.2.4 Стратегический интерфейс : Морис Бах 10.1.2.5 Ioctl : Морис Бах
продолжение 368 10.1.2.1 Open : Морис Бах
10.1.2.2 Closе : Морис Бах 10.1.2.3 Read и Writе : Морис Бах
10.1.2.4 Стратегический интерфейс : Морис Бах 10.1.2.5 Ioctl : Морис Бах
10.1.3 Программы обработки прерываний : Морис Бах 10.2 ДИСКОВЫЕ ДРАЙВЕРЫ : Морис Бах
10.3 ТЕРМИНАЛЬНЫЕ ДРАЙВЕРЫ : Морис Бах 10.3.1 Символьные списки : Морис Бах
10.3.2 Терминальный драйвер в каноническом режиме : Морис Бах 10.3.3 Терминальный драйвер в режиме без обработки символов : Морис Бах
10.3.4 Опрос терминала : Морис Бах 10.3.5 Назначение операторского терминала : Морис Бах
10.3.6 Драйвер косвенного терминала : Морис Бах 10.3.7 Вход в систему : Морис Бах
продолжение 384 10.3.1 Символьные списки : Морис Бах
10.3.2 Терминальный драйвер в каноническом режиме : Морис Бах 10.3.3 Терминальный драйвер в режиме без обработки символов : Морис Бах
10.3.4 Опрос терминала : Морис Бах 10.3.5 Назначение операторского терминала : Морис Бах
10.3.6 Драйвер косвенного терминала : Морис Бах 10.3.7 Вход в систему : Морис Бах
10.4 ПОТОКИ : Морис Бах 10.4.1 Более детальное рассмотрение потоков : Морис Бах
10.4.2 Анализ потоков : Морис Бах продолжение 395
10.4.1 Более детальное рассмотрение потоков : Морис Бах 10.4.2 Анализ потоков : Морис Бах
10.5 ВЫВОДЫ : Морис Бах 10.6 УПРАЖНЕНИЯ : Морис Бах
11.1 ТРАССИРОВКА ПРОЦЕССОВ : Морис Бах 11.2 ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОВ В ВЕРСИИ V СИСТЕМЫ : Морис Бах
продолжение 402 : Морис Бах 11.2.1 Сообщения : Морис Бах
11.2.2 Разделение памяти : Морис Бах 11.2.3 Семафоры : Морис Бах
11.2.4 Общие замечания : Морис Бах 11.3 ВЗАИМОДЕЙСТВИЕ В СЕТИ : Морис Бах
11.4 ГНЕЗДА : Морис Бах 11.6 УПРАЖНЕНИЯ : Морис Бах
11.1 ТРАССИРОВКА ПРОЦЕССОВ : Морис Бах 11.2 ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОВ В ВЕРСИИ V СИСТЕМЫ : Морис Бах
11.2.1 Сообщения : Морис Бах 11.2.2 Разделение памяти : Морис Бах
11.2.3 Семафоры : Морис Бах 11.2.4 Общие замечания : Морис Бах
продолжение 416 11.2.1 Сообщения : Морис Бах
11.2.2 Разделение памяти : Морис Бах 11.2.3 Семафоры : Морис Бах
11.2.4 Общие замечания : Морис Бах 11.3 ВЗАИМОДЕЙСТВИЕ В СЕТИ : Морис Бах
11.4 ГНЕЗДА : Морис Бах 11.6 УПРАЖНЕНИЯ : Морис Бах
12.1 ПРОБЛЕМЫ, СВЯЗАННЫЕ С МНОГОПРОЦЕССОРНЫМИ СИСТЕМАМИ : Морис Бах 12.2 ГЛАВНЫЙ И ПОДЧИНЕННЫЙ ПРОЦЕССОРЫ : Морис Бах
12.3 СЕМАФОРЫ : Морис Бах продолжение 427 : Морис Бах
12.3.2 Реализация семафоров : Морис Бах 12.3.3 Примеры алгоритмов : Морис Бах
12.3.3.1 Выделение буфера : Морис Бах 12.3.3.3 Драйверы : Морис Бах
12.3.3.4 Фиктивные процессы : Морис Бах 12.6 УПРАЖНЕНИЯ : Морис Бах
12.1 ПРОБЛЕМЫ, СВЯЗАННЫЕ С МНОГОПРОЦЕССОРНЫМИ СИСТЕМАМИ : Морис Бах 12.2 ГЛАВНЫЙ И ПОДЧИНЕННЫЙ ПРОЦЕССОРЫ : Морис Бах
12.3 СЕМАФОРЫ : Морис Бах 12.3.2 Реализация семафоров : Морис Бах
12.3.3 Примеры алгоритмов : Морис Бах 12.3.3.1 Выделение буфера : Морис Бах
12.3.3.3 Драйверы : Морис Бах 12.3.3.4 Фиктивные процессы : Морис Бах
продолжение 442 12.3.2 Реализация семафоров : Морис Бах
12.3.3.1 Выделение буфера : Морис Бах 12.3.3.3 Драйверы : Морис Бах
12.3.3.4 Фиктивные процессы : Морис Бах 12.3.3.1 Выделение буфера : Морис Бах
12.3.3.3 Драйверы : Морис Бах 12.3.3.4 Фиктивные процессы : Морис Бах
12.6 УПРАЖНЕНИЯ : Морис Бах ГЛАВА 13. РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ : Морис Бах
13.1 ПЕРИФЕРИЙНЫЕ ПРОЦЕССОРЫ : Морис Бах 13.2 СВЯЗЬ ТИПА NEWCASTLЕ : Морис Бах
13.3 "ПРОЗРАЧНЫЕ" РАСПРЕДЕЛЕННЫЕ ФАЙЛОВЫЕ СИСТЕМЫ : Морис Бах 13.4 РАСПРЕДЕЛЕННАЯ МОДЕЛЬ БЕЗ ПЕРЕДАТОЧНЫХ ПРОЦЕССОВ : Морис Бах
13.5 ВЫВОДЫ : Морис Бах 13.6 УПРАЖНЕНИЯ : Морис Бах
продолжение 458 13.1 ПЕРИФЕРИЙНЫЕ ПРОЦЕССОРЫ : Морис Бах
13.2 СВЯЗЬ ТИПА NEWCASTLЕ : Морис Бах 13.3 "ПРОЗРАЧНЫЕ" РАСПРЕДЕЛЕННЫЕ ФАЙЛОВЫЕ СИСТЕМЫ : Морис Бах
13.4 РАСПРЕДЕЛЕННАЯ МОДЕЛЬ БЕЗ ПЕРЕДАТОЧНЫХ ПРОЦЕССОВ : Морис Бах 13.5 ВЫВОДЫ : Морис Бах
13.6 УПРАЖНЕНИЯ : Морис Бах ПРИЛОЖЕНИЕ СИСТЕМНЫЕ ОПЕРАЦИИ : Морис Бах
БИБЛИОГРАФИЯ : Морис Бах Использовалась литература : Архитектура операционной системы UNIX

Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)


Microsoft Office Журнал Компьютерра № 32 от 5 сентября 2006 года Журнал Компьютерра № 34 от 18 сентября 2006 года