Dlaczego jądro Linuksa nazywa się „obrazem”?

62

Często słyszę, jak ludzie nazywają jądro Linuksa obrazem jądra Linuksa i nie mogę znaleźć odpowiedzi w żadnej wyszukiwarce, dlaczego nazywa się to obrazem.

Kiedy myślę o obrazie , mogę myśleć tylko o dwóch rzeczach: kopii dysku lub zdjęciu. Z pewnością jako piekło nie jest to zdjęcie, więc dlaczego nazywane jest obrazem?

Tony
źródło
10
Może to być także kopia regionu RAM (czyli IMHO w przypadku jądra)
Romeo Ninov

Odpowiedzi:

60

Proces rozruchu w systemie Unix ma (miał) jedynie ograniczone możliwości inteligentnego ładowania programu (przenoszenia go, ładowania bibliotek itp.). Dlatego początkowy program był dokładnym obrazem, przechowywanym na dysku, tego, co trzeba było załadować do pamięci i „wywołać”, aby uruchomić jądro.

Dopiero znacznie później dodano kompresję (de-) i chociaż istnieją już mocniejsze programy ładujące, nazwa obrazu utknęła.

Anthon
źródło
1
Kompresja i dekompresja nie ma nic wspólnego z czymś, co nazywa się „obrazem”. Nadal jest ładowany do określonego punktu w pamięci i wywoływany bezpośrednio, tak jak za dawnych czasów. Pośredniczący moduł ładujący zawsze istniał. Samo jądro jest nadal obrazem, załadowanym do określonego punktu w pamięci i wywołanym bezpośrednio.
phyrfox,
Właśnie dlatego OP pomyliło IMO. Skompresowana wersja jego obrazu nie wyglądałaby już jak obraz (jeśli patrzy się na nieskompresowany) i nie byłaby nazywana obrazem. Ale jądro nadal jest nazywane obrazem.
Anthon
TBH nie jest pewien, czy masz rację co do jego pochodzenia, ale twoje wyjaśnienie ma tyle sensu, że muszę go głosować. Skompresowany obraz IMHO jest nadal obrazem. Sposób odzyskania obrazu jest nieistotny. To jest obraz. Wyjaśnia, o czym mówisz, i być może to jest najważniejsze.
akostadinov,
Ciekawy. Więc jeśli mam plik javascript, który zawiera tekst obiektu zawierającego kilka funkcji podobnych do jądra, i załaduję go za pomocą XMLHttpRequest i sprawdzimy go, po stronie NodeJS i używam serwera NodeJS do interakcji z nim za pomocą żądań, mogę to wywołać javascript plik obrazu jądra: O
Dmitry
31

Słowo obraz ma również definicję „Plik zawierający wszystkie informacje potrzebne do utworzenia kopii roboczej na żywo”.

Simon Richter
źródło
3
Jest to ładny jednoznaczny termin, unikający potrzeby grzebania się w terminach takich jak „binarny”, „wykonywalny”, „program”, ... aby odnosić się do rzeczywistego obrazu na dysku.
Thomas
3
Obraz jest migawką pamięci.
ikegami,
2
Nie do końca - potrzebuję wystarczających informacji, aby (ponownie) stworzyć pełny stan systemu. Jeśli zrzut pamięci jest do tego wystarczający, to mam niejawną wiedzę (adres początkowy, początkowy stan systemu); jeśli to nie wystarczy, nie nazwałbym zrzutu pamięci obrazem .
Simon Richter
20

Nie oznacza to, że „obraz” jest tylko kopią 1: 1 dysku. Tak jak zdjęcie przedstawia rzeczywistość dokładnie tak , jak było podczas fotografowania, tak obraz wykonywalnego programu (lub jądra) reprezentuje program w stanie, w którym można go załadować (lub rozpakować) do pamięci systemowej dokładnie tak , jak jest, a następnie przekazano mu kontrolę. Ten program może następnie zacząć działać od tego stanu w spójny sposób. Obraz jądra Linuksa jest obrazem (obrazem stanu) jądra Linuksa, który może uruchomić się sam po przekazaniu mu kontroli.

W dzisiejszych czasach bootloader ładuje taki obraz z systemu plików dysku twardego (potrzebny jest sterownik), zastępuje się nim i daje mu kontrolę. Proces uruchamiania komputera wykonuje to kilka razy, aż system operacyjny wreszcie uruchomi się. Nazywa się to ładowaniem łańcuchowym . Lub jeśli mniejszy program (łańcuch) ładuje bardziej złożony, nazywa się to ładowaniem początkowym .

