Kernel, chi fu costui?
- fabio
- 21 gen 2024
- Tempo di lettura: 2 min
Kernel, che non é parente di Kermit, é la parte fondamentale di un sistema operativo. Lo dice il nome stesso: Kernel = nucleo.
Farei un corso abbreviato sul funzionamento di un computer ma la prenderei troppo da lontano. Lo farò un'altra volta.
Vi ricordate il Dos? Quello di Un Dos Tres? No, non quello li. Dos per la maggior parte di noi é sinonimo di PC IBM, era il sistema operativo in uso prima di Windows ed era una Vera Sega. In realtà Dos é qualcosa di più generico, non strettamente collegato ai PC IBM del millennio scorso. DOS sta per Disk Operating System o in altre parole Sistema Operativo su Disco.
Ogni volta che voi digitavate un comando, il computer andava sul disco a cercarsi il significato di quel comando e lo eseguiva.
Ma come faceva il computer a capire che doveva reagire in qualche modo ad una sequenza di tasti premuti sulla tastiera? Ovvero, io premevo DIR. Il computer andava sul disco a cercarsi il significato di DIR e poi mi listava il contenuto di una directory. Bene. Ma c'é una fase a monte. Perché mai premendo dei tasti il computer avrebbe dovuto risvegliarsi dal suo torpore e andare a sfavare sul disco? Cioè, ma chi glielo faceva fare? Fosse stato per me avreste potuto affaticarvi sulla tastiera a sfinimento ed io me ne sarei fregato. E qui entra in gioco il kernel. Ci sono operazioni di alto livello come andare a cercare un comando su disco ed eseguirlo ma ci sono anche operazioni di basso livello quale dire al computer hei, qualcuno scassa la minchia sulla tastiera, vedi che vuole. Questo é il kernel. Allo stesso tempo sempre lui é quello che vi fa vedere sullo schermo I caratteri DIR che avete appena premuto. Non sta ancora eseguendo il comando DIR, che il kernel non conosce, sta solo acquisendo I tasti che avete premuto e ve li mostra a schermo.
Il kernel é la prima porzione di sistema operativo che viene caricata al boot e resta residente in memoria da dove si occupa di gestire le risorse del computer ma anche di fare molto di più. Linux ad esempio é un sistema multitasking ovvero esegue operazione di programmi diversi allo stesso tempo (che é diverso dal multithread con CPU multiple).
Per fare questo qualcuno deve assegnare le giusto risorse ai vari richiedenti. Ad esempio, garantire l'accesso esclusivo in determinate zone di memoria ad un solo task in modo da evitare che il task A scrivo ad esempio 42 ed il task B 108. Poi il task A va a riprendere il suo dato ma trova 108 e sbaglia tutto e succede un casino. Ogni task può essere eseguito per un determinato tempo, guai se un solo task prendesse possesso della CPU e della memoria in esclusivi, finirebbe il multitasking.
In breve il Kernel é quello che permette ai programmi che abbiamo installato di funzionare in modo sincronizzato e non distruttivo e fa tutte le operazioni di basso livello che permettono al pc di funzionare.
Non so se sono stato chiaro, in caso contrario chiedete.

Quando riparte il mondiale che il mio cervello queste cose le rifiuta a priori?
Meglio le mignotte e di parecchio.
Come, vedi, Fabio, avevo capito tutto: il kernel, come un dittatore fa il "lavoro sporco", istiga i cittadini a fare il proprio dovere, con le buone, o con le cattive, messo li dai "poteri forti", banche, finanza internazionale, nel mio caso io, che coi soldi veri, compro la scheda, poi, procaccio il cavetto in svizzera....
A parte gli scherzi, grazie, Fabio, sei cos' accurato e nello stesso tempo scorrevole che ti seguo meglio di Ice, che ti è pari nella spiegazione, ma viene da una generazione più moderna, e, quando, ad esempio, usa sigle o parole inglesi, che peraltro sono quelle universalmente note, vado in confusione. in ogni caso queste tue contestualizzazioni, mi servono molto e le metabolizzo del tutto…
Sei stato chiaro Fabio. Se vuoi dicci due parole anche sui linguaggi. Ad esempio, il linguaggio macchina, non è un linguaggio di programmazione giusto? Il kernel si pone fra i linguaggi di alto livello e il linguaggio macchina o c'è dell'altro?
In passato ho provato a dare un'occhiata a qualche semplice linguaggio di programmazione ma non ci ho capito quasi niente. Bisogna essere giovani e con la mente fresca, non ti puoi mettere a programmare a 50 anni, almeno non io.