Come funziona il kernel nel sistema operativo

In una noce o in un seme, il chicco è la parte più interna, circondata da un guscio. In un sistema operativo, il kernel è il livello più basso del software, circondato da diversi altri livelli, tra cui un'interfaccia chiamata "shell". 1 Il kernel si trova tra l'interfaccia utente e l'hardware e gestisce molte attività che si svolgono all'interno del computer.

Il terminale sveglia la shell e ti permette di comunicare con il kernel tramite la shell. In Windows, è possibile accedere alla shell tramite Powershell, mentre su Mac/Linux è possibile utilizzare una shell zsh o bash (la sh in queste parole significa shell!).

Esistono diversi tipi di kernel, ma la maggior parte dei sistemi operativi moderni (come Windows, Mac OS X e Linux) utilizza  kernel monolitici .

I kernel monolitici forniscono servizi generali come:

  • Interfacciamento (due servizi)
    • API di chiamata di sistema
    • API del driver del dispositivo API
  • File system e file system virtuale
  • Gestione dei processi e delle attività
  • Programmazione
  • Gestione della memoria e memoria
virtuale

Interfacce

La maggior parte dei kernel moderni, come quelli utilizzati in Windows o MacOS, implementano un livello di astrazione hardware o un insieme di operazioni di base universali per tutti i dispositivi di un certo tipo. L'astrazione hardware fornisce un'interfaccia all'hardware ed elimina la complessità nascondendo i dettagli hardware specifici. Per fornire questo insieme di astrazioni, il kernel deve sapere come utilizzare l'hardware. Poiché sono possibili molte combinazioni di hardware, il kernel si basa sui driver di dispositivo per utilizzare direttamente l'hardware.

L'astrazione che il kernel fornisce agli sviluppatori di applicazioni è chiamata API di chiamata di   sistema . Consente agli sviluppatori di software di creare facilmente applicazioni in grado di essere eseguite su diversi tipi di hardware. Ogni kernel fornisce le proprie API, motivo per cui un programma Mac non funziona su un computer Windows e viceversa.

Dal

punto di vista del sistema operativo, un file system è un software che tiene traccia dei dati su un'unità. Il kernel fornisce un insieme di chiamate di sistema per gestire il file system. Operazioni come l'apertura, la chiusura, la lettura, la scrittura e l'eliminazione di file sono supportate utilizzando le chiamate di sistema.

Poiché ogni file system ha il proprio formato, la condivisione di file su supporti esterni può essere difficile. Per alleviare questo problema, gli sviluppatori hanno ideato il file system virtuale (VFS). Il VFS è simile a un'API driver, in quanto consente a diversi file system di "collegarsi" al kernel e indica al kernel come accedere ai dischi in un determinato formato. Il VFS offre anche un'interfaccia coerente per questi file, indipendentemente dal formato Sono dentro.

Gestione dei processi

Un processo (a volte chiamato attività) è un'istanza di un programma in esecuzione. I programmi vengono memorizzati sul disco come file contenenti informazioni sul programma, nonché i dati iniziali e il codice eseguibile. Quando si esegue un programma, il kernel:

  1. trova il programma nel file system,
  2. lo carica in memoria (insieme al suo contesto, l'insieme di dati che il programma utilizza durante l'esecuzione) e
  3. gestisce il processo (fornisce chiamate di sistema per gestire i processi, comprese azioni come l'esecuzione o l'uscita da un programma).

Il kernel serve per eseguire programmi e fornire l'accesso all'hardware della macchina. Poiché ci sono molti programmi e le risorse sono limitate, il kernel decide anche quando e per quanto tempo un programma deve essere eseguito. Questo processo è noto come programmazione . 2

Un core del processore può essere eseguito solo un singolo processo in un dato momento. Ciò significa che un processore dual-core può eseguire solo due processi contemporaneamente. La pianificazione consente agli utenti di avere più processi aperti, fornendo l'illusione del multitasking passando rapidamente i core del processore tra le attività. Il kernel gestisce automaticamente la pianificazione, ma alcune chiamate di sistema implicano che il kernel passerà a un processo diverso, come le chiamate che terminano un processo in esecuzione o attendono l'input dell'utente.

Gestione della memoria

Il kernel utilizza la gestione della memoria per dare a ciascun processo la propria regione di memoria per memorizzare codice e dati. Il kernel tiene traccia di quale regione appartiene a ciascun processo e limita tale processo all'accesso alla propria memoria. Ciò rende il sistema molto più sicuro e stabile, poiché la memoria di un processo è protetta da altri processi (possibilmente dannosi).

Il sistema di gestione della memoria spesso fornisce anche Memoria virtuale . Su un sistema con solo 2 gigabyte di memoria principale, il kernel può utilizzare una parte del disco rigido (noto come spazio di swap o file di paging) come memoria aggiuntiva. Un sistema con 2 gigabyte di memoria principale e spazio di swap sufficiente può utilizzare tutti i 4 gigabyte di spazio di indirizzamento (tuttavia, lo spazio di swap è molto più lento). Il sistema di gestione della memoria tiene traccia di quale memoria è utilizzata da un processo e la "scambia" automaticamente dentro e fuori dalla memoria principale quando è necessario.