Differences

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

Link to this comparison view

so2:laboratoare:lab11:exercitii [2018/05/09 09:20]
ionel.ghita [4. [3p] Afișare memorie mapată în ''procfs'']
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''​.
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