Linux utilizza anelli di protezione?
Anelli di protezione
Ciò consente un’intera gerarchia di segmenti e autorizzazioni tra di loro. Potresti aver notato una chiamata a segmento incrociato suona esattamente come una chiamata di sistema. Se hai mai esaminato l’assemblaggio Linux x86, il modo standard per effettuare una chiamata di sistema è int 0x80, che aumenta l’interruzione 0x80 . Un interrupt interrompe il processore e va a un cancello di interrupt, che poi funziona allo stesso modo di un gate di chiamata: cambia il livello di privilegio e ti rimbalza in qualche altra area di codice .
Linux utilizza anelli di protezione?
Abbiamo menzionato come uno dei principali compiti del sistema operativo è implementare la sicurezza; vale a non consentire a un’applicazione o dell’utente di interferire con qualsiasi altra in esecuzione nel sistema. Ciò significa che le applicazioni non dovrebbero essere in grado di sovrascrivere la memoria o i file degli altri e accedere solo alle risorse di sistema come dettate dalla politica di sistema.
Tuttavia, quando un’applicazione è in esecuzione, ha un uso esclusivo del processore. Vediamo come funziona quando esaminiamo i processi nel prossimo capitolo. Garantire che l’applicazione acceda solo la memoria che possiede sia implementato dal sistema di memoria virtuale, che esaminiamo nel capitolo successivo. Il punto essenziale è che l’hardware è responsabile dell’applicazione di queste regole.
L’interfaccia di chiamata di sistema che abbiamo esaminato è il gateway per l’applicazione che arriva alle risorse di sistema. Costringendo l’applicazione a richiedere risorse tramite una chiamata di sistema nel kernel, il kernel può far rispettare le regole su quale tipo di accesso può essere fornito. Ad esempio, quando un’applicazione effettua una chiamata di sistema aperta () per aprire un file sul disco, controllerà le autorizzazioni dell’utente rispetto alle autorizzazioni del file e consentirà o negerà l’accesso.
4 . 1 . 1 livelli di privilegio
La protezione dell’hardware può di solito essere vista come un insieme di anelli concentrici attorno a un set di operazioni fondamentali.
Livelli di privilegio su X86
Figura 4 . 1 . 1 . 1 anelli
Nell’anello interno la maggior parte sono le istruzioni più protette; quelli che solo il kernel dovrebbero essere autorizzati a chiamare. Ad esempio, l’istruzione HLT per fermare il processore non dovrebbe essere consentita di essere eseguita da un’applicazione dell’utente, poiché impedirebbe all’intero computer di lavorare. Tuttavia, il kernel deve essere in grado di chiamare queste istruzioni quando il computer è legittimamente chiuso. 1
Ogni anello interno può accedere a tutte le istruzioni protette da un anello più lontano, ma non protetti da un anello più avanti. Non tutte le architetture hanno più livelli di anelli come sopra, ma la maggior parte fornirà almeno un livello “kernel” e “utente”.
4 . 1 . 1 . 1 modello di protezione 386
Il modello di protezione 386 ha quattro anelli, sebbene la maggior parte dei sistemi operativi (come Linux e Windows) usano solo due degli anelli per mantenere la compatibilità con altre architetture che non consentono tanti livelli di protezione discreti.
386 mantiene i privilegi facendo in esecuzione ogni codice applicazione nel sistema ha un piccolo descrittore, chiamato a descrittore di codice, che descrive, tra le altre cose, il suo livello di privilegio. Quando si esegue il codice dell’applicazione fa un salto in qualche altro codice al di fuori della regione descritta dal suo descrittore di codice, il livello di privilegio dell’obiettivo viene verificato. Se è superiore al codice attualmente in esecuzione, il salto è vietato dall’hardware (e l’applicazione si bloccherà).
4 . 1 . 1 . 2 Aumentazione del privilegio
Le applicazioni possono aumentare il loro livello di privilegio solo con chiamate specifiche che lo consentono, come l’istruzione di implementare una chiamata di sistema. Questi sono di solito indicati come a Call Gate Perché funzionano proprio come un cancello fisico; una piccola entrata attraverso un muro altrimenti impenetrabile. Quando si chiama quell’istruzione, abbiamo visto come l’hardware interrompe completamente l’applicazione in esecuzione e il controllo delle mani sul kernel. Il kernel deve fungere da gatekeeper; Garantire che nulla di cattivo stia arrivando attraverso il cancello. Ciò significa che deve controllare attentamente gli argomenti di chiamata del sistema per assicurarsi che non si ingannerà nel fare qualsiasi cosa non dovrebbe (se può essere, questo è un bug di sicurezza). Mentre il kernel funziona nell’anello più interno, ha autorizzazioni per eseguire qualsiasi operazione che desidera; Al termine, restituirà il controllo all’applicazione che sarà nuovamente in esecuzione con il livello di privilegio inferiore.
4 . 1 . 1 . 3 chiamate di sistema veloci
Un problema con le trappole come descritto sopra è che sono molto costosi da implementare per il processore. C’è molto stato da salvare prima che il contesto possa cambiare. I processori moderni hanno realizzato questo aereo e si sforzano di ridurlo.
Per comprendere il meccanismo di chiamata sopra descritto, è necessario indagini sul regime di segmentazione ingegnoso ma complicato utilizzato dal processore. Il motivo originale per la segmentazione era essere in grado di utilizzare più di 16 bit disponibili in un registro per un indirizzo, come illustrato nella Figura 4 . 1 . 1 . 3 . 1, x86 Indirizzamento della segmentazione.
Segmentazione che espande lo spazio degli indirizzi di un processore dividendolo in blocchi. Il processore mantiene i registri speciali di segmento e gli indirizzi sono specificati da un registro dei segmenti e una combinazione di offset. Il valore del registro del segmento viene aggiunto alla parte offset per trovare un indirizzo finale.
Figura 4 . 1 . 1 . 3 . 1 x86 Indirizzamento di segmentazione
Quando X86 è passato a registri a 32 bit, lo schema di segmentazione è rimasto ma in un formato diverso. Invece di dimensioni del segmento fisso, i segmenti possono avere qualsiasi dimensione. Ciò significa che il processore deve tenere traccia di tutti questi diversi segmenti e le loro dimensioni, che utilizza descrittori. I descrittori del segmento disponibili per tutti sono conservati in Tabella del descrittore globale o GDT in breve. Ogni processo ha un numero di registri che indicano le voci nel GDT; Questi sono i segmenti a cui è possibile accedere (ci sono anche Locale tabelle descrittrici, e tutto intera
Punti chiave:
- Linux implementa la sicurezza per prevenire l’interferenza tra applicazioni e utenti.
- L’hardware impone le regole relative all’accesso alla memoria e alle risorse.
- L’interfaccia di chiamata di sistema funge da gateway per le applicazioni per accedere alle risorse di sistema.
- I livelli di privilegio determinano l’accesso a determinate istruzioni e operazioni.
- Il modello di protezione 386 ha quattro anelli, ma la maggior parte dei sistemi operativi ne utilizza solo due.
- Ogni codice dell’applicazione ha un descrittore di codice che definisce il suo livello di privilegio.
- Le applicazioni possono aumentare il loro livello di privilegio solo attraverso chiamate specifiche, come le chiamate di sistema.
- Il kernel funge da gatekeeper per garantire la sicurezza delle chiamate di sistema.
- Chiamate di sistema veloce mirano a ridurre il sovraccarico della commutazione del contesto.
- Lo schema di segmentazione X86 espande lo spazio degli indirizzi del processore.
Domande:
- Qual è lo scopo di implementare la sicurezza in un sistema operativo?
- In che modo l’hardware impone le regole di accesso alla memoria?
- Quale ruolo svolge l’interfaccia di chiamata di sistema nell’accesso alle risorse di sistema?
- Come vengono utilizzati i livelli di privilegio nella protezione dell’hardware?
- Quanti anelli ha il modello di protezione 386?
- Cos’è un descrittore di codice?
- Come possono le applicazioni aumentare il loro livello di privilegio?
- Qual è il ruolo del kernel come gatekeeper?
- Qual è l’obiettivo delle chiamate di sistema veloce?
- Perché è stata introdotta la segmentazione nel processore X86?
- Come funziona lo schema di segmentazione X86?
- Cosa sono i descrittori di segmenti e dove vengono archiviati?
Anelli di protezione
Ciò consente un’intera gerarchia di segmenti e autorizzazioni tra di loro. Potresti aver notato una chiamata a segmento incrociato suona esattamente come una chiamata di sistema. Se hai mai esaminato l’assemblaggio Linux x86, il modo standard per effettuare una chiamata di sistema è int 0x80, che aumenta l’interruzione 0x80 . Un interrupt interrompe il processore e va a un cancello di interrupt, che poi funziona allo stesso modo di un gate di chiamata: cambia il livello di privilegio e ti rimbalza in qualche altra area di codice .
Linux utilizza anelli di protezione?
Abbiamo menzionato come uno dei principali compiti del sistema operativo è implementare la sicurezza; vale a non consentire a un’applicazione o dell’utente di interferire con qualsiasi altra in esecuzione nel sistema. Ciò significa che le applicazioni non dovrebbero essere in grado di sovrascrivere la memoria o i file degli altri e accedere solo alle risorse di sistema come dettate dalla politica di sistema.
Tuttavia, quando un’applicazione è in esecuzione, ha un uso esclusivo del processore. Vediamo come funziona quando esaminiamo i processi nel prossimo capitolo. Garantire che l’applicazione acceda solo la memoria che possiede sia implementato dal sistema di memoria virtuale, che esaminiamo nel capitolo successivo. Il punto essenziale è che l’hardware è responsabile dell’applicazione di queste regole.
L’interfaccia di chiamata di sistema che abbiamo esaminato è il gateway per l’applicazione che arriva alle risorse di sistema. Costringendo l’applicazione a richiedere risorse tramite una chiamata di sistema nel kernel, il kernel può far rispettare le regole su quale tipo di accesso può essere fornito. Ad esempio, quando un’applicazione effettua una chiamata di sistema aperta () per aprire un file sul disco, controllerà le autorizzazioni dell’utente rispetto alle autorizzazioni del file e consentirà o negerà l’accesso.
4 . 1 . 1 livelli di privilegio
La protezione dell’hardware può di solito essere vista come un insieme di anelli concentrici attorno a un set di operazioni fondamentali.
Livelli di privilegio su X86
Figura 4 . 1 . 1 . 1 anelli
Nell’anello interno la maggior parte sono le istruzioni più protette; quelli che solo il kernel dovrebbero essere autorizzati a chiamare. Ad esempio, l’istruzione HLT per fermare il processore non dovrebbe essere consentita di essere eseguita da un’applicazione dell’utente, poiché impedirebbe all’intero computer di lavorare. Tuttavia, il kernel deve essere in grado di chiamare queste istruzioni quando il computer è legittimamente chiuso. 1
Ogni anello interno può accedere a tutte le istruzioni protette da un anello più lontano, ma non protetti da un anello più avanti. Non tutte le architetture hanno più livelli di anelli come sopra, ma la maggior parte fornirà almeno un livello “kernel” e “utente”.
4 . 1 . 1 . 1 modello di protezione 386
Il modello di protezione 386 ha quattro anelli, sebbene la maggior parte dei sistemi operativi (come Linux e Windows) usano solo due degli anelli per mantenere la compatibilità con altre architetture che ora consentono tanti livelli di protezione discreti.
386 mantiene i privilegi facendo in esecuzione ogni codice applicazione nel sistema ha un piccolo descrittore, chiamato a descrittore di codice, che descrive, tra le altre cose, il suo livello di privilegio. Quando si esegue il codice dell’applicazione fa un salto in qualche altro codice al di fuori della regione descritta dal suo descrittore di codice, il livello di privilegio dell’obiettivo viene verificato. Se è superiore al codice attualmente in esecuzione, il salto è vietato dall’hardware (e l’applicazione si bloccherà).
4 . 1 . 1 . 2 Aumentazione del privilegio
Le applicazioni possono aumentare il loro livello di privilegio solo con chiamate specifiche che lo consentono, come l’istruzione di implementare una chiamata di sistema. Questi sono di solito indicati come a Call Gate Perché funzionano proprio come un cancello fisico; una piccola entrata attraverso un muro altrimenti impenetrabile. Quando si chiama quell’istruzione, abbiamo visto come l’hardware interrompe completamente l’applicazione in esecuzione e il controllo delle mani sul kernel. Il kernel deve fungere da gatekeeper; Garantire che nulla di cattivo stia arrivando attraverso il cancello. Ciò significa che deve controllare attentamente gli argomenti di chiamata del sistema per assicurarsi che non si ingannerà nel fare qualsiasi cosa non dovrebbe (se può essere, questo è un bug di sicurezza). Mentre il kernel funziona nell’anello più interno, ha autorizzazioni per eseguire qualsiasi operazione che desidera; Al termine, restituirà il controllo all’applicazione che sarà nuovamente in esecuzione con il livello di privilegio inferiore.
4 . 1 . 1 . 3 chiamate di sistema veloci
Un problema con le trappole come descritto sopra è che sono molto costosi da implementare per il processore. C’è molto stato da salvare prima che il contesto possa cambiare. I processori moderni hanno realizzato questo aereo e si sforzano di ridurlo.
Per comprendere il meccanismo di chiamata sopra descritto, è necessario indagini sul regime di segmentazione ingegnoso ma complicato utilizzato dal processore. Il motivo originale per la segmentazione era essere in grado di utilizzare più di 16 bit disponibili in un registro per un indirizzo, come illustrato nella Figura 4 . 1 . 1 . 3 . 1, x86 Indirizzamento della segmentazione .
Segmentazione che espande lo spazio degli indirizzi di un processore dividendolo in blocchi. Il processore mantiene i registri speciali di segmento e gli indirizzi sono specificati da un registro dei segmenti e una combinazione di offset. Il valore del registro del segmento viene aggiunto alla parte offset per trovare un indirizzo finale.
Figura 4 . 1 . 1 . 3 . 1 x86 Indirizzamento di segmentazione
Quando X86 è passato a registri a 32 bit, lo schema di segmentazione è rimasto ma in un formato diverso. Invece di dimensioni del segmento fisso, i segmenti possono avere qualsiasi dimensione. Ciò significa che il processore deve tenere traccia di tutti questi diversi segmenti e le loro dimensioni, che utilizza descrittori. I descrittori del segmento disponibili per tutti sono conservati in Tabella del descrittore globale o GDT in breve. Ogni processo ha un numero di registri che indicano le voci nel GDT; Questi sono i segmenti a cui è possibile accedere (ci sono anche Locale tabelle descrittori, e tutto interagisce con i segmenti di stato del task, ma ora non è importante). La situazione generale è illustrata nella Figura 4 . 1 . 1 . 3 . 2, x86 segmenti .
X86 segmenti in azione. Si noti come passa un “lontano call” tramite una chiamata di chiamata che reindirizza a un segmento di codice in esecuzione a un livello di anello inferiore. L’unico modo per modificare il selettore di segmenti di codice, implicitamente utilizzato per tutti gli indirizzi di codice, è tramite il meccanismo di chiamata. Pertanto, il meccanismo di chiamata-gate garantisce che di scegliere un nuovo descrittore di segmenti e quindi possibilmente modificare i livelli di protezione, è necessario passare attraverso un punto di ingresso noto.
Figura 4 . 1 . 1 . 3 . 2 segmenti x86
Poiché il sistema operativo assegna i registri dei segmenti come parte dello stato di processo, l’hardware del processore sa quali segmenti di memoria possono accedere al processo attualmente in esecuzione protezione Per garantire che il processo non tocchi nulla che non dovrebbe. Se esce dai limiti, ricevi un guasto di segmentazione, con cui la maggior parte dei programmatori ha familiarità.
L’immagine diventa più interessante quando l’esecuzione del codice deve effettuare chiamate in codice che risiede un altro segmento. Come discusso nella Sezione 4 . 1 . 1 . 1, 386 Modello di protezione, x86 lo fa con anelli, Dove l’anello 0 è il permesso più alto, l’anello 3 è gli anelli più bassi e gli anelli interni possono accedere agli anelli esterni ma non viceversa.
Come discusso nella Sezione 4 . 1 . 1 . 2, aumentando il privilegio, quando il codice Ring 3 vuole saltare nel codice Ring 0, sta essenzialmente modificando il selettore del segmento di codice per indicare un segmento diverso. Per fare questo, deve usare uno speciale Far-Call Istruzioni che hardware garantisce i passaggi attraverso il cancello di chiamata. Non esiste un altro modo per il processo di esecuzione di scegliere un nuovo descrittore di segmenti di codice, e quindi il processore inizierà a eseguire il codice all’offset noto all’interno del segmento Ring 0, che è responsabile della manutenzione dell’integrità (E.G. non leggere codice arbitrario e forse dannoso ed eseguirlo. Naturalmente gli aggressori nefasti cercheranno sempre modi per far fare al tuo codice ciò che non intendevi!).
Ciò consente un’intera gerarchia di segmenti e autorizzazioni tra di loro. Potresti aver notato una chiamata a segmento incrociato suona esattamente come una chiamata di sistema. Se hai mai esaminato l’assemblaggio Linux x86, il modo standard per effettuare una chiamata di sistema è int 0x80, che aumenta l’interruzione 0x80 . Un interrupt interrompe il processore e va a un cancello di interrupt, che poi funziona allo stesso modo di un gate di chiamata: cambia il livello di privilegio e ti rimbalza in qualche altra area di codice .
Il problema con questo schema è che lo è lento. Ci vuole molto sforzo per fare tutto questo controllo e molti registri devono essere salvati per entrare nel nuovo codice. E sulla via del ritorno, tutto deve essere ripristinato.
Su una moderna segmentazione del sistema X86 e il sistema ad anello a quattro livelli non viene utilizzato grazie alla memoria virtuale, discussa completamente nel capitolo 6, memoria virtuale . L’unica cosa che accade davvero con la commutazione della segmentazione sono le chiamate di sistema, che essenzialmente passano dalla modalità 3 (spazio utenti) alla modalità 0 e salta al codice del gestore delle chiamate di sistema all’interno del kernel. Pertanto il processore fornisce extra Chiamata di sistema veloce Istruzioni chiamate Sysenter (e Sysexit per recuperare) che accelerano l’intero processo su una chiamata Int 0x80 rimuovendo la natura generale di una chiamata lontana-che è la possibilità di passare a qualsiasi segmento a qualsiasi livello di anello-e limitando la chiamata solo alla transizione per anello 0 in un segmento specifico e offset, come immagazzinato nei registri.
Poiché la natura generale è stata sostituita con così tante informazioni noti, l’intero processo può essere accelerato, e quindi abbiamo un suddetto Chiamata di sistema veloce. L’altra cosa da notare è che lo stato non è preservato quando il kernel ottiene il controllo. Il kernel deve stare attento a non distruggere lo stato, ma significa anche che è libero di salvare il solo poco stato quanto è necessario per fare il lavoro, quindi può essere molto più efficiente al riguardo. Questa è una filosofia molto RISC e illustra come la linea si sfocava tra processori RISC e CISC.
Per ulteriori informazioni su come questo è implementato nel kernel Linux, consultare la Sezione 8 . 1 . 1, biblioteca del kernel .
4 . 2 altri modi di comunicare con il kernel
4 . 2 . 1 ioctl
4 . 3 file system
su proc, sysfs, debugfs, ecc
Anelli di protezione

Anello 0 è il kernel modalità. Anello 3 è il utente modalità. Gli altri anelli non vengono generalmente utilizzati. Virtualbox carica il kernel della macchina virtuale Anello 1.
Modalità kernel vs esecuzione della modalità utente
In modalità kernel, il codice di esecuzione ha accesso completo e illimitato all’hardware sottostante. Può eseguire qualsiasi istruzione CPU e fare riferimento a qualsiasi indirizzo di memoria. In modalità utente, il codice di esecuzione non ha alcuna possibilità di accedere direttamente a hardware o memoria di riferimento. Il codice in esecuzione in modalità utente deve delegare alle API di sistema per accedere a hardware o memoria.
Queste due modalità non sono semplici etichette; Sono applicati dall’hardware della CPU. Se l’esecuzione del codice in modalità utente tenta di fare qualcosa al di fuori della sua visione, come, diciamo, accedere a un’istruzione CPU privilegiata o modifica della memoria a cui non ha accesso- viene lanciata un’eccezione trappabile. Invece dell’intero sistema di crash, solo quella particolare applicazione si blocca. Questo è il valore della modalità utente.
risultati corrispondenti “”
Nessun risultato corrispondente “”
Introduzione all’architettura di core Linux: anelli di protezione

Questo è il nostro prossimo articolo su Core Linux Architecture, nell’articolo precedente abbiamo appreso su diverse modalità di processore come i privilegi in cui il codice è consentito eseguire. Quindi abbiamo esaminato la modalità kernel e la modalità utente e essenzialmente gli squilli di protezione che guarderemo oggi nel diagramma seguente. Possiamo vedere i diversi anelli di protezione.
Quindi lascia’s vai avanti e inizia
Anelli di protezione in X86:
Permettere’S prima discutere di cosa è x86? E perché ne abbiamo bisogno?
X86 è un’architettura di processore molto popolare per i computer desktop e qualcosa quando si guarda negli smartphone puoi vedere questi processori i.e. Architettura del processore più popolare per dispositivi mobili in quanto è più efficiente con il suo utilizzo della batteria. Ma come i computer desktop non’T davvero ha bisogno che abbiano un po ‘di differenza. Una cosa che puoi vedere la x in x86 essenzialmente’sta solo dicendo un po ‘di numero con 86 alla fine i.e. x86 Quindi ogni volta che puoi vedere una famiglia di processori ne vedrai molti diversi, ma finiranno sempre in 86.

Quindi stiamo andando più profondamente negli anelli di protezione. Possiamo considerare gli anelli di protezione come una rappresentazione grafica dei livelli di privilegio della CPU di cui abbiamo discusso in precedenza. Nei seguenti articoli, andremo in profondità nell’architettura della CPU e come funziona la protezione? È come andare a basso livello con esso.
Sapevamo già che CPU’S “Modalità kernel” che è uguale a “Anello 0” Nel diagramma e nella CPU’S “Modalità utente” ha a che fare con “Anello 3”. Qui devi pensare all’anello 1 e 2. Essenzialmente in un moderno sistema operativo’S Incluso Linux utilizza solo l’anello 0 e l’anello 3 in architetture X86, a causa del modo in cui qualcosa chiamato a “Tabella di pagina” è implementato.
Questo è come sicuro velocemente e non c’è nessuno che’s è. Questo è il motivo per cui usiamo l’anello 0 e l’anello 3.
La tabella di pagina è un file di mappatura della memoria utilizzato dai sistemi di memoria virtuale in un sistema informatico. Anche se le architetture moderne possono avere X86 che possono avere tutti questi anelli. In un certo anello dell’ambiente di virtualizzazione, 1 viene effettivamente utilizzato. Quello’S In realtà una scatola virtuale o una macchina virtuale. Mette la VM’Il codice S kernel effettivamente nell’anello 1 e il codice kernel effettivo della macchina sottolineata è in ring 0.
Permettere’s vai avanti e vedi che già sapevamo: se tutti i processi iniziano nell’anello 3 come abbiamo già parlato, come eseguono i privilegi Ring 0? Poiché il kernel che si occupa dell’interfaccia utente o del processo o del processo di modalità so bene del sistema operativo. Questi sono gli anelli che sono essenzialmente limitati ai privilegi di Ring 0 o al tipo di privilegi del kernel.
Allora come si verifica? Come sappiamo operazioni input-output, manipolazione del file system ecc. Quello’qualcosa qualcosa chiamato interfaccia di chiamata di sistema e quello’S davvero un altro intermediario tra lo spazio utente che sono quegli elementi che stanno eseguendo nell’anello 3 e lo spazio del kernel eseguendo nell’anello 0.
Quindi i processi degli spazi utente possono essere essenzialmente utilizzati. Questa interfaccia, esso’s tipo di API kernel per far invocare il kernel alcune delle sue funzioni. Quindi lascia’s Controlla cosa è una chiamata di sistema.
Chiamata di sistema: è una richiesta al kernel mediante un processo utente per eseguire un’azione privilegiata i.e. Un’azione del kernel.
Interrupts: è un segnale emesso alla CPU che dice ” C’è un evento che ha bisogno della tua attenzione immediata”.
Cosa fa un interrupt? Come è utile? Possono avviare interrupt basati su software come interrupt basati su software. Quindi il codice su architetture CPU più moderne può utilizzare un altro processo di iniziazione anziché l’interrupt. Ma il processo principale dietro tutto è lo stesso.
Esso’s una piccola sfumatura ma a volte questi interrupt sono più intensi, devono essere certi. Quindi un tipo di architettura di sistemi più moderni invece di quegli interrupt possono avere un altro. Quindi l’idea sottolinea è la stessa.
Permettere’S Vai a un esempio di chiamata di sistema:
- Il processo dell’utente necessita di un’azione del kernel, quindi avvia un interrupt.
- L’interrupt o l’istruzione mette la CPU nell’anello 0 e passa il controllo sul kernel.
- Il kernel determina se al processo dell’utente deve essere concessa la chiamata di sistema in base ai privilegi.
- Se concesso, il kernel eseguirà la chiamata di sistema.
- Una volta terminato, il kernel inizia una modifica all’anello 3.
- Il kernel restituisce il controllo del processo utente.
Visita- Hostdens
Vishwajit Kale
Vishwajit Kale ha bloccato la scena del marketing digitale nel 2015 ed è lo stratega di marketing digitale di Hostdens, una società che mira a fornire soluzioni affidabili di web hosting. Vishwajit è esperto nel marketing digitale e dei contenuti insieme a SEO. Ama scrivere blog tecnologici, viaggiare e leggere.
Vishwajit Kale
Vishwajit Kale ha bloccato la scena del marketing digitale nel 2015 ed è lo stratega di marketing digitale di Hostdens, una società che mira a fornire soluzioni affidabili di web hosting. Vishwajit è esperto nel marketing digitale e dei contenuti insieme a SEO. Ama scrivere blog tecnologici, viaggiare e leggere.
Strati di un sistema operativo
I sistemi operativi possono essere suddivisi in una serie di livelli discreti, ciascuno con i propri privilegi. Questo sistema è noto come un anello di protezione. Il sistema operativo gestisce un computer’risorse s, come il tempo di elaborazione sulla CPU e l’accesso alla memoria. I computer spesso eseguono più processi software contemporaneamente e questi richiederanno livelli diversi di accesso a risorse e hardware.
I sistemi operativi possono essere suddivisi in una serie di livelli discreti, ciascuno con i propri privilegi. Questo sistema è noto come a anello di protezione.
Cos’è un anello di protezione?
Il sistema operativo gestisce un computer’risorse s, come il tempo di elaborazione sulla CPU e l’accesso alla memoria. I computer spesso eseguono più processi software contemporaneamente e questi richiederanno livelli diversi di accesso a risorse e hardware.
I processi vengono eseguiti a strati “anelli”, dove ogni anello ha diritti di accesso diversi per le risorse. L’anello centrale ha i privilegi più alti e ogni livello successivo ha un accesso ridotto. Un’implementazione comune di un anello di protezione per i processori X86 (un tipo comune di CPU) ha quattro anelli, numerati da 0 a 3, come descritto di seguito.
Perché strati?
Voglio mantenere
apprendimento?
Questo contenuto è prelevato da
Corso online Raspberry Pi Foundation,
Comprensione dei sistemi informatici
Visualizza il corso
Il modello a strati offre due vantaggi principali. In primo luogo, protegge dagli arresti anomali del sistema. Di solito gli errori negli anelli più alti (con meno accesso). Questo perché solo l’anello 0 ha accesso diretto alla memoria e alla CPU, quindi se un processo che esegue nell’anello esterno si blocca, può essere riavviato senza perdere dati o causare un errore nella CPU. In secondo luogo, offre una maggiore sicurezza. Per eseguire istruzioni che richiedono un maggiore accesso alle risorse, il processo deve richiedere le autorizzazioni dal sistema operativo. Il sistema operativo può quindi decidere se concedere la richiesta o negarla. Questo processo di selezione aiuta a proteggere il tuo sistema da un comportamento indesiderato o dannoso.
Le parti dell’anello di protezione
Ring 0 (più privilegiato) e 3 (meno privilegiato)
L’anello 0 è accessibile al file kernel, che è una parte centrale della maggior parte dei sistemi operativi e può accedere a tutto. Si dice che il codice in esecuzione qui sia in esecuzione Modalità kernel. I processi in esecuzione in modalità kernel possono influire sull’intero sistema; Se qualcosa fallisce qui, probabilmente si tradurrà in un arresto del sistema. Questo anello ha accesso diretto alla CPU e alla memoria del sistema, quindi qualsiasi istruzione che richiede l’uso di entrambi verrà eseguita qui.
L’anello 3, l’anello meno privato, è accessibile ai processi utente in esecuzione Modalità utente. È qui che risiede la maggior parte delle applicazioni in esecuzione sul computer. Questo anello non ha accesso diretto alla CPU o alla memoria, e quindi deve passare qualsiasi istruzione che li coinvolge per suonare 0.
Anelli 1 e 2
Gli anelli 1 e 2 hanno privilegi speciali che suonano 3 (modalità utente) non lo fa. L’anello 1 viene utilizzato per interagire e controllare l’hardware collegato al computer. Suonare una canzone tramite altoparlanti o cuffie o visualizzare video sul monitor, sono esempi di istruzioni che dovrebbero essere eseguite su questo anello. L’anello 2 viene utilizzato per le istruzioni che devono interagire con l’archiviazione del sistema, il caricamento o il salvataggio dei file. Questi tipi di autorizzazioni sono chiamati ingresso E produzione, In quanto comportano lo spostamento dei dati dentro o fuori dalla memoria di lavoro (RAM). Il caricamento di un documento Word dalla memoria, ad esempio, sarebbe in Ring 2. La visualizzazione e la modifica del documento cadrà in Ring 3, il livello dell’applicazione.
Discussione
- Pensa a un processo che potrebbe funzionare sul tuo computer, come un programma di calcolatrice o giocare. Che tipo di istruzioni sarebbero coinvolte e quali anelli userebbero?
- Cosa pensi che accadrebbe se tutto il codice funzionasse su Ring 0?
