Dlaczego komputer musi mieć system BIOS?


35

BIOS oprogramowanie jest wbudowane w komputer i jest to pierwszy kod prowadzony przez komputer po włączeniu ( „firmware rozruchowym”). Po uruchomieniu komputera pierwszym zadaniem systemu BIOS jest autotest po włączeniu, który inicjuje i identyfikuje urządzenia systemowe, takie jak procesor, pamięć RAM, karta graficzna, klawiatura i mysz, dysk twardy, napęd dysków optycznych i inny sprzęt. BIOS następnie lokalizuje oprogramowanie ładujące przechowywane na urządzeniu peryferyjnym (oznaczonym jako „urządzenie rozruchowe”), takim jak dysk twardy lub CD / DVD, i ładuje i uruchamia to oprogramowanie, zapewniając mu kontrolę nad komputerem. [2] Proces ten nazywa się uruchamianiem lub uruchamianiem, co jest skrótem od ładowania początkowego.

Jakie wymagania określają, że system komputerowy musi mieć zainstalowany system BIOS?

Dlaczego system operacyjny nie może faktycznie działać w całości z systemem BIOS?


40
Dlaczego silnik samochodu potrzebuje rozrusznika? Czy silnik nie powinien być wystarczająco mocny, aby się uruchomić?
Der Hochstapler

4
@OliverSalzburg będzie to możliwe w najbliższej przyszłości, silniki gazowe bez rozruszników. Z bezpośrednim wtryskiem i komputerami to pestka.
Moab

2
Mają już silniki samoczynnego rozruchu, ale w większości są to silniki 12-cylindrowe lub obrotowe. Większość silników nie może się sam uruchomić po prostu dlatego, że nie jest w stanie wytworzyć wystarczającej mocy za jednym razem, aby przezwyciężyć moment bezwładności. Bezpośredni wtrysk i lepsze wyczucie czasu mogą trochę pomóc, ale tak naprawdę potrzebujesz lżejszych silników, aby zwiększyć stosunek energii generowanej podczas udaru do momentu intertii wytwarzanego przez koło zamachowe, wał korbowy, przekładnię itp.
Lèse majesté

5
W rzeczywistości BIOS w sensie PC nie jest konieczny. Komputery IBM System / 360 i / 370 (i być może nowsze wersje) uruchomiły się z pojedynczą instrukcją, która odczytuje pojedynczy rekord z urządzenia wybranego za pomocą pokręteł na konsoli. Ten rekord zawierał program ładujący (musiał zmieścić się w 80 bajtach - jedna karta perforowana), który załadował bardziej złożony program ładujący, który załadował system operacyjny z dysku. Wydaje mi się, że „BIOS” był tą pojedynczą instrukcją, która ma zostać wykonana po naciśnięciu prawego przycisku (zwanego IPL lub ładowaniem programu początkowego).
Ex Umbris

2
W swoim pytaniu mylisz „komputer” i „komputer”. Dlatego odpowiedzi są mylące, a czasem sprzeczne.
rds

Odpowiedzi:


41

BIOS to zależny od sprzętu fragment kodu przechowywany na płycie głównej. Każda inna płyta główna wymaga napisania niestandardowego systemu BIOS, więc niemożliwe byłoby posiadanie ogólnego systemu BIOS / OS all-in-one (chociaż BIOS jest technicznie tylko kodem przechowywanym, więc teoretycznie można napisać system operacyjny dla jednej konkretnej płyty głównej) . Jak wspomniano, celem systemu BIOS jest wykonanie następujących czynności:

Po uruchomieniu komputera pierwszym zadaniem systemu BIOS jest autotest po włączeniu, który inicjuje i identyfikuje urządzenia systemowe, takie jak procesor, pamięć RAM, karta graficzna, klawiatura i mysz, dysk twardy, napęd dysków optycznych i inny sprzęt.

Pamiętaj, że nadal możesz uruchomić komputer bez pamięci zewnętrznej - dlatego BIOS jest wymagany dla komputera. Innymi słowy, BIOS zapewnia wspólny interfejs oprogramowania, który umożliwia przechowywanemu programowi komputerowemu komunikowanie się z różnymi urządzeniami sprzętowymi podłączonymi do płyty głównej.

Na przykład, jeśli mam dwie różne płyty główne z dwoma różnymi kontrolerami SATA, BIOS pozwala mi napisać fragment kodu, który może z nimi współpracować, bez mojej wiedzy o tym, jak płyta główna faktycznie wysyła polecenia do urządzenia SATA. Muszę tylko powiedzieć komputerowi „odczytać sektor X z tego urządzenia SATA”, a BIOS jest odpowiedzialny za wysyłanie tych poleceń do sprzętu.

Tam, gdzie faktycznie pobiera informacje o „sektorze odczytu X”, jest przechowywany program zawarty w systemie BIOS, który zwykle kieruje komputer do rozpoczęcia odczytu z bootloadera przechowywanego we wspólnej lokalizacji. Te wspólne lokalizacje są uzgadniane przez różnych twórców oprogramowania i sprzętu i zwykle podawane do wiadomości publicznej w celu zapewnienia większej kompatybilności między systemami.

Po ustanowieniu podstawowego poziomu interfejsu (ponownie logicznego interfejsu za pomocą oprogramowania) sam system operacyjny tworzy wspólny interfejs z różnymi urządzeniami sprzętowymi (zwykle za pomocą „sterowników urządzeń”), a następnie system operacyjny może kontrolować sprzęt.


Na koniec należy zauważyć, że system BIOS służy również do modyfikacji konfiguracji sprzętowych komputera i przechowywania ich we wbudowanej pamięci EEPROM (aby komputer zapamiętał zmiany przy następnym uruchomieniu). Jednak, jak już wcześniej powiedziałem, po załadowaniu systemu operacyjnego ma on pełną kontrolę nad komputerem.

Umożliwia to producentom płyt głównych tworzenie oprogramowania, które umożliwia wprowadzanie tych zmian w systemie operacyjnym, w przeciwieństwie do konieczności ponownego uruchamiania systemu BIOS. Ponownie, jest to bardzo zależne od sprzętu i oprogramowania, ale pokazuje, że wszystkie interfejsy komputerowe są względne. BIOS jest dokładnie tym, co sugeruje jego nazwa - podstawowy system wejścia / wyjścia, umożliwiający wspólny interfejs oprogramowania dla bardziej zaawansowanego programu („systemu operacyjnego”), który przejmuje kontrolę nad maszyną.


2
Po uruchomieniu komputera BIOS działa jako kod maszynowy procesora. Możesz o tym myśleć, ale tak naprawdę nie jest to w pewnym sensie „wyłączone” - po prostu przełącza się na uruchomienie systemu operacyjnego. Po uruchomieniu komputera system BIOS nakazuje komputerowi uruchomienie kodu maszynowego zapisanego w lokalizacji X. Mówiąc bardziej ogólnie, system BIOS po prostu inicjuje sprzęt i kieruje komputer, z którego ma być dalej uruchamiany kod.
Przełom

13
Zintegrowane BIOS / OS NIE jest niemożliwe. Nie wiem, dlaczego wszyscy tutaj to mówią. Posiadanie każdej części na osobnych urządzeniach / pamięci nie oznacza, że ​​nie są one częścią tego samego logicznego elementu. Komputery przed IBM PC miały wszystko w jednym, czyli BIOS został wyprodukowany i opracowany przez ten sam, który opracował jądro systemu operacyjnego. W rzeczywistości aktualizacje systemu operacyjnego czasami obejmowały aktualizacje systemu BIOS.
m0skit0

3
@Oliver W rzeczywistości, dzięki ACPI, funkcje BIOS są rutynowo używane po uruchomieniu systemu operacyjnego.
derobert

1
BIOS pozwala systemowi operacyjnemu (warstwa oprogramowania) na interakcję ze sprzętem. BIOS i system operacyjny służą różnym celom. Są to dwie części całości. Jeden nie zastępuje drugiego.
Ben Richards

