Salut,
Après avoir lu quelques articles sur eBPF j'ai voulu jouer avec/découvrir comment ça marche, en lisant des tutos il y a des termes que je comprends pas, par exemple ça parle de kprobes, donc je google kprobes, et dans l'article de kprobes ça dit que l'article assume que l'on sache ce que sont les exception handlers,... je google exception handler et là il ça parle de kernel mode, de cpu exceptions, etc.... J'ai des connaissances vite-fait là dessus, je sais que le kernel tourne en mode privilégié, que l'userland fait fait appels système pour que le kernel execute ces appels et renvoie le résultat.. mais tout ça c'est succin.
Au final, pour éviter de tourner en rond, c'est quoi l'ordre des choses (de la base jusqu'aux sujets pointus)? j'ai déja fait du C, un peu d'asm, j'utilise linux courament mais je voudrais comprendre en détail les mécanismes interne (ce qui se passe dans le kernel et toutes les choses citées ci dessus)
Hello.
Il y a beaucoup (beaucoup) de littérature sur le noyau Linux, à vrai dire je ne sais pas trop vers quoi t'orienter. Le bouquin http://shop.oreilly.com/product/9780596005658.do m'a l'air pas mal pour commencer, et en gratuit je vois que http://www.kroah.com/lkn/ est souvent cité.
J'ai commencé le bouquin d'Oreilly
Jour 1: Le bouquin a l'air accessible, ça commence avec quelques généralités et ensuite ça part dans la gestion de la mémoire (premier chapitre). Il vaut mieux prendre des notes en cours de lecture (le livre fait 900 pages). Je continue
Le 09 juillet 2018 à 20:20:26 Stacksmashing a écrit :
J'ai commencé le bouquin d'OreillyJour 1: Le bouquin a l'air accessible, ça commence avec quelques généralités et ensuite ça part dans la gestion de la mémoire (premier chapitre). Il vaut mieux prendre des notes en cours de lecture (le livre fait 900 pages). Je continue
Bonne chance, tu nous raconteras. Je suis content de voir que tu fais ça sérieusement, c'est très rare les gens qui acceptent de s'attaquer à des sujets aussi corsés. (d'ailleurs ce sont des compétences de pointe assez recherchées donc pour peu que tu en fasses un champ d'études et ton domaine professionnel, ça peut déboucher sur un bel emploi)
Fin du chapitre "Memory Adressing" C'était plutôt un soulagement quand j'ai vu la fin du chapitre, je commençais à décrocher sur certains points. Y'a des trucs plutôt simples à comprendre (le TLB par exemple), mais pour d'autres on se retrouve dans un inception d'inception.
Par exemple la partie sur l'initialisation de la mémoire lors de l'initialisation du kernel (Final kernel page table/Provisional kernel page table) mon cerveau a disparu quand je lisais, je voyais des mots sur une page sans comprendre leur signification.
Je reviendrai dessus plus tard si j'ai la foi
Sinon il y énormément d'acronymes/définitions/vocabulaire, de temps en temps je fais une deuxième passe de lecture pour mieux digérer (c'est comme pour les films avec un final twist, on comprend mieux/différemment quand on regarde le film une seconde fois). Dans l'ensemble c'est compréhensible
L'anglais est simple (technique) et les explications sont progressives (d'abord ça parle de mécanismes tels qu'ils étaient au départ, puis de leur amélioration au fil du temps).
à suivre
Si tu veux en savoir plus sur la memoire, regardes "what every programmer shoyld know about memory" d'Ulrich Dreper. C'est un pave, mais c'est bien ecrit et interessant.
Vous saviez que fork() renvoie 0 dans le processus fils parce que lors de la création d'un processus fils, la fonction copy_thread() force le registre eax (registre utilisé pour le retour des fonctions) à avoir la valeur 0 ? Moi je sais
Chapitre 3 "Processes" terminé, un peu plus long que le chapitre précédant (memory adressing) et beaucoup moins imbuvable, en gros ça dit q'il se passe plein de choses quand on lance un programme et aussi quand on en tue un
Tu peux me dire si le bouquin est fait pour apprendre de A à Z le système ( de hardware au compilé au interpréter ).
Je fais du dev et je sens les lacunes côté système pour comprendre se que fais mon code. J'attends ta réponse :+)
Je ferai un topic ce soir en fonction de se que tu me diras
Toujours vivant, je viens de finir le chapitre sur les interruptions, petites PLS par moment
Tu peux me dire si le bouquin est fait pour apprendre de A à Z le système ( de hardware au compilé au interpréter ).
Je fais du dev et je sens les lacunes côté système pour comprendre se que fais mon code. J'attends ta réponse :+)
Jusqu'à maintenant il a pas mal de hardware (architecture intel) qui explique le fonctionnement de certaines parties du CPU.
Par rapport à mon avancée dans el livre, à mon avis le chapitre sur les processus (chapitre 3) peut t'aider à comprendre certaines choses sur la programmation système (fonctionnement des fork/threads), mais c'est surtout tourné du côté kernel (ordonnancement, structures utilisées).
En regardant les chapitre suivants (signaux, synchronisation, memory management, systèmes de fichiers, communication interprocessus, execution de programme) il y a plein de choses que tu retrouveras en programmation, mais comme il y a une grande partie qui traîte du côté kernel je pense que tu devrai trouver un autre bouquin qui colle plus à tes attentes.
Donc si tu veux connaitre le système en profondeur c'est un bon livre, si c'est pour mieux comprendre quelques "trucs" en programmation ça me parait exagéré de tout lire.
Merci beaucoup ! Je continue de chercher ! Merci pour la direction en tout cas ! :P
Salut,
Le livre d'Oreilly peut m'intéresser.
Est-ce que vous me le conseillez ?
A la fois le sujet m'intéresse sincèrement, à la fois, est-ce un bon début ?
900 pages en anglais ça fait peur je dois dire.
En même temps si je peux en tirer un savoir (utile qui plus est), et même m'améliorer en anglais, ça vaut le coup.
Vous en pensez quoi ?
Je suis loin d'être bilingue. Je me débrouille pas trop mal en anglais, mais j'ai un niveau encore bien insuffisant à mon goût, que je souhaite augmenter. Mais pour ce qui est de lire un livre en anglais
Niveau langue comme je l'avais dit plus haut, c'est plutôt simple à comprendre, tu as quelques mots spécifiques dans chaque chapitre + l'anglais technique habituel.
Il est daté de 2008 n'est-ce pas "trop vieux" ? J'imagine bien que le noyau n'est pas refait tous les jeudis, mais quand même ?
Le livre traite du kernel 2.6 et là on est arrivé au 4 en cherchant vite fait il n'y a pas l'air d'y avoir de livre sur le kernel 3 ou 4 donc c'est ça ou rien. Mais bon, j'imagine que ça doit bien poser les bases pour comprendre la plupart des articles sur le kernel
Chapitre 5 sur la synchronisation terminé
Mes connaissances sur la synchronisation avant lecture :
Je connais les mutex
après lecture :
RCU, semaphore, memory barrier, spinlock, seqlock je maîtrise
Nous avons créé un monstre
(non plus sérieusement fonce, je me répète mais c'est un domaine fascinant et il y a moyen de bosser sur des projets vraiment dingues si tu te débrouilles bien avec ce genre de connaissances)
Chapitre 6 Time measurements fini
Au suivant
non plus sérieusement fonce, je me répète mais c'est un domaine fascinant et il y a moyen de bosser sur des projets vraiment dingues si tu te débrouilles bien avec ce genre de connaissances
À priori niveau pro je pars pas dans ce domaine, mais effectivement ça serait pas mal à la fin du livre d'essayer de faire un projet qui réunit plusieurs de ces connaissances Voire 1 mini projet par chapitre
Si tu veux apprendre des choses, tu peux taper i386.pdf dans google et lire ce fameux pdf. Tu vas comprendre plein de choses sur les OS modernes.
Le 03 septembre 2018 à 11:15:17 SithisMinion a écrit :
Si tu veux apprendre des choses, tu peux taper i386.pdf dans google et lire ce fameux pdf. Tu vas comprendre plein de choses sur les OS modernes.
Il y a trop d'informations partout
Toujours vivant, rassurez vous.
J'ai un peu moins de temps en ce moment, c'est pourquoi j'ai cassé la linéarité de la lecture pour focus les choses qui m’intéressent plus
J'ai cassé memory management ( ) pour lire System Calls (terminé)