Gdy komputer zakończy proces uruchamiania i jesteś w środku brzęczenia systemu operacyjnego, czy pozostało coś do zrobienia dla BIOS-u?
Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, grupy dyskusyjnej poświęconej tematyce społecznościowej.
Czytnik SuperUser Indrek stawia pytanie związane z BIOS-em:
Zawsze zastanawiałem się, czy BIOS (poza przeprowadzeniem testu POST, uruchomieniem bootloadera i przekazaniem sterowania do systemu operacyjnego po naciśnięciu przycisku zasilania) ma jakiś cel lub funkcję, gdy działa system operacyjny?
Czy system operacyjny komunikuje się z BIOS-em podczas uruchamiania, a jeśli tak, to w jaki sposób?
W rzeczy samej? Jaką funkcję ma BIOS poza swoją kluczową rolą przy uruchamianiu komputera?
Dzięki uprzejmości Mechanicznego ślimaka współpracującego z SuperUser, przegląd tego, jak zmieniła się rola systemu BIOS w czasie i czym jest obecnie, a czego nie robi:
W nowoczesnych systemach operacyjnychpraktycznie żaden. Linus Torvalds powiedział podobno, że jego zadaniem jest "po prostu załadować system operacyjny i wydostać się stąd".
Starsze systemy operacyjne, takie jak MS-DOS, opierały się na BIOSie dla wielu zadań (na przykład dostępu do dysku), wywołując przerwania.
W nowoczesnych systemach operacyjnych bootloader szybko przechodzi w tryb 32- lub 64-bitowy i wykonuje jądro systemu operacyjnego. Jądro może rejestrować swoje własne procedury obsługi przerwań, które mogą być wywoływane przez aplikacje przestrzeni użytkownika. Procedury jądra mogą być bardziej przenośne (ponieważ nie zależą od konkretnego sprzętu), bardziej elastyczne (producenci systemów operacyjnych mogą je zmieniać na żądanie, zamiast korzystać z sprzętu), bardziej wyrafinowane (mogą wykonywać dowolnie złożone operacje kod, a nie to, co zostało zaprogramowane w BIOS) i bardziej bezpieczne (ponieważ system operacyjny może kontrolować dostęp do współdzielonych zasobów i uniemożliwiać programom nawzajem się nawzajem wdrażać własne schematy uprawnień).
Aby współdziałać z określonym sprzętem, systemy operacyjne mogą ładować i używać własnych sterowników urządzeń. Nie ma więc potrzeby, aby system operacyjny lub aplikacje w ogóle wywoływały większość procedur BIOS. W rzeczywistości ze względów bezpieczeństwa przerwań BIOS są nawet wyłączone. Ponieważ BIOS działa w 16-bitowym trybie rzeczywistym, trudniej jest wywoływać nowoczesne systemy operacyjne.
Podczas gdy korzystanie z BIOS-u jest bardzo ograniczone podczas pracy systemu operacyjnego, jego funkcje są nadal używane peryferyjnie. Na przykład, gdy komputer śpi, system operacyjny nie działa i ostatecznie sprowadza się do oprogramowania układowego, aby ustawić sprzęt na prawidłowy stan, aby wstrzymać i wznowić system operacyjny. Te zastosowania są zwykle ograniczone do ACPIcalls zamiast wywoływania pełnego interfejsu BIOS. ACPI to rozszerzenie systemu BIOS, które "zapewnia zarządzanie energią pod kontrolą systemu operacyjnego (OSPM), w przeciwieństwie do poprzedniego systemu centralnego BIOS-u, który polegał na oprogramowaniu układowym specyficznym dla platformy w celu określenia zasad zarządzania energią i konfiguracji".
Zauważ, że oficjalnie "BIOS" odnosi się do konkretnego interfejsu oprogramowania układowego, ale termin ten jest powszechnie używany w odniesieniu do oprogramowania komputerowego w ogóle. Niektóre z ostatnich komputerów (zwłaszcza Apple) zastąpiły BIOS (sensu strictu) z UEFI, co oczywiście jest tym, co nazywa się implementacją tych funkcji.
Aby uzyskać więcej informacji na temat zmniejszania się roli systemu BIOS w czasie, zobacz Wikipedia.
Inny współpracownik SuperUser, Simon Richter, daje nam przegląd rzeczy, które wciąż robi BIOS:
BIOS zapewnia szereg usług dla systemów operacyjnych, z których większość związana jest z zarządzaniem energią:
Suspend-to-disk jest zaimplementowany w systemie operacyjnym przez większość czasu, ponieważ system operacyjny może przywrócić jego stan szybciej (tylko stan jądra jest ponownie ładowany, a stan programu jest zamieniany, gdy jest wymagany, co jest znacznie szybsze niż ponowne ładowanie całej pamięci RAM), ale funkcja pozostaje w specyfikacji.
Suspend-to-RAM nie może być zaimplementowany przez system operacyjny, ponieważ opiera się na BIOS-ie, pomijając inicjalizację i testowanie pamięci RAM, więc system operacyjny potrzebuje interfejsu API, aby poinformować BIOS, że ma zamiar zostać wznowiony z bieżącą zawartością pamięci RAM. Aby zapewnić tę usługę, BIOS prosi system operacyjny o pozostawienie nienaruszonego obszaru pamięci RAM.
Interfejsem systemu operacyjnego dla wszystkich usług BIOS jest fragment kodu maszyny wirtualnej, który musi być uruchamiany na emulatorze, i który generuje niezbędne operacje we / wy w sprzęcie. W przypadku zawieszenia, jest to zazwyczaj realizowane, aby wykonanie jednego z zapisów sprzętowych spowodowało przerwanie, które przekazuje kontrolę do BIOS-u.
Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.