1
@Breakthrough: zależy od tego, kto produkuje sprzęt;) W przypadku komputerów IBM ewolucją logiczną byli niezależni producenci systemów BIOS i OS ze względu na mnogość typów sprzętu. Nie zdarzyło się to w dawnych czasach. Właśnie dlatego komputer był (na szczęście, z wyjątkiem tego, że M $ był w nim bez powodu ...) rewolucja, która zmieniła cały rynek komputerów.
m0skit0

7

Twój system operacyjny znajduje się na dysku twardym, jeśli włączysz komputer, magicznie nie zacznie on czytać z tego dysku twardego. To BIOS ładuje moduł ładujący z dysku twardego , a także wykonuje pewne testy i pozwala skonfigurować określone ustawienia systemu BIOS.

Twój system operacyjny nie może tego zrobić, ponieważ znajduje się na dysku twardym, a nie w pamięci ROM.

Dlatego potrzebujesz systemu BIOS lub podobnej (ale innej) technologii, takiej jak EFI ...

Możliwe jest umieszczenie części systemu operacyjnego na pamięci ROM (odpowiedzialnej za ładowanie programu ładującego system operacyjny) przez producenta; nie ma to jednak szerokiego zastosowania, a mimo to dostępny jest BIOS lub EFI.


1
Mieszacie dwie różne koncepcje. BIOS jest niezależny od systemu operacyjnego, to znaczy BIOS może być częścią systemu operacyjnego. Na przykład, jeśli jest wykonany przez tego samego producenta i działa tylko z tym systemem operacyjnym, np. Bootstrappery konsoli do gier.
m0skit0

5
„BIOS jest niezależny od systemu operacyjnego, tzn. BIOS może być częścią systemu operacyjnego”. Co? Sprzeczność jest bardzo sprzeczna, lol.
Przełom

2
Konsole do gier to komputery, podobnie jak Atari, Amiga i stare komputery Mac, więc jest to zdecydowanie istotne. @Breakthrough: to nie jest sprzeczne. Oznacza to, że BIOS nie ma nic wspólnego z systemem operacyjnym, a zatem może być jego częścią (lub nie).
m0skit0

@TomWijsman Jesteś jedynym trollującym tutaj. Konsole do gier stanowią podzbiór komputerów. Jeśli niektóre konsole mogą to zrobić, w przypadku niektórych komputerów jest to możliwe. Nie używaj pogrubienia w ten sposób. To niestosowne.
luiscubal

1
@TomWijsman ma rację, jeśli konsole do gier mogą to zrobić, to i komputery. Ponadto, o ile nie jest to pytanie ani odpowiedź, nie widzę problemu z niedziałaniem. W końcu komentarze są komentarzami; nic dodać nic ująć. (Brak komentarza na temat odważnego problemu - dla każdego z nich na ten temat, chociaż dotyczy to bardziej terminologii).
Przełom

6

Bez prawdziwego logicznego powodu. To bardziej kwestia dziedzictwa i historii.

  1. Nie ma wymogu, aby komputer miał zainstalowany system BIOS. Jest to spuścizna po IBM PC. Chociaż okazało się to dobrym pomysłem

  2. Wykonanie tego przez system operacyjny tak naprawdę niczego nie zmieni, ponieważ nadal działałoby to tak, jak robi to BIOS. Oczywiście system operacyjny musiałby znajdować się w pamięci ROM, a nie na urządzeniu we / wy. Problem może pojawić się w przypadku problemów związanych z monopolem, gdy konstruktor systemu operacyjnego decyduje się na niezgodność systemu BIOS z innymi systemami operacyjnymi. Oddzielenie producentów systemu BIOS od systemów operacyjnych poprawia swobodę w zakresie oprogramowania.


1
Dlaczego nie może działać jako BIOS? Wyjaśnij, dlaczego. Musisz tylko załadować bootstrapper na ROM i gotowe. Nie chcę mieć go całkowicie w pamięci ROM, a mimo to działałoby, jeśli pamięć ROM jest wystarczająco duża (oczywiście aby ją uruchomić, trzeba załadować części do pamięci RAM, ale robi to również obecny BIOS).
m0skit0

3
Powiedział „komputer”, a nie komputery osobiste. I tak, to dotyczy. W rzeczywistości było tak przed IBM PC (Atari, Amiga ... BIOS jest częścią systemu operacyjnego).
m0skit0

