Обзор книги Modern Operating Systems

Modern Operating Systems Книга(её 4-е издание) написана в 2014 году Эндрю Танненбаумом((Andrew S. Tanenbaum). В моём блоге это уже второй обзор на книгу этого автора и это неспроста. Эндрю Танненбаум является одним из моих любимых писателей в области высоких технологий, а книги любимых авторов я стараюсь читать все. Но и это ещё не всё, Танненбаум является автором Minix, а значит знаком с разработкой ОС он не понаслышке, что, на мой взгляд, добавляет веса данной книге.

Данный учебник раскрывает перед читателем детали сущностей, лежащих в основе всех современных операционных систем. С присущей Танненбауму профессиональностью и живостью языка, чтение этого учебника превращается в захватывающее погружение во внутреннее устройство ОС. Т.к. книга является учебником, то в конце каждой главы читателя ждут задачи, призванные помочь ему закрепить пройденный материал. Но, как и в предыдущей книге, я не решал эти задания и ничего о их качестве сказать не могу.

В книге чуть больше тысячи страниц, и она разделена на 13, различных по размеру, частей. Начинается она с введения в мир ОС, где читатель знакомиться с историей операционных систем, железом, на котором “лежит” ОС, а так же другими важными и не очень вещами, которые могут окружать операционные системы. Начиная со второй главы, читатель уже начинает знакомиться с внутренностями ОС, и это знакомство начинается с процессов и потоков. Что такое процесс? Поток? В чем их разница и как они связаны между собой? Как происходит диспетчеризация? Как они сообщаются между собой? Обо всём этом вы узнаете из главы 2.

Покончив с примитивами системы исполнительной, книга переходит к системе временного хранения – оперативной памяти. Из этой главы вы узнаете, что такое виртуальная память и как она работает(замещение и подкачка страниц памяти, различные алгоритмы, по эффективному замещению страниц в памяти).

Следующая глава посвящена файловой системе, где объясняется базовое устройство оной с большим уклоном в UNIX-подобную ФС. За главой о ФС идёт глава по устройствам ввода/вывода, где рассказывается о том, как ОС работает с различными устройствами. Здесь вы познакомитесь с прерываниями и драйверами – краеугольными камнями любой ОС.

Покончив с «железом» книга переходит к чисто программным главам. И начинается новая часть книги с главы о  взаимоблокировках(deadlocks). Хотя глава и не очень большая, взаимоблокировки рассмотрены довольно неплохо, включаю некоторую теорию по тому, как их избежать на уровне ОС. Следующая глава посвящена виртуализации и модному нынче «облаку». В главе рассказывается о том, как работает виртуальная машина и ч��о это значит для ОС(как с одной, так и с другой стороны). После виртуализации идёт небольшая глава посвящённая мультипроцессорам, где рассматриваются различные конфигурации машин и связанные с ними сложности в реализации ОС, это глава является очевидным продолжением разговора про «облака». Последней теоритической главой, является глава посвящённая безопасности. Здесь рассмотрены различные части ОС, которые так или иначе отвечают за аутентификацию и авторизацию пользователя, а также те части, что уберегают данные пользователя от чужих рук.

В главе 10 на примере Linux, UNIX и Android разбирается прежде изученная теория. Глава 11 похожа на главу 10, но в ней предыдущий материал разбирается на примере WIndows 8. Конечно, они разбираются весьма поверхностно, ведь на каждую из этих систем уйдёт по книге, да и не по одной. Но для базового ознакомления, на мой взгляд, этого достаточно. Завершает книгу глава, посвящённая проектированию ОС, где даются различные советы тем, кто будет этим заниматься. Есть ещё и 13 глава, в которой приводится список того, что почитать дальше, но я бы не стал считать её частью основного теста – это скорее библиография.

Что ещё бы хотелось добавить по отношению ко всем главам – в книге рассматриваются альтернативные подходы и алгоритмы, которые могут быть или были использованы в различных частях ОС. Приводятся плюсы и минусы тех или иных алгоритмов, рассматриваются недостатки и трудности реализации различных существующих и теоретических решений. Всё это позволяет взглянуть на ОС немного шире, чем если бы мы имели представление только о тех решениях, которые были приняты в одной ОС.

Как и все книги Эндрю Танненбаума, не нужно ждать от этого учебника откровений. Он добротен, интересен, но поверхностен. Если вы уже обладаете недюжинными знаниями в ОС, то данная книга вам вряд ли поможет(правда я думаю, что вы её уже давно прочитали), ну а всем другим я советую её к прочтению. Книга замечательно подходит как студентам. так и тем программистам, кто хотел бы лучше понимать устройство современных операционных систем.


Обзоры на другие книги Таненбаума:

Structured Computer Organization