Bonjour,
Depuis que j'ai achevé ma lecture du passionnant "Modern Operating Systems" d'Andrew S. Tannenbaum, il y a quelques mois, je ne peux pas m'empêcher de caresser l'idée de mettre en pratique les connaissances théoriques sur les OS que j'en ai tirées.
Il ne s'agit pas de tenter de conquérir le monde de l'informatique avec un produit génial, beaucoup d'autres font très bien leur travail de ce côté-là, il s'agit juste d'un hobby, de me lancer de petits défis en programmation, et de m'amuser à voir jusqu'à quel degré je peux pousser de petites idées notées sur un coin de feuille en pratique et quels sont leurs défauts. (Exemple : se débarasser de la vielle distinction entre processus et threads en offrant aux processus la possibilité de partager entre eux un sous-ensemble leur mémoire (pouvant être l'ensemble nul, auquel cas on revient au modèle du processus, ou l'ensemble de leur mémoire utilisateur, auquel cas on revient au modèle du thread), modifiable de façon dynamique)
Au niveau technique, concernant la programmation bas niveau, je connais bien le C et j'ai tripatouillé de l'assembleur sur des motorola 6809 il y a quelques années, le temps de comprendre les principes de base, de faire clignoter des diodes selon de multiples motifs, et d'apprendre à détester son caractère incroyablement rébarbatif.
Seulement, le problème, c'est qu'après avoir cherché des tutoriels traitant de l'écriture d'OS se voulant simple sur le net, le plus beau travail que j'ai trouvé c'est SimpleOS ( http://sos.enix.org/ ), qui présente la création d'un petit OS pas à pas via des articles détaillés. Mais :
- Même si le niveau de détail atteint à certains endroits est remarquable, il y a quand même de la magie à d'autres endroits, au sens qu'une partie du code n'a pas un fonctionnement détaillé dans l'article ou dans les commentaires du code et est uniquement décrit par à quoi il sert. Je n'aime pas la magie, c'est pas très scientifique comme approche et ça fait des bouts de code dont on dépend sans pouvoir les modifier pour les améliorer au besoin.
- Même avec une lecture attentive du code et des articles, je ne parviens pas à comprendre pleinement la logique de l'architecture x86. Je sais que je serais incapable de réécrire certaines parties du code si besoin, ou d'ajouter certaines fonctions, et cette connaissance m'agace.
- Je ne supporte pas les docs longues au format PDF, et je commence à ressentir une fatigue visuelle et à lire en diagonale au bout d'environ 3-4 pages. Mon budget imprimante a ses limites, par ailleurs. Quand je veux considérer un sujet scientifique en profondeur, j'ai besoin d'un bon vieil ouvrage papier en style clair pour être efficace. Pour des raisons évidentes d'encombrement et de classement, je préfère également les livres aux séries d'articles de revues
Par conséquent, j'aimerais savoir s'il existe des ouvrages effectuant une tâche semblable à celle des articles sur SimpleOS (décrire la mise au point d'un système d'exploitation x86 pas à pas) mais en présentant plus précisément le fonctionnement de l'architecture x86 et la manière dont on peut manipuler ses fonctions, et en détaillant davantage les décisions faites au niveau conception comme au niveau implémentation. Au pire deux bouquins distincts, un sur la conception/implémentation d'OS et un sur l'archi x86 qui ne soit pas juste une pure référence d'assembleur mais quelque chose davantage orienté vers la logique de la chose.
Puisque le Tannenbaum m'a laissé un excellent souvenir, je m'intéresse particulièrement à un de ses autres livres, "Operating system design and implementation". Cependant, il m'a l'air cher même pour un bouquin d'info (l'autre, je l'ai piqué dans la bibliothèque de quelqu'un qui n'en voulait plus ^^), et d'après le sommaire il a pas mal en commun avec Modern Operating Systems. Quelqu'un l'a lu ? Est-ce qu'il correspondrait quand même à ce que je vise ? Connaissez-vous d'autres ouvrages traitant du sujet ?
(PS : Je m'intéresse au x86 parce que c'est la seule architecture sur laquelle je puisse faire tourner du code nativement à la maison, et je préférerais ne pas rester uniquement dans les programmes émulant un fonctionnement d'OS car ils ne rendent pas bien compte du critère "performance")
Partager