DrakonHaSh
Постоялец
- Регистрация
- 29 Июн 2010
- Сообщения
- 357
- Реакции
- 122
- Автор темы
- #1
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
Linux имеет современную и перспективную архитектуру
"Написание монолитного ядра в 1991 г. было «гигантским шагом назад в 1970-е годы". Автором этих строк является профессор Амстердамского университета Эндрю Танненбаум. Именно руководствуясь (впрочем, неудачно) его книгой, Линус Торвальдс написал Linux. Когда Танненбаум более детально ознакомился с плодом мысли своего невдумчивого читателя, он заявил следующее: «Я по-прежнему считаю, что создавать монолитное ядро в 1991 году — фундаментальная ошибка. Скажите спасибо, что вы не мой студент: за такой дизайн я бы не поставил высокой оценки». Действительно, дизайн Linux дублировал допотопные принципы Unix, которая, как всем известно, является морально устаревшей системой. Но, к сожалению, никому не хватило здравомыслия посмотреть на Linux без пафосного предрассудка о «современном дизайне Linux», внушаемого массам. Отсутствие изначального плана работ, неверно взятое направление развития, отсутствие опыта проектирования операционных систем, — всё это сделало Linux крайне кривым, некачественным и медленным. Слепота длилась достаточно долго — пока шла волна истерии вокруг Linux. Однако осознание бесперспективности всего Linux понемногу стало доходить до людей. Так в 2009 году, Эндрю Таненбаум получил грант от Евросоюза в размере 2,5 миллионов евро на развитие концепции микроядерной архитектуры9. Сама концепция «микроядра» не нова. В начале 1980-х годов на рынке присутствовали системы, использующие подобную архитектуру. Но, к сожалению, им не удалось выйти на рынок просто потому, что им не хватило рекламы и пафоса, ведь именно из личности Торвальдса пресса сделала романтический идеал студента, написавшего операционную систему. Микроядерная архитектура — признак тонкого и стройного дизайна. В реальной жизни редко используется чистая микроядерная архитектура. Чистые микроядра обычно имеют очень малый размер — в пределах 100-200KiB и тем самым обеспечивают высокую надежность и модульность ОС. Так, к примеру, подключить в Linux необходимый модуль ядра достаточно сложно, а в концепции микроядра подгрузка или выгрузка модуля представляет собой штатное действие. За счёт этого достигается высокая производительность и гибкость, так как нет нужды держать загруженными ненужные модули, а возможность динамической выгрузки модулей обеспечивает очень высокую надежность. Так, любая ошибка в драйвере Linux может привести к краху всей операционной системы с неопределённым результатом (например, злоумышленники могут захватить контроль и похитить или уничтожить ваши данные). В микроядерной же системе подобная ситуация практически исключена. Драйвер мало того, что не сможет получить привилегии для доступа к данным, так ещё и будет выгружен в случае, если в нём произойдет ошибка. К примеру, в ядре системы Эндрю Таненбаума ОС Minix не было найдено ни единой уязвимости в ядре за целых десять (а то и больше) лет10. Поддержка монолитного ядра крайне сложна. Я считаю, что любое внедрение Linux в масштабах страны будет серьезным ударом по всем организациям, использующим эту систему, как только речь коснется дальнейшей поддержки и развития Linux. Поэтому все призывы опенсорсщиков, в которых они кричат о возможностях «лёгкой модификации» Linux, являются чистым воды саботажем. А как насчёт того, чтобы найти ошибку в монолитном ядре? По этому поводу приведу одну интересную цитату: "Второй человек в Linux, Andrew Morton, горько сетует по поводу состояния разработки -mm ветки ядра (напомню, что именно в неё сначала добавляются экспериментальные патчи, а только потом, после тестирования, они имеют шанс попасть в основное ядро «У меня ушло двое полных суток на то, чтобы всё это скомпилировать и загрузить на нескольких моих компьютерах. Чтобы добиться положительного результата в этом процессе, я написал около девяноста исправляющих патчей и патчей по отбрасыванию ненужного. Уже сейчас я наблюдаю несколько известных мне багов, но, полагаю, на самом деле их гораздо больше. Я должен сказать, что такая модель разработки больше не работает». Последний патч для ядра 2.6.23-rc6 весит почти 30 мегабайт. Говоря по-русски, это около тридцати тысяч страниц исходников (если подсчитывать оптимистично — по тысяче символов на страницу). Тут можно рассуждать очень долго. К примеру, для многих недалеких людей до сих пор отсутствие драйверов под Linux кажется злым заговором корпораций против Linux. На самом деле все гораздо проще. Корпорации не заинтересованы тратить сотни тысяч долларов на написание драйверов под Linux в виду колоссальной сложности данного процесса. Даже если драйвер и будет написан, то для его поддержки неминуемо потребуется целая команда разработчиков просто потому, что ядро Linux не имеет стабильного ABI (Application Binary Interface). А это означает, что с каждым выходом нового ядра будет необходима переделка под него драйвера. Нужно сказать, что в Linux ущербно не только ядро. Графическая и аудио подсистемы тоже реализованы просто ужасно. Я не предлагаю всем переходить на Minix просто потому, что она преследует другие (академические) цели и служит для обучения проектировки систем, драйверов и интерфейсов. Так же идеальное соблюдение микроядерной архитектуры для домашних Операционных Систем нецелесообразно, но это, безусловно, большой шаг вперед. В то же время в Windows используется гибридное ядро, которое отличается от микроядра тем, что подгружает не модули, а слои.
"Написание монолитного ядра в 1991 г. было «гигантским шагом назад в 1970-е годы". Автором этих строк является профессор Амстердамского университета Эндрю Танненбаум. Именно руководствуясь (впрочем, неудачно) его книгой, Линус Торвальдс написал Linux. Когда Танненбаум более детально ознакомился с плодом мысли своего невдумчивого читателя, он заявил следующее: «Я по-прежнему считаю, что создавать монолитное ядро в 1991 году — фундаментальная ошибка. Скажите спасибо, что вы не мой студент: за такой дизайн я бы не поставил высокой оценки». Действительно, дизайн Linux дублировал допотопные принципы Unix, которая, как всем известно, является морально устаревшей системой. Но, к сожалению, никому не хватило здравомыслия посмотреть на Linux без пафосного предрассудка о «современном дизайне Linux», внушаемого массам. Отсутствие изначального плана работ, неверно взятое направление развития, отсутствие опыта проектирования операционных систем, — всё это сделало Linux крайне кривым, некачественным и медленным. Слепота длилась достаточно долго — пока шла волна истерии вокруг Linux. Однако осознание бесперспективности всего Linux понемногу стало доходить до людей. Так в 2009 году, Эндрю Таненбаум получил грант от Евросоюза в размере 2,5 миллионов евро на развитие концепции микроядерной архитектуры9. Сама концепция «микроядра» не нова. В начале 1980-х годов на рынке присутствовали системы, использующие подобную архитектуру. Но, к сожалению, им не удалось выйти на рынок просто потому, что им не хватило рекламы и пафоса, ведь именно из личности Торвальдса пресса сделала романтический идеал студента, написавшего операционную систему. Микроядерная архитектура — признак тонкого и стройного дизайна. В реальной жизни редко используется чистая микроядерная архитектура. Чистые микроядра обычно имеют очень малый размер — в пределах 100-200KiB и тем самым обеспечивают высокую надежность и модульность ОС. Так, к примеру, подключить в Linux необходимый модуль ядра достаточно сложно, а в концепции микроядра подгрузка или выгрузка модуля представляет собой штатное действие. За счёт этого достигается высокая производительность и гибкость, так как нет нужды держать загруженными ненужные модули, а возможность динамической выгрузки модулей обеспечивает очень высокую надежность. Так, любая ошибка в драйвере Linux может привести к краху всей операционной системы с неопределённым результатом (например, злоумышленники могут захватить контроль и похитить или уничтожить ваши данные). В микроядерной же системе подобная ситуация практически исключена. Драйвер мало того, что не сможет получить привилегии для доступа к данным, так ещё и будет выгружен в случае, если в нём произойдет ошибка. К примеру, в ядре системы Эндрю Таненбаума ОС Minix не было найдено ни единой уязвимости в ядре за целых десять (а то и больше) лет10. Поддержка монолитного ядра крайне сложна. Я считаю, что любое внедрение Linux в масштабах страны будет серьезным ударом по всем организациям, использующим эту систему, как только речь коснется дальнейшей поддержки и развития Linux. Поэтому все призывы опенсорсщиков, в которых они кричат о возможностях «лёгкой модификации» Linux, являются чистым воды саботажем. А как насчёт того, чтобы найти ошибку в монолитном ядре? По этому поводу приведу одну интересную цитату: "Второй человек в Linux, Andrew Morton, горько сетует по поводу состояния разработки -mm ветки ядра (напомню, что именно в неё сначала добавляются экспериментальные патчи, а только потом, после тестирования, они имеют шанс попасть в основное ядро «У меня ушло двое полных суток на то, чтобы всё это скомпилировать и загрузить на нескольких моих компьютерах. Чтобы добиться положительного результата в этом процессе, я написал около девяноста исправляющих патчей и патчей по отбрасыванию ненужного. Уже сейчас я наблюдаю несколько известных мне багов, но, полагаю, на самом деле их гораздо больше. Я должен сказать, что такая модель разработки больше не работает». Последний патч для ядра 2.6.23-rc6 весит почти 30 мегабайт. Говоря по-русски, это около тридцати тысяч страниц исходников (если подсчитывать оптимистично — по тысяче символов на страницу). Тут можно рассуждать очень долго. К примеру, для многих недалеких людей до сих пор отсутствие драйверов под Linux кажется злым заговором корпораций против Linux. На самом деле все гораздо проще. Корпорации не заинтересованы тратить сотни тысяч долларов на написание драйверов под Linux в виду колоссальной сложности данного процесса. Даже если драйвер и будет написан, то для его поддержки неминуемо потребуется целая команда разработчиков просто потому, что ядро Linux не имеет стабильного ABI (Application Binary Interface). А это означает, что с каждым выходом нового ядра будет необходима переделка под него драйвера. Нужно сказать, что в Linux ущербно не только ядро. Графическая и аудио подсистемы тоже реализованы просто ужасно. Я не предлагаю всем переходить на Minix просто потому, что она преследует другие (академические) цели и служит для обучения проектировки систем, драйверов и интерфейсов. Так же идеальное соблюдение микроядерной архитектуры для домашних Операционных Систем нецелесообразно, но это, безусловно, большой шаг вперед. В то же время в Windows используется гибридное ядро, которое отличается от микроядра тем, что подгружает не модули, а слои.