2
Głupia ja, pisałem oprogramowanie dla komputerów wbudowanych, które nie miały systemu BIOS ani systemu operacyjnego, tylko kod aplikacji. A może nie mówimy o wszystkich komputerach, tylko o tych, o których myśli większość ludzi?
jwernerny

2
Nie dotyczy na dużą skalę? Sprawdź, ile komputerów Ataris, Amigas i Mac było tam przed komputerem.
m0skit0

2
IPhone jest komputerem i nie sądzę, aby miał BIOS. Jeszcze przed erą cyfrową ... komputer jest programowalną maszyną, która wykonuje operacje i generuje taki sam wynik dla danego wejścia, prawda? Krosno żakardowe to komputer iz pewnością nie ma systemu BIOS (nawet nie ma systemu operacyjnego).
rds

5

Coś jest wymagane do uruchomienia systemu operacyjnego. Jeśli system operacyjny zmieści się w nieulotnej pamięci, można go uruchomić bezpośrednio, ale w pełni funkcjonalnych systemach operacyjnych, takich jak Windows, OSX lub Linux, nie jest to możliwe.

Potrzebny jest niewielki lekki „system operacyjny”, który można załadować po włączeniu zasilania, który wykonuje podstawowe czynności, takie jak dostęp do pamięci i dysku, a następnie ładuje system operacyjny. Chociaż może to być część samego systemu operacyjnego, a nie osobna jednostka, istnieją inne powody, dla których warto zacząć od początku innego procesu:

  1. Aktualizacje - jeśli system operacyjny został naprawiony w ten sposób, trudno byłoby go zaktualizować, gdyby potrzebne były jakiekolwiek poprawki bezpieczeństwa. Można to zrobić - aktualizacje oprogramowania układowego zdarzają się cały czas na urządzeniach takich jak routery itp., Ale mają one stosunkowo proste systemy operacyjne.
  2. Elastyczność - komputer jest maszyną ogólnego przeznaczenia, a ten sam sprzęt może obsługiwać kilka różnych systemów operacyjnych. Posiadanie systemu BIOS, który następnie ładuje system operacyjny z dysku oznacza, że ​​możesz wybrać, który chcesz uruchomić - możesz nawet posunąć się tak daleko, mając kilka zainstalowanych obok siebie.

Proces ten nazywany jest ładowaniem początkowym .


1
Więc answear jest dlatego, że mamy wiele różnych systemów operacyjnych? Mam na myśli, że jeśli mamy tylko jeden model systemu operacyjnego dla konkretnego sprzętu, to wyeliminowalibyśmy potrzebę BIOS-u?
Diogo,

1
Nie rozumiem, dlaczego nie jest możliwe, aby Microsoft
stworzył

1
Nie potrzebujesz całego systemu operacyjnego, aby zmieścił się w nieulotnej pamięci (którą może btw, po prostu potrzebujesz wystarczającej ilości ROM: P). Potrzebujesz tylko bootstrappera.
m0skit0

1
@ m0skit0 Firma Microsoft nie może utworzyć systemu BIOS, ponieważ musiałaby utworzyć inny system BIOS dla każdej płyty głównej, na której ma działać oprogramowanie. :)
Przełom

1
Ponadto @ChrisF, umieszczenie systemu operacyjnego na ROM-ie podważa cały punkt systemu operacyjnego. Rozsądne może być użycie pamięci ROM do bezpośredniego uruchomienia niektórych zapisanych programów na procesorze (co dałoby znacznie lepszą wydajność), ale cały system operacyjny ma wyraźnie zabronić tego typu operacji i zapewnić wspólny interfejs oprogramowania do Zrób tak.
Przełom

4

Koncepcja BIOS komputera PC wywodzi się z CP / M, systemu operacyjnego popularnego na 8-bitowych komputerach opartych na magistrali Z-80 „S-100” przed przejęciem przez IBM PC.

