diff --git a/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.md b/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.md index f93d0a7e7b0c9b5af8179d6c41ef55926b611d72..92adae5cdcccbc715799c49021460fb47549fa77 100644 --- a/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.md +++ b/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.md @@ -124,9 +124,6 @@ En terme des fonctionnalités mises à disposition des applications utilisateur, Description Nom fonction Arguments ------------------------------------------------------ ----------------------- ------------------------- -Affiche une chaîne de caractères ; appelle la fonction `syscall_term_puts` arg1: chaîne à afficher -`term_puts` du noyau -\phantom{x} Récupère une touche pressée au clavier ; appelle la `syscall_keyb_get_key` arg1: touche lue fonction `keyb_get_key` du noyau (argument de sortie, de type `int *`) @@ -228,7 +225,7 @@ Le but ici est de déterminer à quel point les appels système impactent donc l Ensuite, il suffit de mesurer le temps écoulé pour chaque scénario. -A vous d'inventer un scénario qui fait sens, puis implémentez une application qui réalise exactement ceci en utilisant les fonctions `setpixel_syscall` et `setpixel`. Ses fonctions permettent d'afficher un pixel à l'écran, avec, et sans réaliser d'appel système. Trouvez également un moyen de mesurer les performances de chaque version. +A vous d'inventer un scénario qui fait sens, puis implémentez une application qui réalise exactement ceci en faisant appel à de nombreux appels système et sans en appeler. Trouvez également un moyen de mesurer les performances de chaque version. Pensez à compiler votre code en activant les optimisations du compilateur avec `make clean && make run DEBUG=0` afin d'obtenir des résultats plus représentatifs de conditions réelles. diff --git a/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.pdf b/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f2e01f87dd95c905549928d5768abb3b348217d6 Binary files /dev/null and b/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.pdf differ diff --git a/labs/lab4-tasks_syscalls/skeleton/yoctos/kernel/mem/paging.c b/labs/lab4-tasks_syscalls/skeleton/yoctos/kernel/mem/paging.c index 775265ad4096236c107953098c99f6659a0fe65c..23457fc49d18bf87c631097f9bcd88da47361da1 100644 --- a/labs/lab4-tasks_syscalls/skeleton/yoctos/kernel/mem/paging.c +++ b/labs/lab4-tasks_syscalls/skeleton/yoctos/kernel/mem/paging.c @@ -8,7 +8,7 @@ // Returns the number of frames allocated (including frames used to store page tables). uint_t paging_alloc(PDE_t *pagedir, PTE_t *page_tables[PAGETABLES_IN_PD], uint32_t virt_addr, uint32_t size, enum privilege_t privilege) { - if (virt_addr % PAGE_SIZE || phys_addr % PAGE_SIZE) { + if (virt_addr % PAGE_SIZE) { // Virtual address must be aligned to PAGE_SIZE! halt(); } diff --git a/labs/lab4-tasks_syscalls/skeleton/yoctos/user/entrypoint_asm.s b/labs/lab4-tasks_syscalls/skeleton/yoctos/user/entrypoint_asm.s index 033e93e58baa7093e4dd700d7c52784483366c68..a6f60ab646b4c619bf8f415f70df402b69ebdc94 100644 --- a/labs/lab4-tasks_syscalls/skeleton/yoctos/user/entrypoint_asm.s +++ b/labs/lab4-tasks_syscalls/skeleton/yoctos/user/entrypoint_asm.s @@ -2,6 +2,6 @@ extern main section .entrypoint call main - jmp exit + iret section .text diff --git a/labs/lab4-tasks_syscalls/validation/yoctos.iso b/labs/lab4-tasks_syscalls/validation/yoctos.iso new file mode 100644 index 0000000000000000000000000000000000000000..1cc9cd1e416d32e77c0da166e61a76ab97848953 Binary files /dev/null and b/labs/lab4-tasks_syscalls/validation/yoctos.iso differ