SlideShare a Scribd company logo
Sisteme de operare
Memoria virtuală
Cuprins
• paginare
• page fault
• on demand paging
• copy-on-write
• swap
• maparea fișierelor
2
Bibliografie
• Modern Operating Systems
– Capitolul 4
• 4.4
• 4.5
• 4.6
• Operating Systems Concepts
– Capitolul 9
• 9.1 – 9.4
• 9.6
• 9.7
3
PAGINARE
4
Paginare
• Memoria este împărțită în pagini
– în general 4 KB
• Pagini
– Virtuale (pages)
– Fizice (cadre - frames)
• Tabelul de pagini
– fiecare proces are un tabel de pagini
• Adresă
– adresă fizică = frame_index (page_index) + offset
5
Tabelul de pagini
6
Transformarea adreselor
7
Transformarea adreselor
• Pentru a accesa o adresă
– acces în tabel (în memorie)
– acces efectiv la memorie
• Acces dublu
– lent
8
Translation Lookaside Buffer (TLB)
• Memorie cache specială
– 256 de intrări
• Folosită per proces
• Schimbarea de context
– Se schimbă tabelul de pagini
– TLB flush (mai puțin partea pentru kernel)
9
Transformarea adresei folosind TLB
10
Protecția
11
Intrare în tabelul de pagini
• Numărul cadrului
• Drepturi de acces
– nici unul
– citire
– scriere
• Valabilă
12
exemple sur x86
Partajarea memoriei
13
Paginare ierarhică
14
MEMORIA VRITUALĂ
15
Memoria virtuală
• Separare între
– Spațiul fizic (RAM)
– Spațiul logic (memoria văzuta de un proces)
16
Avantaje și dezavantaje
• Partajarea de memorie
• Sunt disponibile toate adresele
• Se poate utiliza mai multă memroie decât există
RAM
• Acces dublu la memorie
– tabel și adresa efectivă
• Support hardware
• SO are nevoie de o componentă specială
17
Spațiul de adresare simplificat
18
Spațiul de adresare simplificat
19
• brk
• sbrk
PAGE FAULT
20
Page fault
• Acces la o pagină
– ne mapată
– invalidă
– fără drept de acces
• CPU aruncă o excepție
– se execută exception handler-ul
21
Exemple de page fault-uri
• ne mapată
– on-demand paging
– swap
• invalidă
– pagina virtuală nu este alocată
• fără drept de acces
– read-only
– pagină a SO
– copy-on-write
22
Page fault (swap)
23
ON-DEMAND PAGING
24
Etapele alocării de memorie
1. Alocarea unei pagini virtuale
– intrare în tabelul de pagini
2. Alocarea paginii fizice
– intrare în tabelul de cadre (frames)
3. Maparea paginii
– legarea unei pagini cu un cadru
25
Alocarea de memorie
• rezervare (malloc)
– alocarea unei pagini virtuale (fără cadru în RAM)
– marcată invalidă
• commit (la primul acces, *p = … ou … = *p)
– page fault minor
– alocarea cadrului fizic (frame) în RAM
– legarea paginii cu cadrul
– marcată validă
26
SWAP
27
Swap
• Putem folosi mai multă memorie decât există
RAM
• O parte din pagini sunt stocate temporar pe
un alt mediu de stocare
– HDD
– SSD
• Poate fi lent
28
Swap în Windows și Linux
• Windows
– C:pagefile.sys
• Linux
– Partiție separată (e)
29
Swap
30
Schimbarea (swapping) unei pagini
31
Care sunt paginile puse in swap?
• FIFO
• LRU
– Least Recently Used
• Second Chance
– mai bun decât FIFO
32
FIFO
• coadă de pagini
• prima pagină din coadă este pusă în swap
(swapped out)
• pagina încărcată din swap este pusă în capătul
cozii (swapped in)
33
Exemplu
34
Anomalia lui Belady
35
LRU
• algoritmul ideal: schimbă pagina care va fi
utilizată peste cel mai mult timp
• marcheză paginile cu data ultimului acces
• pagina cu cel mai vechi timp de acces este
pusă în swap
36
Exemple
37
Dificultatea implementării LRU
• Hardware-ul trebuie să facă asta
– implementarea în software ar face sistemul de 10
ori mai lent
• Multă memorie ocupată cu stocarea datei de
acces
38
Second Chance
• Fiecare pagină are un parametru (bit)
– R – Referenced (read sau write)
• Coada de pagini
– Dacă pagina are R = 0, pagina e pusă în swap
– Dacă pagina are R = 1, R este pus la 0 si pagina
este pusă în capătul cozii
39
Exemplu
40
NRU - Not Recently Used
• Fiecare pagină are doi parametrii (bits)
– R – referenced (read)
– M – Modified (write)
• În sistem round robin, alegem pagina care are
clasa minimă
41
Clasa R M
1 (probabilitatea minimă de a fi utilizată) 0 0
2 0 1
3 1 0
4 (probabilitatea maximă de a fi utilizată) 1 1
Pagini rezidente
• Paginile care sunt în RAM
• RSS proces
– Resident Set Size (paginile care sunt prezente în
RAM)
• Alocare rezidentă
– Paginile nu vor fi puse in swap
• memoria kernel
42
Linux
int mlock(const void *addr, size_t len);
int munlock(const void *addr, size_t len);
addr – multiplu de pagină
len – multiplu de pagină
43
Swap Trashing
• Sistemul folosește mult timp pentru
– a pune pagini în swap
– a lua pagini din swap
44
COPY-ON-WRITE
45
Proces nou - UNIX
• fork: creează un proces nou (copil) (aproape
identic cu procesul părinte)
– copierea memoriei
• exec: încarcă imaginea dintr-un executabil în
procesul curent (de obicei folosit de procesul
copil)
– memorie nouă
46
Copy on write - fork
• se copiază doar tabelul de pagini
• toate paginile sunt marcate READ-ONLY
– procesele partajează toată memorie
• Când unul din procese scrie
– page fault
– se copiază pagina de memorie
• Procesele au acum fiecare pagina lui
47
Exemplu
48
Exemplu
49
Maparea fișierelor
• o parte dintr-un fișier este mapată la o adresă
de memorie
• accesul la fișier se face doar prin memorie
(fara read si write)
• scrierea în fișier nu este imediată
50
Utilizare
încărcarea executabilelor și a bibliotecilor
51
Exemplu
52
Linux
void *mmap(void *addr, size_t len, int prot,
int flags, int fd, off_t offset);
int munmap(void *addr, size_t len);
int msync(void *addr, size_t len, int flags);
• PROT_NONE Pages may not be accessed.
• PROT_READ Pages may be read.
• PROT_WRITE Pages may be written.
• PROT_EXEC Pages may be executed.
53
Exemple
int fd = open ("fisier.dat", O_RDWR);
char *p = NULL;
if (fd >= 0) {
p = mmap (NULL, 4096, PROT_WRITE, MAP_SHARED, fd, 0);
if (p!=NULL) {
strcpy (p, "so");
msync (p, 4096, M_SYNC);
munmap (p, 4096);
}
close (fd);
}
54
Cuvinte cheie
• Adresă logică
• Adresă fizică
• Paginare
• TLB
• Tabel de pagini
• Page fault
• On-demand paging
• Swap
• Schimbarea paginilor
• FIFO
• LRU
• Second chance
• NRU
• Copy on write
• Maparea paginilor
55
Întrebări
56