CP / M oczekiwał, że funkcje zależne od sprzętu znajdą się w pamięci ROM (BIOS). Kolejną częścią, ładowaną z dysku przez program ładujący, było oprogramowanie, które obsługiwało system plików CP / M (BDOS), a następnie trwało procesor poleceń lub „powłokę” (CCP). Sprzęt, który CP / M miał obsługiwać, nie był bardzo duży: napęd dyskowy, wyświetlacz, port szeregowy lub dwa (porty COM lub AUX), do których można podłączyć drukarki lub modemy.

BIOS komputera wykonał podstawową funkcję ładowania początkowego podobną do CP / M, a DOS użył funkcji BIOS do wykonania podstawowych operacji wejścia i wyjścia, zgodnie z przeznaczeniem. Programiści ostatecznie omijali te funkcje, ponieważ były one powolne. Doprowadziło to do tego, że twórcy klonów PC w połowie lat 80. odtworzyli platformę jako całość (łatwe, ponieważ IBM bardzo dobrze udokumentował oryginalny komputer wewnątrz i na zewnątrz), zamiast po prostu zapewnić BIOS z kompatybilnymi interfejsami, chociaż musieli to zrobić.

W tym momencie możemy powiedzieć, że w nowoczesnym systemie operacyjnym BIOS nie jest tak naprawdę konieczny poza uruchomieniem systemu. Jednak ...

Począwszy od wczesnych lat 90. przyjęto pojęcie zarządzania energią i zadaniem BIOSu było to. APM działa dobrze z systemem jednozadaniowym, takim jak DOS, ale nie z prawdziwymi systemami wielozadaniowymi, takimi jak Windows lub Linux. W tym czasie 386 było w pełni sił, procesor Intel, który obsługiwał prawdziwą wielozadaniowość. DOS i BIOS nie zostały zaktualizowane w odpowiedzi na nowe możliwości tego procesora, głównie dlatego, że wszystkie procesory Intel nadal będą działać w starszym 16-bitowym trybie zgodności, dla którego został zaprojektowany oryginalny PC-BIOS. Dlatego współczesne systemy operacyjne prawie ignorują / omijają wszystkie funkcje wejścia / wyjścia BIOS-u podobne do CP / M, chyba że na wczesnym etapie rozruchu.

Ostatecznie opracowano ACPI, głównie część systemu BIOS, który wspierał zarządzanie energią i konfigurację rzeczy (często laptopów) specyficznych dla platformy. ACPI obsługuje również końcowy stan przełączania zasilania w stanie hibernacji, uśpienia lub wyłączenia.

Tak więc w dzisiejszych czasach to ACPI i jego następca, EFI, sprawia, że ​​coś w rodzaju BIOS-u jest koniecznością komputera PC Nadrzędna koncepcja polega na tym, że ACPI jest interfejsem między rzeczami specyficznymi dla platformy lub płyty głównej a systemem operacyjnym, więc osobna kompilacja systemu operacyjnego nie muszą być wykonane dla każdego rodzaju płyty głównej.

Problem ten występują na płytach programistycznych zawierających procesory ARM z systemem Linux (a także sprzętem do telefonów komórkowych). Zazwyczaj będą one dostarczane z oprogramowaniem tylko dla bootloadera, takim jak U-boot, ale prawie system operacyjny musi obsługiwać każdą płytę jako oddzielną platformę.


3

W pewnym sensie masz rację. BIOS i system operacyjny częściowo robią to samo. Rozdzielenie w systemie BIOS i systemie operacyjnym służy wyłącznie elastyczności.

BIOS jest zwykle tworzony przez producenta sprzętu. Sprzęt musi zapewniać, że dostępna jest podstawowa funkcjonalność, na przykład, że można odczytać stację dysków oraz że wyświetla się podstawowy ekran diagnostyki i błędów. Dlatego nazwa „Basic Input Output System”.

Można to zrobić w pewnym stopniu bez dalszej wiedzy o rzeczywistych komponentach rzeczywiście obecnych w danym systemie, ponieważ wszystkie one muszą obsługiwać pewien mały standard BIOS. Umożliwia to dostawcom tworzenie niestandardowego kompletnego systemu. BIOS musi tylko tyle zrobić, aby uruchomić system operacyjny. Istnieją pewne konwencje, w których znajdują się te punkty początkowe, więc po prostu próbuje jeden po drugim. Umożliwia to także używanie różnych systemów operacyjnych na tym samym sprzęcie. (znowu jest elastyczność)

