Dagens Spørsmål & Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en community-drive-gruppering av Q & A-nettsteder.
Spørsmålet
SuperUser-leser Indrek utgjør dette BIOS-relaterte spørsmålet:
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?
Faktisk? Hvilken funksjon har BIOS i tillegg til sin kritiske rolle i oppstart av datamaskinen?
Svarene
Hilsen til SuperUser-bidragsyteren Mechanical Snail, en oversikt over hvordan BIOS-rollen har endret seg over tid og hva den er og ikke gjør i dag:
BIOS rolle
Med moderne OS, praktisk talt ingen. Linus Torvalds sier angivelig at oppgaven er å "bare laste ned operativsystemet og få helvete der ute".
Eldre operativsystemer som MS-DOS stod på BIOS for mange oppgaver (for eksempel disktilgang) ved å ringe avbrudd.
Med moderne OS, bytter bootloader raskt til 32- eller 64-biters modus og kjører OS-kjernen. Kjernen kan registrere sine egne avbruddshåndteringsprogrammer, som kan kalles ved brukerspaceapplikasjoner. Kjernens rutiner kan være mer bærbare (siden de ikke er avhengige av den spesifikke maskinvaren), mer fleksibel (OS-leverandører kan endre dem på etterspørsel i stedet for å måtte bruke det som kom med maskinvaren), mer sofistikert (de kan utføre vilkårlig kompleks kode i stedet for det som ble programmert i BIOS), og sikrere (siden operativsystemet kan styre tilgangen til delte ressurser og forhindre at programmene klipper hverandre, implementerer sine egne vilkårlige tillatelsesordninger).
For å samhandle med spesifikk maskinvare, kan operativsystemer laste inn og bruke sine egne enhetsdrivere. Så det er ikke nødvendig for operativsystemet eller programmene å ringe de fleste BIOS rutiner i det hele tatt. Faktisk av sikkerhetshensyn er BIOS interrupts selv deaktivert. Siden BIOS lever i 16-biters ekte modus, er det vanskeligere å ringe til moderne OS.
Mens bruk av BIOS er svært begrenset mens operativsystemet kjører, er dets funksjoner fortsatt perifert brukt. For eksempel, når en datamaskin sover, går operativsystemet ikke, og det faller til slutt til fastvaren for å stille maskinvaren til riktig tilstand for å stoppe og gjenoppta operativsystemet. Disse bruksområdene er vanligvis begrenset til ACPIcalls i stedet for samtaler til hele BIOS-grensesnittet. ACPI er en BIOS-utvidelse som "bringer strømstyring under kontroll av operativsystemet (OSPM), i motsetning til det tidligere BIOS-sentrale systemet, som stod på plattformspesifikk fastvare for å bestemme strømstyring og konfigurasjonspolitikk".
Merk at offisielt "BIOS" refererer til et bestemt fastvaregrensesnitt, men begrepet brukes ofte til å referere til datamaskinens fastvare generelt. Noen nyere datamaskiner (spesielt Apple) har erstattet BIOS (sensu strictu) med UEFI, som selvsagt er det som kalles for å implementere disse funksjonene.
For mer informasjon om hvordan BIOS rolle har redusert over tid, se Wikipedia.
En annen SuperUser-bidragsyter, Simon Richter, gir oss en oversikt over de tingene BIOS fortsatt gjør:
BIOS og strømstyring
BIOS gir en rekke tjenester til operativsystemene, hvorav de fleste er relatert til strømstyring:
- modifisering av CPU og buss klokker
- aktivere / deaktivere hovedkortsenheter
- ekspansjonsport strømstyring
- suspendere til disk og suspendere til RAM
- gjenoppta hendelsesinnstillinger
Suspend-to-disk er implementert i OS mesteparten av tiden, da operativsystemet kan gjenopprette tilstanden sin raskere (bare kjernestaten blir lastet opp og programstatus byttes inn når det kreves, noe som er betydelig raskere enn å laste hele RAM-en), men funksjonen forblir i spesifikasjonen.
Suspend-to-RAM kan ikke implementeres av operativsystemet, da det er avhengig av BIOS-oversikten over RAM-initialisering og test, så operativsystemet trenger en API for å fortelle BIOS at den har til hensikt å gjenopptas med det nåværende RAM-innholdet. For å kunne levere denne tjenesten ber BIOS OS å forlate et bestemt RAM-område intakt.
Grensesnittet for operativsystemet for alle BIOS-tjenester er et stykke virtuell maskinkode som må kjøres på en emulator, og som genererer nødvendige I / O-operasjoner i maskinvaren. For suspendering er dette vanligvis implementert slik at utførelsen av en av maskinvaren skriver, utløser en avbrudd, som overfører kontroll til BIOS.
Har du noe å legge til forklaringen? Lyde av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.