Почему компьютер должен иметь BIOS?

35

Программное обеспечение BIOS встроено в ПК и является первым кодом, запускаемым ПК при включении («загрузка прошивки»). Когда компьютер запускается, первое задание для BIOS - это самопроверка при включении питания, которая инициализирует и идентифицирует системные устройства, такие как ЦП, ОЗУ, видеокарта, клавиатура и мышь, жесткий диск, привод оптических дисков и другое оборудование. Затем BIOS находит программное обеспечение загрузчика, хранящееся на периферийном устройстве (обозначаемом как «загрузочное устройство»), например на жестком диске или CD / DVD, и загружает и запускает это программное обеспечение, предоставляя ему контроль над ПК. [2] Этот процесс называется загрузкой или загрузкой, что означает сокращение для начальной загрузки.

Какие реквизиты определяют, что в компьютерной системе должен быть установлен BIOS?

Почему операционная система на самом деле не может работать в BIOS?

Диого
источник
40
Почему автомобильному двигателю нужен стартер? Разве двигатель не должен быть достаточно мощным, чтобы начать сам?
Der Hochstapler
4
@OliverSalzburg это будет возможно в ближайшем будущем, газовые двигатели без стартеров. С прямым впрыском и компьютерами это совсем несложно.
Моав
2
У них уже есть самозапускающиеся двигатели, но в основном это 12+ цилиндровые или роторные двигатели. Большинство двигателей не могут запускаться самостоятельно только потому, что они не могут произвести достаточно мощности за один ход, чтобы преодолеть момент инерции. Прямой впрыск и более точная синхронизация могут немного помочь, но на самом деле вам нужны более легкие двигатели, чтобы увеличить соотношение между энергией, генерируемой при ударе по силе, и моментом интерстиции, создаваемым маховиком, коленчатым валом, шестернями и т. Д.
Lèse majesté
5
На самом деле, BIOS в смысле ПК НЕ нужен. Компьютеры IBM System / 360 и / 370 (и, возможно, более поздние версии) запускались с одной жесткой инструкцией, которая считывает одну запись с устройства, выбранного с помощью набора на консоли. Эта запись содержала программу начальной загрузки (она должна была вместить 80 байт - одну перфокарту), которая загружала более сложную программу начальной загрузки, которая загружала ОС с диска. Я предполагаю, что «BIOS» был той единственной инструкцией, которую нужно было выполнить при нажатии правой кнопки (называемой IPL или начальной загрузкой программы).
Бывший Умбрис
2
Вы путаете "компьютер" и "компьютер" в своем вопросе. Вот почему ответы сбивают с толку, а иногда и противоречивы.
Rds

Ответы:

41

BIOS - это аппаратно-зависимый фрагмент кода, который хранится на самой материнской плате. Каждой отдельной материнской плате нужен собственный BIOS, написанный для нее, поэтому было бы невозможно иметь универсальный BIOS / OS «все в одном» (хотя BIOS технически представляет собой просто хранимый код, поэтому теоретически вы можете написать ОС для одной конкретной материнской платы). , Как вы упомянули, цель BIOS состоит в следующем:

Когда компьютер запускается, первое задание для BIOS - это самопроверка при включении питания, которая инициализирует и идентифицирует системные устройства, такие как ЦП, ОЗУ, видеокарта, клавиатура и мышь, жесткий диск, привод оптических дисков и другое оборудование.

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

Например, если у меня две разные материнские платы с двумя разными контроллерами SATA, BIOS позволяет мне написать фрагмент кода, который может работать с обоими, без моего знания того, как материнская плата фактически отправляет команды на устройство SATA. Я просто должен сказать компьютеру «прочитать сектор X с этого устройства SATA», и BIOS отвечает за фактическую отправку этих команд аппаратному обеспечению.

Источником информации о «секторе чтения X» является хранимая программа, содержащаяся в BIOS, которая обычно указывает компьютеру начать чтение с загрузчика, хранящегося в общем месте. Эти общие местоположения согласованы различными разработчиками программного и аппаратного обеспечения и обычно предоставляются общественности для обеспечения большей совместимости между системами.

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


Наконец, следует отметить, что BIOS также используется для внесения изменений в конфигурации аппаратного обеспечения компьютера и сохранения их во встроенной памяти EEPROM (поэтому ваш компьютер запоминает изменения при следующем запуске). Однако, как я уже говорил, после загрузки операционной системы она полностью контролирует компьютер.

Это позволяет производителям материнских плат разрабатывать программное обеспечение, позволяющее вам вносить эти изменения в вашей операционной системе, в отличие от необходимости перезагрузки в BIOS. Опять же, это очень зависит от аппаратного и программного обеспечения, но показывает, что все компьютерные интерфейсы являются относительными. BIOS - это именно то, что подразумевается под его названием - базовая система ввода / вывода, позволяющая использовать общий программный интерфейс для более продвинутой программы («операционной системы») для управления машиной.

