Sidefejl

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 9. december 2019; checks kræver 5 redigeringer .

En sidefejl er en  slags hardwareundtagelse , der opstår i en computer med virtuel hukommelse baseret på personsøgning på tidspunktet for adgang til en hukommelsesside, som ikke er inkluderet i processens adresseområde af hukommelsesstyringsenheden . Adgang til denne side kan være logisk gyldig, men kan kræve, at den føjes til sidetabellen og muligvis indlæses fra sekundært lager ( harddisk ) til RAM. Detektion af sidefejl håndteres af hardwaren (hukommelsesstyringsenhed) og håndteres af software, normalt en del af operativsystemets kerne [1] . Under sidefejlsbehandling forsøger operativsystemet at placere den påkrævede side i hovedhukommelsen og gøre den tilgængelig for processen eller afslutter programmet i tilfælde af ugyldig hukommelsesadgang.

På trods af navnet er gyldige sidefejl en normal del af ethvert operativsystem, der bruger virtuel hukommelse, inklusive OpenVMS , Microsoft Windows og UNIX-lignende systemer. Faktisk er de simpelthen signaler, der er nødvendige af operativsystemet for at allokere hukommelse til kørende programmer.

Typer

Lys eller software

Sidefejl, som i Linux-lignende systemer kaldes light ( eng.  minor ) [2] , og i Windows - software ( eng.  soft ) [3] , betyder, at den påkrævede side enten allerede er i RAM, men ikke markeret i hukommelsesstyringsblok som indlæst, eller den er nytildelt og har aldrig været brugt. Undtagelsesbehandleren i operativsystemet behøver kun at tilføje en post til sidetabellen for den anmodede side og angive, at den er indlæst i hukommelsen. Det er ikke nødvendigt at indlæse siden fra disken. Fejl opstår i følgende tilfælde [3] :

Da disse fejl ikke er underlagt latency af diskadgang, behandles de hurtigere end større fejl eller hardwarefejl.

Signifikant eller hardware

Sidefejl ,  kaldet major på Linux-lignende systemer [ 2 ] og hård   Windows [3] , er den primære mekanisme, der bruges af operativsystemet til at allokere hukommelse til programmer efter behov. Operativsystemet forsinker indlæsning af dele af et program fra disk, indtil programmet forsøger at få adgang til dem og derved genererer en sidefejl. Hvis siden ikke er indlæst i hukommelsen på tidspunktet for fejlen, kaldes fejlen en større eller hardwarefejl. Sidefejlsbehandleren i operativsystemet skal finde ledig plads i RAM: enten en ledig side eller en optaget side. Den travle side hører muligvis til en anden proces. I dette tilfælde skal operativsystemet tømme sidens data til disken (hvis den ikke allerede er blevet skiftet ud) og markere siden i processens sidetabel som værende tom for hukommelse. Når der bliver ledig plads, kan operativsystemet indlæse dataene for den nye side i hukommelsen, tilføje dens fysiske adresse til den oprindelige process sidetabel og markere siden som værende i hukommelsen. Behovet for at få adgang til disken gør håndteringen af ​​sådanne fejl meget langsommere sammenlignet med nemme.

Adgang til en ugyldig side

Hvis der opstår en sidefejl ved adgang til en adresse, der ikke tilhører processens virtuelle adresserum , det vil sige, at der ikke kan være en side i hukommelsen svarende til denne adresse, så kaldes denne fejl en ugyldig sidefejl .  Operativsystemets sidefejlbehandler i dette tilfælde vil typisk videregive en segmenteringsfejl til den oprindelige proces, hvilket indikerer, at hittet var ugyldigt. Dette får den kodeblok, der fik det ugyldige opkald til at gå ned . Et eksempel på en ugyldig reference er dereferencen af ​​en null- pointer . En nul pointer er en pointer, der ikke refererer til noget objekt. Det er normalt repræsenteret som en pointer til adresse 0. De fleste operativsystemer inkluderer ikke siden, der indeholder adresse nul, i procesadresserummet, så forsøg på at læse eller skrive hukommelse gennem en null-markør resulterer i en ugyldig sidefejl.

Noter

  1. E. Tannenbaum. Moderne operativsystemer = Moderne operativsystemer. - 2. udg. - Sankt Petersborg. : Peter, 2002. - S. 235. - 1040 s. - ISBN 5-318-00299-4 .
  2. 1 2 Kapitel 2. Hukommelsestildeling  . Hentet 30. december 2017. Arkiveret fra originalen 11. februar 2015.
  3. 1 2 3 Arbejdssæt (Windows  ) . Hentet 30. december 2017. Arkiveret fra originalen 2. november 2017.

Links