Учебное пособие. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2008. — 1040 с.: ил. — ISBN: 978-5-94157-695-1.
Изображение с текстовым слоем и закладками.
Описаны архитектуры современных операционных систем семейств ЦМХ, Win32, ОБ/2, УАХ/УМБ и др. Дано краткое введение в аппаратное обеспечение. Рассмотрены системы команд, загрузка программ, управление памятью, адресация, внешние события, многозадачность, синхронизация, обработка транзакций, внешние устройства и управление ими, файловые системы, безопасность и другие вопросы, обязательные для подготовки специалистов в области информатики и вычислительной техники.
Во втором издании во все разделы добавлены контрольные вопросы, а также включен ряд новых тем, в том числе глава "Введение в обработку транзакций".
Для студентов технических вузов, аспирантов и инженеров. Рекомендовано учебно-методическим объединением вузов по университетскому политехническому образованию в качестве учебного пособия для студентов, обучающихся по направлению 230100 "Информатика и вычислительная техника".
Казалось, будто бы невозможно обойти известнейший труд профессора Эндрю Таненбаума «Операционные системы. Разработка и реализация» ни по охвату материала, ни по глубине изложения. И всё же Дмитрию Иртегову, преподавателю НГУ, удалось написать руководство, превосходящее упомянутое выше издание.
Во-первых, стоит отметить язык изложения: поскольку материал ориентирован на «нашего» человека, то и воспринимается гораздо легче и доступнее, нежели перевод. Текст сопровождается многочисленными поясняющими отступлениями, в том числе и с историческим уклоном, что способствует обоснованному пониманию предлагаемого материала.
Во-вторых, в этой книге предложена иная и, мы уверены, более гибкая структура подачи информации об операционных системах. Читатель всецело погружается в некий особый мир, постепенно проникаясь всей сложностью вопросов.
В-третьих, Дмитрий Иртегов в качестве наглядного примера выбрал не Minix (прародительницу Linux), а ряд более актуальных операционных систем — Windows и MS-DOS.
Наконец, порадовал отданный детальному разбору истории операционных систем раздел, придающий этой книге элемент достоверности.
В итоге получилось основательное руководство, отлично составленное, охватывающее удивительную массу вопросов, предлагающее целостный подход к раскрытию темы операционных систем, принципов их внутреннего строения и механизмов работы.
ВведениеОсновные функции операционных систем
Какие бывают ОС
Системы с загрузчиком и без него
Управление оперативной памятью
Управление временем центрального процессора
Семейства операционных систем
Выбор операционной системы
Открытые системы
Как организована эта книга
Представление данных в вычислительных системахВведение в двоичную арифметику
Представление рациональных чисел
Представление текстовых данных
Представление изображений
Представление звуков
Упаковка данных
Контрольные суммы
Введение в криптографию
Машинные языкиСистемы команд
Форматы команд машинного языка
Стековые системы команд
Команды перехода
Регистры
Адресация оперативной памяти
Режимы адресации
Вырожденные режимы адресации
Абсолютная адресация
Косвенно-регистровый режим
Косвенно-регистровый режим со смещением
Базово-индексный режим
Сложные режимы адресации
Адресация с использованием счетчика команд
Банки памяти
CISC- и RISC-процессоры
Языки ассемблера
Многопроходное ассемблирование
Отладчики и деассемблеры
Листинги и отладочная информация
Отладка
Удаленная отладка
Деассемблирование
Вопросы для самопроверки
Вопросы, над которыми следует задуматься
Загрузка программАбсолютная загрузка
Разделы памяти
Относительная загрузка
Базовая адресация
Позиционно-независимый код
Оверлеи (перекрытия)
Сборка программ
Объектные библиотеки
Сборка в момент загрузки
Динамические библиотеки
Загрузка самой ОС
Вопросы для самопроверки
Управление оперативной памятьюОткрытая память
Алгоритмы динамического управления памятью
Сборка мусора
Подсчет ссылок
Просмотр ссылок
Генерационная сборка мусора
Открытая память (продолжение)
Управление памятью в MacOS и Win16
Системы с базовой виртуальной адресацией
Сегментная и страничная виртуальная памятьСегменты, страницы и системные вызовы
Взаимно недоверяющие подсистемы
Сегменты, страницы и системные вызовы (продолжение)
Разделяемые библиотеки
Страничный обмен
Поиск жертвы
Управление своп-файлом
Одноуровневая память
Вопросы для самопроверки
Компьютер и внешние событияОпрос
Канальные процессоры и прямой доступ к памяти
Прерывания
Исключения
Многопроцессорные архитектуры
Параллелизм с точки зрения программистаФормулировка задачи
Примитивы взаимоисключения
Мертвые и живые блокировки
Примитивы синхронизации с ожиданием.
Семафоры
Блокировки чтения-записи
Копирование при записи
Введение в обработку транзакций
Захват участков файлов
Мониторы и серверы транзакций
Гармонически взаимодействующие последовательные потоки
Системы, управляемые событиями
Вопросы для самопроверки
Реализация многозадачности на однопроцессорных компьютерахКооперативная многозадачность
Вытесняющая многозадачность
Планировщики с приоритетами
Честное планирование
Инверсия приоритета
Пользовательские и ядерные нити
Монолитные системы и системы с микроядра
Внешние устройстваДоступ к внешним устройствам
Простые внешние устройства
Порты передачи данных
Шины
Устройства графического вывода
Запоминающие устройства прямого доступа
Производительность жестких дисков
Дисковые массивы
Сети доступа к дискам
Вопросы для самопроверки
Драйверы внешних устройствФункции драйверов
Многоуровневые драйверы
Защита драйверов
Архитектура драйвера
Введение в конечные автоматы
Архитектура драйвера
Запросы к драйверу
Синхронный ввод/вывод
Асинхронный ввод/вывод
Сервисы ядра, доступные драйверам
Автоконфигурация
Выделение памяти
Таймеры
Обмен данными с пользовательским процессом
Сервисные функции
Асинхронная модель ввода/вывода с точки зрения приложений
Дисковый кэш
Спулинг
Файловые системыФайлы с точки зрения пользователя
Монтирование файловых систем
Формат имен файлов
Операции над файлами
Тип файла
Простые файловые системы
"Сложные" файловые системы
Устойчивость ФС к сбоям
Устойчивость к сбоям питания
Восстановление ФС после сбоя
Файловые системы с регистрацией намерений
Устойчивость ФС к сбоям диска
Файловые системы с копированием при записи
Вопросы для самопроверки
Обработка ошибок и исключенийТипы ошибок, которые следует обрабатывать
Стратегии обработки ошибок
Автоматический перезапуск
Неявное освобождение ресурсов
Оповещение пользователя
Логи
Обнаружение ошибок
Передача информации об ошибках
Коды ошибок
Простые обработчики ошибок
Стековые обработчики ошибок и простая обработка исключений
Обработка исключений в стиле PL/I
Исключения C++/Java/C#
Вопросы для самопроверки
БезопасностьФормулировка задачи
Сессии и идентификаторы пользователя
Аутентификация
Авторизация
Списки контроля доступа
Полномочия
Изменение идентификатора пользователя
Ресурсные квоты
Типичные уязвимые места
Ошибки программирования
Срыв буфера
Внедрение скриптов и SQL
Другие ошибки
Троянские программы
Троянские программы, внедряемые при разработке
Троянские программы, внедряемые при распространении
Троянские программы, внедряемые в уже установленную систему
Практические рекомендации
Вопросы для самопроверки
Обзор современных ОСMVS, OS/390, z/OS
ОС для компьютеров DEC
PDP-6 MONITOR и TOPS-10
BBN TENEX и TOPS-20
RT-11
RSX-11
VAX/VMS
OpenVMS
Cемейство Unix
Распространение Unix
Микроядро
Minix
GNU Not Unix
Open Software Foundation
X/Open
Unix System V Release
Linux
MacOS X
Семейство CP/M
MS DOS
Расширители DOS
Win16
OS/2
IBM OS/2
Windows NT/2000/XP
Microsoft Xbox
Windows 95/98/ME
Windows CE
Архитектура и язык ассемблера x86История
Архитектура процессора
Регистры
Адресное пространство и диспетчер памяти
Прерывания и исключения
Система команд и режимы адресации
Язык ассемблера
Синтаксис
Символы
Секции
Команды
Директивы
Список источников информацииДокументация
INMOS
National Bureau of Standards
NASA
US Army Ordnance Dept
Zortech
Книги и публикации
Интернет-ресурсы
Adobe
ANSI
Atmel
IBM
IETF
Intel
Linux
Microchip
Microsoft
National Semiconductors
SPARC
Sun Microsystems
Другие ресурсы
Предметный указатель