More Related Content

What's hot

Sisteme de Operare: Sincronizare
Sisteme de Operare: SincronizareSisteme de Operare: Sincronizare
Sisteme de Operare: Sincronizare
Alexandru Radovici
 
Sisteme de Operare: Fire de executie
Sisteme de Operare: Fire de executieSisteme de Operare: Fire de executie
Sisteme de Operare: Fire de executie
Alexandru Radovici
 
Sisteme de Operare: Introducere
Sisteme de Operare: IntroducereSisteme de Operare: Introducere
Sisteme de Operare: Introducere
Alexandru Radovici
 
Sisteme de Operare: Planificarea proceselor
Sisteme de Operare: Planificarea proceselorSisteme de Operare: Planificarea proceselor
Sisteme de Operare: Planificarea proceselor
Alexandru Radovici
 
Qemu Pcie
Qemu PcieQemu Pcie
Linux Kernel Booting Process (2) - For NLKB
Linux Kernel Booting Process (2) - For NLKBLinux Kernel Booting Process (2) - For NLKB
Linux Kernel Booting Process (2) - For NLKB
shimosawa
 
Memoria Virtual
Memoria VirtualMemoria Virtual
Memoria Virtual
audineisilva1
 
Introduction to Linux Kernel
Introduction to Linux KernelIntroduction to Linux Kernel
Introduction to Linux Kernel
Stryker King
 
