Un pic despre memorie
Înainte de a trece la analiză, voi vorbi pe scurt despre modul în care se gestionează memoria. După aceea, vă va fi mai ușor să înțelegeți ce informații sunt prezentate în Windows 7 Resource Monitor.
Managerul de memorie Windows 7 creează un sistem de memorie virtuală care constă din RAM fizică disponibilă și fișierul de schimb de pe hard disk. Acest lucru permite sistemului de operare să aloce blocuri de memorie cu lungime fixă (pagini) cu adrese consecutive în memoria fizică și virtuală.
Lansarea Windows 7 Resource Monitor
Pentru a lansa Windows 7 Resource Monitor, deschideți meniul Start (Start), tastați „Resmon.exe” în bara de căutare și faceți clic pe . În fereastra care se deschide, selectați fila „Memorie” (Memorie, Fig. A).
Figura A Fila Memorie din Windows 7 Resource Monitor oferă informații detaliate de alocare a memoriei.
Tabelul „Procese”
Fila Memorie are un tabel Processes (Figura B) care listează toate procesele care rulează, cu memoria utilizată împărțită în mai multe categorii.
Figura B Informațiile despre utilizarea memoriei pentru fiecare proces sunt împărțite în mai multe categorii.
Coloana „Imagine”
Coloana Imagine conține numele fișierului executabil al procesului. Procesele începute de aplicații sunt foarte ușor de recunoscut – de exemplu, procesul „notepad.exe” aparține în mod evident lui Notepad (Notepad). Procesele numite „svchost.exe” reprezintă diverse servicii ale sistemului de operare. Numele serviciului este dat în paranteze lângă numele procesului.
Coloana ID proces
Coloana Process ID (PID) conține numărul procesului, o combinație unică de numere care identifică un proces care rulează.
Coloana „Finalizat”
Coloana Commit arată cantitatea de memorie virtuală, în kiloocteți, pe care sistemul a rezervat-o pentru acest proces. Aceasta include atât memoria fizică utilizată, cât și paginile stocate în fișierul de paginare.
Coloana „Set de lucru”
Coloana Set de lucru arată cantitatea de memorie fizică, în kiloocteți, pe care procesul o folosește în prezent. Setul de lucru este format din memorie partajată și privată.
Coloana „General”
Coloana Partajabil arată cantitatea de memorie fizică, în kiloocteți, pe care acest proces o partajează cu alții. Utilizarea unui singur segment de memorie sau a unei pagini de schimb pentru procesele asociate economisește spațiu de memorie. În acest caz, este stocată fizic o singură copie a paginii, care este apoi mapată la spațiul de adrese virtuale al altor procese care o accesează. De exemplu, toate procesele inițiate de DLL-urile de sistem - Ntdll, Kernel32, Gdi32 și User32 - folosesc memoria partajată.
Coloana „Privat”
Coloana Privată indică cantitatea de memorie fizică, în kiloocteți, care este utilizată exclusiv de acest proces. Această valoare vă permite să determinați câtă memorie are nevoie pentru a funcționa o anumită aplicație.
Coloana „Erori ale absenței unei pagini în memorie/sec.”
În coloana „Erori de memorie rămasă în pagină/sec.” (Hard Faults/sec) indică numărul mediu de erori de pagină de memorie pe secundă în ultimul minut. Dacă un proces încearcă să folosească mai multă memorie fizică decât este disponibilă în prezent, sistemul scrie unele dintre date de pe memorie pe disc - fișierul de paginare. Accesul ulterior la datele salvate pe disc se numește o eroare de pagină din memorie.
Ce indică erorile de paginare?
Acum că aveți o idee despre ce informații sunt colectate în tabelul Procese, să vedem cum să le folosiți pentru a monitoriza alocarea memoriei. Pe măsură ce aplicațiile pornesc și lucrează cu fișiere, managerul de memorie ține evidența dimensiunii setului de lucru pentru fiecare proces și captează solicitările de resurse de memorie suplimentare. Pe măsură ce setul de lucru al unui proces crește, dispecerul potrivește aceste solicitări cu nevoile nucleului și ale altor procese. Dacă nu există suficient spațiu de adrese disponibil, dispecerul micșorează setul de lucru prin salvarea datelor de pe memorie pe disc.
Mai târziu, la citirea acestor date de pe disc, apare o eroare de pagina de memorie lipsită. Acest lucru este destul de normal, dar dacă apar erori simultan pentru diferite procese, sistemul are nevoie de timp suplimentar pentru a citi datele de pe disc. Erorile de pagina prea frecvente din memorie reduc, respectiv, performanța sistemului. Probabil ați experimentat o încetinire neașteptată în toate aplicațiile, care apoi s-a oprit brusc. Aproape sigur, această încetinire s-a datorat realocării active a datelor între memoria fizică și swap.
De aici rezultă concluzia: dacă erorile în afara paginii pentru un anumit proces apar prea des și mai mult decât atât în mod regulat, computerul nu are suficientă memorie fizică.
Pentru a facilita monitorizarea proceselor care provoacă erori frecvente ale paginilor din memorie, le puteți marca cu semnalizatoare. Aceasta va muta procesele selectate în partea de sus a listei, iar graficul de eroare a paginii din memorie va fi reprezentat printr-o curbă portocalie.
Rețineți că alocarea memoriei depinde de o serie de alți factori, iar monitorizarea erorilor din afara paginii nu este cea mai bună sau singura modalitate de a identifica problemele. Cu toate acestea, poate servi ca un bun punct de plecare pentru observație.
Tabelul „Memorie fizică”
Tabelul Procese oferă informații detaliate despre alocarea memoriei între procesele individuale, în timp ce tabelul Memorie fizică oferă o imagine generală a utilizării RAM. Componenta sa cheie este histograma unică prezentată în Fig. C.
Figura C. Graficul cu bare din tabelul Memorie fizică oferă o privire de ansamblu asupra alocării memoriei în Windows 7.
Fiecare secțiune a histogramei este marcată cu propria sa culoare și reprezintă un grup specific de pagini de memorie. Pe măsură ce sistemul este utilizat, managerul de memorie mută datele între aceste grupuri în fundal, menținând un echilibru delicat între memoria fizică și cea virtuală pentru a menține toate aplicațiile să ruleze eficient. Să aruncăm o privire mai atentă asupra histogramei.
Secțiunea „Echipament rezervat”
În stânga se află secțiunea „Hardware Reserved”, marcată cu gri: aceasta este memoria alocată nevoilor echipamentelor conectate, pe care o folosește pentru a interacționa cu sistemul de operare. Memoria rezervată pentru hardware este blocată și nu poate fi accesată de managerul de memorie.
De obicei, cantitatea de memorie alocată hardware-ului este între 10 și 70 MB, dar această cifră depinde de configurația specifică a sistemului și în unele cazuri poate ajunge la câteva sute de megaocteți. Componentele care afectează cantitatea de memorie rezervată includ:
;
Componente placa de baza- de exemplu, un controler de întrerupere programabil avansat de intrare/ieșire (APIC);
plăci de sunet și alte dispozitive care efectuează intrare/ieșire mapată în memorie;
magistrală PCI Express (PCIe);
placi video;
diverse chipseturi;
unități flash.
Unii utilizatori se plâng că sistemele lor au o cantitate anormal de mare de memorie rezervată pentru hardware. Nu am întâlnit niciodată o astfel de situație și, prin urmare, nu pot garanta eficacitatea soluției propuse, dar mulți observă că actualizarea versiunii BIOS rezolvă problema.
Secțiunea „Utilizat”
Secțiunea În uz, Figura C, etichetată în verde, reprezintă cantitatea de memorie utilizată de sistem, drivere și procesele care rulează. Cantitatea de memorie utilizată este calculată ca valoarea „Total” (Total) minus suma indicatorilor „Modificat” (Modificat), „În așteptare” (În așteptare) și „Liber” (Gratuit). La rândul său, valoarea „Total” este indicatorul „Instalat” (RAM instalată) minus indicatorul „Echipament rezervat”.
Secțiunea „Schimbată”
Evidențiată cu portocaliu este secțiunea „Modificat”, care arată memoria modificată, dar neutilizată. De fapt, nu este folosit, dar poate fi activat oricând dacă este nevoie din nou. Dacă memoria nu a fost folosită o perioadă lungă de timp, datele sunt transferate în fișierul de paginare, iar memoria intră în categoria Standby.
Secțiunea „Așteptare”
Secțiunea În așteptare, afișată cu albastru, reprezintă paginile de memorie care au fost eliminate din seturile de lucru, dar sunt încă asociate cu acestea. Cu alte cuvinte, categoria În așteptare este de fapt un cache. Paginile de memorie din această categorie au o prioritate de la 0 la 7 (maximum). Paginile asociate cu procese cu prioritate înaltă primesc cea mai mare prioritate. De exemplu, procesele partajate au o prioritate ridicată, astfel încât paginile lor asociate au cea mai mare prioritate în categoria În așteptare.
Dacă un proces are nevoie de date dintr-o pagină în așteptare, managerul de memorie returnează imediat pagina respectivă la setul de lucru. Cu toate acestea, toate paginile din categoria În așteptare sunt disponibile pentru scrierea datelor din alte procese. Când un proces are nevoie memorie suplimentară, și nu există suficientă memorie liberă, managerul de memorie alege o pagină în așteptare cu cea mai mică prioritate, o inițializează și o alocă procesului solicitant.
Secțiunea „gratuit”
Categoria Blue Free reprezintă pagini de memorie care nu au fost încă alocate niciunui proces sau care au fost eliberate după ieșirea procesului. Această secțiune arată atât memoria neutilizată, cât și cea deja eliberată, dar, de fapt, memoria neutilizată aparține unei alte categorii - „Pagini zero” (Pagină zero), care se numește așa deoarece aceste pagini sunt inițializate la zero și gata de utilizare.
Despre problema memoriei libere
Acum că aveți o idee de bază despre cum funcționează managerul de memorie, să aruncăm o privire rapidă la o concepție greșită comună despre sistemul de gestionare a memoriei Windows 7. C, secțiunea de memorie liberă este una dintre cele mai mici din histogramă. Cu toate acestea, este o greșeală să presupunem pe această bază că Windows 7 consumă prea multă memorie și că sistemul nu poate funcționa corect dacă există atât de puțină memorie liberă.
De fapt, este chiar invers. În contextul abordării Windows 7 a gestionării memoriei, memoria liberă este inutilă. Cu cât este mai multă memorie, cu atât mai bine. Prin umplerea maximă a memoriei și mutarea constantă a paginilor de la o categorie la alta folosind un sistem prioritar, Windows 7 îmbunătățește eficiența și împiedică intrarea datelor în fișierul de pagină, prevenind erorile de pagină lipsite de memorie să încetinească performanța.
Monitorizarea memoriei
Vrei să vezi sistemul de control memorie Windows 7 in actiune? Reporniți computerul și deschideți Monitorul resurselor Windows 7 imediat după pornire. Accesați fila Memorie și acordați atenție raportului de secțiuni din histograma memoriei fizice.
Apoi începeți să rulați aplicațiile. În timp ce alergați, urmăriți schimbarea histogramei. Alergând cât mai curând posibil mai multe aplicatii, începeți să le închideți unul câte unul și urmăriți cum se modifică raportul secțiunilor din histograma memoriei fizice.
Făcând acest experiment extrem, veți înțelege cum Windows 7 gestionează memoria de pe computerul dvs. și puteți utiliza Windows 7 Resource Monitor pentru a monitoriza alocarea memoriei în condiții normale de lucru de zi cu zi.
Tu ce crezi?
Îți place ideea de a folosi Windows 7 Resource Monitor pentru a monitoriza alocarea memoriei? Împărtășește-ți părerea în comentarii!
Ați conectat un dispozitiv nou, dar nu se grăbește să funcționeze, sau vechiul dispozitiv a încetat să funcționeze sau nu funcționează corect. Ce să faci în aceste cazuri? Reinstalezi totul? Este o bătaie de cap și nu este întotdeauna necesar. Cum să afli care este motivul și cum să-l elimini? Foarte simplu. Cert este că în sistemul de operare al familiei Windows, și nu numai, există, uneleManager de dispozitiv, de fapt, un manager foarte necesar și util, dacă îi poți numi așa. Aici este, ne va ajuta să aflăm care este cauza problemei, iar foaia mea de cheat va rezolva problema. Deci, în cele de mai susManager de dispozitiv există urme de erori în funcționarea dispozitivelor sub formă de coduri. Cunoscând codul de eroare, este ușor să determinați cauza problemei. Pentru cei neinițiați, codurile sunt doar numere de neînțeles și fără sens. Dar unui utilizator informat, ei pot spune multe. Voi încerca din răsputeri să fac un pic de lumină asupra acestui subiect.
Pentru a vedea erorile dispozitivului, trebuie mai întâi să intrăm în Managerul de dispozitive. Se face așa. Loghează-tePanou de control din meniuStart ( poate sa,Ale mele un calculator , Click dreaptaProprietăți — Manager de dispozitiv, și este posibil și prin sarcina comenzii îna executa , dar de ce complica lucrurile). Daca intram prinPanou management , atunci calea este:Sistem - Hardware - Manager dispozitive . Alegeți intrând în meniuManager de dispozitiv , tipul de dispozitiv care ne interesează (tastatură, imprimantă, modem etc.), faceți dublu clic pe el, ca urmare vom vedea dispozitivele incluse în acest tip. Selectați dispozitivul de care avem nevoie și faceți dublu clic pe el. Ne uităm la coloana din fila Despregeneral, starea dispozitivului. Dacă există o problemă cu funcționarea dispozitivului, aceasta va fi afișată aici ca un cod de eroare. Deci vedem numere și numere. Ce reprezintă ele. Mai jos ofer o listă completă de erori, cu o scurtă descriere a erorii și posibilele soluții. Codul de eroare este evidențiat cu roșu, descrierea acestuia cu albastru și eliminarea cu negru.
Codul 1Există o problemă cu configurarea dispozitivului, setările nu sunt corecte sau driverul lipsește. Faceți clic pe butonul Actualizați driver-ul , pentru a porni vrăjitorulUpgrade hardware . Dacă nu există driver, instalați-l.
Codul 3Driverul dispozitivului este deteriorat, ca opțiune nu există suficientă RAM pentru ca dispozitivul să funcționeze corect.1. Scoateți driverul deteriorat și instalați unul nou. Pentru a face acest lucru: Proprietăți - Driver - Ștergere, apoi urmați instrucțiunile vrăjitorului. Reporniți. Deschidem din nouManager de dispozitiv — Acțiune — Actualizați configurația hardware și urmați instrucțiunile maestrului. 2. Dacă problema este lipsa memoriei virtuale, închideți aplicațiile care rulează pentru a descărca memoria. Pentru a verifica starea memoriei în care trebuie să intrămGestionar de sarcini , pentru a face acest lucru, apăsați combinația de tasteCtrl+Shift+Esc.Putem vedea setările memoriei virtuale făcând clic dreaptaCalculatorul meu — Proprietăți - Avansat - Performanță - Setări (Opțiuni) . Puteți încerca să măriți fișierul de swap (am descris cum se face acest lucru într-unul dintre articolele anterioare de pe blogul meu), dar aceasta este departe de a fi o măsură drastică. Trebuie să crești Berbec. Cum se face acest lucru este un subiect separat care depășește scopul acestei postări.
Codul 10Cheia de registry are o setare specifică dispozitivuluiFailReasonString,valoarea acestui parametru este afișată în datele de eroare, adică dacă nu există niciun parametru ca atare, atunci apare un cod de eroare, cu alte cuvinte, dispozitivul nu poate fi pornit. Actualizați driverul ca mai sus. Sau instalați unul mai nou.
Codul 12Nu există un stoc de resurse necesare pentru acest dispozitiv. Dezactivați alte dispozitive care rulează, cel puțin unul, pentru a face acest lucru, utilizați expertul de depanare, care, dacă urmați instrucțiunile acestuia, va dezactiva dispozitivul aflat în conflict. (Pe scurt, permiteți-mi să vă reamintesc: Proprietăți - General - Depanare.)
Codul 14Necesită repornirea computerului pentru ca acest dispozitiv să funcționeze.
Codul 16Nu este posibil să se identifice resursele care sunt necesare pentru funcționarea dispozitivului, dispozitivul nu este complet configurat. Trebuie să atribuiți resurse suplimentare dispozitivului. Dar acest lucru se poate face fără probleme dacă dispozitivul îi aparțineConectează și utilizează.
Proprietăți - Resurse. Dacă există o resursă cu semnul ? în lista de resurse, selectați-o pentru a o atribui dispozitivului selectat. Dacă resursa nu poate fi modificată, faceți clicSchimbă setările , dacă această funcție nu este disponibilă, debifați casetaSetare automată
Codul 18Reinstalați driverul dispozitivului. Încercăm să actualizăm driverul sau să îl eliminăm și să o facem, ca în exemplul cucod 3.
Codul 19Informații insuficiente în registry despre setările dispozitivului sau setările sunt corupte. AlergaExpert de depanare și urmați instrucțiunile sale, nu vă va ajuta - reinstalați dispozitivul, așa cum sa menționat mai sus. (cod 3). Sau, dacă nu funcționează, descărcațiUltima configurație bună cunoscută. Dacă acest lucru nu ajută, aveți nevoie de ajutorul unui specialist, deoarece este necesar să editați registrul de sistem. Lipsit de cunoștințe și experiență, pe cont propriu, nu ai nimic de făcut acolo, orice administrator de sistem îți va confirma acest lucru. Știind și capabil, știe să facă asta, fără mine. Iar pentru cei neexperimentați, e mai bine să nu încerce. Registrul este inima sistemului de operare și numai un specialist cu experiență, sau sub îndrumarea acestuia, ar trebui să efectueze operațiuni pe acesta. În niciun caz nu vreau să jignesc pe nimeni, dar dacă nu ați lucrat cu registrul de sistem și dacă computerul vă este drag, sfatul meu este să uitați de drumul până acolo. Nu scriu pentru profesioniști, nu au nevoie de el, ci pentru utilizatorul obișnuit. Desigur, pot scrie acolo cum și ce să fac, dar aceasta va fi o explicație pe degete, iar dacă, ca urmare a celei mai mici greșeli, vă deteriorați computerul, eu voi fi de vină. Nu am nevoie deloc de ea și nici tu.
Codul 21 Dispozitivul este eliminat din sistem, adică sistemul de operare încearcă să elimine dispozitivul, dar procesul nu s-a încheiat încă.
Faceți o pauză de câteva secunde și apăsați tasta
Codul 22 Dispozitivul este dezactivat. Aparatul trebuie să fie pornit.Acțiune - Activare și urmați instrucțiunile suplimentare.
Codul 24 Dispozitivul lipsește sau este instalat incorect, driverul a eșuat, este posibil ca dispozitivul să fi fost pregătit pentru îndepărtare. Scoateți dispozitivul și reinstalați.
Codul 28 Nu există șofer. Instalați driverul. Pentru a face acest lucru, trebuie să actualizați driverul, pașii sunt ca în instrucțiunile pentru Codul 1.
Codul 29Dispozitiv dezactivat . Trebuie să permiteți dispozitivului să funcționeze setăriBIOS,citiți instrucțiunile de utilizare a dispozitivului.
Cod 31Sistemul nu a putut încărca driverele pentru acest dispozitiv. . Actualizați driverele așa cum este descris mai sus.
Cod 32Driverul pentru acest dispozitiv este dezactivat în registrul de sistem . Dezinstalați și reinstalați driverul (descris mai sus)
Cod 33Sistemul de operare nu poate determina resursele pentru aceasta dispozitive . Configurați dispozitivul sau înlocuiți-l.
Cod 34Sistemul de operare nu poate determina setările dispozitive . Examinați documentația hardware care a inclus și configurați-o manual în fila Resurse.
Cod 35Firmware-ul PC-ului nu are informațiile necesare pentru a fi corect funcționarea dispozitivului . Trebuie actualizatBIOS.Pentru instrucțiuni despre cum să faceți acest lucru, contactați furnizorul, dar este mai bine să utilizați serviciile unui meșter cu experiență.
Cod 36Dispozitivul necesită o întrerupere pentru a funcționa.PCI,iar dispozitivul este setat să întrerupăisa,sau vice versa . Trebuie să schimbați setărileBIOS,referiți-vă la un maestru experimentat.
Cod 37Sistemul de operare nu recunoaște driverul pentru acest dispozitiv. . Reinstalați driverul (descris mai sus).
Cod 38Sistemul de operare nu poate încărca driverul pentru dispozitiv deoarece, versiunea anterioară a driverului rămâne în memorie . Trebuie să reporniți computerul. Rulați Expertul de depanare dacă nu pornește (Proprietăți - General - Depanare) și urmați instrucțiunile expertului. După o repornire obligatorie.
Cod 39Sistemul de operare nu poate încărca driverul dispozitivului. Driverul este corupt sau deloc . Reinstalați driverul așa cum este descris mai sus.
Cod 40Nu există acces la echipament, deoarece nu există informații în registrul de sistem sau informațiile conțin o eroare . Reinstalați driverul.
Cod 41Dispozitivul nu a fost detectat . Rulați Expertul de depanare (descris mai sus), dacă nu vă ajută, actualizați configurația hardware (vezi mai sus) sau actualizați driverul. Dacă nu, vă rugăm să instalați o versiune mai nouă a driverului.
Cod 42Sistemul are deja un astfel de driver. Adică sunt două diferite dispozitive cu același nume, posibil din cauza unei erori . Reporniți computerul.
Cod 43Oprirea dispozitivului din cauza problemelor de funcționare a acestuia . Rulați Expertul de depanare și urmați instrucțiunile acestuia.
Cod 44O aplicație sau un serviciu a oprit dispozitivul . Reporniți computerul.
Cod 45Dispozitivul nu este conectat . Conectați-vă dispozitivul.
Cod 46Această eroare apare atunci când sistemul de operare se închide. Nu trebuie făcut nimic, data viitoare când porniți sistemul de operare totul va funcționa.
Cod 47 Dispozitivul a fost pregătit pentru îndepărtarea în siguranță, dar nu a fost încă îndepărtat (de exemplu, flash) . Scoateți dispozitivul, apoi conectați-l din nou, reporniți computerul.
Cod 48Dispozitivul, sau mai degrabă software-ul său, este blocat . Actualizați driverul sau instalați unul nou.
Cod 49Dispozitivul nu poate fi pornit deoarece are un registru mare de sistem care depășește setările de registry permise . Ștergeți din registru dispozitivele care nu sunt utilizate. Puteți face acest lucru: Manager dispozitive - Vizualizare - Afișați dispozitivele ascunse. Aici veți vedea dispozitive ascunse care nu sunt conectate la computer. Selectați dispozitivele pe care doriți să le eliminați, faceți clic pe Proprietăți pentru dispozitiv - Driver - Dezinstalare, apoi urmați instrucțiunile expertului și, în final, reporniți computerul.
Manual pentru eliminarea oricăror viruși de pe computer cu propriile mâini. Toate metodele de eliminare a virușilor funcționează cu adevărat și sunt dovedite în practică, instrucțiuni pas cu pas cu ilustratii - simplu si accesibil chiar si pentru un scolar + tutoriale video + program ultraiso pentru a crea bootloadere + link-uri utile către instrumente în lupta împotriva virușilor. Descărcați arhiva
Multe sisteme de calcul încorporează o anumită formă de manager de memorie (cunoscut și ca administrator de memorie, MMU), cu ajutorul căruia un sistem de operare multitasking alocă memorie fiecărei sarcini și oferă protecție împotriva programelor utilizatorului. De exemplu, o problemă tipică apare atunci când un program de aplicație face o eroare în calcularea unei adrese, poate folosind o valoare de index prea mare sau prea mică. Dacă nu există protecție în sistem, acest tip de eroare poate modifica codurile incluse în programele sistemului de operare sau poate modifica tabelele dispozitivelor și chiar poate provoca o pornire neplanificată a dispozitivului cu consecințe fatale, cum ar fi o scriere neautorizată. la fișierul de date.
Pe lângă protejarea sistemului de operare împotriva distrugerii accidentale, managerul de memorie oferă relocarea automată a programului. Managerul de memorie convertește adresele logice sau de program ale programelor utilizatorului în adrese fizice sau hardware. Aceste adrese pot fi localizate în memorie complet diferit de locul în care indică adresele logice. Traducerea adresei are ca rezultat eliminarea completă a sistemului de operare și a dispozitivelor I/O protejate din spațiul de adrese al utilizatorului. Orice încercare de a citi sau de a scrie în memorie în afara spațiului de adresă al utilizatorului face ca procesorul să blocheze programul utilizatorului.
Informațiile sunt de obicei transmise în bucăți formate dintr-un număr fix de biți; 80386 MP folosește bucăți de 32 de biți, cu excepția cazului în care i se cere să reducă dimensiunile bucăților la 16 biți. Aceste porțiuni se numesc cuvinte. Procesul de scriere a unui cuvânt într-un sistem de memorie este numit intrare de memorie, procesul de a obține un cuvânt din memorie - citind din memorie.
Există două metode de acces la memorie: aleatoriu și secvenţial. Accesul secvenţial este utilizat în acele sisteme de memorie în care cuvintele sunt accesate într-o ordine predeterminată. Accesul aleatoriu, pe de altă parte, implică posibilitatea de a accesa cuvintele unui sistem de stocare în orice ordine și în aproximativ același timp.
Oricât de perfectă ar fi memoria, atunci când semnalul trece între dispozitive, există întârzieri în propagarea acestuia. Întârzierea de propagare este definită ca timpul necesar pentru ca un semnal logic să traverseze un dispozitiv sau o secvență de dispozitive care formează un lanț logic. Această întârziere ia în considerare și semnalul care trece prin toate liniile de interconectare dintre microcircuite.
Acces direct la memorie (DMA)
Accesul direct la memorie permite dispozitivelor externe și memoriei să facă schimb direct de date fără intervenția programului. DMA oferă viteză maximă de I/O și paralelism maxim de proces. În timp ce I/O întrerupt și I/O controlat de software transferă date prin procesor, în cazul DMA, datele sunt transferate direct între dispozitivul I/O și memorie.
Pentru a minimiza numărul de magistrale de date, sunt luate măsuri speciale pentru a permite utilizarea unui backbone convențional pentru RPS. Aceste măsuri constau în faptul că procesorul eliberează autostrada, iar dispozitivul extern o captează și o folosește pentru a transfera date.
Pe durata RAP, execuția programului este de obicei suspendată. Portbagajul este eliberat de îndată ce linia de control al cererii RAP este excitată. Procesorul încheie operațiunea curentă, eliberează adresa și liniile de date și afirmă un semnal pe una dintre liniile de control pentru a preveni decodificarea accidentală a semnalelor de control nedefinite.
Interfața I/O transferă datele direct în memorie folosind un registru special. Când trebuie să transfere date, interfața cere procesorului un ciclu de memorie. Odată confirmată, interfața trimite datele direct în memorie în timp ce procesorul se întrerupe pentru un ciclu de memorie. Logica care efectuează acest transfer este numită canal.
Canalul conține un registru pentru stocarea adresei locației de memorie către sau de la care sunt transferate datele.În majoritatea cazurilor, canalul include și un numărător de cuvinte pentru a număra numărul de transferuri directe efectuate. În plus, canalul trebuie să conțină un circuit care asigură schimbul de semnale de control, sincronizare și alte operații auxiliare. Pe fig. 13.4 arată conexiunile logice dintre CPU și controlerul PDP.
Componentele RAP. Componentele principale ale unui DMA sunt un declanșator de solicitare, un registru de adrese, un contor și un registru de date care este utilizat de periferic. Redirecționarea datelor printr-un canal DMA include câțiva pași: 1) inițializarea logicii DMA pentru a efectua DMA în timpul ciclurilor repetate de ocupare a coloanei vertebrale; 2) asincron în ceea ce privește activarea operațiunilor de program a RAP; 3) notificarea încheierii transferurilor (pe un semnal de la contor sau ca urmare a unei modificări a stării dispozitivului); 4) apelarea programului de „curățare” la sfârșitul transferurilor; 5) finalizarea DMA cu ajutorul unui handler de întreruperi, care returnează controlul programului principal.
Blocați transferul de date. Procedura DMA pentru dispozitivele de mare viteză utilizează transferul de date în blocuri. Prin executarea programului curent, procesorul inițiază transferul unui bloc de date și determină numărul de cuvinte care alcătuiesc blocul. Cu toate acestea, transmiterea efectivă a cuvintelor se realizează sub controlul unui dispozitiv separat - controlerul PMA. Rata maximă de transfer în bloc pe canalul DMA este limitată doar de durata ciclului de memorie (citire sau scriere) și de viteza controlerului DMA.
RAP cu ocupare a ciclului memoriei. Programul inițiază un transfer de bloc prin plasarea adresei de început în contorul de adrese și a numărului de cuvinte în contorul de cuvinte. și lansarea unei comenzi de alergare. Acest tip de RAP este adesea denumit RAP cu ocupând ciclul memoriei, deoarece întrerupe execuția programului pentru aproximativ un ciclu de mașină de fiecare dată.
Când se utilizează DMA cu un ciclu de memorie, transferul de date se realizează în paralel cu alte procese efectuate de CPU. Secvența de acțiuni aici este aceeași ca și pentru transferul bloc, cu excepția faptului că controlerul DMA preia cicluri de memorie de la procesor și, prin urmare, încetinește funcționarea acestuia (blocați și transferul de date prin canalul DMA ia cicluri de memorie, cu excepția cazului în care DMA este utilizat pe o magistrală separată).
Când un proces pornește în Windows, multe dintre paginile care afișează imagini ale fișierelor EXE și DLL pot fi deja în memorie deoarece sunt utilizate de alte procese. Paginile cu imagini care pot fi scrise sunt etichetate „copy-on-write”, astfel încât să poată fi partajate până când trebuie modificate. Dacă sistemul de operare recunoaște un EXE care rula deja, poate scrie modelul de link-ul paginii (folosind o tehnică pe care Microsoft o numește Super-Fetch). Această tehnologie încearcă să preia multe pagini necesare în avans (deși procesul nu a primit încă erori de pagină pentru ele). Acest lucru reduce latența lansării aplicațiilor (citirea paginilor de pe disc se suprapune execuției codului de inițializare a imaginilor). Această tehnologie îmbunătățește performanța de ieșire a discului, facilitând pentru driverele de disc să orchestreze operațiunile de citire (pentru a reduce timpul necesar de căutare). Acest proces de preluare este utilizat și în timpul pornirii sistemului, precum și atunci când o aplicație de fundal vine în prim-plan și când sistemul reia din hibernare.
Paginare înainte este acceptată de managerul de memorie, dar este implementată ca o componentă separată a sistemului. Paginile schimbate nu sunt introduse în tabelul de pagini al procesului, ci sunt introduse într-o listă de așteptare, din care pot fi introduse rapid în proces (fără acces la disc).
Paginile nemapate sunt oarecum diferite - nu sunt inițializate prin citirea dintr-un fișier. În schimb, prima dată când este accesată o pagină nemapată, managerul de memorie oferă o nouă pagină fizică (asigurându-se că conținutul acesteia este complet zero din motive de securitate). La erorile de pagină ulterioare, pagina nemapată poate fi nevoie să fie găsită în memorie sau citită din fișierul de schimb.
Paginarea cererii în managerul de memorie este controlată de erori de pagină. Fiecare eroare provoacă o întrerupere a nucleului. Nucleul construiește apoi un handle independent de mașină (care raportează ce sa întâmplat) și îl transmite managerului de memorie de rulare. Managerul de memorie verifică apoi validitatea accesului. Dacă pagina eșuată se încadrează în zona comisă, atunci caută adresa în lista VAD și găsește (sau creează) intrarea tabelului de pagini a procesului. În cazul unei pagini partajate, managerul de memorie folosește intrarea tabelului de pagină prototip (asociată cu obiectul segment) pentru a popula noua intrare a tabelului de pagini a procesului.
Formatul de intrare a tabelului de pagini diferă în funcție de arhitectura procesorului. Pentru procesoarele x86 și x64, elementele paginii afișate sunt prezentate în fig. 11.17. Dacă un element este marcat ca valid, atunci conținutul său este interpretat de hardware (astfel încât adresa virtuală să poată fi tradusă într-o pagină fizică validă). Paginile neredate au și ele propriile lor elemente, dar sunt marcate ca nevalide, iar hardware-ul ignoră restul elementului. Formatul software este ușor diferit de formatul hardware și este determinat de managerul de memorie. De exemplu, pentru o pagină nemapată (care trebuie să fie așezată și pusă la zero înainte de a fi utilizată), acest fapt este notat în intrarea tabelului de pagini.
Doi biți importanți din intrarea tabelului de pagini sunt actualizați direct de hardware. Acestea sunt bitul de acces (A) și bitul modificat (D). Acești biți țin evidența utilizării unei anumite mapări de pagină pentru a accesa pagina și dacă pagina poate fi modificată prin acel acces. Acest lucru îmbunătățește într-adevăr performanța sistemului, deoarece managerul de memorie poate folosi bitul de acces pentru a implementa paginarea LRU (Least-Recently Used). Principiul LRU este că acele pagini care nu au fost folosite cel mai mult timp au cele mai mici șanse de a fi reutilizate în viitorul apropiat. Bitul de acces permite managerului de memorie să determine dacă pagina a fost accesată. Bitul „modificat” îi spune managerului de memorie că pagina este posibil să fi fost modificată (sau, mai important, că nu a fost modificată). Dacă pagina nu a fost modificată de când a fost citită de pe disc, atunci managerul de memorie nu trebuie să-și scrie conținutul pe disc (înainte de a o folosi pentru altceva).
Ambele arhitecturi x86 și x64 folosesc o intrare de tabel de pagină pe 64 de biți (vezi Figura 11.17).
Fiecare eroare de pagină poate fi clasificată în una din cinci categorii:
1. Pagina nu este fixă.
2. Încercați să accesați o pagină cu încălcarea permisiunii.
3. Încercați să modificați o pagină de copiere la scriere.
1. Trebuie să măriți stiva.
2. Pagina este fixă, dar nu este afișată în prezent.
Primul și al doilea caz sunt erori de programare. Dacă un program încearcă să folosească o adresă care nu are o mapare validă sau încearcă să efectueze o operațiune ilegală (cum ar fi încercarea de a scrie într-o pagină numai în citire), aceasta se numește o încălcare a accesului și de obicei duce la terminarea procesul. O încălcare a accesului este adesea rezultatul unor valori invalide ale pointerului, inclusiv accesul la memoria care a fost eliberată și detașată din proces.
Al treilea caz are aceleași simptome ca și al doilea (o încercare de a scrie pe o pagină numai în citire), dar gestionarea sa este diferită. Deoarece pagina a fost marcată copy-on-write, managerul de memorie nu aruncă o încălcare a accesului. În schimb, face o copie privată a paginii pentru procesul curent și apoi revine la firul care a încercat să scrie în pagină. Firul reîncearcă operația de scriere, care se va finaliza acum fără o eroare de pagină.
Al patrulea caz apare atunci când un fir de execuție împinge o valoare în stiva sa și lovește o pagină care nu a fost încă alocată. Managerul de memorie recunoaște acest lucru ca fiind un caz special. Atâta timp cât există spațiu în paginile virtuale rezervate pentru stivă, managerul de memorie va furniza pagini noi, le va elimina și le va mapa pe proces. Când firul de execuție reia execuția, va reîncerca accesul și de data aceasta va reuși.
Și, în sfârșit, al cincilea caz este o greșeală normală de pagină. Cu toate acestea, are mai multe subvariante. Dacă o pagină este mapată la un fișier, atunci managerul de memorie trebuie să-și examineze structurile de date (cum ar fi tabelul de pagină prototip asociat cu obiectul segment) pentru a se asigura că nu există o copie a acesteia în memorie. Dacă există o copie (de exemplu, într-un alt proces, într-o listă de așteptare sau într-o listă de pagini modificate), atunci o va face pur și simplu partajată (ar putea fi necesar să o marcheze ca copiere la scriere pentru a face acest lucru dacă modificările nu sunt partajate).presupuse). Dacă nu există încă o copie, atunci managerul de memorie va aloca o pagină fizică gratuită și o va pregăti pentru copierea unei pagini a fișierului de pe disc în ea, cu excepția cazului în care o altă pagină este transferată de pe disc în acel moment (caz în care aveți nevoie doar de să așteptați până la finalizarea acestui transfer).
Dacă managerul de memorie poate gestiona o eroare de pagină găsind pagina corectă în memorie (în loc să o citească de pe disc), atunci eroarea se numește eroare soft. Dacă aveți nevoie de o copie de pe disc, atunci aceasta este o greșeală gravă. Bug-urile soft sunt mult mai ieftine și au un impact redus asupra performanței aplicației (comparativ cu erorile dure). Erorile soft pot apărea deoarece pagina partajată a fost deja mapată la un alt proces sau pur și simplu este necesară o nouă pagină zero, sau pagina dorită a fost eliminată din setul de lucru al procesului, dar este recuperată înainte de a fi reutilizată. Erorile soft pot apărea și pentru că paginile au fost comprimate pentru a crește efectiv dimensiunea memoriei fizice. Pentru majoritatea configurațiilor CPU, este mai eficient să comprimați memoria și I/O în sistemele actuale, mai degrabă decât irosirea I/O costisitoare (în termeni de performanță și putere), care necesită citirea unei pagini de pe disc.
Când o pagină fizică nu mai este mapată la tabelul de pagini al niciunui proces, aceasta este plasată pe una dintre cele trei liste: gratuită, modificată sau rezervată. Acele pagini care nu mai sunt necesare niciodată (cum ar fi paginile stivei unui proces de terminare) sunt eliberate imediat. Acele pagini care pot defecta din nou pagina sunt fie în lista modificată, fie în lista de rezervă (în funcție de faptul dacă bitul „modificat” a fost setat pentru orice element de tabel de pagini care a afișat această pagină de când a fost citită ultima dată de pe disc). Paginile din lista modificată vor fi în cele din urmă scrise pe disc și apoi mutate în lista de rezervă.
Managerul de memorie poate aloca pagini după cum este necesar (folosind o listă de pagini gratuite sau rezervate). Înainte de a aloca o pagină și de a o copia de pe disc, managerul de memorie verifică întotdeauna listele de pagini rezervate și modificate pentru a vedea dacă pagina este deja în memorie. Schema de paginare din Windows convertește erorile grele viitoare în erori soft (prin citirea paginilor care ar putea fi necesare și plasându-le pe lista alternativă). Managerul de memorie face o cantitate mică de paginare în sine - accesează grupuri de pagini consecutive (mai degrabă decât pagini individuale). Paginile suplimentare sunt imediat plasate în lista de pagini de rezervă. Aceasta nu este o risipă, deoarece costul general al managerului de memorie este mult mai mic decât costul efectuării operațiunilor I/O. Citirea unui grup întreg de pagini este puțin mai costisitoare decât citirea unei singure pagini.
Elementele tabelului de pagini din fig. 11.17 se referă la numerele de pagină fizice (nu virtuale). Nucleul trebuie să folosească adrese virtuale pentru a actualiza intrarea tabelului de pagini (și directorul paginilor). Windows mapează tabelele de pagini și directoarele de pagini pentru procesul curent la spațiul de adrese virtuale al nucleului utilizând elementul de auto-hartă din directorul de pagini (Figura 11-18). Prin maparea unei intrări de director de pagini la un director de pagini (auto-hartă), obținem adrese virtuale care pot fi folosite pentru a face referire la intrările din directorul de pagini (Figura 11.18a) și intrările din tabelul de pagini (Figura 11.18b). Auto-harta ocupă 8 MB de adrese virtuale kernel per proces (pe procesoare x86). Pentru simplitate, figura prezintă elementul de auto-hartă x86 pentru înregistrările PTE pe 32 de biți (Intrări de tabel de pagină). De fapt, Windows folosește PTE-uri pe 64 de biți, astfel încât sistemul poate folosi mai mult de 4 GB de memorie fizică. Cu intrări PTE pe 32 de biți, elementul de auto-hartă utilizează o singură intrare PDE (Page-Directory Entry) în directorul paginii și, prin urmare, ocupă doar 4 MB de adrese, nu 8 MB.