LANGAGE ET CONTRÔLE D'UN ORDINATEUR 2.1 2.5 Processeur Processeur (code en mémoire) Langage: instructions machine NOYAU (code en mémoire) Langage enrichi par les fonctions du noyau (API) Le programme (code) doit être présent en mémoire pour utiliser l'ordinateur. Comment le charger en mémoire? Il faut un programme en mémoire pour appeler le noyau. Le noyau contribue au chargement de programmes. Processeur NOYAU s système Langage enrichi par les programmes système Les programmes système peuvent être utilisés pour compiler et exécuter un programme utilisateur. Comment interagir avec l'utilisateur? Tous les programmes ont cette possibilité avec l'aide du noyau. Utilisateur Processeur NOYAU clavier écran SHELL Le "Shell" est le premier processus qui crée les autres processus selon les commandes de l'utilisateur. Processus entités autonomes. Réseau de coopération au lieu d'une hiérarchie. Synchronisation entre processus. Processus contrôlant le terminal.
Processeur NOYAU SHELL Interface terminal Processus? Processeur NOYAU Graphique/Fenêtres Interface graphique avec fenêtres Utilisateur écran chaînes de caractères Utilisateur cable vidéo cable réseau clavier Mainframe Affichage de caractères (25x80). Affichage de graphiques. Faible débit. Fort débit. Portable, programmation simple. Programmation difficile, en progression. AMORÇAGE 2.10 s utilisateurs 2.7 appels au noyau Bibliothèques Séquence de lancement de Unix getty getty /etc/rc Séquence shell /etc/ttys Tableau d'initialisation /etc/passwd Organisation interne de Unix Niveau utilisateur Niveau noyau Sous-système de fichiers Interface des appels système Buffer cache Sous-système de contrôle des processus Communitation interprocessus Ordonnanceur Gestion de la mémoire Le Shell interprète et exécute les commandes de l'usager. Commandes internes vs commandes externes. login shell shell Fichier des mots de passe /etc/profile Script shell ~/.bash_profile Script shell /etc/bash.bashrc Script shell ~/.bashrc Script shell Caractère Bloc Contrôleurs de Périphériques Niveau noyau Niveau matériel Contrôle de la partie matérielle Partie matérielle
Appels système de Unix Gestion des identificateurs getpid identification du processus getppid identification du père du processus getuid identification du propriétaire du processus geteuid identification du propriétaire effectif setuid modification du propriétaire d'un processus seteuid modification du propriétaire effectif 2.7 Gestion des fichiers open ouverture d'un fichier creat création d'un inode read lecture write écriture lseek accès aléatoire dup création d'un descripteur de fichier clone pipe création d'un tube close fermeture d'un fichier chdir définition du répertoire de travail chroot changement de la racine du système de fichiers chown changement du propriétaire du fichier chmod modification des droits d'accès stat, lstat, fstat information sur le fichier link création d'un lien unlink suppression d'un lien mount montage d'un volume umount démontage d'un volume fcntl manipulation de la table des fichiers mknod création de tube nommé 2.8 2.8 2.8 Gestion de processus Gestion des terminaux (norme POSIX) fork exec exit création d'un processus remplacement du code d'un processus terminaison d'un processus tcgetaddr tcsetaddr caractéristiques d'un terminal modification des caractéristiques Synchronisation de processus Gestion des terminaux (BSD) wait pause signal kill attente du signal de fin d'un fils attente d'un signal action à exécuter à réception d'un signal émission d'un signal à un processus ioctl caractéristiques d'un terminal
Répertoire ALPHA GESTION DES FICHIERS inodes et structure d'un répertoire Table inode de ALPHA Disque Super Bloc inodes Fichiers Un fichier peut avoir plusieurs noms/chemins d'accès. 6.17 struct icommon { u short icmode; /* 0: mode and type of file */ short ic_nlink; /* 2: number of links to file */ short icuid; /* 4: owner's user id */ short icgid; /* 6: owner's group id */ quad ic_size; /* 8: number of bytes in file */ time_t ic_atime; /* 16: time last accessed */ long ic_atspare; time_t ic_mtime; /* 24: time last modified */ long ic_mtspare; time_t icctime; /* 32: last time mode changed */ long ic_ctspare; daddr_t ic_db[ndaddr]; /* 40: disk block addresses */ daddr_t ic_ib[niaddr]; /* 88: indirect blocks */ long ic_flags; /* 100: status, currently unused */ long ic_blocks; /* 104: blocks actually held */ long ic_spare[5]; /* 108: reserved, currently unused } i_ic; 6.18 Champ icmode : type de fichier et protection 2.19 Gestion des fichiers par le noyau 6.23 Protection ou droit d'accès drwxrwxrwx o - other - autres Mémoire usager Mémoire système Disque bloc de données g - group - groupe u - user - utilisateur / propriétaire type de fichier - : fichier standard d : répertoire l : lien symbolique b : périphérique "block" c : périphérique "character" s : "socket" Droit d'accès r : en lecture w : en écriture x : pour exécution read( 3, ) fichiers ouverts par processus Table globale des fichiers i-nodes en mémoire synchronisation i-nodes Un fichier peut avoir plusieurs noms ou liens (champ ic_nlink).
Mémoire usager Gestion des fichiers par le noyau Mémoire système Disque Gestion des fichiers par le noyau FILE * stdin fd = fopen ( ) 6.22 fread(, ) processus PCB bloc de données buffer 3 buffer FILE * stdin 3 fichiers Table globale des fichiers i-nodes en mémoire synchronisation i-nodes Fichier d'entrée standard 0 utilisateur 2 Fichier des erreurs standard 1 Fichier de sortie standard file 3 2 1 int Processus utilisateur NOYAU 0 id = open ( ) table des processus table des fichiers ouverts stderr stdout stdin Organisation des répertoires et des périphériques 6.19 Installation (mount) d'un systèmes de fichiers 6.25 / bin ls etc dev cat hda1 lib tty1 usr bin include sys opt lib stdio.h unistd.h tmp proc man home bacc lumon home1 cours jagar7 var prof mitur3 sbin Chemin d'accès (path) absolu ou relatif. types.h lab1.bashrc Disque 1 RACINE / d1 d2 d3 d1a d1b Disque 2 / p1 p2 p1a p2a p2b mount /dev/hda2 /d2 Disque 1 d1 d1a d1b p1 p1a RACINE / d3 d2 / p2 p2a p2b Disque 2 umount /d2
COMMANDES UNIX 2.15 documentation 2.11 syntaxe: nom-cmd option parametres option (flag) commence par "-" (suivi d'une lettre) ou "--" (suivi d'un mot, nouveauté de Linux) ls -l --color /usr/include commande "man" section 1 commandes standards section 2 appels système section 3 fonctions C standards man ls ls -l > dir.txt cat texte more commande "info" Fichier d'entrée standard < >& utilisateur Fichier des erreurs standard redirection Fichier de sortie standard > >> cat texte pipe more aide dans KDE dans les laboratoires localiser les "manpages" ou info dans l'arbre à gauche sur le "web" http://linux.ift.ulaval.ca/ http://www.ift.ulaval.ca/~beaulieu/linux/ autres Commande ls Listing court % ls SEEK.o io.h test1 cours oper Listing long FICHIERS % ls -l total 10 -rwxr-xr-x 1 jean 217 Jul 14 09:47 SEEK.o -rw-r--r-- 1 jean 0 Aug 20 14:05 cours -r--r--r-- 1 jean 134 Jul 16 16:16 io.h -rwxr-xr-x 1 Jean 1406 Jun 18 16:08 oper drwxr-xr-x 2 Jean 512 Jul 17 11:28 test1 nombre de liens types et droit d'accès propriétaire Dimension (octets) date et heure Nom du fichier 2.19 Protection ou droit d'accès drwxrwxrwx o - other - autres g - group - groupe u - user - utilisateur / propriétaire type de fichier - : fichier standard d : répertoire l : lien symbolique b : périphérique "block" c : périphérique "character" s : "socket" Droit d'accès r : en lecture w : en écriture x : pour exécution + chmod ugo = rwx - fichier chmod go+r unfichier 2.19
FICHIERS FICHIERS ls ls -al cat FichierTexteAffiché more FichierTexteAffiché. cp Fichier NomDeLaCopie mv VieuxNom NouveauNom mv Fichier RépertoireDestination rm FichierDétruit rm -r RépertoireDétruit Lister les noms de fichier du répertoire. Lister tous les fichiers du répertoire avec leur description. Afficher au terminal le contenu du fichier. Afficher le fichier au terminal une page à la fois. Copier un fichier en spécifiant le nom de sa copie. Renommer un fichier. Déplacer un fichier dans un autre répertoire. Détruire un fichier. Détruire un répertoire ainsi que tous les fichiers et sous-répertoires qui s'y trouvent. chmod Mode FichierOuRépertoire. Changer le mode d'accès du fichier. file * Lister le type de chacun des fichiers du répertoire. find / -name FichierCherché -print Rechercher dans tout le système de fichier l'emplacement d'un fichier. ln Fichier NouveauNom Crée un second lien sur un même fichier. lpr FichierTexteImprimé.. Imprimer le fichier. RÉPERTOIRES SHELL cd NouveauRépertoireCourant. Changer de répertoire courant. bash Créer un sous processus shell. pwd Imprimer le nom du répertoire courant. exit Terminer un shell (ou session à distance). mkdir NouveauRépertoire. Créer un nouveau répertoire. CTRL-C Interrompre et terminer un programme. rmdir Répertoire. Détruire un répertoire. CTRL-D Quitter un shell. Variable=Valeur Assigner une valeur à une variable du shell. set Afficher les variables du shell et leur valeur. alias NomDuSynonyme="SaDéfinition". Définir un synonyme pour une commande.
PROCESSUS COMPILATION (g++ pour le C++) 2.12 ps ps -alx. kill Pid kill -9 0 Lister ses processus avec leur pid. Lister tous les processus du système avec leur description. Tuer le processus dont le pid est en argument. Tuer tous les processus d'un usager. gcc Source.c Compiler un programme; le fichier exécutable a.out est créé. gcc -o NomDeCommande.c. Compiler un programme en spécifiant le nom du fichier exécutable créé. gcc -c Module.c Compiler le fichier objet Module.o. lint Source.c Vérifier la syntaxe d'un programme C. man CommandeOuFonction. vi FichierTexteEdité Autres Consulter la documentation du système. Editer un fichier avec vi et ex. grep "ChaîneCherchée" FichierTexte Afficher chaque ligne du fichier qui contient la chaîne entre guillemets. wc FichierTexte Compter le nombre de caractères, de mots et de lignes du fichier. Utilisation des stations Linux du département Aller dans intranet Pixel pour changer le mot de passe, dans guichet étudiant. Pour obtenir votre IDUL, utilisez Adage. Cliquez ici pour votre NIP Laboratoires: locaux 3708, 3910, 3928 et 3966.
Station en "dual boot": pour changer de système, choisissez "redémarrer" ("Shutdown") et ensuite choisissez "Linux" ou "Windows". Choix entre les environnements (KDE, ) Barre des tâches au bas de l'écran menu démarrer Shell Répertoire Aide Icônes d'application configuration Choix de bureau Barre des tâches Clipboard Heure
Shell (écran terminal) Quitter (Logout) Shell Répertoire Aide Un interface graphique englobe un interpréteur de commande "bach" shell. Un texte sélectionné est placé dans le clipboard. Shell (écran terminal) Gestionnaire de fichier (file manager) Un interface graphique englobe un interpréteur de commande "bach" shell. Un texte sélectionné est placé dans le clipboard.
Gestionnaire de fichier (file manager) Gestionnaire de fichier (file manager) Éditeur de texte Éditeur de texte Kate Éditeur de texte ascii pour écrire un programme. Possibilité de copier/coller avec le clipboard.
Éditeur de texte Kate Traitement de texte OpenOffice Traitement de texte OpenOffice AIDE