6

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

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

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

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

Но BIOS все еще обновляется, со многими исправлениями ошибок, поэтому мне интересно, какова именно роль BIOS в настоящее время.

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

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

3 ответа3

11

Бит «BIOS» от «BIOS» - это действительно уровень совместимости между оборудованием и ОС. Да, вы можете напрямую управлять аппаратным обеспечением, НО вам потребуется написать код драйвера для каждого варианта конструкции материнской платы, чтобы ваше приложение работало на каждой машине. В очень смутном и далеком прошлом, когда Lotus 123 был DOS-приложением, первые несколько версий приводили параллельный порт принтера в движение, чтобы повысить производительность печати, что было неплохо, если у вас был настоящий IBM PC или очень хороший клон , но на некоторых ПК 123 не печатает, потому что электроника параллельного порта немного отличается от дизайна IBM.

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

Две другие части «BIOS» - это процедуры самотестирования при включении питания (POST) и «программа настройки CMOS» для компьютера.

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

3

Вы неправильно понимаете одну ОЧЕНЬ важную вещь. BIOS не программный, это прошивка. Это часть, которая стандартизирует функциональность на уровне HW. Это то, что загружает все остальные "программы".

Основная проблема с разрешением ОС напрямую управлять оборудованием - улучшения. Например, было доказано, что традиционные процессоры x86 давно зашли в тупик. Современные процессоры "x86" не являются внутренними x86. Вместо этого у них тоже есть прошивка (в данном случае называемая микрокодом), так что они выглядят как процессоры x86. Использование прошивки - это уровень инкапсуляции. Также современные процессоры x86 должны поддерживать инструкции, которые были необходимы из-за причуд, присутствующих в системах 8086 и 268, даже если они не используются сегодня.

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

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

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

Еще один момент, производители оборудования. Аппаратное обеспечение само по себе должно знать, где искать программы. На простых микроконтроллерных системах (по своим возможностям они похожи на компьютеры 30-летней давности) у вас есть отправная точка программы. Микроконтроллер всегда считывает один адрес памяти, где хранятся данные о том, где запускается программа. BIOS делает это для ПК. Представьте, насколько сложно будет, если процессор будет обращаться к данным непосредственно на жестком диске. Нужно знать, как все работает через чипсет, контроллер жесткого диска и сам жесткий диск и где хранится операционная система.

Прочитав ваш вопрос несколько раз, я думаю, что основная проблема вашего видения BIOS и его места заключается в том, насколько тесно операционная система связана с оборудованием на современном ПК. Было решено, что на ПК ОС не будет тесно связана с оборудованием. Со временем это решение зарекомендовало себя как хорошее. Взгляните на coreboot (статья в Википедии). Они реализуют всю операционную систему GNU/Linux в микросхеме BIOS компьютера. как видите, у них много проблем, связанных с доступной информацией о конкретных материнских платах, но у них есть свои преимущества. Их система может загрузиться всего за несколько секунд. Еще один интересный компьютер - Acorn. На их компьютерах была целая операционная система с одним чипом. Также есть Apple. Их ОС не так сильно привязана к аппаратному обеспечению, и возможно сделать хакинтош, но связь еще ближе, чем на ПК.

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

2

Давным-давно на компьютерах не было загрузочного ПЗУ. У одного был прямой интерфейс для изменения ОЗУ, и он мог останавливать ЦП, менять ОЗУ и затем перезагружать ЦП. Таким образом, когда вы перезагружали систему, вы должны были убедиться, что процессор остановлен, ввести код начальной загрузки, который загрузит загрузчик второго уровня (2 бита) с бумажной ленты или еще чего-нибудь, а затем "вылечить" ваш процессор.

ROM спасает день здесь, очевидно. Когда вы включаете систему на базе процессора x86, она начинает выполняться по адресу FFFF:FFF0. Это встроенная функция процессора x86. ПЗУ должно находиться по этому адресу, и, действительно, самая верхняя часть BIOS (обычно начинается с E000:0000).

Термин BIOS является пережитком старой операционной системы CP/M. Структура CP/M представляла собой ROM BIOS на нижнем уровне, BDOS (базовая дисковая операционная система) в середине и CCP (консольный командный процессор) перед пользователем. В BIOS были подпрограммы для выполнения низкоуровневых функций, таких как чтение / запись определенного сектора диска, чтение клавиши с клавиатуры, запись символа на экран и т.д. BDOS будет использовать функции BIOS для реализации файловой системы, а CCP будет командной оболочкой, использующей функции BDOS и BIOS. Идея заключалась в том, что BIOS будет содержать аппаратный интерфейс, а BDOS и CCP могут быть одинаковыми в любой системе CP/M.

BIOS также будет содержать исходный код, выполняемый процессором, который инициализирует требуемое оборудование, отображает заставку, загружает 2 бита с первого сектора первого диска и запускает его.

MS-DOS 1.0, в значительной степени являющаяся реализацией CP/M для x86, с хитрыми Unix-подобными функциями, добавленными начиная с версии 2.0, была структурирована таким же образом. IBM PC BIOS в то время также включал в себя такие улучшения, как переключение режима видео, графические функции и поддержку жесткого диска в оригинальной AT BIOS.

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

Примерно в 1990 году архитектура ПК начала расширяться и стала включать новые элементы, такие как APM, PnP и PCI. Таким образом, BIOS начал брать на себя дополнительные функции и становиться больше. ПК также начали использовать чипсеты вместо дискретных компонентов. Инициализация чипсета - это то, что должно произойти, чтобы получить оперативную память и другие компоненты, такие как шина PCI, пригодную для использования, так что это должно обрабатываться кодом начальной загрузки BIOS. По некоторым причинам многие производители чипсетов не любят документировать, как работают их процессы установки.

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

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

SMI также обрабатываются BIOS. Я почти уверен, что большая часть аппаратного обеспечения, связанного с температурой и энергопотреблением, запускает SMI, чьи процедуры затем регулируют скорость вращения вентилятора / процессора и / или другие вещи. Другие вещи могут вызвать СМИ; посмотрите статью в Википедии о режиме управления системой. Но нет также причины, по которой этот код нельзя заменить кодом операционной системы, если документированы аппаратные интерфейсы.

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

Поэтому я надеюсь, что это проливает некоторый свет на роль BIOS, и по большей части вы абсолютно правы в том, как он работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .