Petites questions concernant Linux

Plein de petites questions qui me sont sans réponses ...

a marqué ce sujet comme résolu.

Avant toute chose je tient à presicer que les recherches sur google ont déjà été faites, soit les définition sont vagues ou carrément non comprehensible soit qu'elles n'apportent aucun détail(s)

Hello !

Aujourd'hui je reviens vers vous car j'ai des petites questions concernant Linux en général :

  • A quoi sert make vu que gcc fait exactement la meme chose soit compiler .
  • Qu'est-ce que le mode vfs ?
  • Qu'est-ce que cgroup ?
  • Pourquoi existe t-il des
1
mount -t tmpfs tmpfs /sys/fs/cgroup

(par exemple) ? Mount n'est pas réservé pour monter des support amovible ?

  • Qu'est-ce que systemd presicement ?

Voilà j'espère que vous pourriez m'éclairer sur ces petites questions !

Merci d'avance !

+0 -0

Salut,

Il y a beaucoup de questions qui ne sont pas simples à répondre de façon accessible et complète.

Voici déjà quelque pistes, qui devraient au moins t'aider à comprendre mieux ce que tu peux trouver par ailleurs :

A quoi sert make vu que gcc fait exactement la meme chose soit compiler

gcc fait un peu plus que compiler, mais c'est suffisant de se dire ça dans un premier temps. Mets toi juste dans un coin de la tête que tu as probablement des choses à creuser de ce côté là si ça t'intéresse. make en revanche ne compile pas du tout. Il lit un Makefile pour construire des cibles (target) à partir de règles (rules), en les mettant à jour lorsque leurs dépendances ont changés. On peut donc (et c'est un cas très courant) se servir d'un Makefile pour construire un fichier binaire (la cible) à partir de fichiers contenant le code source (les dépendances) en appelant gcc. L'appel à gcc sera alors la règle. Les avantages à utiliser un Makefile au lieu de taper directement les commandes GCC pour compiler un programme sont nombreux. Le plus évident, c'est probablement que l'on n'a pas à se taper les commandes plein de fois quand on a besoin de recompiler. make, ça va plus vite que gcc -c foo.c -o foo.o; gcc -c bar.c -o bar.o; gcc bar.o foo.o -o MyExe, et encore ce cas est extrêmement simple. Je bosse en ce moment sur un projet où il y a une centaine de fichiers pour compiler, et comme il y a des dépendances dans tous les sens, les commandes gcc sont parfaitement dégueulasses et très pénible à taper à la main. Puis, il faudrait pas que je rate une dépendance lorsque je modifie un seul fichier.

Bon en plus je te dit pas tout, j'utilise par dessus cmake pour pouvoir générer le Makefile automatiquement en fonction des bibliothèques que je trouve sur la machine pour laquelle je compile. Compiler le projet se résume à trois commandes courtes au lieu d'une bonne centaines bien longues et chiantes à taper. En plus, grâce aux Makefile (sous réserve qu'ils sont bien écrits), il est possible de compiler sur plusieurs processeurs à la fois, ça gagne du temps. ^^

Quesque le mode vfs ?

(c'est "qu'est-ce que", pas "quesque") Je suppose que tu parles du Virtual File System ? Ce n'est pas un mode. Tu peux voir ça comme une interface entre les programmes (ceux que tu écris, ton navigateur internet, etc.) et le disque dur et autre périphériques de stockage sur lesquels les programmes vont écrire des informations. En fait, le VFS ne constitue même qu'une partie de l'interface, comme le montre ce schéma (je te rassure, je comprends pas tout non plus :p ). Pour te guider, tu vois que le VFS se situe entre les applications (ton navigateur par exemple), et la "block layer", ainsi que les "drivers", avant d'arriver au final sur le matériel physique ou sera stockée l'information (par exemple, ton disque dur, HDD). Il faudra voir si quelqu'un peut te fournir une explication simple sur ces autres couches, mais ce n'est pas de mon resort.

Pour tes autres questions, je ne vois pas trop comment arriver à expliquer ça clairement de façon concise. Ce sont des questions trop vastes pour y répondre sur un poste de forum, j'ai l'impression. Il faudrait que tu en dises plus sur ce que tu as trouvé et en quoi c'est insuffisant, peu clair. Bref, donner des pistes pour diriger l'explication.

+5 -0

Qu'est-ce que cgroup ?

Les cgroups sont une fonctionnalité du noyau Linux qui font une abstraction générique des espaces de noms du noyau. Pour faire simple, un cgroup permet de grouper des processus ensembles. Le but du concept est de permettre de réaliser des règles entre ces groupes.

Par exemple, tu peux limiter les droits d'accès d'un groupe de processus pour les accès matériels ou logiciels (interdiction d'accéder à Internet ou à un répertoire), tu peux réguler leurs ressources (pas plus de 25% du temps CPU alloué à ce groupe, pas plus de 100 Mb/s de bande passante réseau), les groupes peuvent ne pas voir les autres groupes ou processus présents sur la machine, etc.

Cas d'usage typique, Linus Torvalds, créateur du noyau Linux, utilise les cgroups ainsi : git / make et gcc qui tournent en permanence chez lui sont dans un groupe à part de Firefox ou VLC. EN réglant correctement l'ensemble, il peut compiler le noyau Linux sans pour autant avoir des lenteurs pour le multimédia (essaye de voir un film en 1080p et en compilant un gros projet, ça va saccader souvent).

Note que Docker et LXC sont des alternatives ou une surcouche aux cgroups pour cloisonner les processus, et ils reposent de les espaces de nom du noyau.

(par exemple) ? Mount n'est pas réservé pour monter des support amovible ?

Non, mount sert à rattacher un système de fichier à la hiérarchie des fichiers de ta machine (qui débute forcément par /). Cela peut en effet servir à monter ton disque dur externe par exemple. Les cgroups, mais comme d'autres éléments internes au noyau Linux, reposent sur des systèmes de fichiers virtuels pour fonctionner. D'où le fait qu'ils sont montés.

Qu'est-ce que systemd presicement ?

systemd est un projet pour gérer les services de ton système. Un service peut être, le montage de tes partitions au démarrage, l'écran de connexion au lancement, un serveur web ou de base de données, un serveur SSH ou FTP…

Par conséquent, il gère le démarrage et l'extinction de ta machine en allumant ou coupant tous les services activés, et ce proprement. Pour gérer cela du mieux que possible, systemd contient également des utilitaires variés pour gérer un minimum le réseau, les logs, l'heure ou le matériel.

systemd remplace ce qu'on nommait avant SysV à savoir un ensemble de scripts shell pour gérer les services. Le soucis était que chaque distribution écrivait ces scripts de son côté, et souvent mal (par exemple pas de prise en charge de SELinux quand il était présent sur le système). De nombreux problèmes étaient également difficilement solubles avec ce dispositif. systemd a permis d'unifier cela.

+3 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte