există multe metode diferite disponibile pentru a încărca un program inițial scurt într-un computer. Aceste metode ajung de la intrare fizică simplă la suporturi amovibile care pot conține programe mai complexe.
Exemple de pre-circuit integrat-ROMEDIT
calculatoare timpurii edit
computerele timpurii din anii 1940 și 1950 au fost eforturi inginerești unice care ar putea dura săptămâni până la program și încărcarea programului a fost una dintre multele probleme care trebuiau rezolvate. Un computer timpuriu, ENIAC, nu avea niciun program stocat în memorie, dar a fost configurat pentru fiecare problemă printr-o configurație de cabluri de interconectare. Bootstrapping-ul nu s-a aplicat ENIAC, a cărui configurație hardware a fost pregătită pentru rezolvarea problemelor imediat ce a fost aplicată puterea.
sistemul EDSAC, al doilea computer cu program stocat care urmează să fie construit, a folosit comutatoare pas cu pas pentru a transfera un program fix în memorie atunci când a fost apăsat butonul de pornire. Programul stocat pe acest dispozitiv, pe care David Wheeler l-a finalizat la sfârșitul anului 1948, a încărcat instrucțiuni suplimentare de pe banda perforată și apoi le-a executat.
primele computere comercialedit
primele computere programabile pentru vânzare comercială, cum ar fi UNIVAC I și IBM 701 au inclus funcții pentru a le simplifica funcționarea. De obicei, acestea includeau instrucțiuni care efectuau o operație completă de intrare sau ieșire. Aceeași logică hardware ar putea fi utilizată pentru a încărca conținutul unei cartele perforate (cele mai tipice) sau a altor suporturi de intrare, cum ar fi un tambur magnetic sau o bandă magnetică, care conținea un program bootstrap apăsând un singur buton. Acest concept de pornire a fost numit o varietate de nume pentru computerele IBM din anii 1950 și începutul anilor 1960, dar IBM a folosit termenul „încărcare inițială a programului” cu IBM 7030 Stretch și ulterior l-a folosit pentru liniile lor mainframe, începând cu System/360 în 1964.
computerul IBM 701 (1952-1956) avea un buton „Load” care citirea inițiată a primului cuvânt pe 36 de biți în memoria principală de pe un card perforat într-un cititor de carduri, o bandă magnetică într-o unitate de bandă sau o unitate de tambur magnetic, în funcție de poziția comutatorului selector de sarcină. Jumătatea stângă de 18 biți a fost apoi executată ca o instrucțiune, care de obicei citea cuvinte suplimentare în memorie. Programul de încărcare încărcat a fost apoi executat, care, la rândul său, a încărcat un program mai mare din acel mediu în memorie fără ajutor suplimentar din partea operatorului uman. Termenul” boot ” a fost folosit în acest sens din cel puțin 1958.
alte computere IBM din acea epocă aveau caracteristici similare. De exemplu, sistemul IBM 1401 (C. 1958) a folosit un cititor de carduri pentru a încărca un program de pe un card perforat. Cele 80 de caractere stocate în cardul perforat au fost citite în locațiile de memorie 001 până la 080, apoi computerul s-ar ramifica în locația de memorie 001 pentru a citi prima instrucțiune stocată. Această instrucțiune a fost întotdeauna aceeași: mutați informațiile din aceste prime 80 de locații de memorie într-o zonă de asamblare unde informațiile din cardurile perforate 2, 3, 4 și așa mai departe ar putea fi combinate pentru a forma programul stocat. Odată ce aceste informații au fost mutate în zona de asamblare, mașina se va ramifica la o instrucțiune din locația 080 (citiți o carte), iar următoarea carte va fi citită și informațiile sale procesate.un alt exemplu a fost IBM 650 (1953), o mașină zecimală, care avea un grup de zece comutatoare cu 10 poziții pe panoul său operator, care erau adresabile ca cuvânt de memorie (adresa 8000) și puteau fi executate ca instrucțiune. Astfel, setarea comutatoarelor la 7004000400 și apăsarea butonului corespunzător ar citi prima carte din cititorul de carduri în memorie (Cod op 70), începând de la adresa 400 și apoi săriți la 400 pentru a începe executarea programului pe acel card.
concurenții IBM au oferit, de asemenea, încărcarea programului cu un singur buton.
- CDC 6600 (c. 1964) avea un panou de pornire moartă cu 144 de comutatoare; comutatorul de pornire moartă a introdus 12 cuvinte din comutatoarele de comutare în memoria procesorului periferic (PP) 0 și a inițiat secvența de încărcare. PP 0 a încărcat codul necesar în propria memorie și apoi a inițializat celelalte PPs.
- GE 645 (c. 1965) avea un buton „încărcare sistem” care, atunci când a fost apăsat, a făcut ca unul dintre controlerele I/O să încarce un program de 64 de cuvinte în memorie dintr-o memorie numai în citire a diodei și să livreze o întrerupere pentru a face ca acel program să înceapă să ruleze.
- primul model al PDP-10 a avut un buton „citit în” care, atunci când este apăsat, resetați procesorul și a început o operație I/O pe un dispozitiv specificat de comutatoarele de pe panoul de control, citind într-un cuvânt pe 36 de biți oferind o adresă țintă și numărând pentru citirea ulterioară a cuvântului; când citirea s-a finalizat, procesorul a început să execute codul citit sărind la ultimul cuvânt citit.
o variație notabilă a acestui lucru se găsește pe Burroughs B1700 unde nu există nici un ROM bootstrap, nici o operație IPL cablată. În schimb, după resetarea sistemului, acesta citește și execută opcodes secvențial de pe o unitate de bandă montată pe panoul frontal; aceasta configurează un încărcător de boot în RAM care este apoi executat. Cu toate acestea, deoarece acest lucru face puține presupuneri despre sistem, acesta poate fi utilizat la fel de bine pentru a încărca benzi de diagnosticare (rutină de testare a întreținerii) care afișează un cod inteligibil pe panoul frontal chiar și în cazurile de eșec brut al procesorului.
IBM System/360 și succesorsedit
în IBM System/360 și succesorii săi, inclusiv actualele mașini Z / Architecture, procesul de boot este cunoscut sub numele de încărcare inițială a programului (IPL).
IBM a inventat acest termen pentru 7030 (Stretch), l-a reînviat pentru proiectarea sistemului / 360 și continuă să-l folosească în acele medii astăzi. În procesoarele System / 360, un IPL este inițiat de operatorul computerului prin selectarea adresei dispozitivului cu trei cifre hexazecimale (CUU; c=adresa canalului i/O, UU=unitatea de Control și adresa dispozitivului) urmată de apăsarea butonului de încărcare. Pe modelele high end System/360, majoritatea System/370 și unele sisteme ulterioare, funcțiile comutatoarelor și ale butonului de încărcare sunt simulate folosind zone selectabile pe ecranul unei console grafice, adesea un dispozitiv asemănător IBM 2250 sau un dispozitiv asemănător IBM 3270. De exemplu, pe modelul System/370 158, secvența tastaturii 0-7-X (zero, seven și X, în această ordine) are ca rezultat un IPL de la adresa dispozitivului care a fost tastată în zona de intrare. Amdahl 470v / 6 și procesoarele conexe au acceptat patru cifre hexazecimale pe acele procesoare care aveau instalată unitatea opțională a doua canal, pentru un total de 32 de canale. Ulterior, IBM va suporta și mai mult de 16 canale.
funcția IPL din System / 360 și succesorii săi și compatibilii săi, cum ar fi Amdahl, citește 24 de octeți de la un dispozitiv specificat de operator în stocarea principală începând de la adresa reală zero. Al doilea și al treilea grup de opt octeți sunt tratate ca Cuvinte de comandă a canalului (CCWs) pentru a continua încărcarea programului de pornire (primul CCW este întotdeauna simulat de CPU și constă dintr-o comandă IPL citită, 02h, cu înlănțuirea comenzii și suprimarea indicării incorecte a lungimii). Când comenzile canalului I / O sunt complete, primul grup de opt octeți este apoi încărcat în cuvântul de stare a programului procesorului (PSW) și programul de pornire începe executarea în locația desemnată de acel PSW. Dispozitivul IPL este de obicei o unitate de disc, de unde și semnificația specială a comenzii de tip citire 02h, dar exact aceeași procedură este utilizată și pentru IPL de la alte dispozitive de tip intrare, cum ar fi unitățile de bandă sau chiar cititoarele de carduri, într-o manieră independentă de dispozitiv, permițând, de exemplu, instalarea unui sistem de operare pe un computer nou-nouț dintr-o bandă magnetică de distribuție inițială a sistemului de operare. Pentru controlerele de disc, comanda 02h determină, de asemenea, dispozitivul selectat să caute cilindrul 0000h, capul 0000h, simulând o comandă Seek cylinder and head, 07h și să caute înregistrarea 01H, simulând o comandă egală cu ID-ul de căutare, 31H; căutările și căutările nu sunt simulate de controlerele de bandă și carduri, deoarece pentru aceste clase de dispozitive o comandă 02h este pur și simplu o comandă de citire secvențială, nu o comandă IPL de citire.
discul, banda sau pachetul de carduri trebuie să conțină un program special pentru a încărca sistemul de operare propriu-zis sau utilitarul independent în spațiul de stocare principal și, în acest scop specific, „textul IPL” este plasat pe disc de către programul dasdi (inițializare dispozitiv de stocare cu acces Direct) sau un program echivalent care rulează sub un sistem de operare, de exemplu, ICKDSF, dar casetele și pachetele de carduri IPL sunt de obicei distribuite cu acest „Text IPL” deja prezent.
MinicomputersEdit
minicomputere, începând cu Equipment Corporation (DEC) PDP-5 și PDP-8 (1965) au simplificat proiectarea prin utilizarea procesorului pentru a ajuta operațiunile de intrare și ieșire. Acest cost a economisit, dar a făcut bootarea mai complicată decât apăsarea unui singur buton. Minicomputerele aveau de obicei o modalitate de a comuta în programe scurte prin manipularea unei serii de comutatoare de pe panoul frontal. Deoarece minicomputerele timpurii foloseau memoria cu miez magnetic, care nu și-a pierdut informațiile atunci când alimentarea era oprită, aceste încărcătoare bootstrap ar rămâne pe loc dacă nu ar fi șterse. Ștergerea s-a întâmplat uneori accidental atunci când o eroare de program a provocat o buclă care a suprascris toată memoria.
alte minicomputere cu o formă atât de simplă de pornire includ seria HP 2100 a lui Hewlett-Packard (mijlocul anilor 1960), datele originale General Nova (1969) și DEC PDP-11 (1970).
DEC a adăugat mai târziu o memorie opțională cu matrice diodă numai în citire pentru PDP-11 care a stocat un program bootstrap de până la 32 de cuvinte (64 de octeți). Acesta consta dintr-o placă de circuit imprimat, M792, care se conecta la Unibus și deținea o gamă de 32 pe 16 diode semiconductoare. Cu toate cele 512 diode în loc, memoria conținea toți biții „unu”; cardul a fost programat prin tăierea fiecărei diode al cărei bit urma să fie „zero”. DEC a vândut, de asemenea, versiuni ale cardului, seria BM792-Yx, preprogramată pentru multe dispozitive de intrare standard prin simpla omitere a diodelor inutile.
urmând abordarea mai veche, PDP-1 mai devreme are un încărcător hardware, astfel încât un operator trebuie doar să împingă comutatorul „încărcare” pentru a instrui cititorul de bandă de hârtie să încarce un program direct în memoria de bază. Supernova generală a datelor a folosit comutatoarele panoului frontal pentru a determina computerul să încarce automat instrucțiunile în memorie de la un dispozitiv specificat de comutatoarele de date ale panoului frontal și apoi să sară la codul încărcat; Nova 800 și 1200 aveau un comutator care încărca un program în memoria principală dintr-o memorie specială numai în citire și a sărit la el.
early minicomputer boot loader examplesEdit
într-un minicomputer cu un cititor de bandă de hârtie, primul program care rulează în procesul de pornire, încărcătorul de încărcare, ar citi în memoria de bază fie încărcătorul de încărcare din a doua etapă (adesea numit încărcător binar) care ar putea citi banda de hârtie cu suma de control sau sistemul de operare dintr-un mediu de stocare extern. Pseudocod pentru încărcătorul de boot ar putea fi la fel de simplu ca următoarele opt instrucțiuni:
- setați Registrul P la 9
- verificați cititorul de bandă de hârtie gata
- dacă nu este gata, săriți la 2
- citiți un octet de la cititorul de bandă de hârtie la acumulator
- stocați acumulatorul pentru a adresa în registrul P
- dacă sfârșitul benzii, săriți la 9
- Incrementați Registrul P
- Salt la 2
se bazează pe un încărcător pentru un minicomputer Nicolet instrument Corporation din anii 1970, folosind unitatea de citire-perforare a benzii de hârtie pe un teletype model 33 ASR teleprinter. Octeții încărcătorului său din a doua etapă sunt citiți din banda de hârtie în ordine inversă.
- setați Registrul P la 106
- verificați cititorul de bandă de hârtie pregătit
- dacă nu este gata, săriți la 2
- citiți un octet de la cititorul de bandă de hârtie la acumulator
- stocați acumulatorul la adresa în registrul P
- Decrementați Registrul P
- Salt la 2
lungimea încărcătorului din a doua etapă este astfel încât suprascrie locația 7. După ce instrucțiunea din locația 6 se execută, locația 7 începe executarea încărcătorului din a doua etapă. Al doilea încărcător de etapă așteaptă apoi ca banda mult mai lungă care conține sistemul de Operare să fie plasată în cititorul de bandă. Diferența dintre încărcătorul de încărcare și încărcătorul din a doua etapă este adăugarea codului de verificare pentru a prinde erorile de citire a benzii de hârtie, o apariție frecventă cu hardware relativ ieftin, „part-time-duty”, cum ar fi Teletype Model 33 ASR. (Friden Flexowriters au fost mult mai fiabile, dar, de asemenea, relativ costisitoare.)
pornirea primului microcomputeredit
cele mai vechi microcomputere, cum ar fi Altair 8800 (lansat pentru prima dată în 1975) și o mașină similară chiar mai veche (bazată pe procesorul Intel 8008) nu aveau hardware de bootstrapping ca atare. Când a început, CPU—ul ar vedea memorie care ar conține cod executabil care conține doar zerouri binare-memoria a fost curățată prin resetare la pornire. Panourile frontale ale acestor mașini purtau comutatoare de comutare pentru introducerea adreselor și a datelor, un comutator pe bit din cuvântul de memorie al computerului și magistrala de adrese. Adăugări Simple la hardware-ul permis o locație de memorie la un moment dat pentru a fi încărcate de la aceste switch-uri pentru a stoca codul bootstrap. Între timp, CPU-ul a fost împiedicat să încerce să execute conținut de memorie. Odată încărcat corect, CPU-ul a fost activat pentru a executa codul de bootstrapping. Acest proces a fost plictisitor și a trebuit să fie fără erori.
memorie numai în citire cu circuit integrat eraEdit
procesul de pornire pentru minicomputere și microcomputere a fost revoluționat prin introducerea memorie numai în citire cu circuit integrat (ROM), cu numeroasele sale variante, inclusiv ROM-uri programate cu mască, ROM-uri programabile (PROM), ROM-uri programabile șterse (EPROM) și memorie flash. Acestea au permis includerea programelor de pornire a firmware-ului ca parte a computerului. Introducerea unui ROM (extern) a fost într-un elaborator italian de comutare telefonică, numit „Gruppi Speciali”, brevetat în 1975 de Alberto Ciaramella, cercetător la CSELT. Gruppi Speciali a fost, începând din 1975, o mașină complet cu un singur buton care a pornit în sistemul de operare dintr-o memorie ROM compusă din semiconductori, nu din miezuri de ferită. Deși dispozitivul ROM nu a fost încorporat nativ în computerul Gruppi Speciali, datorită proiectării mașinii, a permis, de asemenea, pornirea ROM cu un singur buton în mașini care nu au fost proiectate pentru asta (prin urmare, acest „dispozitiv bootstrap” a fost independent de arhitectură), de ex.PDP-11. Stocarea stării mașinii după oprire a fost, de asemenea, în vigoare, ceea ce a fost o altă caracteristică critică în concursul de comutare telefonică.
de obicei, fiecare microprocesor va efectua, după o condiție de resetare sau pornire, un proces de pornire care ia de obicei forma „începeți executarea codului care se găsește începând de la o anumită adresă” sau „căutați un cod multioctet la o anumită adresă și săriți la locația indicată pentru a începe execuția”. Un sistem construit folosind acel microprocesor va avea ROM-ul permanent ocupând aceste locații speciale, astfel încât sistemul să înceapă întotdeauna să funcționeze fără asistența operatorului. De exemplu, procesoarele Intel x86 încep întotdeauna prin rularea instrucțiunilor începând de la F000:FFF0, în timp ce pentru procesorul MOS 6502, inițializarea începe prin citirea unei adrese vectoriale de doi octeți la $fffd (MS byte) și $FFFC (LS byte) și sărind în acea locație pentru a rula codul bootstrap.
Apple Inc.primul computer, Apple 1 introdus în 1976, a prezentat cipuri PROM care au eliminat necesitatea unui panou frontal pentru procesul de pornire (așa cum a fost cazul Altair 8800) într-un computer comercial. Potrivit anunțului Apple care îl anunță ” Nu Mai sunt comutatoare, nu mai sunt lumini … firmware-ul din PROMS vă permite să introduceți, să afișați și să depanați programe (toate în hex) de la tastatură.”
datorită cheltuielilor de memorie read-only la momentul respectiv, seria Apple II boot-a sistemele de operare pe disc, folosind o serie de pași incrementale foarte mici, fiecare control trece mai departe la următoarea fază a procesului de boot treptat mai complex. (Consultați Apple DOS: încărcător de încărcare). Deoarece atât de puțin din sistemul de operare pe disc s-a bazat pe ROM, hardware-ul a fost, de asemenea, extrem de flexibil și a suportat o gamă largă de mecanisme personalizate de protecție împotriva copierii discului. (A Se Vedea Software-Ul De Cracare: Istorie.)
unele sisteme de operare, mai ales sistemele Macintosh de dinainte de 1995 de la Apple, sunt atât de strâns legate de hardware-ul lor încât este imposibil să porniți nativ un alt sistem de operare decât cel standard. Aceasta este extrema opusă a scenariului folosind comutatoarele menționate mai sus; este extrem de inflexibil, dar relativ rezistent la erori și foarte simplu de manevrat, atâta timp cât tot hardware-ul funcționează normal. O soluție comună în astfel de situații este proiectarea unui încărcător de boot care funcționează ca un program aparținând sistemului de operare standard care deturnează sistemul și încarcă sistemul de operare alternativ. Această tehnică a fost utilizată de Apple pentru implementarea sa A/UX Unix și copiată de diverse sisteme de operare freeware și BeOS Personal Edition 5.
unele mașini, cum ar fi microcomputerul Atari ST, erau „instantanee”, cu sistemul de operare executând dintr-un ROM. Recuperarea sistemului de operare din magazinul secundar sau terțiar a fost astfel eliminată ca una dintre operațiile caracteristice pentru bootstrapping. Pentru a permite personalizarea sistemului, accesoriile și alte programe de asistență să fie încărcate automat, unitatea de dischetă Atari a fost citită pentru componente suplimentare în timpul procesului de pornire. A existat o întârziere de expirare care a oferit timp pentru a insera manual o dischetă în timp ce sistemul căuta componentele suplimentare. Acest lucru ar putea fi evitat prin introducerea unui disc gol. Hardware-ul Atari ST a fost, de asemenea, proiectat astfel încât slotul cartușului să poată oferi execuția nativă a programului în scopuri de jocuri ca o reținere din moștenirea lui Atari făcând jocuri electronice; prin introducerea cartușului Spectre GCR cu ROM-ul sistemului Macintosh în slotul jocului și pornirea Atari, ar putea „porni nativ” sistemul de operare Macintosh, mai degrabă decât TOS-ul propriu al lui Atari.
computerul personal IBM a inclus firmware bazat pe ROM numit BIOS; una dintre funcțiile acelui firmware a fost să efectueze un autotest de pornire atunci când mașina a fost pornită și apoi să citească software-ul de pe un dispozitiv de pornire și să-l execute. Firmware-ul compatibil cu BIOS-ul de pe computerul personal IBM este utilizat în computerele compatibile IBM PC. Interfața Firmware extensibilă a fost dezvoltată de Intel, inițial pentru mașinile bazate pe Itanium, și ulterior utilizată și ca alternativă la BIOS în mașinile bazate pe x86, inclusiv Mac-urile Apple care utilizează procesoare Intel.
stațiile de lucru Unix aveau inițial firmware bazat pe ROM specific furnizorului. Sun Microsystems a dezvoltat ulterior OpenBoot, cunoscut mai târziu sub numele de Firmware deschis, care a încorporat un interpret Forth, o mare parte din firmware fiind scris în Forth. A fost standardizat de IEEE ca IEEE standard 1275-1994; firmware-ul care implementează acel standard a fost utilizat în Mac-urile bazate pe PowerPC și în alte mașini bazate pe PowerPC, precum și în computerele bazate pe SPARC ale Sun. Specificația avansată de calcul RISC a definit un alt standard de firmware, care a fost implementat pe unele mașini bazate pe MIPS și alfa și pe stațiile de lucru SGI Visual Workstation x86.