|
Часть 1
Table of Contents
ПРЕДИСЛОВИЕ......................................................... 3
ГЛАВА 1
ОБЩИЙ ОБЗОР ОСОБЕННОСТЕЙ EСИСТЕМЫ
1.1 ИСТОРИЯ......................................................... 6
1.2 СТРУКТУРА СИСТЕМЫ............................................... 8
1.3 ОБЗОР С ТОЧКИ ЗРЕНИЯ ПОЛЬЗОВАТЕЛЯ.............................. 10
1.3.1 Файловая система.......................................... 10
1.3.2 Среда выполнения процессов................................ 14
1.3.3 Элементы конструкционных блоков........................... 16
1.4 ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ................................... 17
1.5 ПРЕДПОЛАГАЕМАЯ АППАРАТНАЯ СРЕДА................................ 18
1.5.1 Прерывания и особые ситуации.............................. 19
1.5.2 Уровни прерывания процессора.............................. 20
1.5.3 Распределение памяти...................................... 20
1.6 ВЫВОДЫ......................................................... 21
ГЛАВА 2
ВВЕДЕНИЕ В АРХИТЕКТУРУ ЯДРА ОПЕРАЦИОННОЙ СИСТЕМЫ
2.1 АРХИТЕКТУРА ОПЕРАЦИОННОЙ СИСТЕМЫ UNIX.......................... 22
2.2 ВВЕДЕНИЕ В ОСНОВНЫЕ ПОНЯТИЯ СИСТЕМЫ............................ 24
2.2.1 Обзор особенностей подсистемы управления файлами.......... 24
2.2.2 Процессы.................................................. 26
2.2.2.1 Контекст процесса.................................... 31
2.2.2.2 Состояния процесса................................... 31
2.2.2.3 Переходы из состояния в состояние.................... 31
2.2.2.4 "Сон" и пробуждение.................................. 34
2.3 СТРУКТУРЫ ДАННЫХ ЯДРА.......................................... 35
2.4 УПРАВЛЕНИЕ СИСТЕМОЙ............................................ 36
2.5 ВЫВОДЫ И ОБЗОР ПОСЛЕДУЮЩИХ ГЛАВ................................ 37
2.6 УПРАЖНЕНИЯ..................................................... 38
ГЛАВА 3
БУФЕР СВЕРХОПЕРАТИВНОЙ ПАМЯТИ
3.1 ЗАГОЛОВКИ БУФЕРА.............................................. 39
3.2 СТРУКТУРА ОБЛАСТИ БУФЕРОВ (БУФЕРНОГО ПУЛА).................... 41
3.3 МЕХАНИЗМ ПОИСКА БУФЕРА........................................ 42
3.4 ЧТЕНИЕ И ЗАПИСЬ ДИСКОВЫХ БЛОКОВ............................... 52
3.5 ПРЕИМУЩЕСТВА И НЕУДОБСТВА БУФЕРНОГО КЕША...................... 55
3.6 ВЫВОДЫ........................................................ 56
3.7 УПРАЖНЕНИЯ.................................................... 57
ГЛАВА 4
ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ФАЙЛОВ
4.1 ИНДЕКСЫ....................................................... 59
4.1.1 Определение.............................................. 59
4.1.2 Обращение к индексам..................................... 62
4.1.3 Освобождение индексов.................................... 64
4.2 СТРУКТУРА ФАЙЛА ОБЫЧНОГО ТИПА................................. 64
4.3 КАТАЛОГИ...................................................... 70
4.4 ПРЕВРАЩЕНИЕ СОСТАВНОГО ИМЕНИ ФАЙЛА (ПУТИ ПОИСКА)
В ИДЕНТИФИКАТОР ИНДЕКСА....................................... 71
4.5 СУПЕРБЛОК..................................................... 73
4.6 НАЗНАЧЕНИЕ ИНДЕКСА НОВОМУ ФАЙЛУ............................... 73
4.7 ВЫДЕЛЕНИЕ ДИСКОВЫХ БЛОКОВ..................................... 80
4.8 ДРУГИЕ ТИПЫ ФАЙЛОВ............................................ 83
4.9 ВЫВОДЫ........................................................ 83
ГЛАВА 5
СИСТЕМНЫЕ ОПЕРАЦИИ ДЛЯ РАБОТЫ С ФАЙЛОВОЙ СИСТЕМОЙ
5.1 OPEN.......................................................... 86
5.2 READ.......................................................... 90
5.3 WRITE......................................................... 95
5.4 ЗАХВАТ ФАЙЛА И ЗАПИСИ......................................... 96
5.5 УКАЗАНИЕ МЕСТА В ФАЙЛЕ,ГДЕ БУДЕТ ВЫПОЛНЯТЬСЯ ВВОД-ВЫВОД -LSEEK 96
5.6 CLOSE......................................................... 97
5.7 СОЗДАНИЕ ФАЙЛА................................................ 99
5.8 СОЗДАНИЕ СПЕЦИАЛЬНЫХ ФАЙЛОВ.................................. 100
5.9 СМЕНА ТЕКУЩЕГО И КОРНЕВОГО КАТАЛОГА.......................... 102
5.10 СМЕНА ВЛАДЕЛЬЦА И РЕЖИМА ДОСТУПА К ФАЙЛУ.................... 103
5.11 STAT И FSTAT................................................ 103
5.12 КАНАЛЫ...................................................... 104
5.12.1 Системная функция pipe................................. 104
5.12.2 Открытие поименованного канала......................... 106
5.12.3 Чтение из каналов и запись в каналы.................... 106
5.12.4 Закрытие каналов....................................... 108
5.12.5 Примеры................................................ 109
5.13 DUP......................................................... 110
5.14 МОНТИРОВАНИЕ И ДЕМОНТИРОВАНИЕ ФАЙЛОВЫХ СИСТЕМ............... 111
5.14.1 Пересечение точек монтирования в маршрутах поиска файлов.. 115
5.14.2 Демонтирование файловой системы........................... 118
5.15 LINK........................................................ 120
5.16 UNLINK...................................................... 123
5.16.1 Целостность файловой системы.............................. 125
5.16.2 Поводы для конкуренции.................................... 126
5.17 АБСТРАКТНЫЕ ОБРАЩЕНИЯ К ФАЙЛОВЫМ СИСТЕМАМ................... 129
5.18 СОПРОВОЖДЕНИЕ ФАЙЛОВОЙ СИСТЕМЫ.............................. 130
5.19 ВЫВОДЫ...................................................... 131
5.20 УПРАЖНЕНИЯ.................................................. 131
ГЛАВА 6
СТРУКТУРА ПРОЦЕССОВ
6.1 СОСТОЯНИЯ ПРОЦЕССА И ПЕРЕХОДЫ МЕЖДУ НИМИ..................... 137
6.2 ФОРМАТ ПАМЯТИ СИСТЕМЫ........................................ 141
6.2.1 Области................................................. 141
6.2.2 Страницы и таблицы страниц.............................. 143
6.2.3 Размещение ядра......................................... 145
6.2.4 Пространство процесса................................... 146
6.3 КОНТЕКСТ ПРОЦЕССА............................................ 147
6.4 СОХРАНЕНИЕ КОНТЕКСТА ПРОЦЕССА................................ 150
6.4.1 Прерывания и особые ситуации............................ 151
6.4.2 Взаимодействие с операционной системой череззовы
системных функций....................................... 153
6.4.3 Переключение контекста.................................. 156
6.4.4 Сохранение контекста на случай аварийного завершения.... 158
6.4.5 Копирование данных между адресным пространствсис-
темы и адресным пространством задачи.................... 159
6.5 УПРАВЛЕНИЕ АДРЕСНЫМ ПРОСТРАНСТВОМ ПРОЦЕССА................... 159
6.5.1 Блокировка области и снятие блокировки.................. 160
6.5.2 Выделение области....................................... 160
6.5.3 Присоединение области к процессу........................ 161
6.5.4 Изменение размера области............................... 162
6.5.5 Загрузка области........................................ 163
6.5.6 Освобождение области.................................... 167
6.5.7 Отсоединение области от процесса........................ 168
6.5.8 Копирование содержимого области......................... 169
6.6 ПРИОСТАНОВКА ВЫПОЛНЕНИЯ...................................... 170
6.6.1 События, вызывающие приостанов выполнения, и их адреса.. 171
6.6.2 Алгоритмы приостанова и возобновления выполнения........ 173
6.7 ВЫВОДЫ....................................................... 175
6.8 УПРАЖНЕНИЯ................................................... 176
ГЛАВА 7
УПРАВЛЕНИЕ ПРОЦЕССОМ
7.1 СОЗДАНИЕ ПРОЦЕССА............................................ 179
7.2 СИГНАЛЫ...................................................... 187
7.2.1 Обработка сигналов...................................... 190
7.2.2 Группы процессов........................................ 197
7.2.3 Посылка сигналов процессами............................. 197
7.3 ЗАВЕРШЕНИЕ ВЫПОЛНЕНИЯ ПРОЦЕССА............................... 198
7.4 ОЖИДАНИЕ ЗАВЕРШЕНИЯ ВЫПОЛНЕНИЯ ПРОЦЕССА...................... 200
7.5 ВЫЗОВ ДРУГИХ ПРОГРАММ........................................ 204
7.6 КОД ИДЕНТИФИКАЦИИ ПОЛЬЗОВАТЕЛЯ ПРОЦЕССА...................... 213
7.7 ИЗМЕНЕНИЕ РАЗМЕРА ПРОЦЕССА................................... 215
7.8 КОМАНДНЫЙ ПРОЦЕССОР SHELL.................................... 218
7.9 ЗАГРУЗКА СИСТЕМЫ И НАЧАЛЬНЫЙ ПРОЦЕСС......................... 220
7.10 ВЫВОДЫ...................................................... 223
7.11 УПРАЖНЕНИЯ.................................................. 224
ГЛАВА 8
ДИСПЕТЧЕРИЗАЦИЯ ПРОЦЕССОВ И ЕЕ ВРЕМЕННЫЕ ХАРАКТЕРИСТИКИ
8.1 ПЛАНИРОВАНИЕ ВЫПОЛНЕНИЯ ПРОЦЕССОВ............................ 232
8.1.1 Алгоритм................................................ 233
8.1.2 Параметры диспетчеризации............................... 233
8.1.3 Примеры диспетчеризации процессов....................... 237
8.1.4 Управление приоритетами................................. 238
8.1.5 Планирование на основе справедливого раздела............ 239
8.1.6 Работа в режиме реального времени....................... 241
8.2 СИСТЕМНЫЕ ОПЕРАЦИИ, СВЯЗАННЫЕ СО ВРЕМЕНЕМ.................... 241
8.3 ТАЙМЕР....................................................... 243
8.3.1 Перезапуск часов........................................ 245
8.3.2 Внутренние системные тайм-ауты.......................... 246
8.3.3 Построение профиля...................................... 247
8.3.4 Учет и статистика....................................... 250
8.3.5 Поддержание времени в системе........................... 251
8.4 ВЫВОДЫ....................................................... 251
8.5 УПРАЖНЕНИЯ................................................... 251
ГЛАВА 9
АЛГОРИТМЫ УПРАВЛЕНИЯ ПАМЯТЬЮ
9.1 СВОПИНГ...................................................... 253
9.1.1 Управление пространством на устройстве выгрузки......... 253
9.1.2 Выгрузка процессов...................................... 257
9.1.2.1 Выгрузка при выполнении системной функции fork........ 259
9.1.2.2 Выгрузка с расширением................................ 260
9.1.3 Загрузка (подкачка) процессов........................... 260
9.2 ПОДКАЧКА ПО ЗАПРОСУ.......................................... 265
9.2.1 Структуры данных, исп-мые подсистемой замещения страниц..267
9.2.1.1 Функция fork в системе с замещением страниц........ 270
9.2.1.2 Функция exec в системе с замещением страниц........ 272
9.2.2 "Сборщик" страниц....................................... 274
9.2.3 Отказы при обращениях к страницам....................... 277
9.2.3.1 Обработка прерываний по отказу из-за недоступности 278
9.2.3.2 Обработка прерываний по отказу системы защиты...... 282
9.2.4 Замещение страниц на менее сложной технической базе..... 285
9.3 СИСТЕМА СМЕШАННОГО ТИПА СО СВОПИНГОМ И ПОДКАЧКОЙ ПО ЗАПРОСУ.. 286
9.4 ВЫВОДЫ....................................................... 287
9.5 УПРАЖНЕНИЯ................................................... 287
ГЛАВА 10
ПОДСИСТЕМА УПРАВЛЕНИЯ ВВОДОМ-ВЫВОДОМ
10.1 ВЗАИМОДЕЙСТВИЕ ДРАЙВЕРОВ С ПРОГРАММНОЙ И АППАРАТНОЙ СРЕДОЙ.. 290
10.1.1 Конфигурация системы................................... 291
10.1.2 Системные функции и взаимодействие с драйверами........ 293
10.1.2.1 Open.............................................. 294
10.1.2.2 Close............................................. 297
10.1.2.3 Read и Write...................................... 298
10.1.2.4 Стратегический интерфейс.......................... 299
10.1.2.5 Ioctl............................................. 300
10.1.2.6 Другие функции, имеющие отношение к файловой систе 300
10.1.3 Программы обработки прерываний......................... 301
10.2 ДИСКОВЫЕ ДРАЙВЕРЫ........................................... 301
10.3 ТЕРМИНАЛЬНЫЕ ДРАЙВЕРЫ....................................... 305
10.3.1 Символьные списки...................................... 307
10.3.2 Терминальный драйвер в каноническом режиме............. 310
10.3.3 Терминальный драйвер в режиме без обработки символов... 315
10.3.4 Опрос терминала........................................ 318
10.3.5 Назначение операторского терминала..................... 318
10.3.6 Драйвер косвенного терминала........................... 319
10.3.7 Вход в систему......................................... 319
10.4 ПОТОКИ...................................................... 320
10.4.1 Более детальное рассмотрение потоков................... 324
10.4.2 Анализ потоков......................................... 326
10.5 ВЫВОДЫ...................................................... 327
10.6 УПРАЖНЕНИЯ.................................................. 327
ГЛАВА 11
ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОВ
11.1 ТРАССИРОВКА ПРОЦЕССОВ....................................... 330
11.2 ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОВ В ВЕРСИИ V СИСТЕМЫ................. 334
11.2.1 Сообщения.............................................. 335
11.2.2 Разделение памяти...................................... 341
11.2.3 Семафоры............................................... 344
11.2.4 Общие замечания........................................ 353
11.3 ВЗАИМОДЕЙСТВИЕ В СЕТИ....................................... 354
11.4 ГНЕЗДА...................................................... 355
11.5 ВЫВОДЫ...................................................... 360
11.6 УПРАЖНЕНИЯ.................................................. 360
ГЛАВА 12
МНОГОПРОЦЕССОРНЫЕ СИСТЕМЫ
12.1 ПРОБЛЕМЫ, СВЯЗАННЫЕ С МНОГОПРОЦЕССОРНЫМИ СИСТЕМАМИ.......... 362
12.2 ГЛАВНЫЙ И ПОДЧИНЕННЫЙ ПРОЦЕССОРЫ............................ 363
12.3 СЕМАФОРЫ.................................................... 365
12.3.1 Определение семафоров.................................. 366
12.3.2 Реализация семафоров................................... 367
12.3.3 Примеры алгоритмов..................................... 374
12.3.3.1 Выделение буфера.................................. 374
12.3.3.2 Wait.............................................. 377
12.3.3.3 Драйверы.......................................... 377
12.3.3.4 Фиктивные процессы................................ 378
12.4 СИСТЕМА TUNIS............................................... 378
12.5 УЗКИЕ МЕСТА В ФУНКЦИОНИРОВАНИИ МНОГОПРОЦЕССОРНЫХ СИСТЕМ..... 379
12.6 УПРАЖНЕНИЯ.................................................. 379
ГЛАВА 13
РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ
13.1 ПЕРИФЕРИЙНЫЕ ПРОЦЕССОРЫ..................................... 382
13.2 СВЯЗЬ ТИПА NEWCASTLE........................................ 390
13.3 "ПРОЗРАЧНЫЕ" РАСПРЕДЕЛЕННЫЕ ФАЙЛОВЫЕ СИСТЕМЫ................ 393
13.4 РАСПРЕДЕЛЕННАЯ МОДЕЛЬ БЕЗ ПЕРЕДАТОЧНЫХ ПРОЦЕССОВ............ 396
13.5 ВЫВОДЫ...................................................... 397
13.6 УПРАЖНЕНИЯ.................................................. 398
ПРИЛОЖЕНИЕ
СИСТЕМНЫЕ ОПЕРАЦИИ............................................... 400
access....................................................... 400
acct......................................................... 400
alarm........................................................ 400
brk.......................................................... 401
chdir........................................................ 401
chmod........................................................ 401
chown........................................................ 401
chroot....................................................... 401
close........................................................ 402
creat........................................................ 402
dup.......................................................... 402
exec......................................................... 402
exit......................................................... 402
fcntl........................................................ 403
fork......................................................... 404
getpid....................................................... 404
getuid....................................................... 404
ioctl........................................................ 404
kill......................................................... 404
link......................................................... 405
lseek........................................................ 405
mknod........................................................ 405
mount........................................................ 406
msgctl....................................................... 406
msgget....................................................... 407
msgsnd и msgrcv.............................................. 407
nice......................................................... 408
open......................................................... 408
pause........................................................ 409
pipe......................................................... 409
plock........................................................ 409
profil....................................................... 410
ptrace....................................................... 410
read......................................................... 410
semctl....................................................... 411
semget....................................................... 412
semop........................................................ 412
setpgrp...................................................... 413
setuid....................................................... 413
shmctl....................................................... 413
shmget....................................................... 414
shmop........................................................ 414
signal....................................................... 415
stat......................................................... 416
stime........................................................ 416
sync......................................................... 416
time......................................................... 416
times........................................................ 417
ulimit....................................................... 417
umask........................................................ 417
umount....................................................... 418
uname........................................................ 418
unlink....................................................... 418
ustat........................................................ 418
utime........................................................ 419
wait......................................................... 419
write........................................................ 419
БИБЛИОГРАФИЯ..................................................... 420
|
|