Oppstart - Booting

Image
Et flytdiagram over en datamaskin som starter

I databehandling er oppstart prosessen med å starte en datamaskin . Det kan initieres av maskinvare, for eksempel et knappetrykk, eller av en programvarekommando . Etter at den er slått på, har en datamaskins sentrale prosessorenhet (CPU) ingen programvare i hovedminnet , så noen prosesser må laste programvare inn i minnet før den kan kjøres. Dette kan gjøres med maskinvare eller fastvare i CPU -en, eller med en egen prosessor i datasystemet.

Omstart av en datamaskin kalles også omstart , noe som kan være "hardt", f.eks. Etter at strømmen til CPU -en er slått av eller på, eller "myk", der strømmen ikke er kuttet. På noen systemer kan en myk oppstart eventuelt slette RAM til null. Både hard og myk oppstart kan startes av maskinvare, for eksempel et knappetrykk eller en programvarekommando. Oppstart er fullført når det operative kjøretidsystemet , vanligvis operativsystemet og noen applikasjoner, er oppnådd.

Prosessen med å returnere en datamaskin fra en søvnstilstand (suspensjon) innebærer ikke oppstart; men det gjenoppretter det fra en dvalemodus . Noen innebygde systemer krever ikke en merkbar oppstartsekvens for å begynne å fungere, og når de er slått på, kan de bare kjøre operasjonelle programmer som er lagret i ROM. Alle datasystemer er statlige maskiner , og en omstart kan være den eneste metoden for å gå tilbake til en angitt null-tilstand fra en utilsiktet, låst tilstand.

I tillegg til å laste inn et operativsystem eller frittstående verktøy, kan oppstartsprosessen også laste inn et lagringsdumpprogram for å diagnostisere problemer i et operativsystem.

Boot er en forkortelse for bootstrap eller bootstrap load og kommer fra uttrykket for å trekke seg opp av bootstraps . Bruken henviser til kravet om at hvis det meste av programvaren lastes inn på en datamaskin av annen programvare som allerede kjører på datamaskinen, må det finnes en mekanisme for å laste den opprinnelige programvaren til datamaskinen. Tidlige datamaskiner brukte en rekke ad-hoc-metoder for å få et lite program til minne for å løse dette problemet. Oppfinnelsen av skrivebeskyttet minne (ROM) av forskjellige typer løste dette paradokset ved å la datamaskiner sendes med et oppstartsprogram som ikke kunne slettes. Vekst i kapasiteten til ROM har gjort det mulig å implementere stadig mer forseggjorte oppstartsprosedyrer.

Historie

Image
Brytere og kabler som brukes til å programmere ENIAC (1946)

Det er mange forskjellige metoder tilgjengelig for å laste inn et kort startprogram til en datamaskin. Disse metodene strekker seg fra enkle, fysiske input til flyttbare medier som kan inneholde mer komplekse programmer.

Eksempler på forhåndsintegrerte kretser

Tidlige datamaskiner

Tidlige datamaskiner på 1940- og 1950-tallet var enestående ingeniørarbeid som kunne ta flere uker å programmere og programlasting var et av mange problemer som måtte løses. En tidlig datamaskin, ENIAC , hadde ikke noe program lagret i minnet, men ble konfigurert for hvert problem ved å konfigurere sammenkoblede kabler. Bootstrapping gjaldt ikke ENIAC, hvis maskinvarekonfigurasjon var klar for å løse problemer så snart strøm ble påført.

Den EDSAC system, den andre lagerprogrammerbare maskinen skal bygges, brukt bytter spring å overføre et fast program i minnet når sin startknappen er trykket inn. Programmet som ble lagret på denne enheten, som David Wheeler fullførte i slutten av 1948, lastet ytterligere instruksjoner fra stanset tape og deretter henrettet dem.

De første kommersielle datamaskinene

De første programmerbare datamaskinene for kommersielt salg, for eksempel UNIVAC I og IBM 701, inkluderte funksjoner for å gjøre driften enklere. De inkluderte vanligvis instruksjoner som utførte en fullstendig inngangs- eller utgangsoperasjon. Den samme maskinvarelogikken kan brukes til å laste innholdet i et slagkort (de mest typiske) eller andre inndata, for eksempel en magnetisk trommel eller magnetbånd , som inneholdt et oppstartsprogram ved å trykke på en enkelt knapp. Dette oppstartskonseptet ble kalt en rekke navn for IBM -datamaskiner på 1950- og begynnelsen av 1960 -tallet, men IBM brukte begrepet "Initial Program Load" med IBM 7030 Stretch og brukte det senere for deres hovedrammalinjer, med System/360 in 1964.

Image
Første programbelastningskort for IBM 1130 (1965)

Den IBM 701 datamaskin (1,952 til 1,956) hadde en "belastning" knapp som startet lesing av den første 36-bits ord inn i hovedminnet fra et hullkort i en kortleser , et magnetisk bånd i en båndstasjon , eller en magnetisk trommelenheten , avhengig av plasseringen av lastvelgerbryteren. Det venstre 18-biters halve ordet ble deretter utført som en instruksjon, som vanligvis leste flere ord i minnet. Det lastede oppstartsprogrammet ble deretter utført, som igjen lastet et større program fra det mediet inn i minnet uten ytterligere hjelp fra den menneskelige operatøren. Begrepet "støvel" har blitt brukt i denne forstand siden minst 1958.

Image
IBM System/3 -konsoll fra 1970 -tallet. Programvelgerbryteren er nede til venstre; Programbelastningsbryteren er nede til høyre.

