2013-02-14 4 views
6

Ho sentito parlare di livelli privilegiati, squilli, istruzioni privilegiate, istruzioni non privilegiate, modalità utente, modalità kernel, spazio utente, spazio kernel.Che cosa decide il livello di privilegio del processo?

Il processo utente verrà eseguito con privilegi bassi in cui il processo del sistema operativo con maggiore, inoltre ho sentito parlare del registro CPL che è responsabile della protezione generale. Anche la CPU conosce solo CPL e viene decisa in base a quale istruzione di pagina appartiene.

Desidero sapere chi/cosa decide inizialmente il livello di privilegio del processo?

Quando si decide che il processo verrà eseguito con livello di privilegio basso o alto? Al momento della compilazione? Al caricamento?

Cosa indica che il programma corrente verrà eseguito con un livello di privilegio specifico? Registri di segmento? Descrittori? Caricatore?

risposta

4

Per prima cosa vedo 3 domande.

  1. Chi/Cosa decide inizialmente il livello di privilegio del processo?
  2. Quando si decide che il processo verrà eseguito con livello di privilegio basso o alto?
  3. Cosa indica che il programma corrente verrà eseguito con un livello di privilegio specifico?

In secondo luogo per confermare la definizione di alcuni termini

Quando si dice livello di privilegio, credo lei si riferisce alla the concept of level of privilege associated with CPU processor mode in contrasto con il livello generico di qualsiasi altro meccanismo privilegio a disposizione.

Quando si dice processo, credo che si stia riferendo a the concept of the currently running program in contrasto con qualche definizione alternativa.

processi utente eseguiti in modalità utente con il privilegio utente per una determinata architettura della CPU

Kernel processi vengono eseguiti in modalità kernel con il privilegio supervisore per una data architettura della CPU.

Se il processo è utente o kernel dipende da quali flag sono impostati nei descrittori di segmento quando non si utilizza il paging o nelle voci della tabella di pagina o della directory di pagina in cui viene utilizzato il paging.

Ciò significa che il livello di privilegio di un processo è determinato dal punto in cui il codice di quel processo si trova in memoria. Se è nello spazio del kernel e contrassegnato come tale usando i flag rilevanti, allora è un processo del kernel. Se è nello spazio utente e contrassegnato come tale utilizzando i flag rilevanti, allora è un processo utente.

Se il processo/programma in esecuzione non è il kernel, è un processo utente sui più moderni sistemi operativi. Quindi, quando viene presa la decisione, è al momento dell'esecuzione del programma, in particolare il tempo di inizializzazione del sistema operativo quando il kernel viene caricato per la prima volta.

O il processo è tale kernel ed è eseguito a livello di privilegio supervisore o non lo è e viene eseguito a livello di privilegio dell'utente.

La CPU controlla ogni esecuzione di qualsiasi codice o segmento di dati dalla memoria rispetto ai relativi registri di stato (registro di stato del codice su Intel X86 e registro dello stato del programma corrente su ARM).

Quando i processi utente devono accedere alle risorse del kernel, il modo generale in cui viene eseguito è consentire al processo dell'utente di chiedere il processo del kernel per suo conto effettuando una chiamata di sistema, che attiva un contesto di privilegio quando viene eseguito il processo del kernel la richiesta per il processo dell'utente.

Come nota a margine, Kernel Mode Linux, consente di eseguire i processi utente in modalità kernel/supervisor.

Riferimenti e ulteriori letture

+0

Grazie. Significa anche che ... Un caricatore e un'unità MMU/sistema di paging è inizialmente responsabile per il programma utente di caricare solo nello spazio Utente e quindi questo è il modo in cui decide indirettamente il livello di privilegio ..? –

0

maggior parte dei processori hanno una trappola o software istruzione guasto che commuta il processore in modalità privilegiata. Il kernel controlla se il processo in modalità utente ha il permesso per la particolare operazione. Poiché i dati del kernel sono protetti, il kernel può applicare la politica di sicurezza - il processo utente non può darsi direttamente le autorizzazioni.

Le autorizzazioni sono talvolta denominate privilegi, ecco perché volevo spiegare come funzionano le modalità del processore nell'imporre le autorizzazioni di sicurezza.