Perché il kernel di Linux è chiamato "immagine"?


62

Sento spesso che le persone si riferiscono al kernel Linux come l'immagine del kernel Linux e non riesco a trovare una risposta su nessun motore di ricerca sul perché si chiama immagine.

Quando penso a un'immagine, posso solo pensare a due cose: una copia di un disco o una foto. Certamente non è un'immagine fotografica, quindi perché viene definita immagine?


10
Può anche essere una copia della regione RAM (che è il caso IMHO con il kernel)
Romeo Ninov

Risposte:


60

Il processo di avvio di Unix ha (aveva) solo capacità limitate di caricare in modo intelligente un programma (riposizionandolo, caricando librerie ecc.). Pertanto il programma iniziale era un'immagine esatta, memorizzata su disco, di ciò che doveva essere caricato in memoria e "chiamato" per far funzionare il kernel.

Solo molto più tardi sono state aggiunte cose come (de) compressione e sebbene siano ora presenti bootloader più potenti, il nome dell'immagine è rimasto bloccato.


1
Compressione e decompressione non hanno nulla a che fare con qualcosa che viene chiamato "immagine". È ancora caricato in un punto specifico della memoria e chiamato direttamente, proprio come ai vecchi tempi. Anche il caricatore di avvio intermedio è sempre esistito. Il kernel stesso è ancora un'immagine, caricato in un punto specifico della memoria e chiamato direttamente.
phyrfox,

Proprio per questo motivo l'OP è stato confuso dall'IMO. Una versione compressa della sua immagine non assomiglierebbe più ad un'immagine (se la guardi non compressa) e non sarebbe chiamata immagine. Ma il kernel è ancora chiamato un'immagine.
Anthon,

TBH non è sicuro che tu abbia ragione sull'origine, ma la tua spiegazione ha così tanto senso che devo votare. L'immagine compressa IMHO è ancora un'immagine. Il modo di recuperare l'immagine è irrilevante. È un'immagine. Rende chiaro di cosa stai parlando e forse questa è la cosa più importante.
Akostadinov,

Interessante. Quindi, se ho un file javascript che contiene il testo di un oggetto contenente un sacco di funzioni simili al kernel, e lo carico tramite XMLHttpRequest e lo valuto, sul lato NodeJS e uso il server NodeJS per interagire con esso tramite richieste, posso chiamarlo javascript file a Kernel Image: O
Dmitry

31

La parola immagine ha anche una definizione "Un file che contiene tutte le informazioni necessarie per produrre una copia funzionante dal vivo."


3
È un bel termine inequivocabile, evitando la necessità di armeggiare con termini come "binario", "eseguibile", "programma", ... per riferirsi all'immagine reale sul disco.
Thomas,

3
Un'immagine è un'istantanea della memoria.
ikegami,

2
Non del tutto: ho bisogno di informazioni sufficienti per (ri) creare lo stato di sistema completo. Se un dump della memoria è sufficiente per questo, allora ho una conoscenza implicita (indirizzo iniziale, stato iniziale del sistema); se non è sufficiente, non farei riferimento al dump della memoria come un'immagine .
Simon Richter,

20

Non significa che "un'immagine" sia solo una copia 1: 1 di un disco. Proprio come una fotografia rappresenta la realtà esattamente com'era durante le riprese, l'immagine di un programma eseguibile (o kernel) rappresenta il programma in uno stato, dove può essere caricato (o decompresso) nella memoria del sistema esattamente come è e quindi dato il controllo ad esso. Tale programma può quindi iniziare l'esecuzione da quello stato in modo coerente. Quindi l'immagine del kernel di Linux è un'immagine (un'immagine dello stato) del kernel di Linux che è in grado di funzionare da solo dopo avergli dato il controllo.

Al giorno d'oggi, il bootloader carica tale immagine dal filesystem del disco rigido (è necessario il driver), si sostituisce con esso e quindi ne dà il controllo. Il processo di avvio di un computer lo fa più volte fino a quando il sistema operativo non viene eseguito. Questo si chiama caricamento a catena . O se un programma più piccolo (catena-) ne carica uno più complesso, si chiama bootstrap .

