This shows you the differences between two versions of the page.
so:cursuri:curs-06 [2014/03/29 18:42] razvan.deaconescu [Curs 06 - Memoria virtuală] |
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 | ||
Line 17: | Line 15: | ||
* Capitolul 3 - Memory Management | * Capitolul 3 - Memory Management | ||
* Secțiunile 3.4, 3.5 | * 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 101: | 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 116: | 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> |