Andre IBM -datamaskiner fra den tiden hadde lignende funksjoner. For eksempel brukte IBM 1401 -systemet (ca. 1958) en kortleser for å laste et program fra et hullet kort. De 80 tegnene som er lagret på det utstansede kortet ble lest inn i minnesteder 001 til 080, deretter ville datamaskinen forgrene seg til minnested 001 for å lese den første lagrede instruksjonen. Denne instruksjonen var alltid den samme: flytt informasjonen i de første 80 minnestedene til et forsamlingsområde hvor informasjonen i hullkort 2, 3, 4 og så videre kan kombineres for å danne det lagrede programmet. Når denne informasjonen ble flyttet til forsamlingsområdet, ville maskinen forgrene seg til en instruksjon på plassering 080 (lese et kort) og det neste kortet ville bli lest og informasjonen behandlet.

Et annet eksempel var IBM 650 (1953), en desimalmaskin, som hadde en gruppe på ti brytere med 10 posisjoner på operatørpanelet som var adresserbare som et minneord (adresse 8000) og som kunne utføres som en instruksjon. Ved å sette bryterne til 7004000400 og trykke på den riktige knappen, vil det første kortet i kortleseren lese inn i minnet (op kode 70), starte på adresse 400 og deretter hoppe til 400 for å begynne å utføre programmet på det kortet.

IBMs konkurrenter tilbød også programkjøring med én knapp.

  • Den CDC 6600 (c. 1964) hadde en død start panel med 144-vippebrytere; dødstartbryteren angav 12 ord fra vippebryterne til minnet til perifer prosessor ( PP ) 0 og startet lastesekvensen. PP 0 lastet inn den nødvendige koden i sitt eget minne og initialiserte deretter de andre PP -ene.
  • Den GE 645 (c. 1965) hadde en "SYSTEM BOOTLOAD" knapp som når den trykkes, forårsaket av en av I / U-styreenheter for å laste en 64-ord program inn i minnet fra en diode leselager og levere et avbrudd til årsak programmet for å begynne å kjøre.
  • Den første modellen av PDP-10 hadde en "READ IN" -knapp som, når den ble trykket, nullstiller prosessoren og startet en I/O-operasjon på en enhet som er spesifisert av brytere på kontrollpanelet, som leser inn et 36-biters ord som gir en måladresse og telle for påfølgende ordlesninger; da lesingen var fullført, begynte prosessoren å utføre koden som ble lest inn ved å hoppe til det siste ordet som ble lest inn.

En bemerkelsesverdig variasjon av dette finnes på Burroughs B1700 hvor det verken er en bootstrap ROM eller en hardwired IPL -operasjon. I stedet, etter at systemet er tilbakestilt, leser det og kjører opkoder sekvensielt fra en båndstasjon montert på frontpanelet; dette setter opp en oppstartslaster i RAM som deretter kjøres. Men siden dette gjør få antagelser om systemet, kan det like godt brukes til å laste inn diagnostiske bånd (Maintenance Test Routine) som viser en forståelig kode på frontpanelet, selv i tilfeller av grov CPU -feil.

IBM System/360 og etterfølgere

I IBM System/360 og dets etterfølgere, inkludert de nåværende z/Architecture -maskinene, er oppstartsprosessen kjent som Initial Program Load (IPL).

IBM laget dette begrepet for 7030 (Stretch) , gjenopplivet det for utformingen av System/360 og fortsetter å bruke det i disse miljøene i dag. I System/360 -prosessorene initieres en IPL av datamaskinoperatøren ved å velge enhetsadressen med tre heksadesimale sifre (CUU; C = I/O -kanaladresse, UU = Kontrollenhet og enhetsadresse) etterfulgt av trykk på LOAD -knappen. På high -end System/360 -modellene, de fleste System/370 og noen senere systemer, simuleres funksjonene til bryterne og LOAD -knappen ved hjelp av valgbare områder på skjermen til en grafikkonsoll, ofte en IBM 2250 -lignende enhet eller en IBM 3270 -lignende enhet. For eksempel, på System/370 modell 158, resulterer tastatursekvensen 0-7-X (null, syv og X, i den rekkefølgen) i en IPL fra enhetsadressen som ble tastet inn i inngangsområdet. Den Amdahl 470V / 6 og beslektede CPUer understøttet fire heksadesimale tall på disse prosessorene som hadde den valgfrie andre kanalenheten er installert, for en total av 32 kanaler. Senere ville IBM også støtte mer enn 16 kanaler.

IPL-funksjonen i System/360 og dens etterfølgere, og dens kompatible som Amdahls, leser 24 byte fra en operatørspesifisert enhet til hovedlagring som starter ved ekte adresse null. Den andre og tredje gruppen på åtte byte behandles som Channel Command Words (CCWs) for å fortsette å laste oppstartsprogrammet (den første CCW simuleres alltid av CPU og består av en Read IPL -kommando, 02h , med kommandokjetting og undertrykker feil lengde indikasjon som håndheves). Når I/O -kanalkommandoene er fullført, blir den første gruppen på åtte byte deretter lastet inn i prosessorens Program Status Word (PSW), og oppstartsprogrammet starter utførelsen på stedet som er angitt av PSW. IPL-enheten er vanligvis en diskstasjon, derav den spesielle betydningen av 02h read-type-kommandoen, men nøyaktig samme prosedyre brukes også til IPL fra andre inngangstyper, for eksempel båndstasjoner eller til og med kortlesere, i en enhetsuavhengig måte, slik at du for eksempel kan installere et operativsystem på en helt ny datamaskin fra en initial distribusjon magnetbånd fra operativsystemet. For diskkontrollere får 02h -kommandoen også den valgte enheten til å søke til sylinder 0000h , hode 0000h , simulere en Søk sylinder og hodekommando , 07h , og til å søke etter post 01h , simulere en Search ID Equal -kommando, 31h ; søker og søk simuleres ikke av bånd- og kortkontrollere, ettersom for disse enhetsklassene er en 02h -kommando ganske enkelt en sekvensiell lesekommando , ikke en Read IPL -kommando.

