Marc Silanus
interface fournie avec l’ordinateur, le smartphone…
Logiciel qui gère le matériel et fournit un environnement pour les programmes applicatifs en exécution
Les applications de l’espace utilisateur communiquent avec les périphériques en réalisant des opérations (lecture, écriture paramétrage…) sur des pseudo-fichiers
Plusieurs stratégies :
Tâche de sélection d’un processus en attente dans la liste des processus prêts et d’allocation du CPU pour ce processus
Il existe plusieurs modes d’ordonnancement :
Temps partagé (time sharing system) : comportement par défaut sur les O.S. comme Linux
Temps réel (realtime scheduling) : suivant des algorithmes comme Round Robin ou Fifo basés sur des priorités entre tâches ou Earliest Deadline First utilisant des temps d’expiration des tâches.
Les processus sont des espaces de mémoire disjoints, au sein desquels s’exécutent un ou plusieurs threads
Lorsqu’il est exécuté, un processus dispose de toute la mémoire disponible.
Oui mais c’est de la mémoire virtuelle !
Adresse générée par la CPU et vue par le programme utilisateur
Adresse vue par l’unité de mémoire, c’est à dire chargée dans le registre d’adresse mémoire de la mémoire
Dispositif matériel intégré au microprocesseur associant les adresses logiques et physiques
Chaque programme reste confiné dans son espace mémoire
création d’un espace d’adressage important incluant la mémoire physique et une partie de la mémoire secondaire (>mémoire physique)
des portions de la mémoire sont rapatriées et envoyées vers l’espace de stockage secondaire.
Observation dans Python tutor
*.ko
dans /lib/modules
)make menuconfig
make menuconfig
make
-j <n>
pour accélérer la compilation en utilisant plusieurs coeurs du processeurvmlinux
: image non compressée du noyau mais non bootablearch/<arch>/boot/*Image
: image finale et bootable, généralement compressée, du noyau (bzImage
pour x86, zImage
pour ARM…)*.ko
Couche logicielle qui fournit l’interface utilisateur d’un système d’exploitation
Le shell d’un système d’exploitation peut prendre deux formes distinctes :
/bin/bash
)#
, utilisateur : $
)/bin
man
help <commande>
Exécutions de plusieurs script au démarrage pour définir l’environnement de l’utilisateur :
/etc/profile
: commun tous les utilisateurs/etc/profile.d/*.sh
: si le dossier existe$HOME/.profile
: profil personnel de l’utilisateur$HOME/.bashrc
: fonctions et alias personnel. Exécuté à chaque ouverture d’un terminal./etc/bash.bashrc
: alias globaux et définition du prompt $P1
Toujours préférer un système de fichier « journalisé »
/dev
: Fichiers spéciaux de lien avec les périphériques matérielsTypes de bus :
hd
: Périphériques IDEsc
: Périphériques SCSIsd
: Périphériques SATA/dev/hda1
: Partition 1 sur le 1er disque IDE/dev/sdb2
: Partition 2 sur le 2ème disque SataRep | Description |
---|---|
/ |
Répertoire “racine” |
/boot |
Contient le noyau Linux et l’amorceur |
/bin |
Contient les exécutables de base, cp , mv , ls , … |
/dev |
Contient des fichiers spéciaux liés aux périphériques matériels |
/etc |
Contient les fichiers de configuration du système |
/home |
Contient les fichiers personnels des utilisateurs |
/lib |
Contient les librairies et les modules du noyau (/lib/modules ) |
/media |
Contient les points de montage des lecteurs cd, dvd, clef usb, … |
/proc |
Contient une “image” du système : instantané de son état |
/root |
Répertoire personnel du superutilisateur |
/sbin |
Contient les exécutables destinés à l’administration du système |
/tmp |
Contient des fichiers temporaires utilisés par certains programmes |
/usr |
Contient les exécutables des programmes, les sources de linux, … |
/var |
Contient les fichiers de maintenance du système (log ) |
$ cd
$ cd ~/depuis/mon/dossier/perso
$ cd /chemin/absolu
$ cd chemin/relatif
$ cd ..
$ ls
Avec toutes les infos
$ ls -l
les fichiers cachés aussi
$ ls -al
$ mkdir nom_dossier
$ rmdir nom_dossier
$ rm -r nom_dossier
$ mv dossier_src dossier_dest
$ cp dossier_src dossier_dest
$ cp -r dossier_src dossier_dest
Tout fichier appartient à un propriétaire unique et à un groupe d’utilisateurs
$ -rw-r--r-- 1 user user 445 juin 12 11:22 ieee754.py
$ drwx------ 3 root root 4096 févr. 10 01:18 root
$ crw-rw---- 1 root dialout 4, 65 juin 21 15:06 ttyS0
b
: pseudo fichier périphérique binairec
: pseudo fichier périphérique caractèresd
: dossierr
: autorisé à lirew
: autorisé à écrirex
: autorisé à exécuter$ chown propriétaire fichier
$ chgrp propriétaire fichier
$ chmod +x fichier
$ chmod 755 fichier
$ echo "du texte" > fichier
$ echo "du texte" >> fichier
$ vi fichier
$ nano fichier
$ gedit fichier
$ cat fichier
$ less fichier
$ vi fichier
$ nano fichier
$ gedit fichier
$ mv fichier_src fichier_dest
$ cp fichier_src fichier_dest
$ rm fichier
$ find /depuis -name fichier
$ grep a_trouver dans_fichier
$ echo "Hello word !"
Hello word !
$ read ma_var
n'importe quoi
$ echo $ma_var
n'importe quoi
Véritable langage de programmation interpété
#!/bin/bash
# script bonjour
# affiche un salut à l'utilisateur qui l'a lancé
# variable d'environnement $USER : nom de login
echo ---- Bonjour $USER -----
# l'option -n empêche le passage à la ligne
# le ; sert de séparateur des commandes sur la ligne
echo -n "Nous sommes le " ; date
# recherche $USER en début de ligne dans passwd
# puis extraction de l'uid au 3ème champ, et affichage
echo "Ton numéro d'utilisateur est : "\
$(grep "$USER" /etc/passwd | cut -d: -f3)
$ bash script
Avec les bons droits :
$ chmod u+x script
$ ./script
En faire une commande :
$ mv script ~/bin # Créer le dossier avant !
$ export PATH=~/bin:$PATH # pour le shell courant
$ echo PATH=~/bin:$PATH >> $HOME/.bashrc # permanent
Christophe Blaess :
Ingéniérie et formation sur les sytèmes libres