Прорвать
источник
2
Когда вы запускаете компьютер, BIOS работает как машинный код на процессоре. Вы можете думать об этом так, но в некотором смысле он не «выключен» - он просто переключается на запуск ОС. Когда вы запускаете компьютер, BIOS сообщает компьютеру, чтобы он начал выполнять машинный код, хранящийся в местоположении X. Говоря более часто, BIOS просто инициализирует ваше оборудование и указывает компьютеру, откуда продолжить выполнение кода.
Прорыв
13
BIOS / OS все-в-одном НЕ невозможна. Я не знаю, почему все здесь продолжают говорить это. Наличие каждой части на отдельных устройствах / хранилище не означает, что они не являются частью одной и той же логической сущности. Компьютеры до появления IBM PC были все-в-одном, то есть BIOS был изготовлен и разработан на том же самом, что разработал ядро ​​ОС. На самом деле обновления ОС иногда включали обновления BIOS.
m0skit0
3
@Oliver На самом деле, с ACPI, функции BIOS обычно используются после загрузки ОС.
Дероберт
1
BIOS позволяет ОС (программному уровню) взаимодействовать с оборудованием. BIOS и ОС служат для разных целей. Это две части целого. Одно не вытесняет другого.
Бен Ричардс
1
@Breakthrough: зависит от того, кто производит оборудование;) В случае компьютеров IBM логическая эволюция была независимой от производителей BIOS и ОС из-за множества типов оборудования. Это не случалось в старые времена. Вот почему ПК был (к счастью, если не считать M $ без всякой причины ...) революцией, которая изменила весь компьютерный рынок.
m0skit0
7

Ваша операционная система находится на вашем жестком диске, если вы включите компьютер, он волшебным образом не начнет читать с этого жесткого диска. Именно BIOS загружает загрузчик с жесткого диска , а также проводит некоторое тестирование и позволяет вам настраивать определенные параметры BIOS.

Ваша ОС не может этого сделать, потому что она находится на жестком диске, а не в вашем ПЗУ.

Следовательно, вам нужен BIOS или аналогичная (но другая) технология, такая как EFI ...

Возможно поместить часть ОС в ПЗУ (ответственную за загрузку загрузчика ОС) производителем; однако, это не широко применяется, и в любом случае есть BIOS или EFI.

Тамара Вийсман
источник
1
Вы смешиваете две разные концепции. BIOS не зависит от ОС, то есть BIOS может быть частью ОС. Например, если он сделан одним и тем же производителем и работает только с этой ОС, как загрузчик игровой консоли.
m0skit0
5
«BIOS не зависит от ОС, то есть BIOS может быть частью ОС». А? Противоречие очень противоречиво, смеется.
Прорыв
2
Игровые приставки - это компьютеры, как и Atari, Amiga и старые Mac, так что это определенно актуально. @ Прорыв: это не противоречит. Это означает, что BIOS не имеет ничего общего с ОС, и, следовательно, может быть частью (или нет) этого.
m0skit0
@ TomWijsman Ты единственный троллинг здесь. Игровые приставки являются подмножеством компьютеров. Если это возможно для некоторых консолей, то для некоторых компьютеров. Кроме того, не используйте жирный шрифт просто так. Это неуместно.
luiscubal
1
@ TomWijsman у него есть точка, если игровые приставки могут сделать это, то и компьютеры тоже. Кроме того, до тех пор, пока это не вопрос или ответ, я не вижу проблемы в том, что это не по теме. В конце концов, комментарии - это комментарии; ни больше ни меньше. (Никаких комментариев по поводу смелого вопроса - каждому свое, хотя это больше касается терминологии.)
Прорыв
6

Нет реальной логической причины. Это больше вопрос наследия и истории.

  1. Нет необходимости, чтобы на компьютере был установлен BIOS. Это наследие от IBM PC. Хотя это оказалось хорошей идеей

  2. Если операционная система сделает это, это ничего не изменит, потому что она все равно будет делать то же, что и BIOS. Конечно, ОС должна быть в ПЗУ, а не на устройстве ввода-вывода. Проблема может возникнуть из-за монопольных проблем, когда сборщик ОС решает сделать свою ОС BIOS несовместимой с другими ОС. Отделение производителей BIOS от ОС улучшает свободу выбора программного обеспечения.