Disken, båndet eller kortstokken må inneholde et spesielt program for å laste det faktiske operativsystemet eller det frittstående verktøyet i hovedlageret, og for dette spesifikke formålet plasseres "IPL Text" på disken av den frittstående DASDI (Direct Access Storage Device) Initialization) -program eller et tilsvarende program som kjører under et operativsystem, f.eks. ICKDSF, men IPL-kompatible kassetter og kortstokker distribueres vanligvis med denne "IPL-tekst" som allerede er tilstede.

Minidatamaskiner

Image
PDP-8/E frontpanel som viser bryterne som ble brukt til å laste opp bootstrap-programmet

Minidatamaskiner , fra og med Digital Equipment Corporation (DEC) PDP-5 og PDP-8 (1965) forenklet design ved å bruke CPU-en til å hjelpe inngangs- og utdataoperasjoner. Dette sparte kostnader, men gjorde oppstart mer komplisert enn å trykke på en enkelt knapp. Minidatamaskiner hadde vanligvis en måte å veksle mellom korte programmer ved å manipulere en rekke brytere på frontpanelet. Siden de tidlige minidatamaskinene brukte magnetisk kjerneminne , som ikke mistet informasjonen når strømmen var slått av, ville disse bootstrap -lasterne forbli på plass med mindre de ble slettet. Sletting skjedde noen ganger ved et uhell når en programfeil forårsaket en sløyfe som overskrev alt minne.

Andre minidatamaskiner med så enkel oppstart inkluderer Hewlett-Packards HP 2100- serie (midten av 1960-tallet), den originale Data General Nova (1969) og DECs PDP-11 (1970).

Desember senere tilsettes en valgfri diodematrise leselager for PDP-11 som er lagret en bootstrap-programmet på opp til 32 ord (64 byte). Det besto av et kretskort, M792, som koblet til Unibus og inneholdt et 32 ​​x 16 utvalg av halvlederdioder. Med alle 512 dioder på plass inneholdt minnet alle "en" biter; kortet ble programmert ved å kutte av hver diode hvis bit skulle være "null". DEC solgte også versjoner av kortet, BM792-Yx-serien, forhåndsprogrammert for mange standard inndataenheter ved ganske enkelt å utelate unødvendige dioder.

Etter den eldre tilnærmingen har den tidligere PDP-1 en maskinvarelaster, slik at en operatør bare trenger å trykke på "last" -bryteren for å instruere papirbåndleseren om å laste et program direkte inn i kjerneminnet. Data General Supernova brukte frontpanelbrytere for å få datamaskinen til automatisk å laste instruksjoner inn i minnet fra en enhet spesifisert av frontpanelets databrytere, og deretter hoppe til lastet kode; Nova 800 og 1200 hadde en bryter som lastet et program inn i hovedminnet fra et spesielt skrivebeskyttet minne og hoppet til det.

Tidlige eksempler på minilasterstarter

I en minidatamaskin med en papirbåndleser, ville det første programmet som ble kjørt i oppstartsprosessen, oppstartslasteren, lese inn i kjerneminnet enten den andre trinns oppstartslaster (ofte kalt en binær laster ) som kunne lese papirbånd med kontrollsum eller operativsystemet fra et eksternt lagringsmedium. Pseudokode for oppstartslasteren kan være så enkel som de følgende åtte instruksjonene:

  1. Sett P -registeret til 9
  2. Kontroller at papirbåndleseren er klar
  3. Hvis du ikke er klar, hopper du til 2
  4. Les en byte fra papirbåndleser til akkumulator
  5. Lagre akkumulator til adresse i P -register
  6. Hvis slutten av båndet, hopp til 9
  7. Øk P -registeret
  8. Hopp til 2

Et beslektet eksempel er basert på en laster for en Nicolet Instrument Corporation minidatamaskin fra 1970-tallet, ved bruk av papirbåndleser-hullemaskin på en Teletype Model 33 ASR- teleskriver . Byteene til sin andre trinns laster leses fra papirbånd i omvendt rekkefølge.

  1. Sett P -registeret til 106
  2. Kontroller at papirbåndleseren er klar
  3. Hvis du ikke er klar, hopper du til 2
  4. Les en byte fra papirbåndleser til akkumulator
  5. Lagre akkumulator til adresse i P -register
  6. Reduser P -registeret
  7. Hopp til 2

Lengden på den andre trinnslasteren er slik at den siste byten overskriver posisjon 7. Etter at instruksjonene på plassering 6 utføres, starter posisjon 7 den andre trinnlasterutførelsen. Den andre trinnslasteren venter deretter på at den mye lengre båndet som inneholder operativsystemet, skal plasseres i båndleseren. Forskjellen mellom oppstartslaster og andre trinnslaster er tillegg av kontrollkode for å fange papirbåndlesefeil, en hyppig forekomst med relativt rimelig "deltid" maskinvare, for eksempel Teletype Model 33 ASR. (Friden Flexowriters var langt mer pålitelige, men også relativt kostbare.)

Oppstart av de første mikrodatamaskinene

De tidligste mikrodatamaskinene, for eksempel Altair 8800 (utgitt først i 1975) og en enda tidligere, lignende maskin (basert på Intel 8008 CPU) hadde ingen bootstrapping -maskinvare som sådan. Når den ble startet, ville CPU -en se minne som ville inneholde kjørbar kode som bare inneholdt binære nuller - minnet ble slettet ved å tilbakestille det ved oppstart. Frontpanelene på disse maskinene hadde vippebrytere for å legge inn adresser og data, en bryter per bit av datamaskinens minneord og adressebuss. Enkle tillegg til maskinvaren tillot et minnested om gangen å lastes fra disse bryterne for å lagre bootstrap -kode. I mellomtiden ble CPU forhindret i å prøve å utføre minneinnhold. Når den var riktig lastet inn, ble CPU aktivert for å utføre oppstartskoden. Denne prosessen var kjedelig og måtte være feilfri.

