This shows you the differences between two versions of the page.
|
so2:laboratoare:lab03:exercitii [2018/03/06 23:05] anda.nicolae [3. [2.5p] Alocarea și lucrul cu memoria î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. | ||