m0skit0
источник
1
Почему он не может работать как BIOS? Дайте объяснение почему. Вам нужно только положить загрузчик на ПЗУ, и все готово. Я не имею в виду, чтобы он был полностью в ПЗУ, и даже если он достаточно большой, он будет работать (если, конечно, для его запуска вам нужно будет загружать части в ОЗУ, но это также делается в текущем BIOS).
m0skit0
3
Он сказал «компьютер», а не ПК. И да, это применимо. Фактически так было до появления IBM PC (Atari, Amiga ... BIOS является частью ОС).
m0skit0
2
Глупый я, я писал программы для встраиваемых компьютеров, у которых не было BIOS или ОС, только код приложения. Или мы говорим не обо всех компьютерах, а о тех, о которых думает большинство людей?
jwernerny
2
Не применимо в больших масштабах? Проверьте, сколько Ataris, Amigas и Mac было до ПК.
m0skit0
2
IPhone - это компьютер, и я не верю, что у него есть BIOS. Еще до цифровой эры ... компьютер - это программируемая машина, которая выполняет операции и выдает тот же результат для данного входа, верно? Жаккардовый ткацкий станок - это компьютер, и у него определенно нет BIOS (даже нет ОС).
Rds
5

Что-то требуется для запуска операционной системы. Если операционная система может уместиться в некоторой энергонезависимой памяти, то она может быть запущена напрямую, но с полнофункциональными операционными системами, такими как Windows, OSX или Linux, это невозможно.

Необходима небольшая облегченная «ОС», которая может быть загружена при включении питания, которая выполняет основные функции, такие как доступ к памяти и диску, а затем загружает операционную систему. Хотя это может быть частью самой ОС, а не отдельной сущностью, существуют другие причины, по которым вам может потребоваться запустить другой процесс первым:

  1. Обновления - если операционная система была исправлена ​​таким образом, было бы трудно обновить ее, если бы были необходимы какие-либо исправления безопасности. Это можно сделать - обновления прошивки происходят постоянно на устройствах, таких как маршрутизаторы и т. Д., Но на них установлены относительно простые операционные системы.
  2. Гибкость - компьютер является машиной общего назначения, и на одном и том же оборудовании могут работать несколько разных операционных систем. Наличие BIOS, который затем загружает ОС с диска, означает, что вы можете выбрать, какой из них запускать, - вы можете даже пойти так далеко, имея несколько установленных рядом.

Процесс известен как начальная загрузка .

ChrisF
источник
1
Итак, ответ таков, потому что у нас много разных ОС? Я имею в виду, если бы у нас была только одна модель ОС для конкретного оборудования, мы бы исключили необходимость в BIOS?
Диого
1
Я не понимаю, почему Microsoft не может сделать BIOS ...
m0skit0
1
Вам не нужна вся ОС, чтобы поместиться в энергонезависимую память (что, между прочим, может потребоваться достаточно ПЗУ: P). Вам нужен только загрузчик, чтобы быть там.
m0skit0
1
@ m0skit0 Microsoft не может создать BIOS, так как ей придется создавать разные BIOS для каждой материнской платы, на которой она должна работать. :)
Прорыв
1
Кроме того, @ChrisF, размещение ОС в ПЗУ подрывает весь смысл операционной системы в первую очередь. Возможно, имеет смысл использовать ПЗУ для непосредственного выполнения некоторых хранимых программ на процессоре (что даст гораздо лучшую производительность), но весь смысл операционной системы состоит в том, чтобы явно запретить этот тип операций и предоставить общий программный интерфейс для Сделай так.
Прорыв
4

Концептуальный BIOS BIOS основывается на CP / M, операционной системе, популярной на 8-битных компьютерах с шиной Z-80 "S-100" до того, как IBM PC вступил во владение.

CP / M ожидает аппаратно-зависимые функции в ПЗУ (BIOS). Другой частью, загруженной с диска загрузчиком, было программное обеспечение, поддерживающее файловую систему CP / M (BDOS), а затем последний командный процессор или «оболочку» (CCP). Ожидается, что аппаратное обеспечение, которое CP / M будет поддерживать, было не очень большим: дисковод, дисплей, последовательный порт или два (порты COM или AUX), к которым могли быть подключены принтеры или модемы.

BIOS ПК выполнял базовую функцию начальной загрузки, подобную тому, как это делал CP / M, а DOS использовал функции BIOS для выполнения базового ввода-вывода, как и предполагалось. Программисты в конечном итоге обошли эти функции, поскольку они были медленными. Это привело к тому, что производители клонов ПК в середине 80-х годов воссоздали платформу в целом (это легко, поскольку IBM очень хорошо документировала исходный ПК изнутри и снаружи) вместо того, чтобы просто предоставлять BIOS с совместимыми интерфейсами, хотя они тоже должны были это делать.

На данный момент мы можем сказать, что для современной ОС BIOS на самом деле не нужен, кроме загрузки системы. Тем не мение ...

