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