Minnesskydd är ett sätt att hantera åtkomsträttigheter till enskilda minnesområden. Används av de flesta multitasking-operativsystem. Huvudsyftet med minnesskydd är att förhindra en process från att komma åt minne som inte är allokerat till den processen. Sådana förbud ökar tillförlitligheten hos både program och operativsystem, eftersom ett fel i ett program inte direkt kan påverka minnet i andra applikationer. En skillnad bör göras mellan den allmänna principen om minnesskydd och ASLR- eller NX-bit- teknologier .
Alternativ definition: minnesskydd - den selektiva förmågan att förhindra en uppgift som utförs från att skriva eller läsa minne avsett av ett annat program .
Det implementeras oftast som en del av virtuell minnesadressering .
Minnessegmentering innebär att dela upp datorns minne i bitar av variabel längd som kallas segment (se Minnessegmentadressering ).
x86 - arkitekturen har flera segmenteringslägen som kan användas för att skydda minnet. [1] På x86-processorer finns det en global deskriptortabell och en lokal deskriptortabell som beskriver minnessegment. Pekare till segment i sådana processorer lagras i specialiserade segmentregister . Inledningsvis fanns det 4 av dem: CS (kodsegment), SS (stacksegment), DS (datasegment) och ES (extra segment); sedan tillkom två till: FS och GS. [ett]
Med personsökning är hela adressutrymmet uppdelat i bitar av fast storlek som kallas sidor. Deras storlek är en multipel av en potens av 2 och är vanligtvis lika med 4096, men det är möjligt att använda flera sidstorlekar samtidigt ( 4 kb, 2-4 MB i x86, från 4 till 256 kb i IA64 ). Genom att använda den virtuella minnesmekanismen kan varje sida i virtuellt minne mappas till vilken sida som helst i fysiskt minne eller markeras som skyddad. Med virtuellt minne är det möjligt att använda det linjära adressutrymmet för det virtuella minnet , som faktiskt bildas av fragmenterade sektioner av det fysiska minnets adressutrymme .
Många personsökningsarkitekturer, inklusive den mest populära x86 , implementerar minnesskydd på sidnivå.
Sidtabellen används för att mappa adresser i virtuellt minne till fysiska adresser. Vanligtvis är denna tabell osynlig för programmet. Möjligheten att ställa in godtyckliga mappningar i tabeller gör det enkelt att allokera nytt minne, eftersom ytterligare en sida placerad på rätt plats i det virtuella adressutrymmet kan mappas till valfri ledig sida i RAM.
Med denna mappning har applikationen inget sätt att komma åt en sida som inte finns i dess sidtabell. Om ingen matchande mappning hittas vid åtkomst till en godtycklig adress, uppstår ett sidfelsundantag (PF) .
Det bör noteras att ett sidfel inte är en dödlig händelse. Dessa avbrott kan användas inte bara för minnesskydd utan även på andra sätt. Så, OS, som avlyssnar PF, kan ladda sidan i minnet, till exempel om den tidigare har sökts ut till hårddisken under personsökning , varefter applikationen kan fortsätta att fungera. Detta schema låter dig på ett transparent sätt öka mängden tillgängligt minne för applikationer.
Tillämpas på System/360 , Itanium och PA-RISC .
Kapacitetsbaserad adressering används sällan i kommersiella datorer. I system med sådant minnesskydd används istället för pekare skyddade objekt (kallade kapaciteter ), som endast kan skapas av privilegierade instruktioner som exekveras antingen av OS-kärnan eller av speciella processer. Användningen av sådant skydd gör att du kan begränsa åtkomsten av processer till främmande minne utan att använda separata adressutrymmen och kontextväxlar (TLB-återställning, globala deskriptorändringar). Används i forskningsprojekt KeyKOS , EROS ; Smalltalk och Java virtuella maskiner .
Bland de operativsystem som implementerar minnesskydd
Vissa äldre hårda realtidsoperativsystem använder inte minnesskydd, även på processorer där det är möjligt. Ett exempel på ett sådant operativsystem är VxWorks- versioner upp till och med 5.
av operativsystem | Aspekter|||||
---|---|---|---|---|---|
| |||||
Typer |
| ||||
Kärna |
| ||||
Processledning _ |
| ||||
Minneshantering och adressering | |||||
Ladda och initieringsverktyg | |||||
skal | |||||
Övrig | |||||
Kategori Wikimedia Commons Wikibooks Wiktionary |