Quando si apprende di più su come i sistemi operativi e l'hardware su cui lavorano funzionano e interagiscono tra loro, si può essere sorpresi per vedere ciò che sembra essere stranezze o sottoutilizzazione di "risorse" che si verificano. Perché? Il post di Q & A di SuperUser di oggi ha la risposta alla domanda di un curioso lettore.
La sessione di domande e risposte di oggi ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte.
Foto per gentile concessione di Lemsipmatt (Flickr).
Il lettore SuperUser AdHominem vuole sapere perché le CPU x86 usano solo due anelli su quattro:
I sistemi x86 basati su Linux e Windows usano solo Anello 0 per modalità kernel e suoneria 3 per la modalità utente. Perché i processori addirittura distinguono quattro anelli diversi se finiscono tutti con solo due di essi? È cambiato con l'architettura AMD64?
Perché le CPU x86 usano solo due anelli su quattro?
Il collaboratore SuperUser Jamie Hanrahan ha la risposta per noi:
Ci sono due ragioni principali.
Il primo è che, sebbene le CPU x86 offrano quattro anelli di protezione della memoria, la granularità della protezione offerta è quindi solo a livello di segmento. Cioè, ogni segmento può essere impostato su un anello specifico (livello privilegiato) insieme ad altre protezioni come disabilitato in scrittura. Ma non ci sono molti descrittori di segmenti disponibili. La maggior parte dei sistemi operativi vorrebbe avere una granularità molto più fine della protezione della memoria, come ... per le singole pagine.
Quindi, inserire la protezione basata sulla tabella delle pagine. La maggior parte, se non tutti, i moderni sistemi operativi x86 ignorano più o meno il meccanismo di segmentazione (per quanto possano comunque) e fanno affidamento sulla protezione disponibile dai bit di basso ordine nelle voci della tabella di pagina. Uno di questi è chiamato il bit "privilegiato". Questo bit controlla se il processore deve essere in uno dei livelli "privilegiati" per accedere alla pagina. I livelli "privilegiati" sono PL 0, 1 e 2 . Ma è solo un bit, quindi a livello di protezione pagina per pagina, il numero di "modi" disponibili per quanto riguarda la protezione della memoria è solo due: una pagina può essere accessibile dalla modalità non privilegiata, o no. Quindi, solo due anelli. Per avere quattro possibili anelli per ogni pagina, dovrebbero avere due bit di protezione in ogni voce della tabella di pagina per codificare uno dei quattro possibili numeri di squilli (proprio come i descrittori di segmento). Tuttavia, non lo fanno.
L'altro motivo è il desiderio di portabilità del sistema operativo. Non si tratta solo di x86; Unix ci ha insegnato che un sistema operativo poteva essere relativamente portabile a più architetture di processore e che era una buona cosa. E alcuni processori supportano solo due anelli. Non dipendendo da più anelli nell'architettura, gli implementatori del sistema operativo rendevano più portatili i sistemi operativi.
C'è una terza ragione specifica dello sviluppo di Windows NT. I progettisti di NT (David Cutler e il suo team, che Microsoft aveva ingaggiato dai DEC Western Region Labs) avevano una vasta esperienza precedente su VMS; infatti, Cutler e alcuni altri erano tra i designer originali di VMS. E il processore VAX per il quale VMS è stato progettato ha quattro squilli (VMS utilizza quattro squilli).
Ma i componenti che giravano in VMS Anelli 1 e 2 (Record Management Services e CLI, rispettivamente) sono stati lasciati fuori dal design NT. Ring 2 in VMS non riguardava la sicurezza del sistema operativo, ma piuttosto la conservazione dell'ambiente CLI dell'utente da un programma all'altro, e Windows non aveva quel concetto; la CLI funziona come un processo ordinario. Come per VMS Ring 1 , il codice RMS in Ring 1 doveva chiamare in Ring 0 abbastanza spesso, e le transizioni degli squilli sono costose. Si è rivelato molto più efficiente andare a Ring 0 e farlo con piuttosto che avere un sacco di Ring 0 transizioni all'interno del Ring 1 codice (di nuovo, non che NT abbia comunque qualcosa come RMS).
Per quanto riguarda il motivo per cui x86 ha implementato quattro anelli mentre i sistemi operativi non li usavano, si parla di sistemi operativi di progettazione molto più recente di x86. Molte delle funzionalità di programmazione del sistema di x86 sono state progettate molto tempo prima che venissero implementati NT o veri kernel Unix-ish e non sapevano realmente quale sarebbe stato il sistema operativo. Non è stato fino a quando non abbiamo avuto il paging su x86 che potremmo implementare veri kernel Unix-ish o VMS.
Non solo i moderni sistemi operativi x86 ignorano in gran parte la segmentazione (hanno appena impostato i segmenti C, D e S con un indirizzo di base di 0 e una dimensione di 4 GB, i segmenti F e G sono talvolta utilizzati per indicare le strutture di dati del sistema operativo chiave), ignorano anche in gran parte cose come "segmenti dello stato di attività". Il meccanismo TSS è stato chiaramente progettato per il cambio di contesto dei thread, ma risulta avere troppi effetti collaterali, quindi i moderni sistemi operativi x86 lo fanno "a mano". L'unica volta che x86 NT cambia le attività hardware è per alcune condizioni davvero eccezionali, come un'eccezione a doppio errore.
Per quanto riguarda l'architettura x64, molte di queste funzionalità dismesse sono state tralasciate. A loro merito, AMD ha effettivamente parlato con i team del kernel del sistema operativo e ha chiesto cosa avevano bisogno di x86, cosa non avevano bisogno o non volevano e cosa avrebbero voluto aggiungere. I segmenti su x64 esistono solo in quella che potrebbe essere chiamata forma vestigiale, la commutazione dello stato delle attività non esiste, ecc., Ei sistemi operativi continuano a utilizzare solo due squilli.
Hai qualcosa da aggiungere alla spiegazione? Audio disattivato nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla il thread completo di discussione qui.
Perché vuoi un monitor TV o computer curvo?
I televisori curvi sono stati ovunque al CES 2015. Non stiamo esagerando: quasi tutti i televisori mostrati erano curvi anziché piatti! Ma qual è il vantaggio di una TV curva, comunque? Non si trattava solo di TV. Anche Samsung stava mostrando monitor curvi per computer. I televisori 4K saranno utili un giorno, ma non siamo così sicuri dei televisori curvi.
Come ottenere una notifica quando Caps Lock o Num Lock sono abilitati in Ubuntu
Se hai accidentalmente attivato Caps Lock troppe volte - siamo stati tutti lì - ecco un soluzione. È possibile aggiungere un indicatore al pannello superiore che mostra lo stato dei tasti Bloc Maiusc, Bloc Num e Bloc Scorr, che avvisano quando si preme uno di essi. CORRELATO: Come disabilitare o riassegnare Tasto Bloc Maiusc in qualsiasi sistema operativo Certo, è possibile disattivare o riassegnare il tasto Bloc Maiusc, ma se lo si utilizza occasionalmente, questa è la cosa migliore.