Integrert krets skrivebeskyttet hukommelsestid

Image
En Intel 2708 EPROM "chip" på et kretskort.

Oppstartsprosessen for minidatamaskiner og mikrodatamaskiner ble revolusjonert av introduksjonen av integrert krets skrivebeskyttet minne (ROM), med sine mange varianter, inkludert maske-programmerte ROM-er , programmerbare ROM-er (PROM), slettbare programmerbare ROM-er (EPROM) og flash-minne . Disse tillot oppstart av fastvareprogrammer som en del av datamaskinen. Innføringen av en (ekstern) ROM var i en italiensk telefonveksler, kalt "Gruppi Speciali", patentert i 1975 av Alberto Ciaramella , forsker ved CSELT . Gruppi Speciali var fra 1975 en maskin med en enkelt knapp som startet opp i operativsystemet fra et ROM-minne som består av halvledere, ikke fra ferrittkjerner. Selv om ROM-enheten ikke var innebygd i datamaskinen til Gruppi Speciali, på grunn av maskinens design, tillot den også ROM-oppstart med én knapp i maskiner som ikke var designet for det (derfor var denne "bootstrap-enheten" arkitekturuavhengig ), f.eks. PDP-11. Lagring av maskinens tilstand etter utkoblingen var også på plass, noe som var en annen kritisk funksjon i telefonkonkurransen.

Vanligvis vil hver mikroprosessor, etter en tilbakestilling eller oppstartstilstand, utføre en oppstartsprosess som vanligvis har formen "begynne utførelsen av koden som blir funnet starter på en bestemt adresse" eller "se etter en multibytekode på en bestemt adresse og hoppe til det angitte stedet for å starte utførelsen ". Et system som er bygd ved hjelp av den mikroprosessoren, vil ha den permanente ROMen som opptar disse spesielle stedene, slik at systemet alltid begynner å fungere uten operatørs assistanse. For eksempel starter Intel x86- prosessorer alltid med å kjøre instruksjonene som begynner på F000: FFF0, mens for MOS 6502- prosessoren starter initialiseringen med å lese en to-byte vektoradresse på $ FFFD (MS byte) og $ FFFC (LS byte) og hopper til det stedet for å kjøre bootstrap -koden.

Apple Inc.s første datamaskin, Apple 1 som ble introdusert i 1976, inneholdt PROM -brikker som eliminerte behovet for et frontpanel for oppstartsprosessen (som tilfellet var med Altair 8800) i en kommersiell datamaskin. Ifølge Apples annonse som kunngjorde det "No More Switches, No More Lights ... lar fastvaren i PROMS deg gå inn, vise og feilsøke programmer (alle i hex) fra tastaturet."

På grunn av bekostning av skrivebeskyttet minne den gang, startet Apple II-serien opp diskoperativsystemene ved hjelp av en serie veldig små trinnvise trinn, som hver passerte kontrollen videre til neste fase av den gradvis mer komplekse oppstartsprosessen. (Se Apple DOS: Boot loader ). Fordi så lite av skiven operativsystemet avhengig av ROM, er maskinvaren var også meget fleksibel og understøttet et bredt spekter av tilpassede plate kopibeskyttelsesmekanismer. (Se Software Cracking: History .)

Noen operativsystemer, særlig Macintosh- systemer før 1995 fra Apple , er så tett sammenvevd med maskinvaren at det er umulig å starte et annet operativsystem enn det vanlige. Dette er den motsatte ekstremen av scenariet ved hjelp av brytere nevnt ovenfor; det er svært lite fleksibelt, men relativt feilfritt og idiotsikkert så lenge all maskinvare fungerer normalt. En vanlig løsning i slike situasjoner er å designe en oppstartslaster som fungerer som et program som tilhører standard -operativsystemet som kaprer systemet og laster det alternative operativsystemet. Denne teknikken ble brukt av Apple for implementering av A/UX Unix og kopiert av forskjellige freeware -operativsystemer og BeOS Personal Edition 5 .

Noen maskiner, som Atari ST- mikrodatamaskinen , var "instant-on", og operativsystemet ble kjørt fra en ROM . Henting av operativsystemet fra sekundær eller tertiær butikk ble dermed eliminert som en av de karakteristiske operasjonene for oppstartstrapping. For å la systemtilpasninger, tilbehør og annen støtteprogramvare lastes inn automatisk, ble Ataris diskettstasjon lest for flere komponenter under oppstartsprosessen. Det var en timeout -forsinkelse som ga tid til å sette inn en diskett manuelt mens systemet søkte etter de ekstra komponentene. Dette kan unngås ved å sette inn en tom disk. Atari ST -maskinvaren ble også designet slik at kassettsporet kunne gi innfødt programkjøring for spillformål som en restover fra Ataris gamle elektroniske spill; ved å sette inn Specter GCR -kassetten med Macintosh system -ROM i spilleautomaten og slå på Atari, kan den "starte opp" Macintosh -operativsystemet i stedet for Ataris egen TOS .

The IBM Personal Computer inkludert ROM-basert firmware kalt BIOS ; en av funksjonene til den fastvaren var å utføre en selvtest ved oppstart når maskinen ble slått på, og deretter lese programvare fra en oppstartsenhet og utføre den. Firmware som er kompatibel med BIOS på IBM Personal Computer, brukes på IBM PC -kompatible datamaskiner. Den UEFI ble utviklet av Intel, opprinnelig for Itanium -baserte maskiner, og senere også brukt som et alternativ til BIOS i x86 -baserte maskiner, inkludert Apple Mac bruker Intel-prosessorer .

