[Kos-dev] synchro en SMP

Thomas Petazzoni kos-dev@enix.org
Wed, 04 Jun 2003 12:04:11 +0200


This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enigE8F445A4822ADB797E041F7A
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 8bit

Bonjour,

> Conclusion : il est necessaire d'assurer strictement que A ne va pas
> pouvoir etre vire de la kwq avant d'avoir ete completement bloque au
> sens propre (ie avant qu'il y ait eu sauvegarde de son contexte).

Okay, je pense avoir compris le problème : on a remis le thread bloqué
dans la CPU waitqueue (liste des threads prêts pour éxécution), mais il
n'est en fait pas encore tout à fait ready vu que son contexte n'a pas
encore été sauvegardé.

Ceci dit, cela me semble être un problème général en SMP, non ?
Actuellement, suite à une interruption timer, on place le thread courant
dans la CPU waitqueue, on en élit un autre, et hop, switch ;) Si entre
le moment où l'ancien thread est placé dans la CPU waitqueue et le
switch en lui même un autre processeur décide d'élire ce thread -> Bing.

Il y a donc effectivement du boulot à faire une fois que le contexte est
sauvegardé. Pourquoi ne pas passer la waitqueue destination à
cpl0_switch_with_return ? (C'est juste une idée comme ça en l'air).

J'aimerais bien comprendre quand même comment ça marche dans les autres
OS. J'ai commencé à regarder dans Linusque, mais c'est pas facile facile.

> Pour bochs : a mon avis ca suffit pas de decrementer les ticks "a la
> main" qd on a vu un outb sur 0xe8... C'est pas tellement ces cycles
> qu'il faut regarder, c'est surtout que des que 'outb 0xe8' a ete
> decode (ou meme pendant), tick1 ou tickn ne fasse pas bouger le
> calendrier des evenements du tout.

Pendant que outb 0xE8 est en décodage, tu ne sais pas que c'est outb
0xE8 qui est en décodage, donc il faudra revenir un peu en arrière dans
le temps ;)

> PS : Thomas ta radio streaming c'est quoi deja ?

http://www.di.fm : la plupart des radios c'est de la musique
électronique (Trance, House, Techno, etc..), en bas de la page il y a
une radio de Classique et une radio de Jazz.

Thomas
-- 
PETAZZONI Thomas - thomas DOT petazzoni AT enix DOT org - UIN : 34937744
Web: http://www.enix.org/~thomas/
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7

--------------enigE8F445A4822ADB797E041F7A
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQE+3cQb9lPLMJjT96cRAtTtAJ9iU4lSXyKV25Bfrk/Zl3STUvnVoACcDz4l
ymtMV7fIaRDC1Po11SldzkM=
=xs69
-----END PGP SIGNATURE-----

--------------enigE8F445A4822ADB797E041F7A--