|
Третье издание классического труда Эндрю Таненбаума " Операционные системы. Разработка и реализация" - это единственный в своем роде учебник, в котором успешно сочетаются теория и практика построения операционных систем. В книге подробно описываются процессы и межпроцессное взаимодействие, семафоры, мониторы, передача сообщений, алгоритмы работы планировщика, ввод/вывод, разрешение тупиковых ситуаций, драйверы устройств, алгоритмы управления памятью, разработка файловых систем, а также затрагиваются вопросы безопасности и защиты данных. В то же время обсуждается конкретная UNIX-совместимая операционная система MINIX и приводится ее исходный код (вы найдете его на компакт-диске). Это позволяет не только изучать основополагающие принципы, но и наблюдать их применение в реальных операционных системах.
|
|
3-е изд. - СПб.: Питер, 2007. — 704 с.
|
Формат: djvu + CD / zip
Размер: 8,76 Мб
Скачать учебник: http://depositfiles.com/files/2b1m7kxxt
СОДЕРЖАНИЕ
Об авторах 11
Предисловие 14
От издателя перевода 17
Глава 1. Введение 18
1.1. Понятие операционной системы 21
1.1.1. Операционная система как расширенная машина 21
1.1.2. Операционная система как менеджер ресурсов 22
1.2. История развития операционных систем 24
1.2.1. Первое поколение (1945-1955): электронные лампы и коммутационные панели
24
1.2.2. Второе поколение (1955-1965): транзисторы и системы пакетной обработки .
. 25
1.2.3. Третье поколение (1965-1980): интегральные схемы и многозадачность ....
27
1.2.4. Четвертое поколение (с 1980 года по наши дни): персональные компьютеры .
. 33
1.2.5. История MINIX3 35
1.3. Основные концепции 39
1.3.1. Процессы 40
1.3.2. Файлы 42
1.3.3. Оболочка 46
1.4. Системные вызовы 47
1.4.1. Системные вызовы для управления процессами 50
1.4.2. Системные вызовы для управления сигналами 53
1.4.3. Системные вызовы для управления файлами 55
1.4.4. Системные вызовы для управления каталогами 60
1.4.5. Системные вызовы для защиты 63
1.4.6. Системные вызовы для управления временем 64
1.5. Структура операционной системы 65
1.5.1. Монолитные системы 65
1.5.2. Многоуровневые системы 67
1.5.3. Виртуальные машины 69
1.5.4. Экзоядра 72
1.5.5. Модель клиент-сервер 72
1.6. Краткий обзор остальных глав 74
Резюме 75
Вопросы и задания 75
Глава 2. Процессы 78
2.1. Знакомство с процессами 78
2.1.1. Модель процессов 78
2.1.2. Создание процессов 80
2.1.3. Завершение процессов 82
2.1.4. Иерархии процессов 83
2.1.5. Состояния процессов 84
2.1.6. Реализация процессов 86
2.1.7. Программные потоки 88
2.2. Взаимодействие между процессами 92
2.2.1. Гонки 93
2.2.2. Критические секции 94
2.2.3. Взаимное исключение с активным ожиданием 95
2.2.4. Примитивы взаимодействия между процессами 100
2.2.5. Семафоры 103
2.2.6. Мьютексы 105
2.2.7. Мониторы 106
2.2.8. Передача сообщений 110
2.3. Классические проблемы взаимодействия между процессами 113
2.3.1. Проблема обедающих философов 113
2.3.2. Проблема читателей и писателей 116
2.4. Планирование 118
2.4.1. Основы планирования 118
2.4.2. Планирование в системах пакетной обработки 124
2.4.3. Планирование в интерактивных системах 127
2.4.4. Планирование в системах реального времени 134
2.4.5. Политика и механизм планирования 135
2.4.6. Планирование программных потоков 135
2.5. Процессы в MINIX3 137
2.5.1. Внутренняя структура системы MINIX 3 138
2.5.2. Управление процессами в MINIX 3 141
2.5.3. Взаимодействие между процессами в MINIX 146
2.5.4. Планирование процессов в MINIX 3 148
2.6. Реализация процессов в MINIX 3 151
2.6.1. Структура исходного кода MINIX 3 151
2.6.2. Компиляция и запуск MINIX 3 155
2.6.3. Общие заголовочные файлы 157
2.6.4. Заголовочные файлы MINIX 3 164
2.6.5. Структуры данных процессов и заголовочные файлы 173
2.6.6. Начальная загрузка MINIX 3 184
2.6.7. Инициализация системы 188
2.6.8. Обработка прерываний в MINIX 195
2.6.9. Взаимодействие между процессами в MINIX 3 206
2.6.10. Планирование процессов в MINIX 3 210
2.6.11. Аппаратная поддержка ядра 214
2.6.12. Утилиты и библиотека ядра 219
2.7. Системное задание в MINIX 3 221
2.7.1. Обзор системного задания 223
2.7.2. Реализация системного задания 227
2.7.3. Реализация системной библиотеки 230
2.8. Таймерное задание в MINIX 3 233
2.8.1. Аппаратное обеспечение часов 234
2.8.2. Программное обеспечение часов 235
2.8.3. Обзор драйвера часов в MINIX 3 238
2.8.4. Реализация драйвера часов в MINIX 3 243
Резюме 245
Вопросы и задания 246
Глава 3. Ввод-вывод 252
3.1. Аппаратное обеспечение ввода-вывода 252
3.1.1. Устройства ввода-вы вода 253
3.1.2. Контроллеры устройств 254
3.1.3. Ввод-вывод с отображением на память 256
3.1.4. Прерывания 257
3.1.5. Прямой доступ к памяти 258
3.2. Программное обеспечение ввода-вывода 261
3.2.1. Назначение программного обеспечения ввода-вывода 261
3.2.2. Обработчики прерываний 263
3.2.3. Драйверы устройств 263
3.2.4. Независимое от устройств программное обеспечение ввода-вывода 265
3.2.5. Программное обеспечение ввода-вывода пользовательского пространства . .
268
3.3. Взаимная блокировка 270
3.3.1. Ресурсы 270
3.3.2. Механизм взаимной блокировки 272
3.3.3. Алгоритм страуса 276
3.3.4. Обнаружение и устранение взаимных блокировок 277
3.3.5. Предотвращение взаимных блокировок 278
3.3.6. Избежание взаимных блокировок 280
3.4. Ввод-вывод в MINIX3 286
3.4.1. Обработчики прерываний и доступ к вводу-выводу в MINIX 3 286
3.4.2. Драйверы устройств в MINIX 3 290
3.4.3. Аппаратно-независимый код ввода-вывода в MINIX 294
3.4.4. Программы ввода-вывода пользовательского уровня в MINIX 294
3.4.5. Взаимная блокировка в MINIX 295
3.5. Блочные устройства в MINIX 3 296
3.5.1. Обзор драйверов блочных устройств MINIX 3 296
3.5.2. Общие программы для драйверов блочных устройств 299
3.5.3. Библиотека поддержки драйверов 303
3.6. Виртуальные диски 305
3.6.1. Аппаратное и программное обеспечение виртуального диска 306
3.6.2. Драйвер виртуального диска в MINIX 3 307
3.6.3. Реализация драйвера виртуального диска в MINIX 3 309
3.7. Реальные диски 313
3.7.1. Аппаратное обеспечение диска 313
3.7.2. RAID 315
3.7.3. Программное обеспечение жестких дисков 316
3.7.4. Драйвер жестких дисков в MINIX 3 323
3.7.5. Реализация драйвера жесткого диска в MINIX 3 327
3.7.6. Дисковод гибких дисков 337
3.8. Терминалы 339
3.8.1. Аппаратное обеспечение терминала 340
3.8.2. Программное обеспечение терминала 345
3.8.3. Драйвер терминала в MINIX 3 354
3.8.4. Реализация аппаратно-независимого драйвера терминала 370
3.8.5. Реализация драйвера клавиатуры 390
3.8.6. Реализация драйвера экрана 398
Резюме 407
Вопросы и задания 408
Глава 4. Управление памятью 414
4.1. Базовые механизмы управления памятью 415
4.1.1. Однозадачная система без подкачки и замещения страниц 415
4.1.2. Многозадачная система с фиксированными разделами 416
4.1.3. Переадресация и защита 418
4.2. Подкачка 419
4.2.1. Управление памятью с помощью битовых карт 422
4.2.2. Управление памятью с помощью связанных списков 423
4.3. Виртуальная память 426
4.3.1. Замещение страниц 427
4.3.2. Таблицы страниц 431
4.3.3. Буферы быстрого преобразования адресов 435
4.3.4. Инвертированные таблицы страниц 438
4.4. Алгоритмы замещения страниц 440
4.4.1. Оптимальный алгоритм замещения страниц 441
4.4.2. Алгоритм NRU 442
4.4.3. Алгоритм FIFO 443
4.4.4. Алгоритм второго шанса 443
4.4.5. Алгоритм часов 444
4.4.6. Алгоритм LRU 445
4.4.7. Программное моделирование алгоритма LRU 446
4.5. Разработка систем замещения страниц 448
4.5.1. Модель рабочего набора 449
4.5.2. Локальная и глобальная политики распределения памяти 451
4.5.3. Размер страницы 454
4.5.4. Интерфейс виртуальной памяти 455
4.6. Сегментация 456
4.6.1. Реализация сегментации 460
4.6.2. Сегментация с замещением страниц в Intel Pentium 460
4.7. Знакомство с менеджером процессов в MINIX3 466
4.7.1. Распределение памяти 468
4.7.2. Обработка сообщений 471
4.7.3. Структуры данных и алгоритмы менеджера процессов 474
4.7.4. Системные вызовы fork, exit и wait 478
4.7.5. Системный вызов exec 480
4.7.6. Системный вызов brk 484
4.7.7. Обработка сигналов 484
4.7.8. Прочие системные вызовы 493
4.8. Управление памятью в MINIX 494
4.8.1. Заголовочные файлы и структуры данных 494
4.8.2. Главная программа 497
4.8.3. Реализация системных вызовов fork, exit и wait 503
4.8.4. Реализация системного вызова exec 505
4.8.5. Реализация системного вызова brk 509
4.8.6. Реализация сигналов 510
4.8.7. Реализация других системных вызовов 519
4.8.8. Утилиты управления памятью 522
Резюме 524
Вопросы и задания 525
Глава 5. Файловые системы 530
5.1. Файлы 531
5.1.1. Именование файлов 531
5.1.2. Структура файла 533
5.1.3. Типы файлов 535
5.1.4. Доступ к файлам 537
5.1.5. Атрибуты файлов 538
5.1.6. Операции с файлами 539
5.2. Каталоги 541
5.2.1. Простые каталоги 541
5.2.2. Иерархические системы каталогов 542
5.2.3. Пути 543
5.2.4. Операции с каталогами 546
5.3. Реализация файловой системы 547
5.3.1. Структура файловой системы 547
5.3.2. Реализация файлов 549
5.3.3. Реализация каталогов 553
5.3.4. Организация дискового пространства 559
5.3.5. Надежность файловой системы 563
5.3.6. Производительность файловой системы 571
5.3.7. Файловые системы с журнальной структурой 576
5.4. Безопасность 578
5.4.1. Безопасное окружение 578
5.4.2. Общие виды атак на систему безопасности 584
5.4.3. Принципы разработки механизмов безопасности 585
5.4.4. Аутентификация пользователей 586
5.5. Механизмы защиты 590
5.5.1. Домены защиты 590
5.5.2. Списки управления доступом 593
5.5.3. Мандаты 595
5.5.4. Секретные каналы 598
5.6. Обзор файловой системы MINIX3 601
5.6.1. Сообщения 602
5.6.2. Структура файловой системы 603
5.6.3. Битовые карты 607
5.6.4. Индексные узлы 609
5.6.5. Кэш блоков 611
5.6.6. Каталоги и пути 613
5.6.7. Дескрипторы файлов 616
5.6.8. Блокировка файлов 617
5.6.9. Каналы ввода-вывода и специальные файлы 618
5.6.10. Пример системного вызова read 620
5.7. Реализация файловой системы MINIX 3 621
5.7.1. Заголовочные файлы и глобальные структуры данных 621
5.7.2. Таблицы 625
5.7.3. Главная программа 634
5.7.4. Операции с отдельными файлами 638
5.7.5. Каталоги и пути 648
5.7.6. Прочие вызовы файловой системы 652
5.7.7. Интерфейс устройств ввода-вывода 654
5.7.8. Поддержка дополнительных системных вызовов 660
5.7.9. Утилиты файловой системы 662
5.7.10. Прочие компоненты MINIX3 662
Резюме 663
Вопросы и задания 664
Глава 6. Библиография 669
6.1. Рекомендуемая литература 669
6.1.1. Вводные и общие публикации 669
6.1.2. Процессы 671
6.1.3. Ввод-вывод 672
6.1.4. Управление памятью 673
6.1.5. Файловые системы 674
6.2. Алфавитный список литературы 675
Приложение А. Установка MINIX 3 683
А. 1. Подготовка к установке 683
А.2. Загрузка 685
А.З. Установка на жесткий диск 686
А.4. Тестирование 688
А.5. Использование симулятора 689
Приложение Б. Список файлов MINIX 3 на компакт-диске 691
Заголовочные файлы 691
Драйверы 691
Ядро 692
Файловая система 692
Менеджер процессов 693
Алфавитный указатель 694
Компакт-диск MINIX 3 703
Системные требования 703
Аппаратное обеспечение 703
Программное обеспечение 703
Установка 703
Поддержка продукта 703
|