Unix arbeidsstasjoner hadde opprinnelig leverandørspesifikk ROM-basert firmware. Sun Microsystems utviklet senere OpenBoot , senere kjent som Open Firmware, som innlemmet en Forth -tolk , med mye av fastvaren skrevet i Forth. Den ble standardisert av IEEE som IEEE-standard 1275-1994; fastvare som implementerer at standarden ble brukt i PowerPC -baserte Mac -maskiner og noen andre PowerPC -baserte maskiner, samt Suns egne SPARC -baserte datamaskiner. The Advanced RISC Computing spesifikasjon definert en annen firmware-standarden, som ble implementert på noen MIPS -baserte og Alpha -baserte maskiner og SGI Visual Workstation x86-baserte arbeidsstasjoner.

Moderne støvelastere

Når en datamaskin er slått av, forblir programvaren‍ —‌inkludert operativsystemer, applikasjonskode og data‍ — stored lagret på ikke-flyktig minne . Når datamaskinen er slått på, har den vanligvis ikke et operativsystem eller en laster i RAM ( random access memory ). Datamaskinen kjører først et relativt lite program lagret i skrivebeskyttet minne (ROM, og senere EEPROM , NOR flash ) sammen med noen nødvendige data, for å initialisere RAM (spesielt på x86-systemer), for å få tilgang til den ikke-flyktige enheten (vanligvis blokkerer enheten , f.eks. NAND -blits) eller enheter som operativsystemets programmer og data kan lastes inn i RAM.

Det lille programmet som starter denne sekvensen er kjent som en bootstrap loader , bootstrap eller boot loader . Ofte brukes flere trinns støvelastere, hvor flere programmer med økende kompleksitetsbelastning etter hverandre i en kjedebelastningsprosess .

Noen tidligere datasystemer, når de mottar et oppstartssignal fra en menneskelig operatør eller en perifer enhet, kan laste et veldig lite antall faste instruksjoner inn i minnet på et bestemt sted, initialisere minst en CPU og deretter peke CPUen til instruksjonene og starte henrettelsen. Disse instruksjonene starter vanligvis en inngangsoperasjon fra en perifer enhet (som kan velges av operatøren). Andre systemer kan sende maskinvarekommandoer direkte til perifere enheter eller I/O -kontrollere som forårsaker en ekstremt enkel inngangsoperasjon (for eksempel "les sektor null av systemenheten til minne som starter på plassering 1000") for å effektivt laste en liten antall instruksjoner for oppstartslaster i minnet; et fullføringssignal fra I/O -enheten kan deretter brukes til å starte utførelsen av instruksjonene fra CPU -en.

Mindre datamaskiner bruker ofte mindre fleksible, men mer automatiske oppstartslastermekanismer for å sikre at datamaskinen starter raskt og med en forhåndsbestemt programvarekonfigurasjon. På mange stasjonære datamaskiner, for eksempel, starter oppstartsprosessen med CPU -kjøringsprogramvaren i ROM (for eksempel BIOS på en IBM PC ) på en forhåndsdefinert adresse (noen CPUer, inkludert Intel x86 -serien er designet for å kjøre denne programvaren etter tilbakestilling uten ekstern hjelp). Denne programvaren inneholder rudimentær funksjonalitet for å søke etter enheter som er kvalifisert for å delta i oppstart, og laste inn et lite program fra en spesiell seksjon (oftest oppstartssektoren ) av den mest lovende enheten, vanligvis starter ved et fast inngangspunkt, for eksempel starten på sektor.

Støvelastere kan stå overfor særegne begrensninger, spesielt i størrelse; for eksempel på IBM PC og kompatible, må oppstartskoden passe inn i Master Boot Record (MBR) og Partition Boot Record (PBR), som igjen er begrenset til en enkelt sektor; på IBM System / 360 , er størrelsen begrenset av IPL medium, for eksempel kort størrelse, spor størrelse.

På systemer med disse begrensningene er det ikke sikkert at det første programmet som er lastet inn i RAM, er tilstrekkelig stort til å laste operativsystemet og må i stedet laste inn et annet, større program. Det første programmet lastet inn i RAM kalles en første-trinns oppstartslaster, og programmet det lastes kalles en andre-trinns oppstartslaster.

Første trinns støvelaster

Eksempler på første trinn (ROM-trinn eller maskinvareinitialiseringstrinn) bootloadere inkluderer BIOS , UEFI , coreboot , Libreboot og Das U-Boot . På IBM -PCen ble oppstartslasteren i Master Boot Record (MBR) og Partition Boot Record (PBR) kodet for å kreve minst 32 KB (senere strammet til 64 KB) systemminne og bare bruke instruksjoner som støttes av originalen 8088 / 8086 prosessorer.

Andre trinns støvelaster

Andre trinns bootloaders , for eksempel GNU GRUB , rEFInd , BOOTMGR , Syslinux , NTLDR eller iBoot , er ikke selv operativsystemer, men kan laste et operativsystem ordentlig og overføre kjøring til det; operativsystemet initialiserer seg deretter og kan laste inn ekstra enhetsdrivere . Andre trinns oppstartslaster trenger ikke drivere for egen drift, men kan i stedet bruke generiske lagringstilgangsmetoder levert av systemfastvare som BIOS, UEFI eller Open Firmware , men vanligvis med begrenset maskinvarefunksjonalitet og lavere ytelse.