Static partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-VStatic partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-V
RISC-V International
 
CNIT 127: Ch 3: Shellcode
CNIT 127: Ch 3: ShellcodeCNIT 127: Ch 3: Shellcode
CNIT 127: Ch 3: Shellcode
Sam Bowne
 
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_FinalGopi Krishnamurthy
 
Virtual memory
Virtual memoryVirtual memory
Virtual memory
rapunzel08
 
Memory organization
Memory organizationMemory organization
Memory organization
AL- AMIN
 
Linux Memory Management
Linux Memory ManagementLinux Memory Management
Linux Memory ManagementNi Zo-Ma
 
2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processosComputação Depressão
 
Introduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsIntroduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra Solutions
QUONTRASOLUTIONS
 
Capítulo 5 Sistemas Operacionais Modernos
Capítulo 5 Sistemas Operacionais ModernosCapítulo 5 Sistemas Operacionais Modernos
Capítulo 5 Sistemas Operacionais Modernos
Wellington Oliveira
 
Multicore Processors
Multicore ProcessorsMulticore Processors
Multicore Processors
Smruti Sarangi
 

What's hot (20)

Sisteme de Operare: Sincronizare
Sisteme de Operare: SincronizareSisteme de Operare: Sincronizare
Sisteme de Operare: Sincronizare
 
Sisteme de Operare: Fire de executie
Sisteme de Operare: Fire de executieSisteme de Operare: Fire de executie
Sisteme de Operare: Fire de executie
 
Sisteme de Operare: Introducere
Sisteme de Operare: IntroducereSisteme de Operare: Introducere
Sisteme de Operare: Introducere
 
Sisteme de Operare: Planificarea proceselor
Sisteme de Operare: Planificarea proceselorSisteme de Operare: Planificarea proceselor
Sisteme de Operare: Planificarea proceselor
 
Qemu Pcie
Qemu PcieQemu Pcie
Qemu Pcie
 
Linux Kernel Booting Process (2) - For NLKB
Linux Kernel Booting Process (2) - For NLKBLinux Kernel Booting Process (2) - For NLKB
Linux Kernel Booting Process (2) - For NLKB
 
Memoria Virtual
Memoria VirtualMemoria Virtual
Memoria Virtual
 
Introduction to Linux Kernel
Introduction to Linux KernelIntroduction to Linux Kernel
Introduction to Linux Kernel
 
Aula 06 memória ram
Aula 06   memória ramAula 06   memória ram
Aula 06 memória ram
 
Static partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-VStatic partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-V
 
CNIT 127: Ch 3: Shellcode
CNIT 127: Ch 3: ShellcodeCNIT 127: Ch 3: Shellcode
CNIT 127: Ch 3: Shellcode
 
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
 
Virtual memory
Virtual memoryVirtual memory
Virtual memory
 
Memory organization
Memory organizationMemory organization
Memory organization
 
Linux Memory Management
Linux Memory ManagementLinux Memory Management
Linux Memory Management
 
Lecture2
Lecture2Lecture2
Lecture2
 
2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos
 
Introduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsIntroduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra Solutions
 
Capítulo 5 Sistemas Operacionais Modernos
Capítulo 5 Sistemas Operacionais ModernosCapítulo 5 Sistemas Operacionais Modernos
Capítulo 5 Sistemas Operacionais Modernos
 
