This shows you the differences between two versions of the page.
so:cursuri:curs-06 [2014/03/22 22:14] razvan.deaconescu [Page-Faulturi] |
so:cursuri:curs-06 [2019/03/24 14:10] (current) razvan.deaconescu |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Curs 06 - Memoria virtuală ====== | ====== Curs 06 - Memoria virtuală ====== | ||
- | |||
- | <html> | ||
- | <iframe src="http://prezi.com/embed/qshrq7oeytj2/?bgcolor=ffffff&lock_to_path=0&autoplay=0&autohide_ctrls=0&features=undefined&disabled_features=undefined" width="550" height="400" frameBorder="0"></iframe> | ||
- | </html> | ||
* [[http://prezi.com/qshrq7oeytj2/?utm_campaign=share&utm_medium=copy&rc=ex0share | Curs 06 - Memoria virtuală (vizualizare Prezi)]] | * [[http://prezi.com/qshrq7oeytj2/?utm_campaign=share&utm_medium=copy&rc=ex0share | Curs 06 - Memoria virtuală (vizualizare Prezi)]] | ||
* [[http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-06.pdf | Curs 06 - Memoria virtuală (PDF)]] | * [[http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-06.pdf | Curs 06 - Memoria virtuală (PDF)]] | ||
+ | |||
+ | * [[https://drive.google.com/open?id=1jsFIY2bG2QssLX1X9AWn4_0Ec2x_hK9oOGohmFqKSRM|Notițe de curs]] | ||
* Suport curs | * Suport curs | ||
* Operating Systems Concepts Essentials | * Operating Systems Concepts Essentials | ||
* Capitolul 8 - Virtual Memory | * Capitolul 8 - Virtual Memory | ||
- | * Modern Operating Systems | + | * Modern Operating Systems, 2nd Ed. |
* Capitolul 4 - Memory Management | * Capitolul 4 - Memory Management | ||
* Secțiunile 4.4, 4.5 | * Secțiunile 4.4, 4.5 | ||
+ | * Modern Operating Systems, 3rd Ed. | ||
+ | * Capitolul 3 - Memory Management | ||
+ | * Secțiunile 3.4, 3.5 | ||
+ | * [[http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/|Anatomy of a Program in Memory]] | ||
+ | |||
+ | <html> | ||
+ | <center> | ||
+ | <iframe src="https://prezi.com/embed/qshrq7oeytj2/?bgcolor=ffffff&lock_to_path=0&autoplay=0&autohide_ctrls=0&features=undefined&disabled_features=undefined" width="550" height="400" frameBorder="0"></iframe> | ||
+ | </center> | ||
+ | </html> | ||
===== Demo-uri ===== | ===== Demo-uri ===== | ||
Line 98: | Line 106: | ||
Observăm de asemenea, că se realizează un număr redus de apeluri de sistem ''brk'' raportat la cele ''1024'' de apeluri de bibliotecă ''malloc''. Un apel ''brk'' alocă un pool mai mare de memorie care va fi apoi folosit la apeluri viitoare ''malloc''; realizează o prealocare. | Observăm de asemenea, că se realizează un număr redus de apeluri de sistem ''brk'' raportat la cele ''1024'' de apeluri de bibliotecă ''malloc''. Un apel ''brk'' alocă un pool mai mare de memorie care va fi apoi folosit la apeluri viitoare ''malloc''; realizează o prealocare. | ||
- | Pentru a vedea comportamentului funcției de bibliotecă ''mallooc'', actualizăm codul astfel încât ''malloc'' să aloce, la fel ca ''mmap'' calupuri de ''1MB'' de memorie. Adică bucla ''for'' aferentă să arate așa:<code c> | + | Pentru a vedea comportamentului funcției de bibliotecă ''malloc'', actualizăm codul astfel încât ''malloc'' să aloce, la fel ca ''mmap'' calupuri de ''1MB'' de memorie. Adică bucla ''for'' aferentă să arate așa:<code c> |
for (cnt = 0; cnt < NUM_ROUNDS; cnt++) { | for (cnt = 0; cnt < NUM_ROUNDS; cnt++) { | ||
puts("Using malloc to allocate 1024 sets of 1024 bytes."); | puts("Using malloc to allocate 1024 sets of 1024 bytes."); | ||
Line 113: | Line 121: | ||
</code> | </code> | ||
- | Observăm că acum și funcția de bibliotecă ''malloc'' folosește în spate tot apelul de sistem ''mmap''. Acesta alocă doar memorie virtuală de unde și comportamentul. De la un valoare dată, alocarea cu ''malloc'' folosește apelul de sistem ''mmap''. | + | Observăm că acum și funcția de bibliotecă ''malloc'' folosește în spate tot apelul de sistem ''mmap''. Acesta alocă doar memorie virtuală de unde și comportamentul. De la o valoare dată, alocarea cu ''malloc'' folosește apelul de sistem ''mmap''. |
<spoiler Despre apelul malloc> | <spoiler Despre apelul malloc> |