istnieje wiele różnych metod ładowania krótkiego początkowego programu do komputera. Metody te sięgają od prostego, fizycznego wejścia do nośników wymiennych, które mogą pomieścić bardziej złożone programy.
pre integrated-circuit-ROM examplesEdit
wczesne komputeryedit
wczesne komputery w latach 40.i 50. były jedynymi w swoim rodzaju pracami inżynierskimi, które mogły potrwać tygodnie, a Ładowanie programów było jednym z wielu problemów, które należało rozwiązać. Wczesny komputer, ENIAC, nie miał programu zapisanego w pamięci, ale został skonfigurowany dla każdego problemu przez konfigurację kabli łączących. Bootstrapping nie dotyczył ENIACA, którego konfiguracja sprzętowa była gotowa do rozwiązywania problemów zaraz po zastosowaniu zasilania.
System EDSAC, drugi komputer z zapisanym programem, który ma zostać zbudowany, używał przełączników krokowych do przesyłania stałego programu do pamięci po naciśnięciu przycisku start. Program zapisany na tym urządzeniu, który David Wheeler ukończył pod koniec 1948 roku, załadował kolejne instrukcje z taśmy perforowanej, a następnie je wykonał.
pierwsze komputery komercyjneedytuj
pierwsze komputery programowalne przeznaczone do sprzedaży komercyjnej, takie jak UNIVAC I i IBM 701, zawierały funkcje ułatwiające ich obsługę. Zazwyczaj zawierały one instrukcje, które wykonywały pełną operację wejścia lub wyjścia. Ta sama logika sprzętowa może być użyta do załadowania zawartości karty dziurkowanej (najbardziej typowych) lub innych nośników wejściowych, takich jak bęben magnetyczny lub taśma magnetyczna, które zawierały program bootstrap poprzez naciśnięcie jednego przycisku. Ta koncepcja rozruchu była nazywana różnymi nazwami komputerów IBM z lat 50. i wczesnych 60., ale IBM użył terminu „Initial Program Load” z IBM 7030 Stretch, a później użył go do swoich linii mainframe, począwszy od System/360 w 1964 roku.
komputer IBM 701 (1952-1956) miał przycisk „Load”, który zainicjowany odczyt pierwszego 36-bitowego słowa do pamięci głównej z karty perforowanej w czytniku kart, taśmy magnetycznej w napędzie taśmowym lub zespołu bębna magnetycznego, w zależności od położenia przełącznika wyboru obciążenia. Lewe 18-bitowe pół-słowo zostało następnie wykonane jako instrukcja, która zwykle odczytuje dodatkowe słowa w pamięci. Następnie został wykonany załadowany program rozruchowy, który z kolei załadował większy program z tego nośnika do pamięci bez dalszej pomocy operatora. Termin „boot” jest używany w tym znaczeniu co najmniej od 1958 roku.
podobne funkcje miały inne komputery IBM tej epoki. Na przykład system IBM 1401 (ok. 1958) używał czytnika kart do załadowania programu z karty perforowanej. 80 znaków zapisanych na karcie perforowanej zostało odczytanych w lokalizacjach pamięci od 001 do 080, następnie komputer odgałęzia się do lokalizacji pamięci 001, aby odczytać pierwszą zapisaną instrukcję. Ta instrukcja była zawsze taka sama: przenieś informacje w tych pierwszych 80 miejscach pamięci do obszaru montażu, w którym informacje w kartach perforowanych 2, 3, 4 itd.mogą być łączone w celu utworzenia zapisanego programu. Po przeniesieniu tych informacji do obszaru montażu, maszyna odgałęzia się do instrukcji w lokalizacji 080 (odczytuje kartę), a następna karta zostanie odczytana i przetworzone informacje.
Innym przykładem był IBM 650 (1953), maszyna dziesiętna, która miała grupę dziesięciu 10-pozycyjnych przełączników na panelu operatorskim, które były adresowalne jako słowo pamięci (adres 8000) i mogły być wykonywane jako instrukcja. Tak więc ustawienie przełączników na 7004000400 i naciśnięcie odpowiedniego przycisku spowoduje odczytanie pierwszej karty w czytniku kart do pamięci (kod op 70), zaczynając od adresu 400, a następnie przeskoczyć do 400, aby rozpocząć wykonywanie programu na tej karcie.
konkurenci IBM oferowali również program typu single button load.
- CDC 6600 (ok. 1964) miał panel martwego startu z 144 przełącznikami przełączającymi; przełącznik martwego startu wprowadził 12 słów z przełączników przełączających do pamięci procesora peryferyjnego (PP) 0 i zainicjował sekwencję ładowania. PP 0 załadował potrzebny kod do własnej pamięci, a następnie zainicjował drugi PPs.
- GE 645 (c. 1965) miał przycisk „SYSTEM BOOTLOAD”, który po naciśnięciu powodował, że jeden ze sterowników We / Wy ładował 64-wyrazowy program do pamięci z diodowej pamięci tylko do odczytu i dostarczał przerwania, aby ten program zaczął działać.
- pierwszy model PDP-10 miał przycisk „READ IN”, który po naciśnięciu zresetował procesor i rozpoczął operację we / wy na urządzeniu określonym przez przełączniki w Panelu sterowania, odczytywanie 36-bitowego słowa, podając adres docelowy i liczenie kolejnych odczytów słowa; po zakończeniu odczytu procesor rozpoczął wykonywanie odczytu kodu, przeskakując do ostatniego odczytanego słowa.
godna uwagi odmiana tego znajduje się w Burroughs B1700, gdzie nie ma ani ROM bootstrap, ani operacji IPL. Zamiast tego, po zresetowaniu systemu odczytuje on i wykonuje kolejno opcodes z napędu taśmowego zamontowanego na przednim panelu; to ustawia boot loader w pamięci RAM, który jest następnie wykonywany. Ponieważ jednak to sprawia, że niewiele założeń dotyczących systemu, równie dobrze można go wykorzystać do załadowania taśm diagnostycznych (rutynowych testów konserwacyjnych), które wyświetlają zrozumiały kod na panelu przednim, nawet w przypadku poważnej awarii procesora.
IBM System/360 i następcy_edit
w IBM System/360 i jego następcach, w tym obecnych maszynach z/Architecture, proces rozruchu jest znany jako Initial Program Load (IPL).
IBM ukuł ten termin dla 7030 (Stretch), przywrócił go do projektowania systemu/360 i nadal używa go w tych środowiskach do dziś. W procesorach System/360 IPL jest inicjowany przez operatora komputera poprzez wybranie trzech szesnastkowych cyfr adresu urządzenia (CUU; C=adres kanału I/O, UU = adres jednostki sterującej i urządzenia), a następnie naciśnięcie przycisku LOAD. W modelach high end System/360, większości systemów System/370 i niektórych późniejszych, funkcje przełączników i przycisku ładowania są symulowane za pomocą wybieranych obszarów na ekranie konsoli graficznej, często urządzenia podobnego do IBM 2250 lub IBM 3270. Na przykład w systemie/370 Model 158 Sekwencja klawiatury 0-7-X (zero, siedem i X, w tej kolejności) skutkuje IPL z adresu urządzenia, który został kluczowany w obszarze wejściowym. Procesory Amdahl 470V / 6 i pokrewne obsługiwały cztery cyfry szesnastkowe na tych procesorach, które miały zainstalowaną opcjonalną jednostkę drugiego kanału, w sumie 32 kanały. Później IBM będzie również obsługiwać więcej niż 16 kanałów.
funkcja IPL w systemie / 360 i jej następcach oraz kompatybilnych urządzeniach, takich jak Amdahl, odczytuje 24 bajty z urządzenia określonego przez operatora do głównej pamięci masowej, zaczynając od rzeczywistego adresu zero. Druga i trzecia grupa ośmiu bajtów są traktowane jako słowa poleceń kanału (CCW), aby kontynuować ładowanie programu startowego (pierwsza CCW jest zawsze symulowana przez procesor i składa się z odczytanego polecenia IPL, 02h, z wymuszonym łańcuchem poleceń i pominięciem nieprawidłowego wskazania długości). Po zakończeniu poleceń kanału wejścia/wyjścia pierwsza grupa ośmiu bajtów jest następnie ładowana do słowa stanu programu procesora (PSW), a program startowy rozpoczyna wykonywanie w miejscu wyznaczonym przez ten PSW. Urządzenie IPL jest zwykle napędem dyskowym, stąd szczególne znaczenie polecenia 02h typu odczytu, ale dokładnie ta sama procedura jest również stosowana do IPL z innych urządzeń typu wejściowego, takich jak napędy taśmowe, a nawet Czytniki kart, w sposób niezależny od urządzenia, umożliwiając na przykład instalację systemu operacyjnego na zupełnie nowym komputerze z taśmy magnetycznej początkowej dystrybucji systemu operacyjnego. W przypadku kontrolerów dysków, polecenie 02h powoduje również, że wybrane urządzenie szuka cylindra 0000h, głowicy 0000h, symulując polecenie Seek cylinder i głowicę, 07h, i szuka rekordu 01h, symulując polecenie Search ID Equal, 31h; poszukiwania i wyszukiwania nie są symulowane przez kontrolery taśm i kart, ponieważ dla tych klas urządzeń polecenie 02h jest po prostu sekwencyjnym poleceniem odczytu, a nie poleceniem odczytu IPL.
dysk, taśma lub talia kart musi zawierać specjalny program do załadowania rzeczywistego systemu operacyjnego lub samodzielnego narzędzia do głównej pamięci masowej, a w tym konkretnym celu „tekst IPL” jest umieszczany na dysku przez samodzielny program Dasdi (direct Access Storage device Initialization) lub równoważny program działający pod systemem operacyjnym, np. ICKDSF, ale taśmy i talie kart zdolne do IPL są zwykle dystrybuowane z tym „tekstem IPL” już istniejącym.
Minikomputeryedit
minikomputery, zaczynając od Digital Equipment Corporation (DEC) PDP-5 i PDP-8 (1965) uproszczone projektowanie za pomocą procesora do wspomagania operacji wejścia i wyjścia. To zaoszczędziło koszty, ale sprawiło, że rozruch był bardziej skomplikowany niż naciśnięcie jednego przycisku. Minikomputery zazwyczaj miały jakiś sposób przełączania w krótkich programach poprzez manipulowanie tablicą przełączników na przednim panelu. Ponieważ wczesne minikomputery używały pamięci magnetycznej, która nie traciła informacji po wyłączeniu zasilania, te Ładowarki bootstrap pozostawały na swoim miejscu, chyba że zostały usunięte. Kasowanie czasami zdarzało się przypadkowo, gdy błąd programu powodował pętlę, która zapełniała całą pamięć.
Inne minikomputery z tak prostą formą uruchamiania obejmują serię Hewlett-Packard HP 2100 (połowa lat 60.), oryginalny Data General Nova (1969) i PDP-11 DEC (1970).
DEC później dodał opcjonalną pamięć tylko do odczytu matrycy diodowej dla PDP-11, która przechowywała program bootstrap do 32 słów (64 bajty). Składał się z karty obwodu drukowanego, M792, która była podłączona do Unibus i zawierała matrycę diod półprzewodnikowych 32 na 16. Przy wszystkich 512 diodach na miejscu, pamięć zawierała wszystkie” jedno „bity; karta została zaprogramowana przez odcięcie każdej diody, której bit miał być „zerowy”. DEC sprzedawał również wersje karty, seria BM792-Yx, zaprogramowane dla wielu standardowych urządzeń wejściowych, po prostu pomijając niepotrzebne Diody.
zgodnie ze starszym podejściem, wcześniejszy PDP-1 ma sprzętowy program ładujący, taki, że operator musi tylko nacisnąć przełącznik „load”, aby polecić czytnikowi taśmy papierowej załadowanie programu bezpośrednio do pamięci rdzenia. Data General Supernova używała przełączników na panelu przednim, aby komputer automatycznie ładował instrukcje do pamięci z urządzenia określonego przez przełączniki danych na panelu przednim, a następnie przeskakiwał do załadowanego kodu; Nova 800 i 1200 miały przełącznik, który ładował program do pamięci głównej ze specjalnej pamięci tylko do odczytu i przeskakiwał do niego.
wczesny program rozruchowy minikomputera przykładyedit
w minikomputerze z czytnikiem taśm papierowych, pierwszy program uruchamiany w procesie rozruchowym, program rozruchowy, czytałby do pamięci rdzenia albo drugi program rozruchowy (często nazywany binarnym programem rozruchowym), który mógł odczytywać taśmę papierową z sumą kontrolną lub system operacyjny z zewnętrznego nośnika pamięci. Pseudokod dla boot loadera może być tak prosty, jak następujące osiem instrukcji:
- Ustaw rejestr P na 9
- Sprawdź gotowy czytnik taśm papierowych
- jeśli nie jest gotowy, przejdź do 2
- odczytaj bajt z czytnika taśm papierowych do akumulatora
- Zapisz Akumulator na adres w rejestrze P
- Jeśli koniec taśmy, przejdź do 9
- zwiększ rejestr P
- Skocz do 2
powiązany przykład jest oparty na ładowarce do minikomputera Nicolet Instrument Corporation z Lat 70., wykorzystującej czytnik taśm papierowych-dziurkacz na teleprinterze typu teletype model 33 ASR. Bajty drugiego stopnia ładowarki są odczytywane z taśmy papierowej w odwrotnej kolejności.
- Ustaw rejestr P na 106
- Sprawdź gotowy czytnik taśm papierowych
- jeśli nie jest gotowy, przejdź do 2
- odczytaj bajt z czytnika taśm papierowych do akumulatora
- Zapisz Akumulator na adres w rejestrze P
- zmniejsz rejestr P
- Skocz do 2
długość Ładowarki drugiego stopnia jest taka, że końcowy bajt miejsce 7. Po wykonaniu instrukcji w lokalizacji 6, Lokalizacja 7 uruchamia drugi etap ładowania. Ładowarka drugiego stopnia czeka, aż znacznie dłuższa taśma zawierająca system operacyjny zostanie umieszczona w czytniku taśm. Różnica między ładowarką rozruchową a ładowarką drugiego stopnia polega na dodaniu kodu sprawdzającego do pułapki błędów odczytu taśmy papierowej, co często występuje przy stosunkowo niskim koszcie,” niepełnym wymiarze godzin ” sprzętu, takiego jak Teletype Model 33 ASR. (Flexowritery Friden były znacznie bardziej niezawodne, ale także stosunkowo kosztowne.)
uruchamianie pierwszych mikrokomputerówedit
najwcześniejsze mikrokomputery, takie jak Altair 8800 (wydany po raz pierwszy w 1975 roku) i jeszcze wcześniejsza, podobna maszyna (oparta na procesorze Intel 8008) nie miały sprzętu startowego jako takiego. Po uruchomieniu procesor widziałby pamięć, która zawierałaby kod wykonywalny zawierający tylko binarne zera-pamięć została wyczyszczona przez Resetowanie podczas uruchamiania. Na przednich panelach tych maszyn znajdowały się przełączniki do wprowadzania adresów i danych, jeden przełącznik na bit słowa pamięci komputera i magistrali adresowej. Proste dodatki do sprzętu pozwalały na ładowanie jednej lokalizacji pamięci naraz z tych przełączników do przechowywania kodu bootstrap. W międzyczasie procesor nie próbował wykonywać zawartości pamięci. Po prawidłowym załadowaniu procesor mógł wykonać kod rozruchowy. Proces ten był żmudny i musiał być wolny od błędów.
pamięć tylko do odczytu układu scalonego eraEdit
proces rozruchu dla minikomputerów i mikrokomputerów został zrewolucjonizowany przez wprowadzenie pamięci ROM (ROM) z wieloma wariantami, w tym zaprogramowanymi maskami ROM, programowalnymi ROM (PROM), kasowalnymi programowalnymi ROM (EPROM) i pamięcią flash. Umożliwiały one dołączanie programów ROZRUCHOWYCH jako części komputera. Wprowadzenie (zewnętrznego) ROM było we włoskim elaboratorze przełączników telefonicznych, zwanym „Gruppi Speciali”, opatentowanym w 1975 roku przez Alberto Ciaramellę, badacza z CSELT. Gruppi Speciali było, począwszy od 1975 roku, całkowicie jednoprzyciskową maszyną uruchamiającą system operacyjny z pamięci ROM złożonej z półprzewodników, a nie z rdzeni ferrytowych. Chociaż urządzenie ROM nie było wbudowane w komputer Gruppi Speciali, ze względu na konstrukcję maszyny, umożliwiało również uruchamianie ROM z jednym przyciskiem w maszynach do tego nie zaprojektowanych (dlatego to „urządzenie bootstrap” było niezależne od architektury), np. PDP-11. Zapisywanie stanu maszyny po wyłączeniu było również na miejscu, co było kolejną kluczową cechą w konkursie przełączania telefonu.
zazwyczaj każdy mikroprocesor po resecie lub włączeniu zasilania wykonuje proces rozruchowy, który zwykle przyjmuje formę „rozpoczęcia wykonywania kodu znalezionego od określonego adresu” lub „poszukaj kodu wielobajtowego pod określonym adresem i przejdź do wskazanej lokalizacji, aby rozpocząć wykonywanie”. System zbudowany przy użyciu tego mikroprocesora będzie miał stałą pamięć ROM zajmującą te specjalne miejsca, dzięki czemu system zawsze zacznie działać bez pomocy operatora. Na przykład, procesory Intel x86 zawsze rozpoczynają się od uruchomienia instrukcji zaczynającej się od F000: FFF0, podczas gdy dla procesora MOS 6502 inicjalizacja rozpoczyna się od odczytu dwubajtowego adresu wektorowego w $FFFD (bajt MS) i $FFFC (bajt LS) i przeskoczenia do tej lokalizacji, aby uruchomić kod bootstrap.
Apple Inc.pierwszy komputer, Apple 1 wprowadzony w 1976 roku, wyposażony był w układy PROM, które wyeliminowały potrzebę stosowania panelu przedniego do procesu rozruchu (podobnie jak w przypadku Altair 8800) w komercyjnym komputerze. Zgodnie z reklamą Apple zapowiadającą ” koniec z przełącznikami, Koniec ze światłami … firmware w PROMS umożliwia wprowadzanie, wyświetlanie i debugowanie programów (wszystko w hex) z klawiatury.”
ze względu na koszt pamięci tylko do odczytu w tym czasie, seria Apple II uruchomiła swoje systemy operacyjne dysków przy użyciu serii bardzo małych kroków przyrostowych, z których każdy przekazuje kontrolę do następnej fazy stopniowo bardziej złożonego procesu rozruchu. (Zobacz Apple DOS: Boot loader). Ponieważ tak mało systemu operacyjnego dysku polegało na ROM, sprzęt był również bardzo elastyczny i obsługiwał szeroką gamę dostosowanych mechanizmów ochrony przed kopiowaniem dysku. (Zobacz Cracking Oprogramowania: Historia.)
niektóre systemy operacyjne, zwłaszcza sprzed 1995 roku Macintosh firmy Apple, są tak ściśle powiązane ze swoim sprzętem, że niemożliwe jest natywne uruchomienie systemu operacyjnego innego niż standardowy. Jest to przeciwieństwo scenariusza wykorzystującego wspomniane powyżej przełączniki; jest wysoce nieelastyczny, ale stosunkowo odporny na błędy i niezawodny, o ile cały sprzęt działa normalnie. Powszechnym rozwiązaniem w takich sytuacjach jest zaprojektowanie boot loadera, który działa jako program należący do standardowego systemu operacyjnego, który przejmuje system i ładuje alternatywny system operacyjny. Technika ta była używana przez Apple do implementacji Uniksa A / UX i kopiowana przez różne darmowe systemy operacyjne i BeOS Personal Edition 5.
niektóre maszyny, takie jak mikrokomputer Atari ST, były „instant-on”, z systemem operacyjnym wykonywanym z pamięci ROM. Odzyskiwanie systemu operacyjnego ze sklepu drugorzędnego lub trzeciorzędnego zostało zatem wyeliminowane jako jedna z charakterystycznych operacji dla bootstrappingu. Aby umożliwić automatyczne ładowanie konfiguracji systemu, akcesoriów i innego Oprogramowania pomocniczego, napęd dyskietek Atari został odczytany pod kątem dodatkowych komponentów podczas procesu rozruchu. Było opóźnienie czasowe, które zapewniało czas ręcznego wstawiania dyskietki, gdy system szukał dodatkowych komponentów. Można tego uniknąć, wkładając pusty dysk. Sprzęt Atari ST został również zaprojektowany tak, aby Gniazdo kartridży mogło zapewnić natywne uruchamianie programów do celów gamingowych jako holdover od Spectre GCR z pamięcią ROM systemu Macintosh w gnieździe gry i włączanie Atari, mogło „natywnie uruchomić” system operacyjny Macintosh, a nie własne TOS Atari.
Komputer osobisty IBM zawierał oprogramowanie układowe oparte na ROM, zwane BIOS-em; jedną z funkcji tego oprogramowania było przeprowadzenie autotestu przy włączonym zasilaniu, a następnie odczytanie oprogramowania z urządzenia rozruchowego i wykonanie go. Oprogramowanie układowe kompatybilne z BIOS-em na komputerze osobistym IBM jest używane w komputerach kompatybilnych z IBM PC. Extensible Firmware Interface został opracowany przez Intela, pierwotnie dla maszyn opartych na Itanium, a później również używany jako alternatywa dla BIOS w maszynach opartych na x86, w tym Apple Mac z procesorami Intel.
Unixowe stacje robocze miały pierwotnie oprogramowanie firmowe oparte na ROM. Sun Microsystems później opracował OpenBoot, znany później jako Open Firmware, który zawierał interpreter Forth, z dużą częścią oprogramowania układowego napisanego w Forth. Został standaryzowany przez IEEE jako standard IEEE 1275-1994; firmware, który implementuje ten standard, był używany w komputerach Mac opartych na PowerPC i niektórych innych maszynach opartych na PowerPC, a także własnych komputerach opartych na SPARC firmy Sun. Specyfikacja Advanced RISC computing zdefiniowała inny standard oprogramowania układowego, który został zaimplementowany na niektórych maszynach opartych na MIPS I Alpha oraz na stacjach roboczych opartych na SGI Visual Workstation x86.