Морис Дж. Бах. Архитектура операционной системы Unix


 ("THE DESIGN OF THE UNIX OPERATING SYSTEM" by Maurice J. Bach)
                     Перевод Крюкова А. В.
    Предисловие......................................................... 3

  ГЛАВА 1 ОБЩИЙ ОБЗОР ОСОБЕННОСТЕЙ СИСТЕМЫ

  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


*txt ГЛАВА 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

 Хотите получить эту книжку одним архивом Cpio + GZIP? Забирайте.
* Эта книжка доступна так же в виде одного zip-архива (433k)