IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Quel degré ou compétences en C pour comprendre le code source de Linux?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 23
    Par défaut Quel degré ou compétences en C pour comprendre le code source de Linux?
    Bonjour tout le monde,
    D'abord GRAND merci à tout les responsables de ce forum.
    Comme mon pseudo l'indique bien, je suis un débutant en C mais avec un peu d’expérience en assembleur (8086, AVR, PIC).
    Mon objectif et d'étudier certaines parties du code source pour linux ( MM, Scheduling et IPC).
    Donc:
    1- Quel degré de maitrise du C est nécessaire pour cette tache?
    2- Quelles ressources pour m'aider à progresser rapidement?
    3- Des conseils?
    Merci beaucoup par avance.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Billets dans le blog
    21
    Par défaut
    Le C est un langage plutôt simple. Il faut bien le connaître mais cela peut aller assez vite.
    Le code source de Linux est compliqué surtout parce que la composante métier est compliquée.
    Cela aide déjà beaucoup d'avoir des connaissances en assembleur, parce que ça garantit que tu as aussi des connaissances sur les ordinateurs eux-mêmes, ce qui est rigoureusement indispensable pour comprendre un OS.
    Après, les parties de l'OS que tu évoques sont parmi les plus compliquées. Elles reposent sur: 1) une vision générale du système d'exploitation (la répartition en différentes couches, la gestion de la mémoire, etc.), 2) des algorithmes pas évidents et 3) des connaissances métiers précises. Je ne pense pas qu'il soit possible de les acquérir en lisant le code source.
    Pour les ressources disponibles sur le site, tu devrais regarder à cet endroit et choisir selon ta maîtrise de l'anglais et tes impressions: http://linux.developpez.com/cours/?p...#Programmation

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Il existe aussi un micro noyau, qui accomplit des taches similaires à Linux: Minix. A la fac, c'est là-dessus qu'on avait étudié le fonctionnement d'un OS.

    Ca peut peut-être te servir d'introduction dans le domaine.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 23
    Par défaut
    Merci stendhal666 et leternel de vos réponses c'est très gentil à vous.
    En effet, les sources d'un SE comme Linux c'est pas de la tarte, surtout la gestion de la mémoire, l'ordonnancement des processus et leurs inter-communications.
    C'est pour ça que je me suis venu vers vous solliciter votre aide.
    - Quelles sont les connaissances métiers qu'il faut acquérir?
    - Quels sont les concepts particuliers utilisés dans la programmation d'un SE et comment les implémenter en C?
    Je reformule la question dans l’autre sens : quels sont les éléments du C nécessaires pour la programmation d'un SE?
    - A part le livre d'ANDREW S. TANENBAUM sur MINIX, est-ce qu'il y a d'autres notes (en français surtout) exliquant cet SE?

    Pour le moment j'essaye de comprendre le fonctionnement général d'un SE.
    - OPERATING SYSTEM CONCEPTS d'ABRAHAM SILBERSCHATZ
    - OPERATING SYSTEMS: Design and Implementation d'ANDREW S. TANENBAUM

    J'ai déjà envisagé de faire de MINIX et XINU mon exercice d'échauffement avant d’attaquer linux!!
    J'avoue je me sens un peu embrouillé par la complexité de la tache, j'essaye d'organiser un plan de travail efficace. Je me suis dit il faut d'abord avoir un bon niveau en C.
    Je suis toujours à l'écoutes de vos conseils.
    Merci encore

  5. #5
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Le C est un détail ; je prends la liberté de citer stendhal666 :
    Citation Envoyé par stendhal666 Voir le message
    Cela aide déjà beaucoup d'avoir des connaissances en assembleur, parce que ça garantit que tu as aussi des connaissances sur les ordinateurs eux-mêmes, ce qui est rigoureusement indispensable pour comprendre un OS.
    Tu as déjà des bases d'algorithmique impérative ? Tu connais les structures de contrôle de base : si/sinon, tant que, fonctions..? Si oui alors avec ton bagage assembleur tu n'auras aucun problème avec le C. Ce sont les concepts et les connaissances des détails et contraintes techniques qui sont difficiles à appréhender dans ton projet, pas le langage (bon, c'est vrai dans le cas du C mais je n'aurais pas pensé la même chose si ces OS étaient écrits en Rust... ).

  6. #6
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 252
    Par défaut
    Un jour un vieux barbu m'a dit :
    Sache, petit con, que seuls ceux qui connaissent déjà le kernel peuvent apprendre comment fonctionne le kernel
    Du coup et par curiosité, j'ai téléchargé le noyau 4.4.3 ici https://www.kernel.org/ et j'ai constaté 2 choses :
    La première, est qu'on ne comprend strictement rien à l'arborescence. La seconde, est que le vieux barbu avait raison !

    Je pense que le kernel a prit tellement d'ampleur qu'il est maintenant très difficile de prendre le train en marche mais tes questions m'intéressent aussi. Je me suis toujours demander comment certain faisait pour porter le kernel sur des microcontrôleurs ou encore faire des drivers car ceci implique de savoir comment le noyau fonctionne. Je crois aussi qu'il te faut des connaissances en électronique car qui dit noyau dit forcément très bas niveau, registres etc...

    Pourquoi ne t'es tu pas intéressé à des noyaux plus petits comme FreeRTOS par exemple, puisque tu connais des microcontrôleurs de chez Atmel et Microchip ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/07/2009, 11h40
  2. Besoin d aide pour comprendre un code
    Par litlebasic dans le forum Delphi
    Réponses: 4
    Dernier message: 22/06/2006, 13h00
  3. Aide pour comprendre un code
    Par Spacy_green dans le forum Assembleur
    Réponses: 2
    Dernier message: 13/02/2006, 13h22
  4. Aide pour comprendre le code
    Par jfreuff dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/01/2006, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo