Operating systems – Three Easy Pieces

Auteurs: Remzi H. Arpaci-Dusseau – Andrea C. Arpcaci-Dusseau

Afin d’être un développeur confirmé, il est important de comprendre comment fonctionne un système d’exploitation, tout simplement car c’est le support sur lequel on travaille au quotidien et c’est sur celui-ci que le code est déployé. Même s’il n’est pas nécessaire de tout comprendre pour faire du code fonctionnel, cela aide forcément à créer du code le plus adapté possible. Comprendre sa machine et ce qui se passe est essentiel pour faire du débogage rapide et efficace. C’est d’ailleurs souvent dans ce domaine que l’on reconnait un développeur expérimenté.

C’est donc dans cette optique que je me suis lancé à corps perdu dans ce mastodonte de livre qui contient 650 pages et 50 chapitres, le tout en anglais. Ce fut une lecture à la fois longue et difficile tant par la taille, la difficulté du sujet et la langue, mais comme toutes les choses difficiles, cela en valait la peine, car c’est dans la difficulté que l’on s’améliore.

Je ne vais pas mentir, je n’ai pas tout compris.

Ce qui est assez surprenant quand on lit ce genre de livre, c’est que l’on n’apprend rien de concret qui va nous aider dans la vie de tous les jours, mais paradoxalement, j’ai rarement fait un si grand bon de niveau en connaissances informatiques.

Concernant le contenu en lui-même, le livre est très bien écrit avec des dialogues entre chaque partie et de l’humour pour détendre l’atmosphère. Les sujets sont compliqués, mais par rapport à ceux-ci, le livre est assez pédagogique et “facile” à comprendre. J’ai trouvé que les parties manquaient un peu d’un lien global, mais au niveau des chapitres ça se suit bien.

La première partie concerne la virtualisation qui est plus liée au processeur où vous apprendrez plein de choses sur les process, la mémoire virtuelle vs physique, la pagination, le scheduling, les queues, etc.

La deuxième partie s’attaque à la concurrence avec toute sorte de sujets complexes : les locks, les sémaphores, le multi-threading, les events etc.

La troisième partie concerne le stockage et la persistance, le fonctionnement des HDD vs SDD et leurs systèmes d’écriture, le système d’inode et toute la gestion virtuelle des fichiers, de la fragmentation, fsck etc.

Une quatrième partie beaucoup plus petite nous parle de systèmes distribués (NFS et AFS)

J’ai particulièrement apprécié toute la partie persistance ou j’ai appris énormément de choses, tout comme la première partie. La deuxième et la quatrième étaient plus obscures même si je ne regrette pas leur lecture. Ce livre m’a fait beaucoup progressé.

Si vous êtes motivés pour apprendre et prêt à en suer, ce livre est fait pour vous. C’est un investissement long terme à faire pour votre carrière d’informaticien et un incontournable à mon avis pour exceller. Bon courage à vous