Почему Linux масштабируется так хорошо к различным аппаратным платформам?

Из Ваших комментариев Вы, кажется, смущены точно, какова оболочка. Ядро ответственно за управление системой. Это - часть, которая на самом деле загружает и запускает программы, файлы доступов, выделяет память и т.д. Но ядро не имеет никакого пользовательского интерфейса; можно только общаться с ним при помощи другой программы как посредник.

Оболочка является программой, которая печатает подсказку, читает строку входа от Вас и затем интерпретирует его как одну или несколько команд, чтобы управлять файлами или запустить другие программы. Перед изобретением GUI оболочка была основным пользовательским интерфейсом ОС. На MS-DOS назвали оболочку command.com и немного людей когда-либо пытались использовать другого. На Unix, однако, долго было несколько оболочек, от которых могли выбрать пользователи.

Они могут быть разделены на 3 типа. Совместимые с границей оболочки используют синтаксис, полученный из исходной Оболочки Bourne. Оболочки C используют синтаксис от исходной оболочки C. Затем существуют нетрадиционные оболочки, которые изобретают их собственный синтаксис, или заимствуют один из некоторого языка программирования и обычно намного менее популярны, чем первые два типа.

Встроенная команда является просто командой, которую оболочка выполняет сама, вместо того, чтобы интерпретировать ее как запрос, чтобы загрузить и запустить некоторую другую программу. Это имеет два основных эффекта. Во-первых, это обычно быстрее, потому что загрузка и запущение программы занимают время. Конечно, чем дольше команда берет для выполнения, тем менее значительный время загрузки сравнивается общее время выполнения (потому что время загрузки является довольно постоянным).

Во-вторых, встроенная команда может влиять на внутреннее состояние оболочки. Вот почему команды как cd должно быть встроено, потому что внешняя программа не может изменить текущий каталог оболочки. Другие команды, как echo, могло бы быть встроено для эффективности, но нет никакой внутренней причины, они не могут быть внешними командами.

То, какие команды встроены, зависит от оболочки, которую Вы используете. Необходимо будет консультироваться с его документацией для списка (например, bashвстроенные команды перечислены в Главе 4 его руководства). type команда может сказать Вам, если команда встроена (если Ваша оболочка совместима с POSIX), потому что POSIX требует этого type будьте встроенным. Если which не встроенное в Вашей оболочке, затем она, вероятно, не будет знать о Вашей оболочке, создал-ins, но будет просто искать внешние программы.

22
18.02.2011, 00:13
4 ответа

В то время как открытость является, конечно, частью его, я думаю, что ключевой фактор является длительной настойчивостью Linus Torvald, что вся работа, от большого до маленького, имеет место в магистрали ядро Linux, пока она хорошо сделана. Если он решил в какой-то момент чертить линию и сказать "хорошо для того необычного суперкомпьютерного оборудования, нам нужно ветвление", затем абсолютно отдельный высокопроизводительный и варианты маленькой системы, возможно, разработал. Как это, вместо этого люди сделали более трудную работу того, чтобы заставлять все это играть вместе относительно хорошо.

И, клуджам, которые включают одну сторону вещей во вреде другого, обычно, не позволяют войти — снова, вынуждая людей решить проблемы более твердым, но более корректным способом, который, оказывается, обычно легче продвинуться от однажды, независимо от того, что требуется, клудж становится исторической сноской.

Из интервью несколько лет назад:

Q: Linux является универсальной системой. Это предоставляет ПК, огромные серверы, мобильные телефоны и приблизительно десять из других устройств. От Вашего привилегированного положения, какой сектор будет тем, где Linux выразит самый высокий потенциал?

A: Я думаю, что действительная мощность Linux состоит точно в том, что это не об одной нише. Все добираются для манипулирования, и у различных людей и различных компаний есть полностью различные мотивации и верования в то, что важно для них. Таким образом, я даже не интересуюсь никаким конкретным сектором.

31
27.01.2020, 19:42
  • 1
    И маленькая система и огромные системные определения продолжают смещаться все время, таким образом, это - хорошие клуджи, избежались. Многоядерные смартфоны могут теперь извлечь выгоду из всей суперкомпьютерной работы несколько сделанных годы назад. –  Zan Lynx 18.02.2011, 23:28

Linux масштабируется ко многим различным типам аппаратных средств потому что:

  • это очень настраивается
  • источник в свободном доступе, и может быть создан для любого ЦП, который имеет компилятор C в наличии
  • процессоры во встроенных устройствах и мобильных телефонах имеют, по крайней мере, тот же уровень или больше питания по сравнению с исходными 386 машинами, на которых была выполнена ранняя разработка Linux, и продолжите получать власть
  • это работает просто великолепно с только сетью, некоторой формой диска или подобного диску устройства и последовательного порта
4
27.01.2020, 19:42
  • 1
    Ну, кто-то должен был бы записать минимальную сумму кода начальной загрузки и времени выполнения C для целевой платформы. О, и это должно поддерживать виртуальную память. Но в других отношениях истинный :) –  Billy ONeal 18.02.2011, 18:20
  • 2
    @Billy Там является портами к nommu системам: uClinux, uClinux/ARM, и MontaVista Linux. –  Tobu 28.02.2011, 21:08
  • 3
    @Tobu: Хм.. Я не понимаю, как это может быть. Вся "Философия Unix" для нескольких процессов имеет предположение что что-то как fork возможно, и fork не может быть сделан обоснованно эффективно в не системе виртуальной памяти. В то время как обозначенные порты, вероятно, используют части ядра Linux и могут запустить некоторое программное обеспечение Linux, по большей части кажется, что API, выставленные этими портами, отличаются, чем типичные ядра Linux. (Пример: размещение в ОЗУ - который, очевидно, требует виртуальной памяти), –  Billy ONeal 28.02.2011, 21:56
  • 4
    linuxjournal.com/article/7814: говорит, что uCLinux не поддерживает ветвление (), но блокирующийся вариант, названный vfork (), приложения под uCLinux должны быть переписаны для использования vfork или потоков. –  LawrenceC 03.03.2011, 01:36

Ядро Linux масштабирует хорошо потому что, именно это это. Базовое ядро является относительно маленьким и делает то, что оно должно сделать. Драйверы устройств являются дополнительными и могут быть упущены из ядра для меньших систем. Вне минимальных требований ядра большая часть функциональности реализована как дополнительные функции.

Смотрите на файл конфигурации, установленный рядом с большинством ядер. Это перечислит все функции, которые были включены, а также какие драйверы поддерживаются.

Драйверы поддерживаются или встроенные в ядро или как загружаемые модули. Это позволяет ядру быть динамично настроенным к аппаратным средствам, на которых оно работает. Это - подход, используемый многими дистрибутивами.

Кроме наличия инструментов компиляции, изменяя ядро для новых аппаратных средств относительно просто. Для нового процессора только связанный код должен быть реализован как модификации к существующей функциональности. Новые устройства только требуют нового драйвера с соответствующими рычагами. Новые файловые системы являются аналогично относительно тривиальными модификациями.

Кодовая база хорошо сохранялась для хранения этой гибкости без внешнего разветвления. Условная компиляция управляет очень гибким ядром, которое было сохранено максимально минимальным.

4
27.01.2020, 19:42

Я испытываю недостаток в подробной технической экспертизе для резервного копирования этого ответа, но мой опыт показывает, что Linux масштабируется хорошо по сравнению с другими операционными системами, которые я часто использую (прежде всего, Windows). Таким образом, возможно, вопрос состоит в том, почему Windows не масштабируется, а также Linux.

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

Простите мне, если это упрощает Ваш вопрос.

1
27.01.2020, 19:42
  • 1
    Кажется, что Вы говорите ОС, в то время как парень говорит о ядре. Ну, если Вы не знаете наверняка, если ядро Windows чрезмерно увеличено в размере. –  tshepang 18.02.2011, 10:58
  • 2
    @Tshepang: Честно говоря, вопросы спрашивают о "ядре Linux и/или системе". Windows 7 и Windows Phone 7 совместно используют ядро? Мало я читал, предполагает, что у их ядер мог бы иметь меньше код, общий, чем ядра Сервера Ubuntu и Android. –  RedGrittyBrick 18.02.2011, 19:05
  • 3
    Спасибо, но вопрос был действительно о Linux и не любой другой ОС. Там существуют многие другие: en.wikipedia.org/wiki/List_of_operating_systems –  Justin Ethier 18.02.2011, 22:37
  • 4
    Ядро NT на самом деле очень эффективно, но это - огромное количество слоев, окружающих его, которые делают –  LawrenceC 19.02.2011, 02:58

Теги

Похожие вопросы