Mange oppstartslastere (som GNU GRUB, rEFInd, Windows BOOTMGR, Syslinux og Windows NT/2000/XPs NTLDR) kan konfigureres til å gi brukeren flere oppstartsvalg. Disse valgene kan omfatte forskjellige operativsystemer (for dual eller multi-booting fra forskjellige partisjoner eller stasjoner), forskjellige versjoner av det samme operativsystemet (i tilfelle en ny versjon har uventede problemer), forskjellige alternativer for operativsystemlasting (f.eks. redning eller sikker modus ), og noen frittstående programmer som kan fungere uten et operativsystem, for eksempel minnetestere (f.eks. memtest86+ ), et grunnleggende skall (som i GNU GRUB), eller til og med spill (se Liste over PC Booter -spill ). Noen støvelastere kan også laste andre støvelastere; for eksempel laster GRUB BOOTMGR i stedet for å laste Windows direkte. Vanligvis er et standardvalg forhåndsvalgt med en tidsforsinkelse hvor en bruker kan trykke på en tast for å endre valget; etter denne forsinkelsen kjøres standardvalget automatisk, slik at normal oppstart kan skje uten interaksjon.

Oppstartsprosessen kan betraktes som fullført når datamaskinen er klar til å samhandle med brukeren, eller operativsystemet er i stand til å kjøre systemprogrammer eller applikasjonsprogrammer.

Mange innebygde systemer må starte opp umiddelbart. For eksempel er det generelt uakseptabelt å vente et minutt på at en digital fjernsyn eller en GPS -navigasjonsenhet skal starte. Derfor har slike enheter programvaresystemer i ROM eller flash -minne, slik at enheten kan begynne å fungere umiddelbart; lite eller ingen lasting er nødvendig, fordi lastingen kan forhåndsberegnes og lagres på ROM når enheten er laget.

Store og komplekse systemer kan ha oppstartsprosedyrer som fortsetter i flere faser til endelig operativsystemet og andre programmer er lastet og klar til å kjøres. Fordi operativsystemer er utformet som om de aldri starter eller stopper, kan en oppstartslaster laste operativsystemet, konfigurere seg selv som en ren prosess i det systemet og deretter uigenkallelig overføre kontroll til operativsystemet. Oppstartslasteren avsluttes deretter normalt som enhver annen prosess ville.

Oppstart av nettverk

De fleste datamaskiner kan også starte opp via et datanettverk . I dette scenariet lagres operativsystemet på disken til en server , og visse deler av det overføres til klienten ved hjelp av en enkel protokoll, for eksempel Trivial File Transfer Protocol (TFTP). Etter at disse delene er overført, tar operativsystemet kontrollen over oppstartsprosessen.

Som med andre trinns oppstartslaster, starter oppstart av nettverk ved å bruke generiske nettverkstilgangsmetoder levert av nettverksgrensesnittets oppstarts-ROM, som vanligvis inneholder et Preboot Execution Environment (PXE) -bilde. Ingen drivere er nødvendig, men systemfunksjonaliteten er begrenset til operativsystemets kjerne og drivere overføres og startes. Som et resultat, når den ROM-baserte oppstarten er fullført, er det fullt mulig å starte nettverket inn i et operativsystem som i seg selv ikke har mulighet til å bruke nettverksgrensesnittet.

Personlige datamaskiner (PC)

Oppstartsenheter

Image
Windows To Go oppstartbar flash -stasjon, et Live USB -eksempel

Oppstartsenheten er enheten som operativsystemet er lastet fra. En moderne PCs UEFI- eller BIOS -fastvare støtter oppstart fra forskjellige enheter, vanligvis en lokal solid state -stasjon eller harddiskstasjon via GPT- eller Master Boot Record (MBR) på en slik stasjon eller disk, en optisk diskstasjon (ved bruk av El Torito ), en USB- masselagringsinnretning ( FTL -basert flash-enhet, SD-kort eller multi-media kortspor , USB harddisk, USB optisk stasjon, etc.), eller et nettverksgrensesnittkort (ved hjelp av PXE ). Eldre, mindre vanlige BIOS-oppstartbare enheter inkluderer diskettstasjoner , Zip-stasjoner og LS-120- stasjoner.

Vanligvis lar fastvaren (UEFI eller BIOS) brukeren konfigurere en oppstartsrekkefølge . Hvis oppstartsrekkefølgen er satt til "først, DVD -stasjonen; for det andre, harddisken", vil fastvaren prøve å starte opp fra DVD -stasjonen, og hvis dette mislykkes (f.eks. Fordi det ikke er noen DVD i stasjonen), den prøver å starte fra den lokale harddisken.

For eksempel, på en PC med Windows installert på harddisken, kan brukeren sette oppstartsrekkefølgen til den som er gitt ovenfor, og deretter sette inn en Linux Live CD for å prøve Linux uten å måtte installere et operativsystem på harddisken kjøre. Dette er et eksempel på dobbel oppstart , der brukeren velger hvilket operativsystem som skal startes etter at datamaskinen har utført Power-on self-test (POST). I dette eksemplet på dobbel oppstart velger brukeren ved å sette inn eller fjerne DVD -en fra datamaskinen, men det er mer vanlig å velge hvilket operativsystem som skal startes opp ved å velge fra en oppstartsbehandlingsmeny på den valgte enheten ved å bruke tastaturet til velg fra en BIOS- eller UEFI -oppstartsmeny, eller begge deler; oppstartsmenyen går vanligvis inn ved å trykke på F8eller F12-tastene under POST; den BIOS Setup vanligvis inn ved å trykke F2eller DELtastene under POST.

Flere enheter er tilgjengelige som gjør at brukeren kan starte raskt opp i det som vanligvis er en variant av Linux for forskjellige enkle oppgaver som Internett-tilgang; eksempler er Splashtop og Latitude ON .

Oppstartssekvens

