Differences

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

Link to this comparison view

so2:laboratoare:lab03:exercitii [2018/03/06 23:02]
anda.nicolae [4. [2p] Lucrul cu liste în kernel]
so2:laboratoare:lab03:exercitii [2018/03/06 23:09] (current)
anda.nicolae [2. [1p] Folosirea de operații blocante în context atomic]
Line 123: Line 123:
 ==== 2. [1p] Folosirea de operații blocante în context atomic ==== ==== 2. [1p] Folosirea de operații blocante în context atomic ====
  
-Intrați în directorul ''​2-sched-spin/''​ și parcurgeți conținutul fișierului ''​sched-spin.c''​. **Hint**: Funcția [[http://​elixir.bootlin.com/​linux/​v4.9/​source/​kernel/​time/​timer.c?#L1697|schedule_timeout]],​ coroborată cu macro-ul [[http://​elixir.bootlin.com/​linux/​v4.9/​source/​include/​linux/​sched.h?#L297|set_current_state]],​ forțează procesul curent să aștepte 5 secunde.+Intrați în directorul ''​2-sched-spin/''​ și parcurgeți conținutul fișierului ''​sched-spin.c''​. **Hint**: Funcția [[https://​elixir.bootlin.com/​linux/​v4.15.7/​source/​kernel/​time/​timer.c#​L1725|schedule_timeout]],​ coroborată cu macro-ul [[https://​elixir.bootlin.com/​linux/​v4.15.7/​source/​include/​linux/​sched.h#​L128|set_current_state]],​ forțează procesul curent să aștepte 5 secunde.
   - Compilați codul sursă într-un modul de kernel și copiați-l pe mașina virtuală, conform informațiilor de mai sus (''​make build''​ și ''​make copy''​).   - Compilați codul sursă într-un modul de kernel și copiați-l pe mașina virtuală, conform informațiilor de mai sus (''​make build''​ și ''​make copy''​).
   - Încărcați modulul în kernel folosind comanda ''​insmod sched-spin.ko''​.   - Încărcați modulul în kernel folosind comanda ''​insmod sched-spin.ko''​.
Line 146: Line 146:
   - (**TODO 2**) Folosiți funcția completată anterior pentru a inițializa cele 4 structuri cu următoarele informații:​   - (**TODO 2**) Folosiți funcția completată anterior pentru a inițializa cele 4 structuri cu următoarele informații:​
     * PID-ul procesului curent, dat de macro-ul ''​current'',​ de tipul ''​struct task_struct *''​.     * PID-ul procesului curent, dat de macro-ul ''​current'',​ de tipul ''​struct task_struct *''​.
-      * **Hint**: Căutați câmpul relevant pentru PID în structura [[http://​elixir.bootlin.com/​linux/​v4.9/​source/​include/​linux/​sched.h?#L1475|task_struct]].+      * **Hint**: Căutați câmpul relevant pentru PID în structura [[https://​elixir.bootlin.com/​linux/​v4.15.7/​source/​include/​linux/​sched.h#​L520|task_struct]].
     * PID-ul procesului părinte al procesului curent.     * PID-ul procesului părinte al procesului curent.
       * **Hints**:       * **Hints**:
-        * Căutați câmpul relevant din structura [[http://​elixir.bootlin.com/​linux/​v4.9/​source/​include/​linux/​sched.h?#L1475|task_struct]].+        * Căutați câmpul relevant din structura [[https://​elixir.bootlin.com/​linux/​v4.15.7/​source/​include/​linux/​sched.h#​L520|task_struct]].
         * Căutați după șirul "​parent"​.         * Căutați după șirul "​parent"​.
     * PID-ul procesului următor din lista de procese.     * PID-ul procesului următor din lista de procese.
       * **Hints**:       * **Hints**:
-        * Folosiți macro-ul [[http://​elixir.bootlin.com/​linux/​v4.9/​source/​include/​linux/​sched.h?#L2990|next_task]].+        * Folosiți macro-ul [[https://​elixir.bootlin.com/​linux/​v4.15.7/​source/​include/​linux/​sched/signal.h#L500|next_task]].
         * Macro-ul întoarce pointer-ul la următorul proces, adică de tipul ''​struct task_struct *''​.         * Macro-ul întoarce pointer-ul la următorul proces, adică de tipul ''​struct task_struct *''​.
     * PID-ul următorului proces după următorul.     * PID-ul următorului proces după următorul.
-        * **Hint**: Folosiți de două ori macro-ul [[http://​elixir.bootlin.com/​linux/​v4.9/​source/​include/​linux/​sched.h?#L2990|next_task]].+        * **Hint**: Folosiți de două ori macro-ul [[https://​elixir.bootlin.com/​linux/​v4.15.7/​source/​include/​linux/​sched/signal.h#L500|next_task]].
   - (**TODO 3**) Afișați cele patru structuri.   - (**TODO 3**) Afișați cele patru structuri.
     * Folosiți ''​printk''​ pentru a afișa cele două câmpuri ale acestora: ''​pid''​ și ''​timestamp''​.     * Folosiți ''​printk''​ pentru a afișa cele două câmpuri ale acestora: ''​pid''​ și ''​timestamp''​.
so2/laboratoare/lab03/exercitii.1520370154.txt.gz · Last modified: 2018/03/06 23:02 by anda.nicolae
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