Vad gör mina BIOS efter uppstart?
När din dator har avslutat startprocessen och du är fast inne i operativsystemet som surrar med, finns det något kvar för BIOS att göra?
Dagens Question & Answer-session kommer till oss med tillstånd av SuperUser-en indelning av Stack Exchange, en community-drive-gruppering av Q & A-webbplatser.
Frågan
SuperUser-läsaren Indrek ställer den här BIOS-relaterade frågan:
Jag undrade alltid om BIOS (förutom att utföra POST, starta bootloader och passera kontrollen till OS när man trycker på strömbrytaren) har något syfte eller en funktion medan operativsystemet körs?
Kommunicerar operativsystemet med BIOS under körning och i så fall hur?
Verkligen? Vilken funktion har BIOS förutom den kritiska rollen i datorns start?
Svaren
Hos SuperUser-bidragsgivaren Mechanical Snail, en översikt över hur BIOS roll har förändrats med tiden och vad den är och gör idag:
BIOS roll
Med moderna operativsystem, praktiskt taget ingen. Linus Torvalds sade enligt uppgift att sin uppgift är att "bara ladda operativsystemet och få helvete ut där".
Äldre operativsystem som MS-DOS förlitade sig på BIOS för många uppgifter (t.ex. diskåtkomst), genom att ringa avbrott.
Med moderna operativsystem växlar startläsaren snabbt till 32- eller 64-bitars läge och kör OS-kärnan. Kärnan kan registrera sina egna avbrottshanterare, som kan kallas av användarutrymmeapplikationer. Kärnans rutiner kan vara mer bärbara (eftersom de inte är beroende av den specifika hårdvaran), mer flexibla (OS-leverantörer kan ändra dem på begäran snarare än att behöva använda allt som hängde med hårdvaran), mer sofistikerade (de kan utföra vederbörligen komplicerade kod i stället för det som programmerades i BIOS) och säkrare (eftersom operativsystemet kan styra åtkomst till delade resurser och förhindra att program klarar av varandra, genomföra sina egna godtyckliga behörighetssystem).
För att interagera med specifik maskinvara kan operativsystem ladda och använda egna drivrutiner. Så det är inte nödvändigt för operativsystemet eller programmen att ringa de flesta BIOS-rutiner alls. I själva verket av säkerhetsskäl är BIOS-avbrott även avstängda. Eftersom BIOS lever i 16-bitars verkligt läge är det svårare att ringa till moderna operativsystem.
Medan användningen av BIOS är mycket begränsad när operativsystemet körs, används dess funktioner fortfarande perifert. Till exempel, när en dator sover, körs operativsystemet inte och det faller slutligen till firmware för att ställa in maskinvaran till rätt tillstånd för att pausa och återuppta operativsystemet. Dessa användningar är i allmänhet begränsade till ACPIcalls snarare än samtal till hela BIOS-gränssnittet. ACPI är en BIOS-förlängning som "ger strömhantering under operativsystemets styrning (OSPM), i motsats till det tidigare BIOS-centrala systemet, som åberopade plattformsspecifikt firmware för att bestämma strömhantering och konfigurationspolicy".
Observera att officiellt "BIOS" refererar till ett visst firmware-gränssnitt, men termen brukar användas för att referera till datormaskinvaror i allmänhet. Några nya datorer (särskilt Apple-enheter) har ersatt BIOS (sensu strictu) med UEFI, vilket givetvis är det som kallas för att implementera dessa funktioner.
För mer information om hur BIOS roll har minskat över tiden, se Wikipedia.
En annan SuperUser-bidragsgivare, Simon Richter, ger oss en översikt över de saker som BIOS fortfarande gör:
BIOS och Power Management
BIOS tillhandahåller ett antal tjänster till operativsystemen, varav de flesta är relaterade till strömhantering:
- modifiering av CPU- och busklockor
- aktivera / inaktivera moderkortenheter
- expansion port kraftstyrning
- suspendera till disk och suspendera till RAM
- återuppta händelseinställningar
Suspend-to-disk implementeras i OS mesteparten av tiden eftersom operativsystemet kan återställa sitt tillstånd snabbare (endast kernelstaten laddas om och programstatus byts in när det behövs vilket är betydligt snabbare än att ladda hela RAM-minnet) men funktionen förblir i specifikationen.
Suspend-to-RAM kan inte implementeras av operativsystemet, eftersom det bygger på BIOS som hoppar över RAM-initieringen och testet, så operativsystemet behöver ett API för att berätta för BIOS att den avser att återupptas med det aktuella RAM-innehållet. För att tillhandahålla denna tjänst frågar BIOS operativsystemet att lämna ett visst RAM-område intakt.
Gränssnittet för operativsystemet för alla BIOS-tjänster är en del virtuell maskinkod som måste köras på en emulator, och som genererar nödvändiga I / O-operationer i hårdvaran. För uppskjutning implementeras det generellt så att körning av en av maskinvarorna skriver utlöser ett avbrott, vilket överför kontrollen till BIOS.
Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.