Sidfel

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 9 december 2019; kontroller kräver 5 redigeringar .

Ett sidfel är ett  slags hårdvaruundantag som inträffar i en dator med virtuellt minne baserat på personsökning vid tidpunkten för åtkomst till en sida med minne som inte ingår i processens adressutrymme av minneshanteringsenheten . Åtkomst till den här sidan kan vara logiskt giltig, men kan kräva att den läggs till i sidtabellen och eventuellt laddas från sekundär lagring ( hårddisk) till arbetsminnet. Sidfelsdetektering hanteras av hårdvaran (minneshanteringsenheten) och hanteras av programvara, vanligtvis en del av operativsystemets kärna [1] . Under bearbetning av sidfel försöker operativsystemet placera den önskade sidan i huvudminnet och göra den tillgänglig för processen , eller avslutar programmet i händelse av ogiltig minnesåtkomst.

Trots namnet är giltiga sidfel en normal del av alla operativsystem som använder virtuellt minne, inklusive OpenVMS , Microsoft Windows och UNIX-liknande system. I själva verket är de helt enkelt signaler som behövs av operativsystemet för att allokera minne till program som körs.

Typer

Ljus eller programvara

Sidfel, som i Linux-liknande system kallas light ( eng.  minor ) [2] , och i Windows - mjukvara ( eng.  soft ) [3] , innebär att den önskade sidan antingen redan finns i RAM, men inte markerad i minneshanteringsblock som laddat, eller så är det nyligen allokerat och har aldrig använts. Undantagshanteraren i operativsystemet behöver bara lägga till en post i sidtabellen för den begärda sidan och indikera att den är inläst i minnet. Det krävs inte att sidan laddas från disken. Fel inträffar i följande fall [3] :

Eftersom dessa fel inte är föremål för latens för diskåtkomst, bearbetas de snabbare än större fel eller hårdvarufel.

Signifikant eller hårdvara

Sidfel ,  kallat major på Linux-liknande system [ 2 ] och hårt   Windows [3] , är den primära mekanismen som används av operativsystemet för att allokera minne till program på begäran. Operativsystemet fördröjer laddning av delar av ett program från disk tills programmet försöker komma åt dem och därigenom genererar ett sidfel. Om sidan inte laddas in i minnet vid tidpunkten för felet kallas felet för ett större eller hårdvarufel. Sidfelshanteraren i operativsystemet måste hitta ledigt utrymme i RAM:et antingen en ledig sida eller en upptagen sida. Den upptagna sidan kan tillhöra en annan process. I det här fallet måste operativsystemet spola sidans data till disken (om den inte redan har bytts ut) och markera sidan i processens sidtabell som slut på minnet. När ledigt utrymme blir tillgängligt kan operativsystemet ladda data för den nya sidan i minnet, lägga till dess fysiska adress i den ursprungliga processens sidtabell och markera sidan som i minnet. Behovet av att komma åt disken gör hanteringen av sådana fel mycket långsammare jämfört med enkla.

Åtkomst till en ogiltig sida

Om ett sidfel uppstår vid åtkomst till en adress som inte hör till processens virtuella adressutrymme , det vill säga det inte kan finnas en sida i minnet som motsvarar denna adress, så kallas detta fel för ett ogiltigt sidfel .  Operativsystemets sidfelshanterare i det här fallet skickar vanligtvis ett segmenteringsfel till ursprungsprocessen, vilket indikerar att träffen var ogiltig. Detta gör att kodblocket som gjorde det ogiltiga anropet kraschar . Ett exempel på en ogiltig referens är dereferensen av en nollpekare . En nollpekare är en pekare som inte refererar till något objekt. Den representeras vanligtvis som en pekare till adress 0. De flesta operativsystem inkluderar inte sidan som innehåller adressen noll i processadressutrymmet, så försök att läsa eller skriva minne genom en nollpekare resulterar i ett ogiltigt sidfel.

Anteckningar

  1. E. Tannenbaum. Moderna operativsystem = Moderna operativsystem. - 2:a uppl. - St Petersburg. : Peter, 2002. - S. 235. - 1040 sid. - ISBN 5-318-00299-4 .
  2. 1 2 Kapitel 2. Minnestilldelning  . Hämtad 30 december 2017. Arkiverad från originalet 11 februari 2015.
  3. 1 2 3 Arbetsuppsättning (Windows  ) . Hämtad 30 december 2017. Arkiverad från originalet 2 november 2017.

Länkar