Image
En hex -dump av FreeBSD 's boot0 MBR
Image
Tildel programvare BIOS fra 2000 under oppstart

Ved start utfører en IBM-kompatibel personlig datamaskin x86 CPU i ekte modus , instruksjonen som er plassert på tilbakestillingsvektoren (den fysiske minneadressen FFFF0h på 16-biters x86-prosessorer og FFFFFFF0h på 32-biters og 64-biters x86-prosessorer), vanligvis peker på fastvare ( UEFI eller BIOS ) inngangspunkt i ROM -en. Denne minneplassen inneholder vanligvis en hoppeinstruksjon som overfører kjøring til plasseringen av fastvare ( UEFI eller BIOS ) oppstartsprogram. Dette programmet kjører en selvtest (POST) for å sjekke og initialisere nødvendige enheter, for eksempel hovedminne ( DRAM ), PCI-bussen og PCI-enhetene (inkludert kjøring av innebygde ROM-er ). Et av de mest involverte trinnene er å sette opp DRAM over SPD , ytterligere komplisert av at minnet på dette tidspunktet er svært begrenset.

Etter å ha initialisert nødvendig maskinvare, går fastvaren ( UEFI eller BIOS ) gjennom en forhåndskonfigurert liste over ikke-flyktige lagringsenheter ("oppstartsenhetssekvens") til den finner en som kan startes. En oppstartbar MBR-enhet er definert som en som kan leses fra, og hvor de to siste bytes i den første sektoren inneholder det lille endiske ordet AA55h , funnet som bytesekvens 55h , AAh på disk (også kjent som MBR-oppstartssignaturen ) , eller der det på annen måte er fastslått at koden inne i sektoren er kjørbar på x86 -PCer.

Når BIOS har funnet en oppstartbar enhet, laster den oppstartssektoren til lineær adresse 7C00h (vanligvis segment : offset 0000h : 7C00h , men noen BIOS bruker feil 07C0h : 0000h ) og overfører kjøring til oppstartskoden. Når det gjelder en harddisk, kalles dette Master Boot Record (MBR). Den konvensjonelle MBR -koden sjekker MBRs partisjonstabell for et partisjonssett som er oppstartbart (det med aktivt flaggsett). Hvis en aktiv partisjon blir funnet, laster MBR -koden opp boot -sektorkoden fra den partisjonen, kjent som Volume Boot Record (VBR), og kjører den. MBR-oppstartskoden er ofte operativsystemspesifikk.

Oppstartssektor-koden er første trinns oppstartslaster. Den er plassert på faste disker og flyttbare stasjoner , og må passe inn i de første 446 byte i Master Boot Record for å gi plass til standard 64-byte partisjonstabell med fire partisjonsoppføringer og to-bytes oppstartssignatur , som BIOS krever en skikkelig oppstartslaster - eller enda mindre, når tilleggsfunksjoner som mer enn fire partisjonsoppføringer (opptil 16 med 16 byte hver), en disksignatur (6 byte), en tidsstempel (6 byte), en Advanced Active Partisjon (18 byte) eller spesielle multi-boot- lastere må også støttes i noen miljøer. I floppy og superfloppy Volume Boot Records , er opp til 59 byte okkupert for utvidede BIOS Parameter BlockFAT12 og FAT16 volumer siden DOS 4.0, mens FAT32 EBPB introdusert med DOS 7.1 krever enda 87 bytes, slik at bare 423 byte for oppstartslast når du antar en sektorstørrelse på 512 byte. Microsoft oppstartssektorer påla derfor tradisjonelt visse restriksjoner på oppstartsprosessen, for eksempel måtte oppstartsfilen være plassert på en fast posisjon i rotkatalogen til filsystemet og lagres som påfølgende sektorer, betingelser som ble ivaretatt av SYSkommandoen og litt slappet av i senere versjoner av DOS. Oppstartslasteren kunne deretter laste de tre første sektorene av filen i minnet, som tilfeldigvis inneholdt en annen innebygd oppstartslaster som kunne laste resten av filen i minnet. Når Microsoft la til LBA- og FAT32 -støtte, byttet de til og med til en oppstartslaster som nådde over to fysiske sektorer og brukte 386 instruksjoner av størrelsesgrunner. Samtidig klarte andre leverandører å presse inn mye mer funksjonalitet i en enkelt oppstartssektor uten å slappe av de opprinnelige begrensningene på bare minimalt tilgjengelig minne (32 KB) og prosessorstøtte (8088/8086). For eksempel kan DR-DOS oppstartssektorer finne oppstartsfilen i filsystemet FAT12, FAT16 og FAT32, og laste den inn i minnet som helhet via CHS eller LBA, selv om filen ikke er lagret på et fast sted og i sammenhengende sektorer.

VBR er ofte OS-spesifikk; hovedfunksjonen er imidlertid å laste inn og kjøre oppstartslasterfilen for operativsystemet (for eksempel bootmgreller ntldr), som er andre trinns oppstartslaster, fra en aktiv partisjon. Deretter laster oppstartslasteren OS -kjernen fra lagringsenheten.

Hvis det ikke er noen aktiv partisjon, eller den aktive partisjonens oppstartssektor er ugyldig, kan MBR laste inn en sekundær oppstartslaster som vil velge en partisjon (ofte via brukerinngang) og laste opp oppstartssektoren, som vanligvis laster den tilhørende operativsystemkjernen. I noen tilfeller kan MBR også prøve å laste inn sekundære oppstartslastere før du prøver å starte den aktive partisjonen. Hvis alt annet mislykkes, bør det utstede et INT 18h BIOS -avbruddssamtale (etterfulgt av en INT 19h i tilfelle INT 18h ville komme tilbake) for å gi tilbake kontrollen til BIOS, som deretter ville prøve å starte andre enheter, prøve et ekstern oppstart via nettverk.

