Oggetto: Re: Messaggio Kernel
Luca Giuzzi
giuzzi a dmf.bs.unicatt.it
Sab 25 Mar 2000 13:28:53 UTC
Distinguo due cose:
1) La SysV IPC (Inter-Process Communication) che definisce una semantica
per semafori, locks, etc. [nei kernel 2.3.99 c'e' pure l'opzione per
disattivare/attivare la SHM a parte]: questa e' una parte essenziale
del kernel e, a meno di sistemi embedded, e' una opzione da lasciare
attivata
2) il formato binario usato da System V (ECOFF e, successivamente, ELF,
ma con alcune sezioni leggermente diverse da quelle di linux) che
e' parte del pacchetti iBCS (non incluso di default col kernel).
[e generalmente inutile al giorno d'oggi]
Una parola sui formati binari:
il formato binario e' il modo in cui un eseguibile (o una libreria)
sono organizzati. Linux originariamente utilizzava un formato chiamato
`a.out' e successivamente (all'epoca del kernel 1.2) e' passato al
formato `ELF' che consente una migliore organizzazione del codice
[le sezioni dei files sono `meglio definite' e le librerie dinamiche
non necessitano di una tabella di offsets per funzionare. ]
Un altro possibile formato per `impacchettare' gli eseguibili e'
COFF/ECOFF usato da vecchie versioni di SCO (al giorno d'oggi quasi
tutti i sistemi stanno migrando verso il formato ELF, inclusi Solaris,
BSD (che predilige ancora l'a.out), SCO, etc.). I moduli iBCS
(intel binary compatibility system) servono a consentire a linux di
caricare questi eseguibili e provvedono un layer di `traduzione' fra
i diversi tipi di syscall.
La faccenda dei simboli nel kernel.
Quando il kernel viene compilato (come ELF), alcuni simboli vengono esportati
per consentire l'interazione con moduli esterni. Ora: si possono compilare
i moduli in due modi: settando o meno la variabile CONFIG_MODVERSIONS
[sotto Loadable Module support]
Se tale variabile e' settata, a tutti i simboli esportati (pensa a delle
entries in una liberia) viene aggiunta una stringa che specifica la
versione del kernel usata. Questo teoricamente dovrebbe consentire di
conservare la compatibilita' fra moduli compilati per diverse versioni
del kernel, a meno di cambiamenti drastici nella interfaccia binaria
(tipo quelli che sono avvenuti nella 2.3). Solitamente la cosa non e'
particolarmente conveniente, in quanto dopo una upgrade e' comunque bene
aggiornare tutti i moduli.
Ciao,
lg
Maggiori informazioni sulla lista
Lug
|