Multicore Processors
Multicore ProcessorsMulticore Processors
Multicore Processors
 

More from Alexandru Radovici

SdE2 - Pilot Tock
SdE2 - Pilot TockSdE2 - Pilot Tock
SdE2 - Pilot Tock
Alexandru Radovici
 
SdE2 - Systèmes embarquées
SdE2 - Systèmes embarquéesSdE2 - Systèmes embarquées
SdE2 - Systèmes embarquées
Alexandru Radovici
 
SdE2 - Planification, IPC
SdE2 - Planification, IPCSdE2 - Planification, IPC
SdE2 - Planification, IPC
Alexandru Radovici
 
ALF1 - Introduction
ALF1 - IntroductionALF1 - Introduction
ALF1 - Introduction
Alexandru Radovici
 
SdE2 - Introduction
SdE2 - IntroductionSdE2 - Introduction
SdE2 - Introduction
Alexandru Radovici
 
MDAD 6 - AIDL and Services
MDAD 6 - AIDL and ServicesMDAD 6 - AIDL and Services
MDAD 6 - AIDL and Services
Alexandru Radovici
 
MDAD 5 - Threads
MDAD 5 - ThreadsMDAD 5 - Threads
MDAD 5 - Threads
Alexandru Radovici
 
MDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recyclingMDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recycling
Alexandru Radovici
 
MDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI ApplicationsMDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI Applications
Alexandru Radovici
 
MDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android FrameworkMDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android Framework
Alexandru Radovici
 
MDAD 1 - Hardware
MDAD 1 - HardwareMDAD 1 - Hardware
MDAD 1 - Hardware
Alexandru Radovici
 
MDAD 0 - Introduction
MDAD 0 - IntroductionMDAD 0 - Introduction
MDAD 0 - Introduction
Alexandru Radovici
 
SdE 11 - Reseau
SdE 11 - ReseauSdE 11 - Reseau
SdE 11 - Reseau
Alexandru Radovici
 
SdE 10 - Threads
SdE 10 - ThreadsSdE 10 - Threads
SdE 10 - Threads
Alexandru Radovici
 
SdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de executionSdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de execution
Alexandru Radovici
 
SdE 8 - Memoire Virtuelle
SdE 8 - Memoire VirtuelleSdE 8 - Memoire Virtuelle
SdE 8 - Memoire Virtuelle
Alexandru Radovici
 
SdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la MémoireSdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la Mémoire
Alexandru Radovici
 
SdE 6 - Planification
SdE 6 - PlanificationSdE 6 - Planification
SdE 6 - Planification
Alexandru Radovici
 
SdE 5 - Planification
SdE 5 - PlanificationSdE 5 - Planification
SdE 5 - Planification
Alexandru Radovici
 
ALF 6 - Parser
ALF 6 - ParserALF 6 - Parser
ALF 6 - Parser
Alexandru Radovici
 

More from Alexandru Radovici (20)

SdE2 - Pilot Tock
SdE2 - Pilot TockSdE2 - Pilot Tock
SdE2 - Pilot Tock
 
SdE2 - Systèmes embarquées
SdE2 - Systèmes embarquéesSdE2 - Systèmes embarquées
SdE2 - Systèmes embarquées
 
SdE2 - Planification, IPC
SdE2 - Planification, IPCSdE2 - Planification, IPC
SdE2 - Planification, IPC
 
ALF1 - Introduction
ALF1 - IntroductionALF1 - Introduction
ALF1 - Introduction
 
SdE2 - Introduction
SdE2 - IntroductionSdE2 - Introduction
SdE2 - Introduction
 
MDAD 6 - AIDL and Services
MDAD 6 - AIDL and ServicesMDAD 6 - AIDL and Services
MDAD 6 - AIDL and Services
 
MDAD 5 - Threads
MDAD 5 - ThreadsMDAD 5 - Threads
MDAD 5 - Threads
 
MDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recyclingMDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recycling
 
MDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI ApplicationsMDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI Applications
 
MDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android FrameworkMDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android Framework
 
