<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD><TITLE></TITLE>
<STYLE>
body, table, tr, td, p {font-family: Verdana;font-size:12px;margin: 0px 0px 0px 0px}
.bgtabl {BACKGROUND-REPEAT: no-repeat}
</STYLE>
</HEAD>
<BODY bgProperties="fixed" bgcolor="#FFFFFF" background="http://flashimg.club-internet.fr/flashmail/vide.gif">
<br>
bonjour ,<br>
<br>
j'ai compris le pb de la terminaison de thread , mais pourkoi dans sos au niveau de kos-sys <br>
si on enleve les boucles for (;;) le systeme plante ? je crois c un defaut de page <br>
<br>
oui si tu a des modifs à proposer je suis tres interressé !! <br>
<br>
a+<br>
<br>
<br>----Message d'origine----
<br>&gt;De: sos-request@the-doors.enix.org
<br>&gt;Sujet: Lot Sos, Vol 35, Parution 3
<br>&gt;A: sos@the-doors.enix.org
<br>&gt;Date: Thu,  7 Apr 2005 12:00:07 +0200 (CEST)
<br>&gt;
<br>&gt;Envoyez vos messages pour la liste Sos à
<br>&gt;        sos@the-doors.enix.org
<br>&gt;
<br>&gt;Pour vous (dés)abonner par le web, consultez
<br>&gt;        http://the-doors.enix.org/cgi-bin/mailman/listinfo/sos
<br>&gt;
<br>&gt;ou, par email, envoyez un message avec 'help' dans le corps ou dans le
<br>&gt;sujet à
<br>&gt;        sos-request@the-doors.enix.org
<br>&gt;
<br>&gt;Vous pouvez contacter l'administrateur de la liste à l'adresse
<br>&gt;        sos-owner@the-doors.enix.org
<br>&gt;
<br>&gt;Si vous répondez, n'oubliez pas de changer l'objet du message afin
<br>&gt;qu'il soit plus spécifique que "Re: Contenu du digest de Sos..."
<br>&gt;
<br>&gt;
<br>&gt;Thèmes du jour :
<br>&gt;
<br>&gt;   1. Re: Re: Evolution ? (David Decotigny)
<br>&gt;
<br>&gt;
<br>&gt;----------------------------------------------------------------------
<br>&gt;
<br>&gt;Message: 1
<br>&gt;Date: Wed, 06 Apr 2005 18:43:14 +0200
<br>&gt;From: David Decotigny <david.decotigny @free.fr="">
<br>&gt;Subject: Re: [SOS] Re: Evolution ?
<br>&gt;To: SOS mailing-list <sos @the-doors.enix.org="">
<br>&gt;Message-ID: &lt;425411A2.9040104@free.fr&gt;
<br>&gt;Content-Type: text/plain; charset=ISO-8859-1; format=flowed
<br>&gt;
<br>&gt;
<br>&gt;Bonjour,
<br>&gt;
<br>&gt;D'abord, pour répondre à Xavier qui a sûrement été beaucoup influencé 
<br>&gt;par http://www.acm.org/classics/oct95/ , oui : dans SOS il y a quelques 
<br>&gt;goto. Et ce n'est pas fini, il y en aura quelques autres encore (pas 
<br>&gt;trop, rassure-toi). Ce n'est pas que je garde des vieilles habitudes du 
<br>&gt;basic, c'est juste que dans certaines fonctions ça aide à la lisibilité 
<br>&gt;du code et à la maintenabilité aussi. Pour les fonctions qui doivent 
<br>&gt;fabriquer des choses en cours de route et qui doivent les "défabriquer" 
<br>&gt;en cas d'erreur, c'est très pratique, ça évite les redondances de code 
<br>&gt;(source d'oublis en cas de modif) ou les imbrications de if/else. 
<br>&gt;L'ideal eût été d'avoir un systeme d'exceptions au niveau du langage.... 
<br>&gt;c'est là que Ada eût été tres apprecie.
<br>&gt;
<br>&gt;weisenhorn.geoffroy@club-internet.fr wrote:
<br>&gt;&gt; Mais j'ai une question comment fait on dans sos pour terminer un thread 
<br>&gt;&gt; il n'y a pas de thread Trash
<br>&gt;&gt; comme dans Koalys ?
<br>&gt;
<br>&gt;Non et c'est volontaire. Dans SOS, les threads *noyau* n'ont le droit de 
<br>&gt;terminer que de leur propre initiative (ie terminaison dite "synchrone" 
<br>&gt;: appel a sos_thread_exit). La difficulte d'un systeme de terminaison 
<br>&gt;assynchrone (ie ce que tu cherches) est la suivante. Imagine qu'on 
<br>&gt;termine un thread qui possede un mutex. Dans ce cas, ceux qui sont en 
<br>&gt;attente du mutex ne seront jamais reveilles ? Evidemment, pour cette 
<br>&gt;question, il y a une reponse systematique : pour tout thread noyau qui 
<br>&gt;possede l'acces a une ressource, celle-ci est mise dans une "liste des 
<br>&gt;ressources possedees par le thread", et on appelle un callback sur 
<br>&gt;chacune de ces ressources quand le thread est termine. Je ne suis pas 
<br>&gt;sûr que cette solution ne soit pas source d'interblocage, mais a vue de 
<br>&gt;nez ça fait ce qu'on veut : ca marche bien meme en cas de terminaison 
<br>&gt;assynchrone. Techniquement, c'est une solution envisageable a faible coût.
<br>&gt;
<br>&gt;Dans SOS, on n'a pas implanté ça. Mais on n'en n'a pas vraiment besoin 
<br>&gt;car à terme (je ne sais pas encore quand), ce genre de choses se fera 
<br>&gt;via l'espace utilisateur. De la meme facon que dans Unix : si un 
<br>&gt;processus P1 veut terminer un autre processus P2, un "signal" est envoye 
<br>&gt;a P2, ce qui correspond a l'execution d'une routine user dans le 
<br>&gt;processus P2, et cette routine peut faire ce qu'elle veut, en 
<br>&gt;particulier faire exit(). Bref, meme avec ce genre de mecanisme 
<br>&gt;assynchrone (au niveau *user*), ca se termine toujours par une 
<br>&gt;terminaison synchrone du thread *noyau* ET dans de bonnes conditions. 
<br>&gt;Car en effet, au final c'est un thread utilisateur en mode utilisateur 
<br>&gt;qui demande a SE terminer, donc on est sûr qu'il ne possede aucune 
<br>&gt;*synchro noyau* bas-niveau (sinon c'est que le noyau se vautre qqpart : 
<br>&gt;un thread noyau ne doit posseder aucune synchro noyau [ksynch] quand il 
<br>&gt;repasse en mode user) : le thread noyau "possede" juste les *synchro 
<br>&gt;user et ressources user* (en gros, je parle des "file descriptors"). Et 
<br>&gt;celles-ci, on sait les gerer parfaitement en cas de terminaison puisque 
<br>&gt;"exit" doit deja savoir les gerer. Bref, avec cette solution, on n'a pas 
<br>&gt;de cas particulier a gerer au niveau du noyau : juste un cas d'appel a 
<br>&gt;"exit" user tout a fait normal.
<br>&gt;
<br>&gt;Voila le pourquoi de la chose. Mais encore une fois, le code de SOS 
<br>&gt;devrait pouvoir servir de base a faire des experiences. Le but n'est pas 
<br>&gt;de proposer un OS "ficelé" prêt à etre installe et a regarder "tourner". 
<br>&gt;C'est que vous compreniez comment ça marche pour changer des bouts, 
<br>&gt;etudier, et... faire mieux ! Je pense que cette "fonctionnalite" qui, 
<br>&gt;selon vous, "manque", ce serait un bon exercice pour voir les problemes 
<br>&gt;qui peuvent se poser (s'il en existe).
<br>&gt;
<br>&gt;Tiens, pendant que j'y suis, voici une autre idee de truc interessant a 
<br>&gt;regarder : au niveau de kmem_vmm, on gere des regions classees par 
<br>&gt;adresses croissantes. Mais ce classement se fait de façon naïve, ie par 
<br>&gt;des listes ! Une idee d'amelioration serait d'utiliser des arbres, on 
<br>&gt;gagnerait enormement en complexite (O(log n) contre O(n)) donc en 
<br>&gt;rapidité. Si on ne l'a pas fait, c'est pour que le code de SOS ne soit 
<br>&gt;pas trop chargé avec une implantation des arbres binaires (p.ex 
<br>&gt;splay-trees comme dans KOS) très efficace, mais finalement pas 
<br>&gt;fondamentale puisqu'on peut obtenir la meme fonctionnalite avec des 
<br>&gt;listes. Dans l'article 7.5 vous pourrez remarquer le meme "probleme" : a 
<br>&gt;deux endroits, des listes classées auraient pu avantageusement etre 
<br>&gt;remplacées par des arbres.
<br>&gt;
<br>&gt;Je pourrais donner d'autres idees de modifs. Si des gens sont 
<br>&gt;interesses, nous serions ravis de rajouter leurs contributions sur le 
<br>&gt;site de sos !
<br>&gt;
<br>&gt;Bonne journee,
<br>&gt;
<br>&gt;-- 
<br>&gt;David Decotigny -- http://david.decotigny.free.fr
<br>&gt;
<br>&gt;
<br>&gt;------------------------------
<br>&gt;
<br>&gt;_______________________________________________
<br>&gt;Sos mailing list
<br>&gt;Sos@the-doors.enix.org
<br>&gt;http://the-doors.enix.org/cgi-bin/mailman/listinfo/sos
<br>&gt;
<br>&gt;
<br>&gt;Fin de Lot Sos, Vol 35, Parution 3
<br>&gt;**********************************
<br>&gt;

</sos></david.decotigny></body></html>