Programmation système
Chapitre 1:
Un processus: est l’image en mémoire d’un programme en cours d’exécution.
Il peut créer d’autre processus, il est identifié par une PID (Processus
Identifier).
Init: Processus parent : attribut nom machine + date + contrôle le bon
arrêt du systè[Link] Getty et inetd.
Getty: affiche « login : » et attend.
Inetd: processus surveillance réseau.
État d’un processus :
Initial : processus créer.
Actif : s’exécute.
En attente :suspendu.
Finale (Zombie) :terminé.
Possibilité d’arrêt d’un processus :
Normal:lui même arrête.
Autorisé :par son père.
Anormal :par le système.
Table des processus contient : l’état du processus,son compteur ordinale,
son pointeur de pile,l’état de ces fichiers ouverts.
Structure processus :
• PID
• UID
• GID
• répertoire courant
• fichiers ouverts par ce processus
• masque de création fichiers:umask
• Taille max fichier:ulimit
• Priorité (de -20 à 19 plus valeur grande plus priorité
petite)affecté avec nice. expl : nice -5 [Link].
• temps exécution
• terminal:tty
ps: donne info sur processus en cours d’exécution.
Ps -a:infos processus attaché.
Ps -l:donne pour chaque processus : user,%cpu ,size, rss(mémoire réservé)
ps -x:infos sur processus non lié.
Ps -w:cmd associé à chaque processus.
Kill:arrêt [Link] un signal au processus. exp:kill -signal pid.
Signaux :
SIGINT: 2 :CTRL+C arrêt processus.
SIGKILL: 9 :arrêt tout programme.
SIGTERM : 15 : arrêt processus permet d’effectuer des opérations avant
l’arrêt.
SIGCHLD :17:informe le père de la mort de son fils.
Gestion des jobs :
Un job est un ensemble de 1 ou plusieurs commande.
lancement job en arrière plan se fait par : cmd &.
Chapitre 2:
Compilation programme :
étape 1 : gcc -O3 -Wall -c prog.c.
traduction langage C en langage machine => résultat : prog.o.
étape 2 : gcc -o prog prog.o.
regroupement variable et fcts programme.
Étape 1+étape 2 : gcc -O3 -Wall prog.c -o prog.
-O3 :optimise le code générer.3 degrés.
-Wall : active message d’avertissement.
-c : étape compilation.
-o :précise nom fichier.
Fichier Makefile : Mémorise l’arbre des dépendances.
Cible principale : dépendance.
<TAB> action.
cible:dépendance.
<TAB> action.
variables makefile :
CC= gcc
$(CC)
pour lire le makefile : make.
Paramètre de Main :
int main(int argc , char*argv[], char*envp[]) ;
argc : argument count.(nombre argument passé au programme)
argv : argument value. pointeur sur un tableau qui pointe sur des chaînes
argv[0] : nom du programme.
Envp : environment program. pointe vers un tableau de chaînes.
Path : echo path usr/local/sbin:/usr/local/bin : … etc:contient des
chemins qui contiennent des exécutable.
Chapitre 3 :
Les variables d’environnements : sont des variables dynamiques utilisé
par différents système informatique (Windows ,UNIX, …), elles
communiquent les informations entre les programmes.
Env : permet de lister les variables d’environnements.
extern char ** environ : contient les variables d’environnement.
Variables plus utilisé :
Home : contient rep personnel du user.
Path :série de chemins vers des répertoires exécutable.
PWD : contient répertoire de travail.
USER :nom user.
TERM :type terminal utilisé.
SHELL :shell de connexion utilisé.
Créer,modifier rechercher et supprimer des variables d’environnement :
int putenv(const char* string) : créer variable.
Int setenv(const char*name,const char*value, int overwrite):modifier une
variable d’environnement.
Char* getenv(const char*name) :chercher une variable d’env.
Void unsetenv(const char*name):supprimer.
Chapitre 4 :
Les appels Système :
fork() : est une fonctionnalité sous Linux qui permet de dupliquer les
processus
pid chez le fils est 0 chez le père != de 0 mais leur descripteur de
fichier est le même