MDAD 1 - Hardware
MDAD 1 - HardwareMDAD 1 - Hardware
MDAD 1 - Hardware
 
MDAD 0 - Introduction
MDAD 0 - IntroductionMDAD 0 - Introduction
MDAD 0 - Introduction
 
SdE 11 - Reseau
SdE 11 - ReseauSdE 11 - Reseau
SdE 11 - Reseau
 
SdE 10 - Threads
SdE 10 - ThreadsSdE 10 - Threads
SdE 10 - Threads
 
SdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de executionSdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de execution
 
SdE 8 - Memoire Virtuelle
SdE 8 - Memoire VirtuelleSdE 8 - Memoire Virtuelle
SdE 8 - Memoire Virtuelle
 
SdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la MémoireSdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la Mémoire
 
SdE 6 - Planification
SdE 6 - PlanificationSdE 6 - Planification
SdE 6 - Planification
 
SdE 5 - Planification
SdE 5 - PlanificationSdE 5 - Planification
SdE 5 - Planification
 
ALF 6 - Parser
ALF 6 - ParserALF 6 - Parser
ALF 6 - Parser
 

Recently uploaded

Căutarea binară într-un vector proiect informatica
Căutarea binară într-un vector proiect informaticaCăutarea binară într-un vector proiect informatica
Căutarea binară într-un vector proiect informatica
MarioButnaru
 
Proiect transfrontalier Grecu Larisa .pptx
Proiect transfrontalier Grecu Larisa .pptxProiect transfrontalier Grecu Larisa .pptx
Proiect transfrontalier Grecu Larisa .pptx
AlexandrinaCn
 
Proiect de specialitate pentru certificarea competențelor profesionale
Proiect de specialitate pentru certificarea competențelor profesionaleProiect de specialitate pentru certificarea competențelor profesionale
Proiect de specialitate pentru certificarea competențelor profesionale
Carmen513513
 
Prezentare Povestea lui Harap Alb de Ion Creangă
Prezentare Povestea lui Harap Alb de Ion CreangăPrezentare Povestea lui Harap Alb de Ion Creangă
Prezentare Povestea lui Harap Alb de Ion Creangă
stanalun54
 
Proces verbal sedinta cu parintii (26.09.2023).docx
Proces verbal sedinta cu parintii (26.09.2023).docxProces verbal sedinta cu parintii (26.09.2023).docx
Proces verbal sedinta cu parintii (26.09.2023).docx
AureliaTertereanu
 
Proiect Mihai Eminescu poet national .pptx
Proiect Mihai Eminescu poet national .pptxProiect Mihai Eminescu poet national .pptx
Proiect Mihai Eminescu poet national .pptx
EuSimina
 
Raport proiect transfrontalier Culori fermecate.pdf
Raport proiect transfrontalier Culori fermecate.pdfRaport proiect transfrontalier Culori fermecate.pdf
Raport proiect transfrontalier Culori fermecate.pdf
savinioana
 
PARTENERIAT TRANSFRONTALIER REPUBLICA MOLDOVA-ROMÂNIA
PARTENERIAT TRANSFRONTALIER REPUBLICA MOLDOVA-ROMÂNIAPARTENERIAT TRANSFRONTALIER REPUBLICA MOLDOVA-ROMÂNIA
PARTENERIAT TRANSFRONTALIER REPUBLICA MOLDOVA-ROMÂNIA
FlorinaTrofin
 

Recently uploaded (8)

Căutarea binară într-un vector proiect informatica
Căutarea binară într-un vector proiect informaticaCăutarea binară într-un vector proiect informatica
Căutarea binară într-un vector proiect informatica
 
Proiect transfrontalier Grecu Larisa .pptx
Proiect transfrontalier Grecu Larisa .pptxProiect transfrontalier Grecu Larisa .pptx
Proiect transfrontalier Grecu Larisa .pptx
 
Proiect de specialitate pentru certificarea competențelor profesionale
Proiect de specialitate pentru certificarea competențelor profesionaleProiect de specialitate pentru certificarea competențelor profesionale
Proiect de specialitate pentru certificarea competențelor profesionale
 
