Днешната сесия за въпроси и отговори се отнася до нас с любезното съдействие на SuperUser - подразделение на Stack Exchange, обединяване на уеб сайтове с въпроси и отговори.
Въпроса
Reader на SuperUser Indrek поставя този свързан с BIOS въпрос:
I always wondered whether the BIOS (apart from conducting POST, starting the bootloader and passing control to the OS after one presses the power button) has any purpose or function while the operating system is running?
Does the operating system communicate with the BIOS while running and if so, how?
Наистина? Каква функция има BIOS освен критичната си роля при стартирането на компютъра?
Отговорите
С любезното съдействие на сътрудника на SuperUser Механичен охлюв, преглед на това, как ролята на BIOS се е променила с течение на времето и какво е и не прави днес:
Ролята на BIOS
С модерните операционни системи, практически няма, Според Линус Торвалдс задачата му е "просто да заредите операционната система и да се махнете оттам".
По-старите операционни системи, като MS-DOS, разчитаха на BIOS за много задачи (например достъп до дискове), като извикаха прекъсванията.
С модерните операционни системи буутлоудъра бързо превключва на 32- или 64-битов режим и изпълнява ядрото на операционната система. Ядрото може да регистрира свои собствени манипулатори на прекъсвания, които могат да бъдат извиквани от приложения на потребителско пространство. Корекциите на ядрото могат да бъдат по-преносими (тъй като не зависят от специфичния хардуер), по-гъвкави (производителите на OS могат да ги променят при поискване, а не да използват каквото и да е с хардуера), по-сложни (могат да изпълняват произволно сложни код, а не това, което е програмирано в BIOS) и по-сигурни (тъй като операционната система може да контролира достъпа до споделените ресурси и да попречи на програмите да се сблъскват, прилагайки свои собствени схеми за произволни разрешения).
За да взаимодействат със специфичен хардуер, операционните системи могат да зареждат и използват собствени драйвери на устройства. Така че няма нужда операционната система или приложенията да се обаждат на повечето BIOS рутинни процедури. Всъщност, поради причини за сигурността, прекъсванията в BIOS са дори забранени. Тъй като BIOS живее в 16-битов реален режим, е по-трудно да се обадя за модерни операционни системи.
Докато използването на BIOS е много ограничено, докато операционната система работи, функциите му все още се използват периферно. Например, когато компютърът спи, операционната система не работи и в крайна сметка пада върху фърмуера, за да настрои хардуера в правилното състояние, за да спре и да възобнови операционната система. Тези приложения обикновено се ограничават до ACPIcalls, а не към целия BIOS интерфейс. ACPI е разширение на BIOS, което "носи управлението на захранването под контрола на операционната система (OSPM), за разлика от предишната BIOS-централна система, която разчиташе на специфичния за платформата фърмуер, за да определи политиката за управление на консумацията и конфигурация".
Имайте предвид, че официално "BIOS" се отнася до конкретен интерфейс на фърмуера, но терминът обикновено се използва за позоваване на фърмуера на компютъра изобщо. Някои скорошни компютри (особено тези на Apple) замениха BIOS (sensu strictu) с UEFI, което разбира се е това, което се нарича да изпълнява тези функции.
За повече информация за това как ролята на BIOS се е понижила с течение на времето, вижте Уикипедия.
Друг сътрудник на SuperUser, Саймън Рихтер, ни дава преглед на нещата, които BIOS все още прави:
BIOS и управлението на захранването
BIOS предоставя редица услуги на операционните системи, повечето от които са свързани с управлението на захранването:
- модифициране на процесора и автобусните часовници
- активиране / деактивиране на устройствата на основната платка
- контрол на мощността на порт за разширение
- суспендиране на диск и спиране до RAM
- възобновяване на настройките на събитията
Задържането на диск се изпълнява в операционната система по-голямата част от времето, тъй като операционната система може да възстанови състоянието си по-бързо (само състоянието на ядрото се презарежда и състоянието на програмата се заменя, когато е необходимо, което е значително по-бързо от презареждането на цялата RAM). функцията остава в спецификацията.
Операционната система Suspend-to-RAM не може да бъде приложена, тъй като тя разчита на BIOS, прескачайки инициализацията и тестването на RAM, затова OS се нуждае от API, за да каже на BIOS, че възнамерява да бъде възобновено с текущото RAM съдържание. За да предостави тази услуга, BIOS изисква от операционната система да остави определена област на RAM непокътната.
Интерфейсът за операционната система за всички BIOS услуги е част от кода на виртуалната машина, която трябва да се изпълнява от емулатор и която генерира необходимите I / O операции в хардуера. За суспендиране, това обикновено се изпълнява, така че изпълнението на една от хардуерните записи води до прекъсване, което прехвърля контрола към BIOS.
Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.