2015-04-20 14 views
5

Per confrontare le modalità del processore ARM con le modalità di funzionamento x86 (da ring0 a squillo 3), la modalità utente è simile a ring3, in cui vengono eseguiti i programmi di spazio utente. Tuttavia, non sono in grado di correlare ring0 con la modalità di sistema o con la modalità supervisore. A seconda della fonte di informazioni, sembra che entrambe le modalità possano svolgere il compito di eseguire un kernel in modalità privilegiata. Le uniche differenze tra le due modalità che ho potuto accertare sono le follwoing:In che modo la modalità di sistema ARM è diversa dalla modalità di supervisione braccio?

  1. registri 13 e 14 sono inclinate in modo supervisore, mentre per la modalità sistema, tutti i registri 15 sono uguali.
  2. La modalità di sistema non può essere immessa direttamente su un'eccezione, mentre la modalità supervisore può.
  3. La modalità di sistema impedisce in qualche modo la corruzione dei registri di collegamento.

puoi spiegarmi le differenze tra le modalità, che una persona proveniente da x86 può comprendere?

Inoltre, come le sottili differenze architettoniche tra le modalità, come il numero di registri in pila, rendono l'una migliore dell'altra?

+0

Mentre la tua domanda ha senso, una risposta è utile solo a qualcuno che codifica un sistema operativo ARM. Devi leggere molti libri prima di poter scrivere e progettare un sistema operativo simile. Quindi, mentre qualcuno può rispondere a questa domanda, metterei in dubbio il valore della risposta a qualcuno che fa questa domanda? In breve, le modalità non sono come ** anelli **; dimentica quella conoscenza/concetto mentre leggi l'ARM. Vai a studiare qualche fonte e fare domande. Come utilizzare le modalità è una scelta progettuale del sistema operativo e relativa agli interruttori di contesto. Hai i dettagli tecnici minori a destra. –

+0

In questo momento sto facendo un sondaggio di letteratura sugli hypervisor per ARM, e mentre leggevo uno dei documenti mi sono imbattuto in questo concetto. Il riferimento ARM online non dice molto. –

+0

Per un 'hypervisor', è necessario salvare/ripristinare tutti i registri su uno switch SO guest; soprattutto se non paravirtualizzato. Lo stesso vale per [tag: trust-zone]. Leggi [domande su "arm banked"] (http://stackoverflow.com/search?tab=votes&q=%5Barm%5D%20banked%20is%3aquestion) e forse [questa risposta] (http://stackoverflow.com/ domande/2784978/esplicitamente-accesso-banked-registers-on-arm/24707254? s = 1 | 13.7935 # 24707254) e [questo quesiton] (http://stackoverflow.com/questions/20315788/state-of-ttbr0- 1-wrt-to-multiple-guests-in-case-of-virtualization-in-arm) può essere utile per il soggetto. –

risposta

2

Penso che ARM ARM sia abbastanza chiaro (vedi sotto), non penso che l'X86 pensi solo a cosa queste modalità di processori ti permettono di fare o non fare. E di cosa avresti bisogno in un sistema operativo e quali modalità sono utili o meno.

Hai utente e sistema e quindi le modalità di eccezione. Le loro restrizioni sono documentate AFAIK. I bracci recenti hanno ancora più funzionalità/restrizioni/protezioni, ecc

dal braccio ARM

maggior parte dei programmi applicativi eseguiti in modalità utente. Quando il processore è in modalità Utente, il programma in esecuzione non è in grado di accedere ad alcune risorse di sistema protette o di modificare la modalità, se non provocando un'eccezione (consultare Eccezioni a pagina A2-16). Ciò consente al sistema operativo opportunamente scritto di controllare l'utilizzo delle risorse del sistema . Le modalità diverse dalla modalità Utente sono conosciute come modalità privilegiate . Hanno pieno accesso alle risorse di sistema e possono cambiare la modalità liberamente. Cinque di essi sono noti come modalità eccezionali:

-FIQ

-IRQ

-Supervisor

-Abort

-Undefined.

Questi sono immessi quando si verificano specifiche eccezioni. Ciascuno di essi ha alcuni registri aggiuntivi per evitare di corrompere lo stato della modalità Utente quando si verifica l'eccezione (per i dettagli vedere Registri a pagina A2-4).

La modalità rimanente è la modalità di sistema, che non è immessa da alcuna eccezione e ha esattamente gli stessi registri disponibili come modalità utente. Tuttavia, è una modalità privilegiata e pertanto non è soggetta alle limitazioni della modalità utente .È destinato all'uso da parte del sistema operativo attività che richiedono l'accesso alle risorse di sistema, ma si desidera evitare di utilizzare i registri aggiuntivi associati alle modalità di eccezione. Evitando lo tale uso si assicura che lo stato dell'attività non sia corrotto dall'occorrenza di alcuna eccezione.

La modalità di supervisione è ciò che si preme quando si effettua la chiamata svc o sys (stessa istruzione penso che abbiano cambiato il nome da svc). Simile a un 21h int nei giorni dos, questo è il modo in cui tu, dalla modalità utente senza autorizzazioni, chiedi al sistema operativo di fare qualcosa. Questo commuta il controllo in modalità supervisore e una volta in modalità supervisore è possibile gestirlo lì o cambiare modalità, ecc ... Una volta che si passa all'utente, non è possibile uscire. Ad esempio, se si desidera impostare lo stack utente, non è possibile farlo facilmente in modalità utente e quindi tornare alle attività del sistema operativo. quindi hai bisogno di una modalità privilegiata che se non altro ha accesso al registro utente.

+0

Potete per favore alcuni esempi in cui preferirei rigorosamente una modalità rispetto all'altra. Ad esempio se nel supervisore esiste una possibilità di corruzione dei registri di collegamento, allora come fa un sistema operativo in esecuzione in quella modalità a evitare la corruzione, tutti gli interrupt sono disabilitati all'ingresso in modalità supervisore? Inoltre, cosa succede quando si verifica un interrupt in modalità di sistema, i primi registri sono comuni in tutte le modalità e il gestore di interrupt, se lo desidera, può ancora scrivere su questi, corrompendo così lo stato delle attività? –

+0

Il sistema operativo è affidabile, quindi se ci sono bug o problemi, il sistema è vulnerabile o si blocca. Presumo il modo in cui funziona la gestione degli interrupt è che l'OS prende nota dell'interrupt in quella modalità, quindi pulisce e in un'altra modalità chiama il gestore, che probabilmente è il primo anche nell'OS ma potrebbe chiamare il codice utente in modalità utente. –

+0

Se la modalità utente cancella i suoi registri, oh, il supervisore, se interessato, può salvare e ripristinare lo stato con il proprio stack. se la modalità utente, come risultato, esegue istruzioni indefinite o esce dallo spazio degli indirizzi consentito, verrà catturata da un gestore gestito dal sistema operativo, ma che di per sé non rimuoverà il sistema operativo. –

Problemi correlati