Prezentare Povestea lui Harap Alb de Ion Creangă
Prezentare Povestea lui Harap Alb de Ion CreangăPrezentare Povestea lui Harap Alb de Ion Creangă
Prezentare Povestea lui Harap Alb de Ion Creangă
 
Proces verbal sedinta cu parintii (26.09.2023).docx
Proces verbal sedinta cu parintii (26.09.2023).docxProces verbal sedinta cu parintii (26.09.2023).docx
Proces verbal sedinta cu parintii (26.09.2023).docx
 
Proiect Mihai Eminescu poet national .pptx
Proiect Mihai Eminescu poet national .pptxProiect Mihai Eminescu poet national .pptx
Proiect Mihai Eminescu poet national .pptx
 
Raport proiect transfrontalier Culori fermecate.pdf
Raport proiect transfrontalier Culori fermecate.pdfRaport proiect transfrontalier Culori fermecate.pdf
Raport proiect transfrontalier Culori fermecate.pdf
 
PARTENERIAT TRANSFRONTALIER REPUBLICA MOLDOVA-ROMÂNIA
PARTENERIAT TRANSFRONTALIER REPUBLICA MOLDOVA-ROMÂNIAPARTENERIAT TRANSFRONTALIER REPUBLICA MOLDOVA-ROMÂNIA
PARTENERIAT TRANSFRONTALIER REPUBLICA MOLDOVA-ROMÂNIA
 

Sisteme de Operare: Memorie virtuala

  • 2. Cuprins • paginare • page fault • on demand paging • copy-on-write • swap • maparea fișierelor 2
  • 3. Bibliografie • Modern Operating Systems – Capitolul 4 • 4.4 • 4.5 • 4.6 • Operating Systems Concepts – Capitolul 9 • 9.1 – 9.4 • 9.6 • 9.7 3
  • 5. Paginare • Memoria este împărțită în pagini – în general 4 KB • Pagini – Virtuale (pages) – Fizice (cadre - frames) • Tabelul de pagini – fiecare proces are un tabel de pagini • Adresă – adresă fizică = frame_index (page_index) + offset 5
  • 8. Transformarea adreselor • Pentru a accesa o adresă – acces în tabel (în memorie) – acces efectiv la memorie • Acces dublu – lent 8
  • 9. Translation Lookaside Buffer (TLB) • Memorie cache specială – 256 de intrări • Folosită per proces • Schimbarea de context – Se schimbă tabelul de pagini – TLB flush (mai puțin partea pentru kernel) 9
  • 12. Intrare în tabelul de pagini • Numărul cadrului • Drepturi de acces – nici unul – citire – scriere • Valabilă 12 exemple sur x86
  • 16. Memoria virtuală • Separare între – Spațiul fizic (RAM) – Spațiul logic (memoria văzuta de un proces) 16
  • 17. Avantaje și dezavantaje • Partajarea de memorie • Sunt disponibile toate adresele • Se poate utiliza mai multă memroie decât există RAM • Acces dublu la memorie – tabel și adresa efectivă • Support hardware • SO are nevoie de o componentă specială 17
  • 18. Spațiul de adresare simplificat 18
  • 19. Spațiul de adresare simplificat 19 • brk • sbrk
  • 21. Page fault • Acces la o pagină – ne mapată – invalidă – fără drept de acces • CPU aruncă o excepție – se execută exception handler-ul 21
  • 22. Exemple de page fault-uri • ne mapată – on-demand paging – swap • invalidă – pagina virtuală nu este alocată • fără drept de acces – read-only – pagină a SO – copy-on-write 22
  • 25. Etapele alocării de memorie 1. Alocarea unei pagini virtuale – intrare în tabelul de pagini 2. Alocarea paginii fizice – intrare în tabelul de cadre (frames) 3. Maparea paginii – legarea unei pagini cu un cadru 25
  • 26. Alocarea de memorie • rezervare (malloc) – alocarea unei pagini virtuale (fără cadru în RAM) – marcată invalidă • commit (la primul acces, *p = … ou … = *p) – page fault minor – alocarea cadrului fizic (frame) în RAM – legarea paginii cu cadrul – marcată validă 26
  • 28. Swap • Putem folosi mai multă memorie decât există RAM • O parte din pagini sunt stocate temporar pe un alt mediu de stocare – HDD – SSD • Poate fi lent 28
  • 29. Swap în Windows și Linux • Windows – C:pagefile.sys • Linux – Partiție separată (e) 29
  • 32. Care sunt paginile puse in swap? • FIFO • LRU – Least Recently Used • Second Chance – mai bun decât FIFO 32
  • 33. FIFO • coadă de pagini • prima pagină din coadă este pusă în swap (swapped out) • pagina încărcată din swap este pusă în capătul cozii (swapped in) 33
  • 36. LRU • algoritmul ideal: schimbă pagina care va fi utilizată peste cel mai mult timp • marcheză paginile cu data ultimului acces • pagina cu cel mai vechi timp de acces este pusă în swap 36
  • 38. Dificultatea implementării LRU • Hardware-ul trebuie să facă asta – implementarea în software ar face sistemul de 10 ori mai lent • Multă memorie ocupată cu stocarea datei de acces 38
  • 39. Second Chance • Fiecare pagină are un parametru (bit) – R – Referenced (read sau write) • Coada de pagini – Dacă pagina are R = 0, pagina e pusă în swap – Dacă pagina are R = 1, R este pus la 0 si pagina este pusă în capătul cozii 39
  • 41. NRU - Not Recently Used • Fiecare pagină are doi parametrii (bits) – R – referenced (read) – M – Modified (write) • În sistem round robin, alegem pagina care are clasa minimă 41 Clasa R M 1 (probabilitatea minimă de a fi utilizată) 0 0 2 0 1 3 1 0 4 (probabilitatea maximă de a fi utilizată) 1 1
  • 42. Pagini rezidente • Paginile care sunt în RAM • RSS proces – Resident Set Size (paginile care sunt prezente în RAM) • Alocare rezidentă – Paginile nu vor fi puse in swap • memoria kernel 42
  • 43. Linux int mlock(const void *addr, size_t len); int munlock(const void *addr, size_t len); addr – multiplu de pagină len – multiplu de pagină 43
  • 44. Swap Trashing • Sistemul folosește mult timp pentru – a pune pagini în swap – a lua pagini din swap 44
  • 46. Proces nou - UNIX • fork: creează un proces nou (copil) (aproape identic cu procesul părinte) – copierea memoriei • exec: încarcă imaginea dintr-un executabil în procesul curent (de obicei folosit de procesul copil) – memorie nouă 46
  • 47. Copy on write - fork • se copiază doar tabelul de pagini • toate paginile sunt marcate READ-ONLY – procesele partajează toată memorie • Când unul din procese scrie – page fault – se copiază pagina de memorie • Procesele au acum fiecare pagina lui 47
  • 50. Maparea fișierelor • o parte dintr-un fișier este mapată la o adresă de memorie • accesul la fișier se face doar prin memorie (fara read si write) • scrierea în fișier nu este imediată 50
  • 53. Linux void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); int munmap(void *addr, size_t len); int msync(void *addr, size_t len, int flags); • PROT_NONE Pages may not be accessed. • PROT_READ Pages may be read. • PROT_WRITE Pages may be written. • PROT_EXEC Pages may be executed. 53
  • 54. Exemple int fd = open ("fisier.dat", O_RDWR); char *p = NULL; if (fd >= 0) { p = mmap (NULL, 4096, PROT_WRITE, MAP_SHARED, fd, 0); if (p!=NULL) { strcpy (p, "so"); msync (p, 4096, M_SYNC); munmap (p, 4096); } close (fd); } 54
  • 55. Cuvinte cheie • Adresă logică • Adresă fizică • Paginare • TLB • Tabel de pagini • Page fault • On-demand paging • Swap • Schimbarea paginilor • FIFO • LRU • Second chance • NRU • Copy on write • Maparea paginilor 55