Gdy system operacyjny (a przynajmniej jego program ładujący) zostanie znaleziony i uruchomiony przez BIOS, sam BIOS staje się w dużej mierze przestarzały. Nowoczesne systemy operacyjne używają bardzo mało lub nic z BIOS-u po załadowaniu.

Jeśli chcesz, aby system operacyjny wykonał całą pracę, musisz umieścić system operacyjny w miejscu, w którym będzie dostępny dla sprzętu bez wstępnej pomocy oprogramowania (ROM). Może to być możliwe w przypadku niektórych systemów zamkniętych, w których elastyczność nie ma znaczenia. Jeśli myślisz o wbudowaniu obsługi sprzętu w inny sprzęt, to po prostu znów budujesz rodzaj BIOS-u ...

Kolejnym problemem jest rozmiar i koszt pamięci. W pełni funkcjonalne systemy operacyjne są duże, a próba zainstalowania wielobajtowego systemu operacyjnego w pamięci ROM jest kosztowna, oprócz dalszych problemów związanych z łataniem i aktualizowaniem.

Więc nie, nie ma powodu technicznego, ale wiele praktycznych, szczególnie dla elastycznej platformy PC.


3

Aby uruchomić program na nowoczesnym komputerze, musisz mieć już uruchomiony program, który umie obsługiwać sprzęt i ładować programy do pamięci. Ten problem z kurczakiem i jajkiem został rozwiązany przez wszczepienie podstawowego programu do samego sprzętu.

Ten podstawowy system wejścia / wyjścia (BIOS) jest bardzo mały i ma bardzo ograniczony zakres, ale stanowi wystarczającą podstawę do załadowania i uruchomienia programów ładujących drugiego stopnia, takich jak GRUB lub NTLDR . Te programy ładujące drugiego stopnia są bardziej wyrafinowane niż program BIOS, co pozwala im zapewnić solidniejszą podstawę dla systemu operacyjnego właściwego do ładowania i przejmowania kontroli.


Dobre wyjaśnienie nietechniczne.
Ślimak mechaniczny

1

Jeśli procesor miał możliwość bezpośredniego adresowania dysku twardego, bez polegania na systemie BIOS, EFI lub innym kodzie w pamięci ROM (lub NVRAM lub czymś innym), to teoretycznie taki procesor mógłby załadować system operacyjny z dysku do pamięci RAM i rozpocząć wykonując to.

W rzeczywistości taki procesor może nawet wykonywać instrukcje bez ładowania ich do pamięci RAM. Nie ma teoretycznego powodu, dla którego komputer nie mógłby użyć dysku twardego jako podstawowej pamięci. Ale byłoby to bardzo, bardzo wolne.

Oznaczałoby to posiadanie dodatkowego kodu w procesorze, aby uzyskać dostęp do dysku, i podłączenie pewnych koncepcji dotyczących dysków, takich jak tablice partycji i systemy plików do procesora. Procesory w dzisiejszych czasach są wystarczająco duże, aby to zrobić, ale nie byłoby to zbyt elastyczne ani wydajne podejście do projektowania procesora.


Kiedyś komputery działały bezpośrednio z dysku / bębna, bez znaczącej ilości pamięci RAM.
Daniel R Hicks,

-1

Nie potrzebuje tego!

To, co często nazywa się BIOS, to zestaw 3 rzeczy.

  • Program ładujący
  • Narzędzie konfiguracyjne: teraz w większości przestarzałe, z wyjątkiem kolejności rozruchu i zegara. Większość pozostałych powinna być automatyczna lub ustawiona przez producenta.
  • BIOS: biblioteka procedur wyjściowych, które pomagają systemowi operacyjnemu komunikować się ze sprzętem. Niestety bios jest 16-bitowy, nieaktualny i nie może być używany przez nowoczesne systemy operacyjne, dlatego jest w dużej mierze ignorowany.

Program ładujący jest częścią systemu BIOS.
Daniel R Hicks

@Daniel Napisałem na nowo, aby jaśniej, dzięki.
ctrl-alt-delor
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.