De fleste moderne systemer (nyere Apple Mac og nyere PC ) bruker UEFI .

I motsetning til BIOS, er UEFI (ikke eldre oppstart via CSM) ikke avhengig av oppstartssektorer, UEFI -system laster oppstartslaster ( EFI -applikasjonsfilUSB -disk eller i EFI Systempartisjon ) direkte, og OS -kjernen lastes av oppstartslaster .

Andre typer støvel sekvenser

Image
En ulåst opplaster for en Android -enhet, som viser flere tilgjengelige alternativer

Noen moderne CPUer og mikrokontrollere (for eksempel TI OMAP ) eller noen ganger til og med DSP -er kan ha oppstarts -ROM med oppstartskode integrert direkte i silisiumet, slik at en slik prosessor kan utføre en ganske sofistikert oppstartssekvens alene og laste oppstartsprogrammer fra forskjellige kilder som NAND -blits, SD- eller MMC -kort og så videre. Det er vanskelig å koble all nødvendig logikk for å håndtere slike enheter, så en integrert oppstarts -ROM brukes i stedet i slike scenarier. Boot ROM -bruk muliggjør mer fleksible oppstartssekvenser enn hardwired logikk kan gi. For eksempel kan oppstarts -ROM -en prøve å utføre oppstart fra flere oppstartskilder. En oppstarts -ROM er også ofte i stand til å laste en oppstartslaster eller diagnoseprogram via serielle grensesnitt som UART , SPI , USB og så videre. Denne funksjonen brukes ofte til systemgjenopprettingsformål når vanlig oppstartsprogramvare i ikke-flyktig minne av en eller annen grunn ble slettet, og den kan også brukes til innledende ikke-flyktig minneprogrammering når det er rent, ikke-flyktig minne installert og dermed ingen programvare tilgjengelig i systemet ennå.

Noen innebygde systemdesigner kan også inneholde et mellomliggende oppstartssekvens -trinn i form av tilleggskode som lastes inn i system -RAM av den integrerte oppstarts -ROM -en. Ytterligere kode lastet på den måten fungerer vanligvis som en måte å overvinne plattformbegrensninger, for eksempel små mengder RAM, så en dedikert primær oppstartslaster, for eksempel Das U-Boot , kan lastes inn som det neste trinnet i systemets oppstartssekvens. Tilleggskoden og oppstartssekvensstrinnet blir vanligvis referert til som sekundær programlaster (SPL).

Det er også mulig å ta kontroll over et system ved å bruke et feilsøkingsgrensesnitt for maskinvare som JTAG . Et slikt grensesnitt kan brukes til å skrive oppstartslasterprogrammet inn i oppstartbart ikke-flyktig minne (f.eks. Blits) ved å instruere prosessorkjernen om å utføre de nødvendige handlingene for å programmere ikke-flyktig minne. Alternativt kan feilsøkingsgrensesnittet brukes til å laste opp noen diagnostikk- eller oppstartskoder til RAM, og deretter starte prosessorkjernen og instruere den i å utføre den opplastede koden. Dette tillater for eksempel gjenoppretting av innebygde systemer der det ikke finnes noe programvare på en støttet oppstartsenhet, og der prosessoren ikke har noen integrert oppstarts -ROM. JTAG er et standard og populært grensesnitt; mange CPUer, mikrokontrollere og andre enheter er produsert med JTAG -grensesnitt (fra 2009).

Noen mikrokontrollere gir spesielle maskinvaregrensesnitt som ikke kan brukes til å ta vilkårlig kontroll over et system eller kjøre kode direkte, men i stedet tillater de innsetting av oppstartskode i oppstartbart ikke-flyktig minne (som flashminne) via enkle protokoller. I produksjonsfasen brukes slike grensesnitt til å injisere oppstartskode (og muligens annen kode) i ikke-flyktig minne. Etter systemnullstilling begynner mikrokontrolleren å utføre kode som er programmert i det ikke-flyktige minnet, akkurat som vanlige prosessorer bruker ROM-er for oppstart. Spesielt brukes denne teknikken av Atmel AVR -mikrokontrollere, og også av andre. I mange tilfeller er slike grensesnitt implementert av hardwired logikk. I andre tilfeller kan slike grensesnitt opprettes av programvare som kjører i integrert boot-ROM på chip fra GPIO- pinner.

De fleste digitale signalprosessorer har en oppstart i seriell modus og en oppstart i parallellmodus, for eksempel vertsportgrensesnittet (HPI -oppstart)

Når det gjelder DSP -er, er det ofte en andre mikroprosessor eller mikrokontroller tilstede i systemdesignet, og dette er ansvarlig for generell systematferd, avbruddshåndtering, håndtering av eksterne hendelser, brukergrensesnitt, etc. mens DSP bare er dedikert til signalbehandlingsoppgaver . I slike systemer kan DSP startes opp av en annen prosessor som noen ganger kalles vertsprosessor (gir navn til en vertsport). En slik prosessor blir også noen ganger referert til som master , siden den vanligvis starter først fra sine egne minner og deretter kontrollerer den generelle systematferden, inkludert oppstart av DSP, og deretter ytterligere kontroll av DSPs oppførsel. DSP mangler ofte sine egne oppstartsminner og er avhengig av vertsprosessoren for å levere den nødvendige koden i stedet. De mest bemerkelsesverdige systemene med et slikt design er mobiltelefoner, modemer, lyd- og videospillere og så videre, der en DSP og en CPU/mikrokontroller er eksisterende.

Mange FPGA- brikker laster konfigurasjonen fra en ekstern seriell EEPROM ("konfigurasjons-ROM") ved oppstart.

Se også

Merknader

Referanser