Hårdvara förhindrar att ett användarprogram får fullständig kontroll över CPU genom flera mekanismer, alla arbetar tillsammans för att upprätthålla en avgörande princip:
skydd . Dessa mekanismer finns främst i själva CPU och minneshanteringsenheten (MMU):
1. Ringade skydds-/privilegieringsnivåer: De flesta moderna CPU:er använder en ringad skyddsmodell. Detta delar CPU:s exekveringslägen i koncentriska ringar, var och en med minskande privilegieringsnivåer. Den innersta ringen (ring 0 eller kärnläge) har fullständig tillgång till all hårdvara och resurser. Användarprogram körs vanligtvis i en högre ring (ring 3 eller användarläge), starkt begränsat i vad de direkt kan komma åt eller köra. Försök att utföra privilegierade instruktioner (t.ex. direkt åtkomst till I/O -portar, manipulera CPU:s interna register på sätt som kan kompromissa med systemet) från en högre ring kommer att resultera i en fälla eller undantag, överföring av kontrollen till operativsystemet (KERNEL).
2. Memory Management Unit (MMU): MMU är en avgörande hårdvarukomponent som översätter virtuella adresser som används av program till fysiska adresser i RAM. Det verkställer flera viktiga skyddsmekanismer:
* virtuellt minne: Varje process ges sitt eget virtuella adressutrymme och isolerar det från andra processer. Även om en process har ett fel som skriver över minnet, kommer det osannolikt att påverka andra processer eftersom MMU kommer att översätta sina åtkomst till sitt eget tilldelade utrymme.
* Segmentering/personsökning: Dessa är metoder som används av MMU för att dela minne i segment eller sidor. Åtkomstbehörigheter (läs, skriv, kör) kan tilldelas individuellt till varje segment eller sida. MMU kontrollerar dessa behörigheter innan du tillåter minnesåtkomst, förhindrar att ett användarprogram till exempel skriver till kärnans kodsegment eller läser känslig data från en annan processs minne.
* Adressöversättning: MMU förhindrar ett program från att direkt komma åt fysiska minnesadresser. Den avlyssnar alla minnesåtkomst och validerar dem mot åtkomstkontrolllistorna innan de tillåter dem.
3. Avbrott och undantag: Hårdvaruavbrott (t.ex. från en timer, tangentbord eller nätverksadapter) och programvaruundantag (t.ex. division med noll, olaglig instruktion) orsakar en överföring av kontroll till operativsystemets kärna. Detta förhindrar ett användarprogram från att monopolisera CPU på obestämd tid och gör det möjligt för operativsystemet att hantera resurser och hantera händelser. Kärnan bestämmer sedan lämplig åtgärd, som kan inkludera att säga upp det kränkande programmet.
4. Timers: CPU har interna timers som regelbundet avbryter det löpande programmet, vilket gör att operativsystemet kan schemalägga andra processer och förhindra att något program körs för evigt. Utan detta kan ett felaktigt program hålla CPU gisslan.
5. Skyddade instruktioner: Vissa instruktioner är privilegierade och kan endast köras i kärnläge. Att försöka utföra en privilegierad instruktion från användarläge resulterar i en fälla, vilket förhindrar obehörig åtkomst till hårdvara och systemresurser.
Sammanfattningsvis fungerar en kombination av hårdvarufunktioner som ringskydd, MMU:s minneshanteringsfunktioner, avbrottshantering, timers och skyddade instruktioner i samarbete med operativsystemet för att förhindra ett användarprogram från att uppnå fullständig kontroll av CPU:er, upprätthålla systemstabilitet och säkerhet. Om någon enskild komponent skulle misslyckas skulle de andra fortfarande erbjuda ett mått på skydd, men den övergripande systemsäkerheten skulle minskas.