Il BIOS carica il bootloader che è anche un'immagine, ad esempio chiamato boot.imgin caso di grub. Questo boot.imgnon è un file (se è installato grub); è il nome della parte che si trova nel Master Boot Record (MBR). Se lo scarichi su un file, sarebbe un'immagine sotto forma di un file non scritto in modo grezzo sul disco, ma scritto in modo grezzo in un file. Questa è anche una rappresentazione (immagine) del primo stato in cui grubè in grado di caricare il resto di se stesso. grubquindi ha il suo meccanismo su come caricarsi completamente caricando altre immagini. Questo è rappresentato dalle diverse fasi in grub. Successivamente, il bootloader carica l'immagine del kernel sostituendosi con il contenuto estratto di quel file.


7

Storia antica. il termine immagine deriva da un vecchio termine di Digital Equipment Corporation per l'output del compilatore-> linker. il file è un'immagine creata interpretando il codice e così via attraverso il linker per creare una "Immagine" eseguibile del tuo progetto.


1
Vorrei votare se aggiungessi un link di riferimento
RobAu, il

fare riferimento al "Manuale di riferimento dei sistemi RSX-11M +" della Digital Equipment Corporation, DEC 1981. da allora si è propagato nel settore
SkipBerne,

5

In matematica il kernel è l'immagine inversa di un sottoinsieme dell'immagine di una mappa, dove il sottoinsieme è uguale all'elemento identità nel codomain. Sono certo che questi nomi derivano da concetti matematici in quanto sono significativamente correlati in vari campi della matematica. Considerando che Unix è stato derivato in un ambiente accademico, potrebbe essere possibile che l'uso del kernel di queste parole e l'immagine siano gli stessi.

Se si dispone di un set che rappresenta un certo livello di informazioni sul sistema operativo "completo", se anche tali informazioni formano un gruppo, è possibile definire l'omomorfismo di gruppo su quel set o fondamentalmente mappare su altri set di dimensioni diverse rispetto al set originale purché "rispettano" la struttura dell'insieme originale che lo ha reso un gruppo. Si può vedere che può essere a proprio favore mappare il set su un set più piccolo o su un sottoinsieme di alcuni set in cui il sottoinsieme è più piccolo.

Immagine - L'immagine di un omomorfismo di gruppo e in funzioni e mappe generali, sono solo un sottoinsieme di alcuni insiemi a cui vengono effettivamente mappati gli elementi. La funzione potrebbe non essere mappata su ogni singolo elemento e tali elementi non verrebbero inclusi nell'immagine.

Kernel - Fondamentalmente solo gli elementi del set originale che si associano all'immagine, ma solo all'elemento identità nell'immagine. Fondamentalmente gli elementi che mappano a 0 come cosa nell'immagine.

Se l'immagine ha dimensioni inferiori rispetto al set originale, allora possiamo vedere più elementi che devono essere mappati su un singolo elemento. Quindi, ad esempio, potrebbero esserci più elementi dal kernel che si associano all'immagine e sappiamo già che tutti devono mappare a 0.

Possiamo vedere che se scegliamo che l'insieme originale sia sequenze finite di binario o 1 e 0 e che il codomain (impostato su) sia anche sequenze di binari, allora possiamo costruire tali cose se e solo se, una struttura di gruppo adatta può essere definito (questo piccolo approfondimento e non correlato alla domanda posta).

Quindi vediamo con assoluta certezza che "kernel" e "immagine" di un sistema operativo sono completamente definiti e hanno un significato matematico. Indipendentemente da forse altri usi dei termini.


Fondamentalmente il kernel può essere una versione "assottigliata" del sistema operativo, o parte del sistema operativo che è importante e può essere "astratta", quindi a condizione che la mappa fosse un omorfismo iniettivo ed è noto, può elaborare l'intera immagine senza doversi spostare l'intera immagine. Sembra che un metodo di compressione dei dati sia da cui derivano "kernel" e "immagine". Ma in realtà derivano da concetti matematici ben noti.
Maresciallo artigianale

3
Ciao maresciallo. È meglio migliorare il tuo post modificandolo anziché aggiungere commenti.
Anthony G - giustizia per Monica il

4
Credo che l'uso dell'informatica del kernel provenga dalla "parte centrale (solitamente commestibile) di un dado, specialmente una volta che il guscio duro è stato rimosso " (vedi wiktionary ) - è la piccola parte interna del sistema operativo; dopo aver rimosso tutti gli "strati esterni" (GUI, shell dei comandi, driver caricabili) è la parte (approssimativamente) minima necessaria per rendere / consentire all'hardware di funzionare in qualche modo utile.
TripeHound,

Wow solo Wow. Speculazione senza base. TripeHound ha capito bene. imbarcazione del maresciallo appena indovinata.
Giosuè,

Rivedi il tuo "abbastanza certo" :)
hobbs, il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.