Раз уж наша торговая система так сильно зависит от работы операционной системы, неплохо было бы знать, как операционная система устроена изнутри, и какие ее компоненты и функционалы могут оказывать влияние на ваше торговое приложение. Как они позволяют ускорить его работу или наоборот — как могут замедлить его работу. Знание тонкостей работы операционной системы очень помогает там, где из операционной системы надо выжать все возможное в плане производительности и эффективности.
В одной из предыдущей статей я описал некоторые элементы стандартной многозадачной операционной системы — на примере Linux, как работают те или иные ее компоненты, и как они могут сказаться на производительности вашего торгового приложения. Но все это изложено достаточно поверхностно. В короткой статье вряд ли можно описать все нюансы работы ОС и дать детальную информацию. Почерпнуть же подробности можно из книг. Ниже я приведу список книг, которые на мой взгляд дают ценную информацию об устройстве Linux ОС, а также книги, посвященные общему описанию устройства ОС, которые дают вам возможность сравнить, как и почему разные ОС выполняют одну и ту же операцию, но по-своему по-разному.
Understanding the Linux Kernel, Third Edition

Эта книга очень старая. Третье издание вышло в 2005 году. Описывает устройство ядра версии 2.6.11. Но это пример того, как глубоко с примерами можно показать и рассказать детали устройства ядра вплоть до мелочей. Очень полезно почитать всякие подробности о работе планировщиков, многопоточности и многозадачности, о системе управления памятью, о реализации сетевого стека, работы с виртуальной памятью, модулем прямого доступа к памяти и т.д.
Пусть эта книга устарела, например, в описании планировщика (process scheduler), но весь функционал, описанный в книге, присутствует и в современной версии ядра Linux. Так что есть возможность сравнить, в какую сторону шло развитие, и чем оно было вызвано.
Linux Kernel Development, 3rd Edition

Вторая настольная книга в этом хит-параде. Хорошая книга не только для тех, кто собирается программировать ядро Linux, но и для общего понимания того, на как будет работать твое приложение в PROD. Опять же, книга древняя, издана в 2010 году. Дается описание ядра Linux 2.6.34. Но дело в том, что в ядре версии 2.6 было сделано множество радикальных изменений, которые настолько улучшили работу ядра Linux, что на этой ветке ядра долго строились Linux дистрибутивы (в том числе коммерческие) уровня предприятия.
Pro Linux High Availability Clustering

Linux — всего-лишь ядро операционной системы. Очень многое зависит от обвязки из сервисов и программ, окружающих это ядро в виде дистрибутива. Наиболее популярным дистрибутивом, используемым для построения торговых систем является Red Hat Enterprise Linux (RHEL), на основе которого можно построить High Availability кластер для обеспечения надежности работы торговой системы в PROD. О том как работают такие кластеры можно узнать из данной книги. Так как лицензия на RHEL предоставляется только за деньги, все, что описано в этой книге можно протестировать на свободной версии RHEL — дистрибутиве CentOS.
Multicore Application Programming: for Windows, Linux, and Oracle Solaris (Developer’s Library)

Отличная книга, в которой описаны главные элементы операционной системы на примерах Windows, Linux и Solaris. Первая глава дает очень, очень, очень хорошее введение в многоядерные процессоры. В других главах рассказывается как в операционных системах реализованы параллелизм, многозадачность, многопоточность, синхронизации и обмен данными между потоками и процессорами. Также даются советы о том, как надо писать код, чтобы на таких операционных системах он работал с наибольшей производительностью.
Operating Systems: A Spiral Approach

Еще одна книга по общему описанию устройства операционных систем, которую я с удовольствием прочитал. В этой книге мне понравился подход в изложении. Берется какая-то конкретная тема и рассказывается, как именно данный конкретный функционал реализован WindowsNT, Linux, MacOS и даже PalmOS. Таким образом изложение по спирали раскручивается от простого функционала к более сложному постоянно вращаясь в круге WindowsNT, Linux, MacOS, PalmOS.
Summary
По операционным системам выпущено множество книг. Например, тот же Танненбаум продолжает переиздавать свою классическую книгу Modern Operating Systems. А другая популярная серия Operating System Concepts израильского автора Абрахама Зильбершатца вышла уже 10-ым изданием. Не менее немеркнущая классика — Design and Implementation of the FreeBSD Operating System об дизайне и устройстве FreeBSD. Эту книгу полезно почитать, чтобы сравнить подходы Unix-системы BSD и Unix-like-системы Linux в решении одних и тех же задач.
Не могу удержаться и хочу посоветовать вам отличную книгу Showstopper! the Breakneck Race to Create Windows NT and the Next Generation at Microsoft, в которой не столько рассказывается о устройстве ОС Windows NT (впрочем, об устройстве там тоже много подробностей), сколько о том, как она была написана. Очень поучительное описание одного из крупнейших проектов в истории системной программной инженерии.
Несомненно в ваших комментариях, вы посоветуете мне другие отличные книги по Linux и внутреннему устройству операционных систем.