Почему Linux хорошо работает на самых разных типах компьютеров - настольных компьютерах, ноутбуках, серверах, встроенных устройствах, мобильных телефонах и т. Д.? Это происходит главным образом потому, что система открыта, поэтому любая ее часть может быть модифицирована для работы в разных средах? Или есть другие свойства ядра и / или системы Linux, которые облегчают работу этой ОС на таком широком спектре платформ?
22
Ответы:
Хотя открытость, безусловно, является частью этого, я думаю, что ключевым фактором является то, что Линус Торвальд настаивает на том, чтобы вся работа, от большой до маленькой, имела место в основном ядре Linux, если она хорошо сделана. Если бы он решил в какой-то момент подвести черту и сказать: «Хорошо, для этого модного суперкомпьютерного оборудования нам нужна вилка», тогда могли бы появиться совершенно отдельные варианты high-end и small-system. Как таковые, вместо этого люди проделали более сложную работу, заставляя все это играть вместе относительно хорошо.
И клуджи, которые позволяют одной стороне вещей в ущерб другой, как правило, не допускаются, опять же, заставляя людей решать проблемы более трудным, но более правильным способом, который, как правило, легче пройти вперед как только то, что требуется, кладж становится исторической сноской.
Из интервью, которое было несколько лет назад :
источник
Linux масштабируется на множество различных типов оборудования, потому что:
источник
fork
возможно иfork
не может быть сделано достаточно эффективно в системе без виртуальной памяти. Хотя указанные порты, вероятно, используют части ядра Linux и могут запускать некоторое программное обеспечение Linux, по большей части кажется, что API, предоставляемые этими портами, отличаются от типичных ядер Linux. (Пример: отображение памяти - для которого явно требуется виртуальная память)Ядро Linux хорошо масштабируется, потому что так оно и есть. Ядро ядра относительно небольшое и делает то, что ему нужно. Драйверы устройств не являются обязательными и могут быть исключены из ядра для небольших систем. Помимо минимальных требований к ядру, большинство функций реализовано как дополнительные функции.
Посмотрите на файл конфигурации, установленный рядом с большинством ядер. В нем будут перечислены все функции, которые были включены, а также какие драйверы поддерживаются.
Драйверы поддерживаются либо встроенными в ядро, либо в виде загружаемых модулей. Это позволяет динамически настраивать ядро на том оборудовании, на котором оно работает. Этот подход используется во многих дистрибутивах.
Помимо наличия инструментов компиляции, модификация ядра для нового оборудования относительно проста. Для нового процессора только соответствующий код должен быть реализован как модификации существующей функциональности. Новые устройства требуют только нового драйвера с соответствующими крючками. Новые файловые системы также являются относительно тривиальными модификациями.
База кода была в хорошем состоянии, чтобы сохранить эту гибкость без внешнего разветвления. Условная компиляция обеспечивает очень гибкое ядро, которое было сведено к минимуму.
источник
Мне не хватает подробных технических знаний, чтобы подтвердить этот ответ, но мой опыт подсказывает, что Linux хорошо масштабируется по сравнению с другими операционными системами, которые я часто использую (в первую очередь, Windows). Так что, возможно, вопрос в том, почему Windows не так масштабируется, как Linux.
Если переформулировать этот вопрос для вас все еще полезно, я хотел бы предложить, чтобы рыночные силы мотивировали Microsoft добавлять функции и возможности, предназначенные для новейшего и наиболее функционального оборудования, поскольку они продают больше копий операционной системы, прежде всего, когда конечные пользователи покупают новые системы. , Итак, в любой момент времени я обнаружил, что последний выпуск Windows плохо работает на старом, менее мощном оборудовании.
Простите, если это упрощает ваш вопрос.
источник