GNU/Linux >> Linux Esercitazione >  >> Linux

Principali differenze tra il kernel Linux e UNIX

UNIX è stata considerata la madre della maggior parte dei sistemi operativi. Alcuni dei membri popolari di questa famiglia includono:

  • System V Release 4(SVR4) sviluppato da AT&T.
  • 4.4 BSD Dall'università della California
  • AIX di IBM.
  • HP-UX di Hewlett-Packard.
  • Solaris di Sun Microsystems.


Linux è relativamente un nuovo membro di questa famiglia. Linux è stato inizialmente scritto da Linus Torvalds nel 1991 per personal computer compatibili con IBM. Come sistema operativo, GNU Linux ha avuto un enorme successo e popolarità negli ultimi 20 anni con la maggior parte dei server commerciali che ora utilizzano GNU Linux. Per aumentare la popolarità, gli utenti finali hanno anche iniziato a utilizzare Linux in questi giorni con la maggior parte dei famosi produttori di laptop e PC che forniscono GNU Linux come sistema operativo per-installato.

Per coloro che sono ancora confusi tra Linux come sistema operativo o kernel, Linux in vero senso come scritto da Linus era un kernel che è stato scritto facendo riferimento al libro sugli interni di Unix (sebbene il kernel Linux abbia adottato buone funzionalità da molti altri kernel Unix come anche) mentre le distribuzioni disponibili in commercio che contengono utilità come desktop grafico, editor di testo, compilatori ecc. oltre al kernel Linux sono sistemi operativi completi.

Sebbene il kernel Linux prenda in prestito la maggior parte delle sue funzionalità da kernel Unix/Unix-Like, ci sono ancora molti punti in cui i due tipi di kernel differiscono in modo significativo. In questo articolo, l'obiettivo principale sarà su queste differenze. L'elenco non è esaustivo ma contiene le principali differenze.

1. Approccio monolitico vs microkernel

I kernel monolitici sono quelli in cui tutto il codice del kernel viene eseguito come un unico processo mentre i kernel micro-kernel sono quelli in cui il nucleo di un kernel (che controlla le diverse parti del sistema operativo) viene eseguito in un processo mentre altri servizi come i driver di dispositivo ecc. processi. Linux segue un approccio monolitico mentre ci sono un paio di eccezioni nei kernel Unix-Like che seguono l'approccio Micro-kernel.

2. Aggiunta/rimozione di funzionalità al kernel

Mentre i tradizionali sistemi simili a Unix/Unix richiedono il collegamento statico di nuovi moduli aggiunti, Linux supporta una potente funzionalità in cui i componenti del kernel come driver di dispositivo ecc. possono essere caricati e scaricati dinamicamente. Questa funzionalità è nota come moduli del kernel caricabili (LKM). Qualsiasi nuovo componente può essere aggiunto/rimosso come LKM al kernel. Ciò significa che non è necessario compilare nuovamente l'intero kernel. Inoltre, se un componente non è necessario, può essere facilmente scaricato. Questa caratteristica rende il kernel Linux molto flessibile.

3. Threading del kernel

Molti kernel simili a Unix sono organizzati come un insieme di thread del kernel. Un thread del kernel può essere considerato come un flusso di esecuzione indipendente. Un thread del kernel può eseguire il processo dell'utente o del codice del kernel. L'idea di base è di effettuare cambi di contesto tra i thread del kernel, il che è meno costoso dei cambi di contesto tra processi poiché i thread operano nello stesso spazio di indirizzi. Mentre molti sistemi operativi simili a Unix utilizzano i thread del kernel per il cambio di contesto del processo, Linux utilizza i thread del kernel solo per eseguire periodicamente del codice del kernel.

4. Supporto per applicazioni multithread

Quasi tutti i sistemi operativi moderni, che si tratti di distribuzioni Unix-Like o Linux, supportano il multi-threading. Un'applicazione multithread è quella che crea più di un flusso di esecuzione. Questi flussi di esecuzione indipendenti sono noti come thread. I thread sono processi leggeri. Nella maggior parte dei sistemi Unix-Like, i processi leggeri sono basati sui thread del kernel mentre in Linux questi LWP sono creati da una chiamata alla funzione clone() che consente all'applicazione di creare un processo separato come fa fork() ma la differenza è che con clone() il processo appena generato può condividere la sua memoria fisica, i file aperti, lo spazio degli indirizzi ecc. Poiché questi processi appena creati funzionano in un ambiente condiviso, quindi viene assegnato loro un nome diverso "thread". Quindi vediamo che Linux e Unix/Unix-Like differiscono nel modo in cui l'ambiente multi-thread viene gestito internamente.

5. Stream

Il sottosistema Streams I/O è incluso nella maggior parte dei kernel Unix ed è diventato un'interfaccia preferita per la scrittura di driver di dispositivo, driver di terminale ecc. Mentre d'altra parte non c'è niente come Streams in Linux.

6. Kernel preventivi vs non preventivi

I kernel preventivi sono i kernel che possono anticipare il processo attualmente in esecuzione. Significa che un processo attualmente in esecuzione può essere interrotto forzatamente se un processo con priorità più alta è pronto per l'esecuzione. D'altra parte, i kernel non preventivi sono quelli in cui un processo in esecuzione non può essere interrotto forzatamente anche se un processo con priorità più alta è pronto per l'esecuzione. Normalmente, i sistemi operativi Linux non sono preventivi mentre alcuni dei sistemi Unix come Solaris 2.x ecc. sono completamente preventivi. Di solito il sistema operativo in tempo reale ha kernel completamente preventivi. In questi giorni abbiamo Linux Real time OS che ha kernel completamente preventivi.

Quindi vediamo che sebbene Linux sia nato dall'idea di base di Unix, differisce comunque dai kernel Unix/Unix-Like in molti modi. Nonostante queste differenze, Linux eredita ancora molto da Unix ed è ancora considerato un membro della famiglia di kernel Unix.


Linux
  1. Linux:Linux è un Unix?

  2. Linux – Kernel:supporto per gli spazi dei nomi?

  3. Linux – Inoltro IP del kernel?

  4. Linux:il massimo numero di Unix?

  5. Linux:un kernel contaminato in Linux?

Kernel Linux vs. Kernel Mac

comando mkdir in Linux/Unix

Linux vs Unix

Comando Grep in Linux/UNIX

comando ls in Linux/UNIX

comando cp in Linux/UNIX