Differences

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

Link to this comparison view

so2:laboratoare:lab11:exercitii [2018/05/08 18:18]
ionel.ghita
so2:laboratoare:lab11:exercitii [2019/05/08 09:53] (current)
constantin.ghioc [2. [3p] Mapare de memorie virtual contiguă în user space]
Line 100: Line 100:
       * Completați zonele marcate cu ''​TODO 1''​.       * Completați zonele marcate cu ''​TODO 1''​.
       * Parcurgeți secțiunea [[:​so2:​laboratoare:​lab11#​Kernel-space|Maparea memoriei. Kernel-space]].       * Parcurgeți secțiunea [[:​so2:​laboratoare:​lab11#​Kernel-space|Maparea memoriei. Kernel-space]].
-    * Alocați, în funcția de inițializare a modulului, o zonă de memorie de ''​NPAGES+1''​ pagini folosind ''​kmalloc''​.+    * Alocați, în funcția de inițializare a modulului, o zonă de memorie de ''​NPAGES+2''​ pagini folosind ''​kmalloc''​.
       * O pagină în kernel are dimensiunea [[http://​elixir.free-electrons.com/​linux/​v4.9/​source/​arch/​x86/​include/​asm/​page_types.h#​L9|PAGE_SIZE]].       * O pagină în kernel are dimensiunea [[http://​elixir.free-electrons.com/​linux/​v4.9/​source/​arch/​x86/​include/​asm/​page_types.h#​L9|PAGE_SIZE]].
        * Zona alocată din spațiul kernel este indicată de ''​kmalloc_area''​.        * Zona alocată din spațiul kernel este indicată de ''​kmalloc_area''​.
-       * Dimensiunea ''​NPAGES+1''​ este necesară pentru aliniere.+       * Dimensiunea ''​NPAGES+2''​ este necesară pentru aliniere.
     * Adresa ​ ''​kmalloc_ptr''​ (variabilă globală) obținută în urma apelului ''​kmalloc''​ trebuie aliniată la adresa unei pagini.     * Adresa ​ ''​kmalloc_ptr''​ (variabilă globală) obținută în urma apelului ''​kmalloc''​ trebuie aliniată la adresa unei pagini.
       * Pentru aceasta, va trebui să alocați o pagină în plus față de numărul de pagini necesare și să folosiți formula:<​code>​       * Pentru aceasta, va trebui să alocați o pagină în plus față de numărul de pagini necesare și să folosiți formula:<​code>​
Line 122: Line 122:
     * Descărcați modulul din kernel.     * Descărcați modulul din kernel.
  
-==== 2. [3p] Mapare de memorie ​virtual contiguă în user space ====+==== 2. [3p] Mapare de memorie ​fizic discontiguă în user space ====
     * Utilizați scheletul de modul de kernel din directorul ''​vmmap/''​ pentru a crea o mapare a memoriei driver-ului în user-space.     * Utilizați scheletul de modul de kernel din directorul ''​vmmap/''​ pentru a crea o mapare a memoriei driver-ului în user-space.
       * Memoria driver-ului este alocată folosind ''​vmalloc''​.       * Memoria driver-ului este alocată folosind ''​vmalloc''​.
Line 191: Line 191:
         * Cât timp testul așteaptă, folosiți în altă consolă comanda ''​pmap''​ pentru a vedea mapările testului și a le compara cu cele obținute.         * Cât timp testul așteaptă, folosiți în altă consolă comanda ''​pmap''​ pentru a vedea mapările testului și a le compara cu cele obținute.
           * Puteți folosi comanda în forma<​code>​           * Puteți folosi comanda în forma<​code>​
-pmap $(pidof mmap-test)+cat /proc/$(pidof mmap-test)/maps
 </​code>​ </​code>​
 <​note>​ <​note>​
-          * Pentru a accesa altă consolă ​în mașina virtuală folosiți combinația de taste ''​Alt+F2''​.+          * Pentru a accesa altă consolă ​porniți ​mașina virtuală ​în mod grafic și folosiți combinația de taste ''​Alt+F2''​.
           * Pentru a reveni înapoi în prima consolă folosiți combinația de taste ''​Alt+F1''​.           * Pentru a reveni înapoi în prima consolă folosiți combinația de taste ''​Alt+F1''​.
 </​note>​ </​note>​
so2/laboratoare/lab11/exercitii.txt · Last modified: 2019/05/08 09:53 by constantin.ghioc
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