Un sistema operativo, abbreviato come sistema operativo, è un software che controlla i componenti hardware di un sistema, che si tratti di un telefono, un laptop o un desktop. È responsabile della comunicazione tra il software e l'hardware. Windows XP, Windows 8, Linux e Mac OS X sono tutti esempi di sistemi operativi. Il sistema operativo è costituito da:
Spazio del kernel e spazio utenti
Spazio del kernel: Il kernel si trova in uno stato di sistema elevato, che include uno spazio di memoria protetto e il pieno accesso all'hardware del dispositivo. Questo stato di sistema e lo spazio di memoria è del tutto chiamato kernel-space. All'interno dello spazio del kernel l'accesso al nucleo agli hardware e ai servizi di sistema viene gestito e fornito come servizio al resto del sistema.
Spazio utente: Le applicazioni dell'utente vengono eseguite nello spazio utente, dove possono raggiungere un sottoinsieme delle risorse disponibili della macchina tramite le chiamate di sistema del kernel. Utilizzando i servizi core forniti il kernel, ad esempio un'applicazione a livello di utente può essere creata come un software di produttività di gioco o ufficio.
Linux
Linux ha guadagnato popolarità nel corso degli anni a causa di open source, quindi sulla base di un design simile a Unix, e portato su più piattaforme rispetto ad altri sistemi operativi concorrenti. È un sistema operativo, come indicato, che ricorda un sistema operativo UNIX-un sistema operativo multi-tasking stabile e che è stato assemblato come software gratuito e open source per lo sviluppo e la distribuzione. Significa che ogni individuo o azienda ha il permesso di utilizzare, imitare, studiare e alterare il sistema operativo Linux in qualsiasi modo desidera.
Il kernel Linux
Dalla sua prima uscita del 17 settembre 1991, il kernel Linux ha sfidato tutte le probabilità per essere il componente di definizione di Linux. È stato rilasciato da Linus Torvalds e utilizza GNU/Linux per descrivere il sistema operativo. Il sistema operativo Android con sede a Kernel Linux su smartphone ha fatto battere Linux la concorrenza per essere la più grande base di sistema operativo installato di tutti i sistemi operativi per scopi generici. La storia del kernel Linux è disponibile qui.
Un kernel può essere monolitico, microkernel o ibrido (come OS X e Windows 7). Il kernel Linux è un kernel monolitico del sistema operativo che ricorda il sistema UNIX. La linea Linux di sistemi operativi comunemente indicati come distribuzioni Linux si basa su questo kernel. Il kernel monolitico, a differenza del microkernel, non solo comprende l'unità di elaborazione centrale, la memoria e l'IPC, ma ha anche driver di dispositivi, chiamate di server di sistema e gestione del file system. Sono i migliori nel comunicare con l'hardware e svolgono diverse attività contemporaneamente. È per questo motivo che i processi qui reagiscono a una velocità rapida.
Tuttavia, i pochi battute d'arresto sono l'enorme impronta di installazione e memoria necessarie e inadeguata alla sicurezza poiché tutto opera in modalità supervisore. Al contrario, un microkernel può reagire lentamente alle chiamate di applicazione come servizi utente e il kernel sono separati. Sono quindi di dimensioni più piccole rispetto al kernel monolitico. I microkernel sono facilmente estensibili, ma è necessario più codice per scrivere un microkernel. Il kernel Linux è scritto nei linguaggi di programmazione C e Assembly.
La relazione del kernel Linux con l'hardware
Il kernel può gestire l'hardware del sistema attraverso quello che viene definito interruzione. Quando l'hardware desidera interfacciarsi con il sistema, viene emesso un interrupt che interrompe il processore che a sua volta fa lo stesso al kernel. Per fornire la sincronizzazione, il kernel può disabilitare gli interrupt, che si tratti di uno o di tutti loro. In Linux, tuttavia, i gestori di interrupt non vengono eseguiti in un contesto di processo, invece vengono eseguiti in un contesto di interruzione non associati a nessun processo.Questo particolare contesto di interrupt esiste esclusivamente per consentire a un gestore di interrupt di rispondere rapidamente a un singolo interrupt e infine uscire.
Ciò che rende il kernel Linux diverso dagli altri kernel unix classici?
Esistono differenze significative tra il kernel Linux e i classici kernel UNIX; come elencato di seguito:
Componenti del kernel Linux
Un kernel è semplicemente un gestore delle risorse; La risorsa gestita può essere un dispositivo di processo, memoria o hardware. Gestisce e arbitro l'accesso alla risorsa tra più utenti concorrenti. Il kernel Linux esiste nello spazio del kernel, sotto lo spazio utenti, che è dove vengono eseguite le applicazioni dell'utente. Affinché lo spazio dell'utente possa comunicare con lo spazio del kernel, è incorporata una libreria GNU C che fornisce un forum per l'interfaccia di chiamata di sistema per connettersi allo spazio del kernel e consentire la transizione allo spazio utenti.
Il kernel Linux può essere classificato in tre livelli principali:
La prospettiva architettonica del kernel Linux è costituita da: interfaccia di chiamata di sistema, gestione dei processi, file system virtuale, gestione della memoria, stack di rete, architettura e driver di dispositivo.
Chiamate e interruzioni di sistema
Le applicazioni trasmettono informazioni al kernel tramite le chiamate di sistema. Una libreria contiene funzioni con cui le applicazioni funzionano. Le librerie quindi, tramite l'interfaccia di chiamata di sistema, indicano al kernel di eseguire un'attività che l'applicazione desidera. Cos'è una chiamata di sistema Linux?
Gli interrupt offrono un modo attraverso il quale il kernel Linux gestisce l'hardware dei sistemi. Se l'hardware deve comunicare con un sistema, un interrupt sul processore fa il trucco e questo viene trasmesso al kernel Linux.
Interfacce del kernel Linux
Il kernel Linux offre varie interfacce alle applicazioni di spazio utente che eseguono una varietà di attività e hanno proprietà diverse. Esistono due distinte interfaccia di programmazione dell'applicazione (API); IL Spazio dell'utente del kernel e il Kernel Internal. L'API Linux è il Kernel-Userspace API; Dà accesso ai programmi nello spazio dell'utente nelle risorse e nei servizi di sistema del kernel. È composto dall'interfaccia di chiamata di sistema e dalle subroutine dalla libreria GNU C.
Linux Abi
Questo si riferisce all'utente del kernel ABI (applicazione binaria interfaccia). Questo è spiegato come l'interfaccia che esiste tra i moduli del programma. Quando si confrontano API e ABI, la differenza è che gli ABI vengono utilizzati per accedere a codici esterni già compilati mentre l'API sono strutture per la gestione del software. Definizione di un ABI importante è principalmente il lavoro delle distribuzioni Linux che per il kernel Linux. Un ABI specifico dovrebbe essere definito per ciascun set di istruzioni, ad esempio x86-64. Gli utenti finali dei prodotti Linux sono interessati all'ABIS piuttosto che all'API.
Interfaccia di chiamata di sistema
Come discusso in precedenza, questo gioca un ruolo più importante nel kernel. È una denominazione di tutta la parte di tutte le chiamate di sistema esistenti.
La libreria standard C
Tutte le chiamate di sistema del kernel si trovano all'interno della libreria GNU C, mentre l'API Linux è composta dall'interfaccia di chiamata di sistema e dalla libreria GNU C, chiamata anche GLIBC.
Interfaccia del sistema operativo portatile (POSIX)
Posix è un termine collettivo di standard per mantenere la compatibilità tra i sistemi operativi. Dichiara l'API insieme a interfacce di utilità e shell della riga di comando. L'API Linux, non solo ha le funzionalità utilizzabili definite dal posix, ma ha anche funzionalità aggiuntive nel suo kernel:
Ulteriori informazioni sullo standard Posix sono qui.
Le versioni precedenti del kernel Linux erano in modo tale che tutte le loro parti fossero state fissate staticamente in una sola, monolitica. Tuttavia, i moderni kernel Linux hanno la maggior parte delle loro funzionalità contenute nei moduli che vengono inseriti nel kernel dinamicamente. Questo in contrasto con i tipi monolitici, è indicato come kernel modulari. Tale configurazione consente a un utente di caricare o sostituire i moduli in un kernel in esecuzione senza la necessità di riavvio.
Il modulo kernel carico Linux (LKM)
Il modo base di aggiungere codice nel kernel Linux è attraverso l'introduzione di file di origine all'albero di origine del kernel. Tuttavia, potresti voler aggiungere un codice mentre il kernel è in esecuzione. Il codice aggiunto in questo modo viene definito un modulo di kernel carico. Questi moduli particolari eseguono vari compiti ma sono specificati in tre: driver di dispositivo, driver di file system e chiamate di sistema.
Il modulo del kernel carico può essere confrontato con le estensioni del kernel in altri sistemi operativi. È possibile inserire un modulo nel kernel caricandolo come LKM o legandolo nel kernel di base.
I vantaggi di LKMS rispetto alla rilegatura nel kernel di base:
Usi di LKMS
A differenza di quello che dice la maggior parte delle persone, la compilazione del kernel Linux è un compito semplice. Quello che segue è un'illustrazione passo-passo del processo utilizzando una delle distribuzioni Linux: Fedora 13 KDE. (È consigliabile eseguire il backup dei dati e della grub.conf nel caso in cui qualcosa vada storto)
TAR XVJF Linux-2.6.37.catrame.BZ2 |
È possibile aggiornare un kernel Linux da una versione precedente a una più recente, mantenendo tutte le opzioni di configurazione dalla versione precedente. Per raggiungere questo obiettivo, si deve prima eseguire il backup del .configurazione file nella directory di origine del kernel; Questo è nel caso in cui qualcosa vada storto quando si cerca di aggiornare il kernel. I passaggi sono:
Scaricare la nuova fonte; Gli sviluppatori del kernel Linux comprendono che alcuni utenti potrebbero non voler scaricare il codice sorgente completo per gli aggiornamenti del kernel, in quanto ciò perdesse tempo e larghezza di banda. Pertanto, è disponibile una patch che può aggiornare una vecchia versione del kernel. Gli utenti devono solo sapere quale patch si applica a una versione particolare, poiché un file patch del kernel aggiornerà solo il codice sorgente da una versione specifica. I diversi file di patch possono essere applicati attraverso i seguenti modi;
Ecco passaggi più dettagliati per il processo per aggiornare il tuo kernel da Source su Debian e dai binari pre-costruiti su CentOS e Ubuntu.
Il kernel Linux agisce principalmente come un gestore delle risorse che funge da livello astratto per le applicazioni. Le applicazioni hanno una connessione con il kernel che a sua volta interagisce con l'hardware e servizi le applicazioni. Linux è un sistema multitasking che consente a più processi di eseguire contemporaneamente. Il kernel Linux è popolare grazie alla sua natura open source che consente agli utenti di modificare il kernel su ciò che è adatto a loro e al loro hardware. Pertanto può essere utilizzato in una varietà di dispositivi, a differenza di altri sistemi operativi.
La caratteristica modulare del kernel Linux aggiunge più brivido ai suoi utenti. Ciò è dovuto all'ampia varietà di modifiche che possono essere apportate qui senza riavviare il sistema. La flessibilità offre ai suoi utenti una grande stanza per attuare la loro immaginazione.
Inoltre, la natura monolitica del kernel è un grande vantaggio in quanto ha un'elevata capacità di elaborazione rispetto al microkernel. La battuta d'arresto principale con il tipo di kernel Linux è che se uno qualsiasi dei suoi servizi fallisce, l'intero sistema si abbassa con esso. Le versioni più recenti sono state progettate in modo tale che se viene aggiunto un nuovo servizio, non è necessario modificare l'intero sistema operativo. Questo è un miglioramento rispetto alle versioni precedenti.