Дейтел Х. М., Дейтел П. Дж., Чофнес Д. Р. Операционные системы. Основы и принципы. Третье издание. М.: Бином-Пресс, 2006. —1024 с.
Эта книга — первая часть двухтомника, представляющего собой перевод громадного по объёму американского учебника, вышедшего на английском языке в 2004 г. В ней содержатся первые 15 глав, остальные шесть помещены во втором томе. В силу большого объёма стоит книга не дёшево — 624 руб. Конечно, в молодости я проглотил бы этот килобайт страниц за пару дней, но сейчас удовольствие её чтения затянулось на несколько месяцев.
В предисловии редактора к русскому переводу он пессимистично утверждает, что хороших книг мало, а хороших учебников ещё меньше. С первым сейчас трудно согласиться, поскольку появилось много добротных книг, а вторую сентенцию я хотел бы заменить на более оптимистическое: хороших учебников мало, но они есть. Об одном из них я и пишу эти строки.
Но чтобы всё не было так шоколадно, замечу, что мне сразу бросилось в глаза использование слова “директория” вместо термина “каталог”. Есть и другие замечания по терминологии, но этим в большей или меньшей степени грешат все переводные издания — данная книга грешит неточностями перевода терминологии меньше других, во всяком случае, в скобках всегда аккуратно даётся английский термин.
Первая глава содержит введение в операционные системы (ОС). Даётся краткая история их появления и рассматривается несколько поколений ОС. По мнению авторов, эти поколения сменяют друг друга каждые десять лет — таким образом, сейчас на подходе уже шестое. Вторая половина главы в общем виде рассказывает об архитектурах ОС.
Некоторые факты были для меня внове, например, что первую ОС в 1950-х годах разработала не IBM, как я полагал, а исследовательская лаборатория корпорации General Motors, хотя и для машины IBM 701.
Чтобы удержать интерес современного читателя, авторы постарались учесть клиповость его внимания и насытили книгу врезками трёх видов. Во-первых, это “Размышления об операционных системах”, каждое из которых занимает не больше страницы и содержит обсуждение коротких, но очень важных вопросов, например относительной стоимости человеческих и компьютерных ресурсов. Второй вид врезок (такого же размера) — биографические заметки, посвящённые наиболее выдающимся учёным и разработчикам, поучительные истории и программистские анекдоты. Третий обширный вид врезок — разбросанный по главам терминологический словарь. Словарь, на мой взыскательный в этом отношении вкус, по качеству средненький, но тем не менее он даёт большую часть связанной с ОС лексики. Наконец, в книге приводятся многочисленные ссылки на использованную авторами литературу, в основном англоязычную и потому, возможно, не столь интересную российскому читателю, а также на тематические веб-ресурсы, в том числе и сравнительно малоизвестные. Забыл упомянуть, что никакой учебник невозможен без упражнений и рекомендуемых исследовательских учебных проектов. Они, разумеется, присутствуют в изрядном количестве и очень высокого качества.
Вторая глава по существу тоже является вводной, поскольку описывает окружение ОС и вводит множество необходимых понятий. А их за короткую, но бурную историю развития компьютеров накопилось достаточно много: даются базовые сведения по организации компьютера, описываются различные виды загрузчиков, ассемблеры, языки высокого уровня, компиляторы и интерпретаторы, встроенное ПО и т. д.
Далее я не буду подробно рассматривать содержание каждой главы, но чтобы у вас было представление о книге, лишь кратко перечислю, о чём идёт в них речь. Третья глава посвящена процессам, их взаимодействию и операциям над потоками; четвёртая рассматривает потоки; пятая — семафоры и асинхронное параллельное исполнение процессов; шестая глава отведена вопросам параллельного программирования, мониторам; седьмая — взаимоблокировкам и борьбе с ними; в восьмой главе рассматриваются планировщик и алгоритмы планирования; в девятой — управление главной памятью; в 10-й — организация виртуальной памяти; в 11-й — управление виртуальной памятью; в 12-й — оптимизация производительности дисковых накопителей; в 13-й — файловые системы и базы данных; в 14-й — производительность и архитектура процессоров и в 15-й — многопроцессорные архитектуры. Мощная книга. Отмечу ещё раз высокое качество материала.
Знакомство с рецензируемой книгой, на мой взгляд, настоятельно рекомендую всем, кто рассматривает программирование как свою профессию. Конечно же оно необходимо также аспирантам и преподавателям соответствующих специальностей вузов и талантливым школьникам. В том, что такие есть, меня убедил пример из жизни. Сын моего приятеля, будучи в 12 лет выдающимся хакером, знал уже в этом возрасте стек протоколов TCP/IP лучше любого профессионала, “творчески”, до тонкостей изучив описания стандартов. О его тогдашних фокусах лучше не рассказывать — Кевин Митник отдыхает… К счастью, позже он увлёкся джазом и бросил компьютер.