Paginarea memoriei
Ferranti AtlasEdit
primul computer care a acceptat paginarea a fost supercomputerul Atlas, dezvoltat în comun de Ferranti, Universitatea din Manchester și Plessey în 1963. Aparatul avea o memorie asociativă (adresabilă conținutului) cu o intrare pentru fiecare pagină de 512 cuvinte. Supervizorul a gestionat întreruperile de neechivalență și a gestionat transferul de pagini între core și drum pentru a oferi un magazin la un nivel programelor.
Microsoft WindowsEdit
Windows 3.X și Windows 9xedit
paginarea a fost o caracteristică a Microsoft Windows de la Windows 3.0 în 1990. Ferestre 3.X creează un fișier ascuns numit 386SPART.PAR
sau WIN386.SWP
pentru a fi utilizat ca fișier swap. În general, se găsește în directorul rădăcină, dar poate apărea în altă parte (de obicei în directorul WINDOWS). Dimensiunea sa depinde de spațiul de swap pe care îl are sistemul (o setare selectată de utilizator sub panoul de Control al ecranului “memorie virtuală”). Dacă utilizatorul mută sau șterge acest fișier, va apărea un ecran albastru la următoarea pornire a Windows, cu mesajul de eroare “fișierul swap permanent este corupt”. Utilizatorul va fi solicitat să aleagă dacă șterge sau nu fișierul (dacă există sau nu).
Windows 95, Windows 98 și Windows Me utilizează un fișier similar, iar setările pentru acesta se află sub panoul de Control Sistem de la secțiunea de performanță de la secțiunea de performanță de la secțiunea de memorie virtuală de la secțiunea de performanță de la secțiunea de performanță de la secțiunea de performanță de la secțiunea de performanță de la secțiunea de performanță. Windows setează automat Dimensiunea fișierului de pagină pentru a începe de la 1,5 centimi dimensiunea memoriei fizice și extinde până la 3 centimi memoria fizică, dacă este necesar. Dacă un utilizator rulează aplicații intensive de memorie pe un sistem cu memorie fizică scăzută, este de preferat să setați manual aceste dimensiuni la o valoare mai mare decât cea implicită.
Windows NTEdit
fișierul utilizat pentru paginare în familia Windows NT este pagefile.sys
. Locația implicită a fișierului de pagină se află în directorul rădăcină al partiției în care este instalat Windows. Windows poate fi configurat să utilizeze spațiu liber pe orice unități disponibile pentru fișierele de pagină. Cu toate acestea, este necesar pentru partiția de boot (adică., unitatea care conține directorul Windows) pentru a avea un fișier de pagină pe el dacă sistemul este configurat să scrie fie kernel, fie memorie completă halde după un ecran albastru al morții. Windows utilizează fișierul de paginare ca stocare temporară pentru dump-ul de memorie. Când sistemul este repornit, Windows copiază memoria dump din fișierul de pagină într-un fișier separat și eliberează spațiul utilizat în fișierul de pagină.
FragmentationEdit
în configurația implicită a Windows, fișierul de pagină este permis să se extindă dincolo de alocarea inițială atunci când este necesar. Dacă acest lucru se întâmplă treptat, acesta poate deveni puternic fragmentat, ceea ce poate provoca probleme de performanță. Sfatul comun dat pentru a evita acest lucru este să setați o singură dimensiune a fișierului de pagină “blocată”, astfel încât Windows să nu o extindă. Cu toate acestea, fișierul de pagină se extinde numai atunci când a fost completat, ceea ce, în configurația implicită, reprezintă 150% din cantitatea totală de memorie fizică. Astfel, cererea totală de memorie virtuală susținută de fișiere de pagină trebuie să depășească 250% din memoria fizică a computerului înainte ca fișierul de pagină să se extindă.
fragmentarea fișierului de pagină care apare atunci când se extinde este temporară. De îndată ce regiunile extinse nu mai sunt utilizate (la următoarea repornire, dacă nu mai devreme), alocările suplimentare de spațiu pe disc sunt eliberate și fișierul paginii revine la starea inițială.
blocarea unei dimensiuni de fișier de pagină poate fi problematică dacă o aplicație Windows solicită mai multă memorie decât dimensiunea totală a memoriei fizice și a fișierului de pagină, ceea ce duce la solicitări eșuate de alocare a memoriei care pot duce la eșecul aplicațiilor și proceselor de sistem. De asemenea, fișierul de pagină este rar citit sau scris în ordine secvențială, astfel încât avantajul de performanță de a avea un fișier de pagină complet secvențial este minim. Cu toate acestea, un fișier de pagină Mare permite, în general, utilizarea aplicațiilor cu memorie grea, fără penalități în afară de utilizarea mai mult spațiu pe disc. În timp ce un fișier de pagină fragmentat poate să nu fie o problemă de la sine, fragmentarea unui fișier de pagină cu dimensiuni variabile va crea în timp mai multe blocuri fragmentate pe unitate, determinând fragmentarea altor fișiere. Din acest motiv, un fișier de pagină contiguă cu dimensiuni fixe este mai bun, cu condiția ca dimensiunea alocată să fie suficient de mare pentru a satisface nevoile tuturor aplicațiilor.
spațiul necesar pe disc poate fi alocat cu ușurință pe sisteme cu specificații mai recente (adică. un sistem cu 3 GB de memorie având un fișier de pagină de 6 GB cu dimensiune fixă pe o unitate de disc de 750 GB sau un sistem cu 6 GB de memorie și un fișier de pagină de 16 GB cu dimensiune fixă și 2 TB de spațiu pe disc). În ambele exemple, sistemul utilizează aproximativ 0,8% din spațiul pe disc cu fișierul de pagină pre-extins la maxim.
defragmentarea fișierului de pagină este, de asemenea, recomandată ocazional pentru a îmbunătăți performanța atunci când un sistem Windows utilizează cronic mult mai multă memorie decât memoria fizică totală. Această vizualizare ignoră faptul că, în afară de rezultatele temporare ale expansiunii, fișierul paginii nu devine fragmentat în timp. În general, problemele de performanță legate de accesul la fișierele de pagină sunt tratate mult mai eficient prin adăugarea mai multor memorii fizice.
Unix și Unix-like systemsEdit
sistemele Unix și alte sisteme de operare Unix-like, folosesc termenul “swap” pentru a descrie actul de înlocuire a spațiului pe disc pentru RAM atunci când memoria RAM fizică este plină. În unele dintre aceste sisteme, este obișnuit să dedicați o întreagă partiție a unui hard disk schimbării. Aceste partiții se numesc partiții swap. Multe sisteme au un întreg hard disk dedicat schimbării, separat de unitatea(unitățile) de date, care conține doar o partiție swap. Un hard disk dedicat schimbării se numește “unitate de swap” sau “unitate de zgârieturi”sau” disc de zgârieturi”. Unele dintre aceste sisteme acceptă doar schimbarea într-o partiție swap; altele acceptă, de asemenea, schimbarea în fișiere.
LinuxEdit
kernel-ul Linux acceptă un număr practic nelimitat de backend-uri swap (dispozitive sau fișiere) și acceptă, de asemenea, atribuirea priorităților backend. Când nucleul schimbă paginile din memoria fizică, folosește backend-ul cu cea mai mare prioritate, cu spațiu liber disponibil. Dacă mai multor backend-uri swap li se atribuie aceeași prioritate, acestea sunt utilizate într-un mod round-robin (care este oarecum similar cu aspectele de stocare RAID 0), oferind performanțe îmbunătățite atâta timp cât dispozitivele subiacente pot fi accesate eficient în paralel.
Swap fișiere și partitionsEdit
din perspectiva utilizatorului final, swap fișiere în versiunile 2.6.x și versiunile ulterioare ale kernel-ului Linux sunt practic la fel de rapide ca partițiile swap; limitarea este că fișierele swap ar trebui alocate în mod contiguu pe sistemele lor de fișiere subiacente. Pentru a crește performanța fișierelor swap, nucleul păstrează o hartă a locului în care sunt plasate pe dispozitivele subiacente și le accesează direct, ocolind astfel memoria cache și evitând regia sistemului de fișiere. Indiferent, Red Hat recomandă utilizarea partițiilor swap. Când locuiți pe HDD-uri, care sunt dispozitive media magnetice rotative, un beneficiu al utilizării partițiilor swap este capacitatea de a le plasa pe zone HDD contigue care oferă un transfer de date mai mare sau un timp de căutare mai rapid. Cu toate acestea, flexibilitatea administrativă a fișierelor swap poate depăși anumite avantaje ale partițiilor swap. De exemplu, un fișier swap poate fi plasat pe orice sistem de fișiere montat, poate fi setat la orice dimensiune dorită și poate fi adăugat sau modificat după cum este necesar. Partițiile Swap nu sunt la fel de flexibile; acestea nu pot fi mărite fără a utiliza instrumente de partiționare sau de gestionare a volumului, care introduc diverse complexități și potențiale perioade de oprire.
SwappinessEdit
Swappiness este un parametru de kernel Linux care controlează greutatea relativă dată schimbării din memoria de rulare, spre deosebire de scăderea paginilor din memoria cache a paginii de sistem, ori de câte ori o cerere de alocare a memoriei nu poate fi îndeplinită din memoria liberă. Swappiness poate fi setat la valori între 0 și 200 (inclusiv). O valoare scăzută face ca nucleul să prefere evacuarea paginilor din memoria cache a paginii, în timp ce o valoare mai mare face ca nucleul să prefere schimbarea paginilor de memorie “reci”. Valoarea implicită este 60
; setarea mai mare poate provoca o latență ridicată dacă paginile reci trebuie schimbate înapoi (atunci când interacționează cu un program care a fost inactiv, de exemplu), în timp ce setarea mai mică (chiar 0) poate provoca o latență ridicată atunci când fișierele care au fost evacuate din cache trebuie citite din nou, dar vor face programele interactive mai receptive, deoarece vor fi mai puțin susceptibile de a avea nevoie să schimbe înapoi paginile reci. Schimbarea poate încetini și HDD-urile, deoarece implică o mulțime de scrieri aleatorii, în timp ce SSD-urile nu au această problemă. Desigur, valorile implicite funcționează bine în majoritatea sarcinilor de lucru, dar desktopurile și sistemele interactive pentru orice sarcină așteptată ar putea dori să reducă setarea în timp ce procesarea în lot și sistemele mai puțin interactive ar putea dori să o mărească.
Swap deathEdit
când memoria sistemului este extrem de insuficientă pentru sarcinile curente și o mare parte din activitatea memoriei trece printr-un swap lent, sistemul poate deveni practic incapabil să execute orice sarcină, chiar dacă CPU este inactiv. Când fiecare proces așteaptă pe swap, sistemul este considerat a fi în moartea swap.
moartea Swap se poate întâmpla din cauza overcommitmentului de memorie configurat incorect.
descrierea originală a problemei “swapping to death” se referă la serverul X. Dacă codul sau datele utilizate de serverul X pentru a răspunde la o apăsare de tastă nu se află în memoria principală, atunci dacă utilizatorul introduce o apăsare de tastă, serverul va prelua una sau mai multe erori de pagină, necesitând citirea acelor pagini din swap înainte ca apăsarea tastei să poată fi procesată, încetinind răspunsul la aceasta. Dacă aceste pagini nu rămân în memorie, acestea vor trebui să fie din nou afectate pentru a gestiona următoarea apăsare de tastă, ceea ce face ca sistemul să nu răspundă practic, chiar dacă execută de fapt alte sarcini în mod normal.
macOSEdit
macOS utilizează mai multe fișiere swap. Instalarea implicită (și recomandată de Apple) le plasează pe partiția rădăcină, deși este posibil să le plasați în schimb pe o partiție sau dispozitiv separat.
AmigaOS 4Edit
AmigaOS 4.0 a introdus un nou sistem pentru alocarea RAM și defragmentarea memoriei fizice. Încă folosește spațiu de adrese partajat plat care nu poate fi defragmentat. Se bazează pe metoda de alocare a plăcilor și pe memoria de paginare care permite schimbarea. Paginarea a fost implementată în AmigaOS 4.1, dar poate bloca sistemul dacă toată memoria fizică este epuizată. Memoria Swap ar putea fi activată și dezactivată în orice moment, permițând utilizatorului să aleagă să utilizeze numai memoria RAM fizică.
Leave a Reply