Changes between Initial Version and Version 1 of AS6-TME-B7


Ignore:
Timestamp:
Apr 10, 2022, 7:43:00 PM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B7

    v1 v1  
     1[[PageOutline]]
     2**
     3{{{#!html
     4<h1> <font size="+2"> Mécanismes de synchronisation
     5}}}
     6
     7
     8Vous pouvez lire les [htdocs:cours/Archi-2-B7-synchro-2p.pdf slides de cours] pour voir les détails, mais voici le résumé des principes en quelques lignes.
     9
     10- **Point important**
     11  - détails
     12
     13
     14
     15
     16==
     17= A. Questions de cours
     18
     19
     20
     21
     22La majorité des réponses aux questions sont dans le cours ou dans le rappel du cours donné au début de cette page, c'est voulu. Les questions suivent à peu près l'ordre du cours, elles sont simples, mais vous avez besoin de comprendre le cours pour y répondre :-)
     23Quand une question vous demande si quelque chose est vrai ou faux, ne répondez pas juste "oui" ou "non », mais justifiez vos réponses avec une petite phrase. Le but de ces questions est d'évaluer vos connaissances, donc plus vous êtes précis, mieux c'est.
     24
     25
     261. Question ?
     27{{{#!protected ------------------------------------------------------------------
     28'''
     29 *
     30'''
     31}}}
     32
     33
     34
     35
     36
     37==
     38= B. Travaux pratiques
     39
     40
     41
     42Commencez par récupérer le code de source de la séance [attachment:s7.tgz s7.tgz]
     43
     44Pour la partie pratique, vous allez devoir programmer un peu. Les premières questions sont assez faciles, les dernières un peu moins, faites ce que vous pouvez. Je ne vous demande pas de faire tous les exercices, d'autant qu'il n'y aura pas de correction pour le moment (faute de temps). Le but est de vous «forcer» à entrer dans le code et même des petites modifications suffisent. 
     45Les exercices sont classés par niveau de difficultés supposées (on est jamais à l'abri de surprise)
     46
     47En préalable de tous les exercices, quelques questions sur le code. Dans le répertoire `s7` vous trouvez le répertoire `01_synchro` qui contient le code complet des nouveaux mécanismes de synchro. Cela a un impact sur `hcpua.S` pour les spinlocks, `kthread.[ch]` pour la gestion des deux nouveaux états `WAIT` et `ZOMBIE`, en particulier les fonction `thread_wait` et `thread_notify`, et évidemment `thread.[ch]` pour l'ajout des appels systèmes.
     48{{{
     4901_synchro
     50├── Makefile
     51├── common
     52│   ├── debug_off.h
     53│   ├── debug_on.h
     54│   ├── errno.h          // codes d'erreur des appels système
     55│   ├── esc_code.h       // séquence d'échappement ASCII
     56│   ├── list.h
     57│   ├── syscalls.h
     58│   └── usermem.h
     59├── kernel
     60│   ├── Makefile
     61│   ├── harch.c
     62│   ├── harch.h
     63│   ├── hcpu.h
     64│   ├── hcpua.S
     65│   ├── hcpuc.c
     66│   ├── kernel.ld
     67│   ├── kinit.c
     68│   ├── klibc.c
     69│   ├── klibc.h
     70│   ├── kmemory.c
     71│   ├── kmemory.h
     72│   ├── ksynchro.c       // mutex et autres implémentation
     73│   ├── ksynchro.h       // mutex et autres protopypes
     74│   ├── ksyscalls.c
     75│   ├── kthread.c
     76│   └── kthread.h
     77├── uapp
     78│   ├── Makefile
     79│   └── main.c
     80└── ulib
     81    ├── Makefile
     82    ├── crt0.c
     83    ├── libc.c
     84    ├── libc.h
     85    ├── memory.c
     86    ├── memory.h
     87    ├── thread.c
     88    ├── thread.h
     89    └── user.ld
     90}}}
     91
     92
     93== B.1.
     94
     95