Cunoaște Intuit, curs, care funcționează managerul de memorie

Scrierea, compilarea și executarea programului de schimb de informații prin buffer de memorie partajată folosind zona de evacuare a sistemului

Se recomandă să se modifice programul precedent pentru a transmite informații prin fragment de memorie partajată proiectat nu un fișier normal, iar zona sistemului de descărcare. Pentru a face acest lucru ca un parametru la un descriptor de fișier CreateFileMapping funcție trebuie să specifice INVALID_HANDLE_VALUE.

memorie fizică

Fizică (în acest caz RAM) de memorie și memoria externă sunt descrise ca structuri de date corespunzătoare.

Sistem de operare Windows suportă până la 4 GB (unele versiuni și mai mult) de memorie fizică. Memorie peste 32 MB este considerat „mare“. Cantitatea de memorie pot fi vizualizate pe „Performance“ Task Manager. Informații despre starea de pagini de memorie fizice și procesele sunt accesorii în baza de date PFN (numărul de frame de pagină), precum și utilizarea memoriei externe prin fișiere paginate sau încărcați fișiere.

fișier de paginare, spre deosebire de fișierele proiectate în depozit, să păstreze numai paginile modificate care, indiferent de motiv, curățate periodic pentru disc. Pagini care conțin cod de program, afișat în memorie direct de la fișierele executabile și nu sunt stocate în upload de fișiere la nivel de sistem.

Structura sistemului paginate fișiere fără acte. Este cunoscut faptul că sistemul poate fi de până la 16 fișiere de paginare. Informații despre fișierul de paginare se află sub HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager de Management \ memorie \ PagingFiles registru, dar de gestionare a fișierelor de paginare recomandat appletului prin intermediul „sistem“ consola administrativă. Fiecare fișier de paginare este o dimensiune inițială și maximă. Pentru a reduce riscul de fragmentare a crea dimensiune maximă.

Informații utile despre utilizarea fișierului paginii poate fi obținută prin observarea contoarele în „Performanță“, precum și cu ajutorul Task Manager. De exemplu, „Bytes Pagina de fișier“ contor indică numărul total de pagini transmise.

Seturi de procese de lucru

Conform documentației pentru Microsoft Windows, setul de lucru al unui proces este setul de pagini fizice. procesul selectat. de lucru stabilit dimensiunea trebuie să fie în anumite limite constante ale sistemului, în funcție de cantitatea totală de memorie fizică definite. De exemplu, dacă memoria fizică este suficientă, procesul de lucru ar trebui să fie stabilit în intervalul de la 50 până la 345 de pagini. Având privilegiul de a crește Programarea prioritară (a se vedea pe Privilegii. Partea V), aceste valori pot fi schimbate cu ajutorul funcției SetProcessWorkingSet.

Dacă există o defecțiune pagină și setul de lucru al procesului nu a depășit limita (este permisă cu o sarcină de sistem slab, depășind chiar limita), sistemul îl identifică un alt cadru în memoria fizică. În caz contrar, sistemul de operare încearcă să înlocuiască paginile din setul de lucru al procesului (un algoritm de înlocuire locală).

Evoluția setului de lucru al procesului poate fi „văzut“ prin vizionarea contoare Set de lucru et al., Ajustare „Performanță“, precum și utilizarea de manager și Pview sarcină utilităților, Pviewer și altele. Este important să se înțeleagă că schimbarea este rezultatul seturilor de lucru de încălcări de pagină. care apar în paginile reale de acces la memorie. selecție simplă și transmiterea de memorie nu este suficient.

program derulat care ilustrează creșterea în setul de lucru al procesului

Luați în considerare programul de modificare ușoară DemoVM, adăugarea la o operație de scriere de un octet pentru fiecare pagină transmis de memorie (programul DemoPageFaults.c).

Build-up de lucru stabilit de memorie transmis și dimensiunea se face prin apăsarea butonului „Enter“. Să ne uităm la comportamentul contorului „set de lucru“ pentru procese și DemoVM DemoPageFaults. In ciuda este transferat aceeași cantitate de memorie fizică, dimensiuni set de lucru diferă. La DemoVM rămâne aproape de zero, în timp ce procesul merge DemoPageFaults marcat creștere în trepte a setului de lucru (vezi. Fig. 10.5)

Cunoaște Intuit, curs, care funcționează managerul de memorie


Fig. 10.5. Monitorizarea seturilor de lucru ale proceselor

Înlocuirea pagini din setul de lucru al procesului - una dintre cele mai importante operațiuni. Faptul că o scădere a paginii de frecvență fault`ov este una dintre sistemul de management al memoriei sarcini-cheie (de exemplu, este cunoscut faptul că pagina fault'a probabilitate de 5 * 10 -7 este suficient pentru a degrada performanța sistemului de management al memoriei paginate cu 10%.) . Soluția la această problemă se datorează o alegere prudentă Algoritmul de înlocuire. În cazul în care strategia de înlocuire este corectă, atunci memoria este numai informațiile cele mai relevante, care ar putea fi necesare în viitorul apropiat și că nu are nevoie de înlocuire (pe acest subiect, în scris multe cărți, a se vedea. De exemplu, [Karpov]).

În Windows utilizează algoritmi FIFO (prima intrare prima ieșire) în versiunea multi-procesor și unitatea LRU - într-un singur procesor. De fapt, nu se aplică LRU. și punerea sa în aplicare NFU (care nu sunt utilizate în mod frecvent), potrivit căruia pagina nu este caracterizată prin prescripție și frecvența de utilizare. Cu toate acestea, în conformitate cu documentația pentru Microsoft Windows, algoritmul realizează o modificare a dimensiunii setului de lucru al procesului, este numit LRU. În ceea ce privește algoritmul FIFO, în ciuda dezavantajelor cunoscute, utilizarea acestuia simplifică manipularea de link-uri către o pagină pe mai multe procesoare.

Baza de date PFN. demoni paginate

În timpul funcționării, sistemul de operare localizat în memoria fizică seturile de lucru ale proceselor, sisteme de lucru fragmente gratuite stabilite și multe altele. Bază de date PFN Pentru a ține cont de starea memoriei fizice este menținută (numărul paginii frame). Acesta este un tabel de înregistrări cu lungime fixă. Numărul de intrări în ea coincide cu numărul de cadre de pagină.

Este cunoscut faptul că subsistemul de memorie virtuală funcționează productiv în prezența unei rezerve de cadre de pagină gratuite. Apoi, în cazul unei defecțiuni pagini necesită doar o singură operație de disc (citire), și pagina de liberă poate fi găsit imediat. Algoritmi care susțin sistemul în condiții optime, puse în aplicare ca parte a proceselor de fond (adesea numite Daemons sau servicii), care periodic „trezi“ și inspectați starea memoriei. Sarcina lor - să asigure un număr suficient de pagini libere, menținerea sistemului într-o stare de performanțe optime.

Formal, fiecare pagină de memorie fizică ar trebui să fie parte din setul de lucru, sau introduceți una din baza de date acceptată a listelor de pagini conectate. Mutarea paginilor între liste și seturi de sistem de operare se realizează fluxuri Daemon care alcătuiesc managerul de memorie (a se vedea. [Russinovitch]). Setările demonii sunt stocate în HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Registrul de Management

Managementul general și punerea în aplicare a normelor comune de control al memoriei efectuează manager de seturi (set de lucru manager) de lucru, care se numește firul de nucleul sistemului - ajustarea balanței dispecer - o dată pe secundă sau o scădere de memorie liberă este sub pragul.