"Ради удовольствия." - читать интересную книгу автора (Торвальдс Л., Даймонд Д.)

Вся соль микроядра в том, чтобы оставить у ядра, которое является основой
основ, как можно меньше функций. Его главная задача -- обмен информацией. А
все возможности компьютера реализуются в виде сервисов, которые обеспечивают
коммуникационные каналы микроядра. Предполагается, что вы разбиваете
проблемы на такие мелкие части, что вся сложность пропадает.
Мне это казалось глупым. Да, каждая отдельная часть получается простой.
Но при этом их взаимодействие становится гораздо более сложным, чем при
включении ряда сервисов в состав ядра, как это сделано в Linux. Представьте
себе человеческий мозг. Каждая его составляющая проста, но их взаимодействие
превращает мозг в очень сложную систему. В этом-то все и дело: целое больше
частей. Если взять проблему, разделить ее пополам и сказать, что каждая
половинка вполовину проще, то при этом вы игнорируете сложность интерфейса
между половинками. Сторонники микроядра предлагали разбить ядро на пятьдесят
независимых частей так, чтобы каждая часть была в пятьдесят раз проще. Они
умалчивали о том, что взаимодействие между частями окажется сложнее исходной
системы -- при том, что и части сами по себе не будут элементарными.
Это самое главное возражение против микроядра. Простота, обеспечиваемая
микроядром, является мнимой.
Исходно Linux была намного меньше и намного, намного проще. Она не
навязывала модульность, поэтому многое делалось гораздо проще, чем в Minix.
Вот, например, что мне не нравилось в Minix: если у тебя одновременно
работает пять разных программ и они хотят прочесть пять различных файлов,
эти задания будут выполняться последовательно. Другими словами, пять
различных процессов пошлют файловой системе запросы: "Можно мне прочесть
файл X?" Демон файловой системы, который занимается чтением, примет один из
них и пошлет ответ, потом другой -- и так далее.
В Linux, где ядро монолитно, каждый из пяти процессов пошлет системный
вызов ядру. Ядро должно действовать очень осторожно, чтобы не перепутать
вызовы, но при этом оно очень естественно готово к обслуживанию любого числа
процессов, выполняя все, что им нужно. Поэтому Linux работает намного
быстрее и эффективнее.
Плохо было и то, что с исходниками Minix -- согласно лицензионному
соглашению -- почти ничего нельзя было делать. Вот, например, Брюс Эванс
провел коренную переделку Minix, которая ее значительно улучшила. Однако
нельзя было намертво встроить эти изменения в систему. Разрешалось только
приделывать заплатки. Просто кошмар какой-то! По закону он не мог сделать
загрузочный модуль, чтобы облегчить людям модернизацию. Поэтому для
получения сколько-нибудь полезной системы модернизацию приходилось проводить
в несколько этапов, что было крайне неудобно.
Единственный раз я принялся отвечать Эндрю Таненбауму в начале 1992
года. Представьте себе, что в одно вьюжное утро вы получаете такое
нелицеприятное письмо:

From: [email protected] (Andy Tanenbaum)
То: Newsgroups: comp.os.minix
Subject: LINUX устарела
Date: 29 Jan 92 12:12:50 GMT

Я тут на пару недель уезжал в США, поэтому не писал особенно о LINUX
(не то чтобы я стал писать, если бы и был здесь) . Однако теперь хочу