KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Прочая околокомпьтерная литература » Линус Торвальдс - Just for fun. Рассказ нечаянного революционера

Линус Торвальдс - Just for fun. Рассказ нечаянного революционера

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Линус Торвальдс, "Just for fun. Рассказ нечаянного революционера" бесплатно, без регистрации.
Перейти на страницу:

В конце 80-х – начале 90-х это направление было очень популярным. А успех Linux угрожал ему. Поэтому Эндрю регулярно выступал с язвительными репликами.

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

Мне это казалось глупым. Да, каждая отдельная часть получается простой. Но при этом их взаимодействие становится гораздо более сложным, чем при включении ряда сервисов в состав ядра, как это сделано в 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 (не то чтобы я стал писать, если бы и был здесь). Однако теперь хочу сделать несколько замечаний.

Как большинство из вас знает, для меня MINIX – хобби, которым я занимаюсь по вечерам, когда мне надоедает писать книжки, а по CNN не показывают никаких войн, революций или парламентских слушаний. Моя основная работа – преподавание и исследования в области операционных систем.

По роду своей деятельности, мне кажется, я знаю кое-что о будущем операционных систем в ближайшие лет десять. Здесь возникают две проблемы:

1. МИКРОЯДРО ИЛИ МОНОЛИТ

Раньше большинство операционных систем были монолитными, то есть вся операционная система представляла собой единый исполняемый файл «a.out», работающий в режиме ядра. В этот бинарник входит управление процессами, управление памятью, файловая система и все остальное. Примерами таких систем могут служить UNIX, MS-DOS, VMS, MVS, OS/360, MULTICS и многие другие. Альтернативой является система с микроядром, в которой большая часть операционной системы разбивается на отдельные процессы, находящиеся вне ядра. Они обмениваются между собой сообщениями. В задачи ядра входит управление передачей этих сообщений, обработка прерываний, управление процессами низкого уровня и, возможно, ввод-вывод. Примерами такой архитектуры служат RC4000, Amoeba, Chorus, Mach и еще не выпущенная Windows NT. Я мог бы многое рассказать о сравнительных преимуществах этих двух подходов, но достаточно сказать, что среди специалистов по разработке операционных систем споры уже закончились. Микроядро победило. Minix – система с микроядром. Файловая система и управление памятью – это отдельные процессы, которые работают вне ядра. Ввод-вывод тоже выполняется отдельно. LINUX – монолитная система. Это большой шаг назад, в 70-е годы.

2. ПЕРЕНОСИМОСТЬ

MINIX задумана как переносимая система и была перенесена с машин на базе Intel-процессоров на 680x0 (Atari, Amiga, Macintosh), SPARC и NS32016. LINUX тесно связана с 80x86. Тупиковый путь.

Поймите меня правильно. Я ничего не имею против LINUX. Она снимает с меня заботу о тех, кто хочет превратить MINIX в BSD UNIX. Но я с полной ответственностью заявляю, что те, кому нужна **СОВРЕМЕННАЯ** **бесплатная** ОС, должны искать переносимую ОС на базе микроядра, типа GNU или чего-то в этом роде.

Энди Таненбаум ( [email protected])


Я знал, что должен защитить свою честь, поэтому написал ответ.


From: [email protected] (Linus Benedict Torvalds)

Subject: Re: LINUX устарела

Date: 29 Jan 92 23:14:26 GMT

Organization: University of Helsinki

На сообщение с таким заголовком нельзя не ответить. Прошу прощения у пользователей minix, которые уже досыта наслушались о linux. Я хотел бы просто *проигнорировать вызов*, но… Настало время серьезного спора!

В сообщении < [email protected]> [email protected] (Энди Таненбаум) пишет:

>Я тут на пару недель уезжал в США, поэтому не

>писал особенно о LINUX (не то чтобы я стал

>писать, если бы и был здесь). Однако теперь я

>хочу сделать несколько замечаний.

>Как большинство из вас знает, для меня MINIX –

>хобби, которым я занимаюсь по вечерам, когда мне

>надоедает писать книжки, а по CNN не показывают

>никаких войн, революций или парламентских

>слушаний. Моя основная работа – преподавание и

>исследования в области операционных систем.

Вы хотите этим оправдать ограниченность minix? Извините, но вы не правы. У меня оправданий гораздо больше, и все-таки linux побеждает minix почти по всем параметрам. Не говоря уж о том, что большая часть хороших кодов для minix, похоже, написана Брюсом Эвансом.

Re 1: Для вас minix хобби – но ведь minix приносит доход, a linux раздается бесплатно. Теперь по поводу хобби. Поместите minix в свободный доступ, и одна из моих главных претензий к ней отпадет. Linux для меня в большой степени хобби (серьезное хобби, самого высшего сорта). Я не беру за нее денег, и она даже не является частью моей учебной работы. Я сделал ее в свободное время на собственной машине.

Re 2: Вы работаете преподавателем и исследователем. Прекрасное объяснение для умственной неполноценности minix. Остается надеяться, что Amoeba не такая фигня, как minix.

>1. МИКРОЯДРО ИЛИ МОНОЛИТ

Да, linux – монолитная система, и я согласен, что микроядро лучше. Если бы у вашего сообщения не был такой спорный заголовок, я бы, вероятно, согласился с большинством ваших высказываний. С теоретической (и эстетической) точки зрения linux проигрывает. Если бы ядро GNU было готово прошлой весной, я бы и не взялся за свою разработку: беда в том, что оно не было готово тогда и не готово до сих пор. Linux выигрывает прежде всего потому, что она уже готова.

>MINIX – система с микроядром [пропущено, но без >потери смысла]. LINUX – монолитная система.

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

>2. ПЕРЕНОСИМОСТЬ

«Переносимость нужна людям, которые не умеют писать новые программы» – это я только что придумал. В шутку.

На самом деле linux легче переносится, чем minix. Что? – слышу я ваш возглас. Это верно, но не в том смысле, какой имеет в виду ast: я сделал linux в максимальном соответствии со стандартами (хотя у меня перед глазами не было стандарта POSIX). Перенос программ в linux обычно гораздо проще, чем перенос их в minix. Я согласен, что переносимость – хорошее дело, но только если она имеет реальный смысл. Нет причин делать операционную систему полностью переносимой: достаточно, чтобы она была согласована с переносимым API. Основная идея операционной системы заключается в том, чтобы воспользоваться аппаратными возможностями, спрятав их под слоем обращений высокого уровня. Именно это и делает linux: она просто использует больше возможностей 386, чем другие ядра. В результате само ядро, конечно, становится не переносимым, но зато существенно упрощается архитектура. Вполне приемлемый компромисс, который и сделал возможным появление linux. Я согласен, что в linux машинная зависимость доведена до предела: я купил себе 386-й в январе прошлого года и занялся linux отчасти для того, чтобы его изучить. Многие вещи нужно было бы сделать более машинно-независимыми, если бы это был настоящий проект. Но я не особенно оправдываюсь: это было конструктивное решение, и когда в апреле прошлого года я начинал писать linux, то не думал, что программой захочет воспользоваться кто-то другой. К счастью, я ошибся, а поскольку мои исходники всем доступны, каждый может попробовать перенести ее, хотя это будет и непросто.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*