Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so:laboratoare:laborator-06 [2021/04/04 10:22]
maria.mihailescu [Excepții]
so:laboratoare:laborator-06 [2022/04/13 15:14] (current)
teodor_stefan.dutu [Exercițiul 3 - Detectare 'buffer underrun' folosind ElectricFence]
Line 560: Line 560:
    * ''​EXCEPTION_CONTINUE_SEARCH''​ pentru a continua parcurgerea listei de funcții de tratare a excepțiilor,​ în caz că au fost înregistrate mai multe astfel de funcții.    * ''​EXCEPTION_CONTINUE_SEARCH''​ pentru a continua parcurgerea listei de funcții de tratare a excepțiilor,​ în caz că au fost înregistrate mai multe astfel de funcții.
  
-=== Sumar ===+===== Sumar ===== 
 + 
 + 
 +^ Operație ^ Linux ^ Windows^ 
 +| Maparea unui fișier ​ | [[#​maparea_fisierelor|mmap]] | [[#​maparea_fisierelor1|CreateFileMapping]] + [[#​maparea_fisierelor1|MapViewOfFile]] | 
 +| Demaparea unui fișier ​ | [[#​demaparea_unei_zone_din_spatiul_de_adresa|munmap]] | [[#​demaparea_unei_zone_din_spatiul_de_adresa1|UnmapViewOfFile]] | 
 +| Maparea unei zone de memorie ​ | [[#​maparea_fisierelor|mmap]] | [[#​alocare_de_memorie_in_spatiul_de_adresa_al_procesului1|VirtualAlloc]] | 
 +| Demaparea unei zone de memorie ​ | [[#​demaparea_unei_zone_din_spatiul_de_adresa|munmap]]| [[#​demaparea_unei_zone_din_spatiul_de_adresa1|VirtualFree]] | 
 +| Redimensionarea unei zone mapate ​ | [[#​redimensionarea_unei_zone_mapate|mremap]] | - | 
 +| Schimbarea protecției unei zone mapate ​ | [[#​schimbarea_protectiei_unei_zone_mapate|mprotect]] | [[#​schimbarea_protectiei_unei_zone_mapate1|VirtualProtect]] | 
 +| Blocarea paginării ​ | [[#​blocarea_paginarii|mlock]] | [[#​blocarea_paginarii1|VirtualLock]] | 
 +| Deblocarea paginării ​ | [[#​blocarea_paginarii|munlock]] | [[#​blocarea_paginarii1|VirtualUnlock]] | 
 +| Interogarea zonelor mapate ​ | - | [[#​interogarea_zonelor_mapate|VirtualQuery]] | 
 +|Excepții (accesul incorect la memorie) ​ |Programul primește SIGSEGV sau SIGBUS. \\ \\ Dacă se folosește o funcție de tip ''​sa_sigaction''​ pentru interceptarea semnalelor, atunci structura [[#​exceptii|siginfo_t]] primită ca parametru conține informații referitoare la ce a cauzat excepția (semnalul, adresa, cauza excepției).|Pentru tratarea excepțiilor se pot folosi funcțiile [[#​exceptii1|AddVectoredExceptionHandler]] și [[#​exceptii1|RemoveVectoredExceptionHandler]] împreună cu o funcție de tratare a excepțiilor.| 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
  
 ===== Exerciții ===== ===== Exerciții =====
Line 578: Line 599:
  
 <​note>​ Pentru a vă ajuta la implementarea exercițiilor din laborator, în directorul ''​utils''​ din arhivă există un fișier ''​utils.h''​ cu funcții utile. </​note>​ <​note>​ Pentru a vă ajuta la implementarea exercițiilor din laborator, în directorul ''​utils''​ din arhivă există un fișier ''​utils.h''​ cu funcții utile. </​note>​
 +
 +==== Exercițiul 0 - GSOC ====
 +
 +Google Summer of Code este un program de vară în care studenții
 +(indiferent de anul de studiu) sunt implicați în proiecte Open Source
 +pentru a își dezvolta skill-urile de programare, fiind răsplătiți cu o
 +bursă a cărei valoare [[https://​developers.google.com/​open-source/​gsoc/​help/​student-stipends|depinde de țară]]
 +([[https://​developers.google.com/​open-source/​gsoc|pagină principală GSOC]]).
 +
 +UPB se află în top ca număr de studenți acceptați; în fiecare an fiind undeva la aprox. 30-40 de studenți acceptați.
 +Vă încurajăm să aplicați!
 +
  
 ===== Linux ===== ===== Linux =====
Line 645: Line 678:
  
 <code bash> <code bash>
-$ wget http://​ro.archive.ubuntu.com/​ubuntu/​pool/​main/​e/​electric-fence/​electric-fence_2.2.4_i386.deb +$ wget http://​ro.archive.ubuntu.com/​ubuntu/​pool/​main/​e/​electric-fence/​electric-fence_2.2.4_amd64.deb 
-$ sudo dpkg -i electric-fence_2.2.4_i386.deb+$ sudo dpkg -i electric-fence_2.2.4_amd64.deb
 </​code>​ </​code>​
 </​note>​ </​note>​
Line 749: Line 782:
 Testați comportamentul programului când se fac accese de citire și scriere în aceste zone. Urmăriți comentariile cu ''​TODO 1''​. Testați comportamentul programului când se fac accese de citire și scriere în aceste zone. Urmăriți comentariile cu ''​TODO 1''​.
  
-Adăugați un handler de tratare a excepțiilor care să remapeze incremental zonele cu protecție de citire și scriere la generarea excepțiilor. Astfel, dacă pagina nu are vreun drept, la page fault se va remapa cu drepturi de citire. Dacă pagina are drepturi de citire, la page fault se va remapa cu drepturi de citire + drepturi de scriere. Urmăriți comentariile cu ''​TODO 2''​.+Adăugați un handler de tratare a excepțiilor care să remapeze incremental zonele cu protecție de citire și scriere la generarea excepțiilor. Astfel, dacă pagina nu are niciun ​drept, la page fault se va remapa cu drepturi de citire. Dacă pagina are drepturi de citire, la page fault se va remapa cu drepturi de citire + drepturi de scriere. Urmăriți comentariile cu ''​TODO 2''​.
  
 <note important>​ <note important>​
Line 775: Line 808:
   * Care sunt cele mai importante diferențe între metoda [[https://​docs.python.org/​2/​library/​mmap.html|mmap]] din modulul de Python cu același nume și funcția [[http://​man7.org/​linux/​man-pages/​man2/​mmap.2.html|nativă]] din Linux?   * Care sunt cele mai importante diferențe între metoda [[https://​docs.python.org/​2/​library/​mmap.html|mmap]] din modulul de Python cu același nume și funcția [[http://​man7.org/​linux/​man-pages/​man2/​mmap.2.html|nativă]] din Linux?
        
-===== Soluții ===== 
- 
- ​[[http://​elf.cs.pub.ro/​so/​res/​laboratoare/​lab06-sol.zip | Soluții exerciții laborator 6]] 
  
 ===== Resurse Utile ===== ===== Resurse Utile =====
so/laboratoare/laborator-06.1617520937.txt.gz · Last modified: 2021/04/04 10:22 by maria.mihailescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0