BIOS ładuje bootloader, który jest również obrazem, na przykład wywoływanym boot.imgw przypadku grub. To boot.imgnie jest plik (jeśli grub jest zainstalowany); jest to nazwa części znajdującej się w głównym rekordzie rozruchowym (MBR). Jeśli zrzucisz to do pliku, będzie to obraz w postaci pliku nie zapisanego w sposób surowy na dysku, ale zapisanego w pliku. Jest to również reprezentacja (obraz) najwcześniejszego stanu, w którym grubjest w stanie załadować resztę samego siebie. grubnastępnie ma własny mechanizm pełnego ładowania się poprzez ładowanie innych obrazów. Jest to reprezentowane przez różne etapy w grub. Następnie program ładujący ładuje obraz jądra, zastępując się rozpakowaną zawartością tego pliku.

chaos
źródło
7

Historia starożytna. obraz pochodzi ze starego terminu Digital Equipment Corporation na dane wyjściowe z kompilatora-> linkera. plik jest obrazem utworzonym przez interpretację kodu i tak dalej przez linker, aby stworzyć wykonywalny „obraz” twojego projektu.

SkipBerne
źródło
1
Głosowałbym za dodaniem linku referencyjnego
RobAu
odnoszą się do „Podręcznika referencyjnego systemów RSX-11M + firmy Digital Equipment Corporation” DEC 1981. od tego czasu rozpowszechniły się w branży
SkipBerne
5

W matematyce jądro jest odwrotnym obrazem podzbioru obrazu jakiejś mapy, gdyby ten podzbiór był równy elementowi tożsamości w kodomenie. Jestem pewien, że te nazwy wywodzą się z pojęć matematycznych, ponieważ są one znacznie powiązane w różnych dziedzinach matematyki. Biorąc pod uwagę, że Unix powstał w środowisku akademickim, możliwe, że użycie tego jądra i obrazu tego słowa jest takie samo.

Jeśli masz zestaw, który reprezentuje pewien poziom informacji o „kompletnym” systemie operacyjnym, jeśli te informacje również tworzą grupę, możesz zdefiniować homomorfizm grupy na tym zestawie lub w zasadzie odwzorować na inne zestawy o różnych rozmiarach niż oryginalny zestaw, o ile „szanują” strukturę zbioru orginalnego, co czyniło ją grupą. Widać, że korzystne może być odwzorowanie zestawu na mniejszy zbiór lub podzbiór jakiegoś zestawu, w którym ten podzbiór jest mniejszy.

Obraz - Obraz homomorfizmu grupowego oraz w ogólnych funkcjach i mapach jest tylko podzbiorem jakiegoś zestawu, do którego elementów faktycznie mapowane. Funkcja może nie być odwzorowana na każdy pojedynczy element i elementy te nie zostaną uwzględnione w obrazie.

Jądro - Zasadniczo tylko elementy z oryginalnego zestawu, które mapują na obraz, ale tylko mapują na element tożsamości na obrazie. Zasadniczo elementy odwzorowujące na 0 podobne do rzeczy na obrazie.

Jeśli obraz jest mniejszy niż oryginalny zestaw, możemy zobaczyć, że wiele elementów musi być mapowanych na jeden element. Na przykład, może być wiele elementów z jądra, które mapują na obraz i już wiemy, że wszystkie muszą mapować na 0.

Widzimy, że jeśli wybierzemy oryginalny zestaw jako skończone sekwencje binarne lub 1 i 0 oraz kodomainę (zestaw odwzorowany na) również jako sekwencje binarne, wówczas możemy konstruować takie rzeczy wtedy i tylko wtedy, jeśli, odpowiednia struktura grupy można zdefiniować (ten nieco głębszy i niezwiązany z zadawanym pytaniem).

Widzimy więc z całkowitą pewnością, że „jądro” i „obraz” systemu operacyjnego są całkowicie zdefiniowane i mają znaczenie matematyczne. Niezależny od być może innych zastosowań terminów.

rzemiosło marszałkowskie
źródło
Zasadniczo jądro może być „przerzedzoną” wersją systemu operacyjnego lub jego częścią, która jest ważna i może zostać „wyabstrahowana”, pod warunkiem, że mapa jest homorfizmem iniekcyjnym i jest znana, może wypracować cały obraz bez konieczności przechodzenia cały obraz. Wygląda na to, że metodą kompresji danych jest to, z którego wywodzą się słowa „jądro” i „obraz”. Ale tak naprawdę wynikają ze znanych pojęć matematycznych.
marszałkowiec
3
Cześć marszałku. Lepiej poprawić swój post, edytując go niż dodając komentarze.
Anthony Geoghegan
4
Uważam, że użycie jądra do obliczeń pochodzi z „ Centralnej (zwykle jadalnej) części orzecha, szczególnie po usunięciu twardej powłoki ” (patrz Wikisłownik ) - jest to mała, wewnętrzna część systemu operacyjnego; po usunięciu wszystkich „warstw zewnętrznych” (GUI, powłoki poleceń, ładowalne sterowniki) jest to (z grubsza) minimalna część potrzebna do tego, aby sprzęt działał w jakiś użyteczny sposób.
TripeHound,
Łał po prostu łał. Spekulacja bez podstawy. TripeHound ma rację. tylko domyślał się marszałek.
Joshua,
Popraw swoje „dość pewne” ty :)
hobbs