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



Статья :: 11.2.2 Разделение памяти : Морис Бах

11.2.2 Разделение памяти

Процессы могут взаимодействовать друг с другом непосредственно путем разделения (совместного использования) участков виртуального адресного пространства и обмена данными через разделяемую память. Системные функции для работы с разделяемой памятью имеют много сходного с системными функциями для работы с сообщениями. Функция shmget создает новую область разделяемой памяти или возвращает адрес уже существующей области, функция shmat логически присоединяет область к виртуальному адресному пространству процесса, функция shmdt отсоединяет ее, а функция shmctl имеет дело с различными параметрами, связанными с разделяемой памятью. Процессы ведут чтение и запись данных в области разделяемой памяти, используя для этого те же самые машинные команды, что и при работе с обычной памятью. После присоединения к виртуальному адресному пространству процесса область разделяемой памяти становится доступна так же, как любой участок виртуальной памяти; для доступа к находящимся в ней данным не нужны обращения к каким-то дополнительным системным функциям.

Синтаксис вызова системной функции shmget:


shmid = shmget(key, size, flag);


где size — объем области в байтах. Ядро использует key для ведения поиска в таблице разделяемой памяти: если подходящая запись обнаружена и если разрешение на доступ имеется, ядро возвращает вызывающему процессу указанный в записи дескриптор. Если запись не найдена и если пользователь установил флаг IPC_CREAT, указывающий на необходимость создания новой области, ядро проверяет нахождение размера области в установленных системой пределах и выделяет область по алгоритму allocreg (раздел 6.5.2). Ядро записывает установки прав доступа, размер области и указатель на соответствующую запись таблицы областей в таблицу разделяемой памяти (Рисунок 11.9) и устанавливает флаг, свидетельствующий о том, что с областью не связана отдельная память. Области выделяется память (таблицы страниц и т. п.) только тогда, когда процесс присоединяет область к своему адресному пространству. Ядро устанавливает также флаг, говорящий о том, что по завершении последнего связанного с областью процесса область не должна освобождаться. Таким образом, данные в разделяемой памяти остаются в сохранности, даже если она не принадлежит ни одному из процессов (как часть виртуального адресного пространства последнего).

Рисунок 11.9. Структуры данных, используемые при разделении памяти

Процесс присоединяет область разделяемой памяти к своему виртуальному адресному пространству с помощью системной функции shmat:


virtaddr = shmat(id, addr, flags);


Значение id, возвращаемое функцией shmget, идентифицирует область разделяемой памяти, addr является виртуальным адресом, по которому пользователь хочет подключить область, а с помощью флагов (flags) можно указать, предназначена ли область только для чтения и нужно ли ядру округлять значение указанного пользователем адреса. Возвращаемое функцией значение, virtaddr, представляет собой виртуальный адрес, по которому ядро произвело подключение области и который не всегда совпадает с адресом, указанным пользователем.

В начале выполнения системной функции shmat ядро проверяет наличие у процесса необходимых прав доступа к области (Рисунок 11.10). Оно исследует указанный пользователем адрес; если он равен 0, ядро выбирает виртуальный адрес по своему усмотрению.

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


алгоритм shmat /* подключить разделяемую память */

входная информация:

 (1) дескриптор области разделяемой памяти

 (2) виртуальный адрес для подключения области

 (3) флаги

выходная информация: виртуальный адрес, по которому область подключена фактически

{

 проверить правильность указания дескриптора, права доступа к области;

 if (пользователь указал виртуальный адрес)  {

  округлить виртуальный адрес в соответствии с флагами;

  проверить существование полученного адреса, размер области;

 }

 else /* пользователь хочет, чтобы ядро само нашло подходящий адрес */

  ядро выбирает адрес: в случае неудачи выдается ошибка;

 присоединить область к адресному пространству процесса (алгоритм attachreg);

 if (область присоединяется впервые)

  выделить таблицы страниц и отвести память под нее (алгоритм growreg);

 return (виртуальный адрес фактического присоединения области);

}

Рисунок 11.10. Алгоритм присоединения разделяемой памяти


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

Отсоединение области разделяемой памяти от виртуального адресного пространства процесса выполняет функция


shmdt(addr)


где addr — виртуальный адрес, возвращенный функцией shmat. Несмотря на то, что более логичной представляется передача идентификатора, процесс использует виртуальный адрес разделяемой памяти, поскольку одна и та же область разделяемой памяти может быть подключена к адресному пространству процесса несколько раз, к тому же ее идентификатор может быть удален из системы. Ядро производит поиск области по указанному адресу и отсоединяет ее от адресного пространства процесса, используя алгоритм detachreg (раздел 6.5.7). Поскольку в таблицах областей отсутствуют обратные указатели на таблицу разделяемой памяти, ядру приходится просматривать таблицу разделяемой памяти в поисках записи, указывающей на данную область, и записывать в соответствующее поле время последнего отключения области.

Рассмотрим программу, представленную на Рисунке 11.11. В ней описывается процесс, создающий область разделяемой памяти размером 128 Кбайт и дважды присоединяющий ее к своему адресному пространству по разным виртуальным адресам. В "первую" область он записывает данные, а читает их из "второй" области. На Рисунке 11.12 показан другой процесс, присоединяющий ту же область (он получает только 64 Кбайта, таким образом, каждый процесс может использовать разный объем области разделяемой памяти); он ждет момента, когда первый процесс запишет в первое принадлежащее области слово любое отличное от нуля значение, и затем принимается считывать данные из области. Первый процесс делает "паузу" (pause), предоставляя второму процессу возможность выполнения; когда первый процесс принимает сигнал, он удаляет область разделяемой памяти из системы.

Процесс запрашивает информацию о состоянии области разделяемой памяти и производит установку параметров для нее с помощью системной функции shmctl:


shmctl(id, cmd, shmstatbuf);


Значение id идентифицирует запись таблицы разделяемой памяти, cmd определяет тип операции, а shmstatbuf является адресом пользовательской структуры, в которую помещается информация о состоянии области. Ядро трактует тип операции точно так же, как и при управлении сообщениями. Удаляя область разделяемой памяти, ядро освобождает соответствующую ей запись в таблице разделяемой памяти и просматривает таблицу областей: если область не была присоединена ни к одному из процессов, ядро освобождает запись таблицы и все выделенные области ресурсы, используя для этого алгоритм freereg (раздел 6.5.6). Если же область по-прежнему подключена к каким-то процессам (значение счетчика ссылок на нее больше 0), ядро только сбрасывает флаг, говорящий о том, что по завершении последнего связанного с нею процесса область не должна освобождаться. Процессы, уже использующие область разделяемой памяти, продолжают работать с ней, новые же процессы не могут присоединить ее. Когда все процессы отключат область, ядро освободит ее. Это похоже на то, как в файловой системе после разрыва связи с файлом процесс может вновь открыть его и продолжать с ним работу.




11.2.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 года