Начиная с начала 90-х годов, понятие управления питанием утвердилось, и BIOS был поставлен перед этим. APM хорошо работает с однозадачной ОС, такой как DOS, но не с настоящими многозадачными ОС, такими как Windows или Linux. Примерно в это же время 386 был в полную силу, процессор Intel, который поддерживал настоящую многозадачность. DOS и BIOS не были обновлены в ответ на новые возможности этого ЦП, главным образом потому, что все ЦП Intel по-прежнему будут работать в устаревшем 16-разрядном режиме совместимости, для которого был разработан оригинальный PC-BIOS. Поэтому современные операционные системы в значительной степени игнорируют / игнорируют все CP / M-подобные функции ввода / вывода BIOS, за исключением, возможно, ранних этапов загрузки.

В конце концов был разработан ACPI, в основном часть BIOS, которая поддерживала управление питанием и настройку (часто для ноутбука) вещей, специфичных для платформы. ACPI также обрабатывает конечное состояние переключения питания в режиме гибернации, сна или выключения.

Таким образом, в наши дни именно ACPI и его преемник, EFI, делают что-то вроде BIOS необходимостью для ПК. Общая концепция заключается в том, чтобы ACPI был интерфейсом между вещами, специфичными для платформы или материнской платы, и ОС, поэтому отдельная сборка ОС не должны быть сделаны для каждого типа материнской платы.

Проблемы с платами разработки, на которых размещены процессоры ARM под управлением Linux (а также оборудования для сотовых телефонов). Обычно они поставляются с микропрограммой только для загрузчика, такой как U-boot, но в значительной степени ОС должна поддерживать каждую плату как отдельную платформу.

LawrenceC
источник
3

В некотором смысле вы правы. BIOS и ОС частично делают одно и то же. Разделение в BIOS и ОС исключительно для гибкости.

BIOS обычно создается производителем оборудования. Аппаратное обеспечение должно обеспечивать наличие основной функциональности, например, возможность считывания с жесткого диска и отображения основного дисплея для диагностики и ошибок. Таким образом, название «Базовая система ввода-вывода».

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

Как только операционная система (или, по крайней мере, ее загрузчик) найдена и запущена BIOS, сама BIOS становится в значительной степени устаревшей. Современные ОС практически не используют BIOS после загрузки.

Если вы хотите, чтобы ОС выполняла всю работу, вам нужно было бы разместить ОС там, где к ней может получить доступ аппаратное обеспечение без предварительной помощи программного обеспечения (ПЗУ). Это может быть возможно для некоторых закрытых систем, где гибкость не имеет значения. Если вы думаете о том, чтобы встроить поддержку аппаратного обеспечения в какое-то другое аппаратное обеспечение, вы снова создаете своего рода BIOS ...

Другая проблема - размер и стоимость памяти. Полнофункциональные операционные системы велики, и попытка вставить многогигабайтную операционную систему в ПЗУ стоит дорого, помимо последующих проблем с ее исправлением и обновлением.

Так что нет, технических причин нет, но много практических, особенно для гибкой платформы ПК.

Оливер
источник
3

Чтобы запустить программу на современном ПК, у вас уже должна быть запущенная программа, которая знает, как управлять оборудованием и загружать программы в память. Эта проблема курицы и яйца решается путем внедрения базовой программы в само оборудование.

Эта базовая система ввода / вывода (BIOS) очень мала и очень ограничена по объему, но обеспечивает достаточную основу для загрузки и запуска загрузчиков второго уровня, таких как GRUB или NTLDR . Эти загрузчики второго уровня являются более сложными, чем программа BIOS, что позволяет им обеспечить более надежную основу для загрузки операционной системы и получения контроля над ней.

Эндрю Ламберт
источник
Хорошее нетехническое объяснение.
механическая улитки
1

Если у ЦП была возможность обращаться к жесткому диску напрямую, не полагаясь на BIOS, EFI или другой код в ПЗУ (или NVRAM, или что у вас есть), то теоретически такой ЦП мог бы загрузить ОС с диска в ОЗУ и начать выполняя это.

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

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

david25272
источник
Раньше компьютеры работали непосредственно с диска / барабана, без значительного объема оперативной памяти.
Даниэль Р Хикс
-1

Это не нужно!

То, что часто называют BIOS, представляет собой набор из 3 вещей.

  • Загрузчик
  • Инструмент настройки: теперь в основном устарел, кроме порядка загрузки и часов. Большинство остальных должно быть автоматическим или установленным производителем.
  • BIOS: библиотека процедур ввода-вывода, помогающая операционной системе взаимодействовать с оборудованием. К сожалению, биос 16-битный, устарел и не может использоваться современными операционными системами, поэтому в значительной степени игнорируется.
Ctrl-Alt-Делор
источник
Загрузчик является частью BIOS.
Даниэль Р Хикс
@Daniel Я переписал, чтобы сделать более понятным, спасибо.
Ctrl-Alt-Delor