« Systèmes d'exploitation/Unix » : différence entre les versions

Contenu supprimé Contenu ajouté
suppression d'un doublon dans le texte
Ligne 138 :
*T1 : le processus bloque en attente de données d’entrée. Ceci se produit lorsque la ressource attendue est non disponible. Sauvegarde des valeurs du contexte d’exécution.
*T4 : la ressource attendue est arrivée et le processus redevient prêt à être exécuté.
*T2 et T3 sont provoqués par l’ordonnanceur de processus (scheduler)
*T2 : le quantum de temps expire donc sauvegarde du contexte d’exécution et passage à l’état prêt.
*T3 : nouvelle exécution du processus : restauration du contexte du processus et exécution de ses instructions.
 
Remarque : chaque fois qu’un processus quitte l’état élu, il sauvegarde son contexte, pour le restaurer lors de son retour élu.
 
Un processus identifié par un entier unique (PID) compris entre 0 et 32767.
Le processus originel est le processus swapper (numéro 0). Son premier fils créé est le processus initialisation (numéro 1).
 
===Ordonnancement des processus===
 
 
==Historique==
 
*Première version développée en 69 au sein des laboratoires Bell sur des machines PDP-7 et PDP-9 (monoprogrammation).
*Nouvelle version sur PDP-11 (multiprogrammation) et création du langage C.
*Evolution avec des versions successives.
*Années 80 :
**Développement d’UNIX à l’université de Berkeley
**lien avec TCP-IP, interface sockets
**en parallèle, développement d’UNIX system V
*Années 90 :
**nouvelles fonctionnalités temps réel
**noyaux dynamiques
**micronoyaux
**processus allégés (thread)
**autres interfaces de communication
 
==Architecture du système==
 
*Deux niveaux :
**les commandes
**les appels systèmes
*Schéma d’interaction :
[[Image:Unix1.jpg]]
 
Espace extérieur = utilisateurs connectés
 
Remarque : tout utilisateur connecté est en relation avec un processus shell
 
Un shell est un interprète de commande c'est à dire que c'est une boucle qui lit une commande et l’interprète. Cette commande est réalisée en créant un ou plusieurs autres processus.
 
Exemple : cd, …
 
Remarque : deux processus différents peuvent exécuter le même code
 
*Le noyau UNIX est le code qui assure le fonctionnement du système d’exploitation. Ses fonctionnalités sont accessibles au travers des appels système (sous-programme C utilisable uniquement dans un programme).
 
Exemple : if … exit (0) : appel système UNIX fin des processus.
 
Remarque : les appels système sont non portables (ils sont liés à chaque système). Pour éviter cela, on utilise des bibliothèques de plus haut niveau (stdio.h, stlib.h, …) standardisées et portées dans tous les systèmes.
 
==Système de fichiers==
 
===Présentation===
 
*Un fichier UNIX est un ensemble linéaire d’octets qui
**possède un nom (extension non obligatoire)
**majuscule ≠ minuscule
**souvent, les majuscules désignent les répertoires
**les fichiers sont rangés dans des répertoires (directories)
**sous UNIX, on a une structure arborescente globale et unique pouvant être réalisée avec plusieurs disques locaux ou accessible en réseau
**répertoire courant : « . », père : « .. », racine : « / »
**chemin absolu : commence toujours par « / », le chemin relatif non
**tout utilisateur connecté à un répertoire de travail (home directory)
 
===Protection des fichiers et des utilisateurs===
 
*Il existe plusieurs types d’utilisateurs :
**superutilisateur (root) : administrateur
**groupes d’utilisateurs (possibilités plus ou moins limitées)
**dans ces groupes, on a les utilisateurs standards (mot de passe + répertoire de travail)
 
*Il y a trois types d’utilisateurs pour un fichier ou un répertoire :
**propriétaire (user)
**les utilisateurs du même groupe que le propriétaire (group)
**les autres, étrangers au groupe (others)
 
*Pour chaque type, 3 droits d’accès :
 
{| align="center" class="wikitable"
| align="center" | Fichiers
| align="center" | Répertoires
|-
| align="center" | r___ : fichier accessible en lecture
| align="center" | r___ : on voit la liste de ses fichiers
|-
| align="center" | w___ : fichier accessible en écriture
| align="center" | w___ : ajout ou retrait de fichiers possibles
|-
| align="center" | x___ : fichier accessible en exécution
| align="center" | x___ : traversée du répertoire possible et lecture du contenu
|}
 
*Pour chaque fichier ou répertoire, on a donc 9 indicateurs :
**rwx : pour le propriétaire
**rwx : pour le groupe
**rwx : pour les autres
 
Les droits absents sont codés par « _ ». Pour changer les droits, il faut utiliser la commande « chmod ».
 
Pour les appels système, les 9 droits d’accès sont codés sous forme binaire (0 : droit refusé, 1 : droit accepté). Le chiffre obtenu est codé en octal (base 8) et commence par 0. Il représente des groupes de 3 bits.
 
Exemple : création d’un fichier avec les droits : rwx, rw, rw : creat(« mon_fichier.txt », 0766)
 
==Gestion des processus==
 
Un programme est une suite d’instructions.
Un processus est programme en cours d’exécution (ressources nécessaires pour l’exécuter) et fournit l’état d’avancement de l’exécution du programme.
 
===Caractéristiques d'un processus===
 
Principaux composants : tout ce qui est nécessaire à l’exécution du code.
 
*Zones de stockage des composants du processus :
**zone mémoire pour le code à exécuter
**zone mémoire pour les données
**zone mémoire de pile pour l’exécution
 
*Contexte d’exécution : nsemble d’informations pour garder l’état courant du processus :
**état du processus
**priorité du processus
**valeur des registres du processeur
**état des zones mémoires (code, donnée, pile)
**état des fichiers ouverts
 
*Caractéristiques (attributs) d’un processus :
**identificateur (PID : Processus Identifier)
**identificateur du processus créateur (processus père ou PPID)
**identificateur du propriétaire
**nom du processeur : nom du fichier qui contient le code
**Trois principaux états :
***élu (en cours d’exécution)
***prêt (suspendu, pour permettre l’exécution d’un autre processsu)
***bloqué (attente d’un évènement extérieur : entrée/sortie, signal, …)
 
[[Image:Unix2.JPG]]
 
*T1 : le processus bloque en attente de données d’entrée. Ceci se produit lorsque la ressource attendue est non disponible. Sauvegarde des valeurs du contexte d’exécution.
*T2 : la ressource attendue est arrivée et le processus redevient prêt à être exécuté.
*T2 et T3 sont provoqués par l’ordonnanceur de processus (scheduler)
*T2 : le quantum de temps expire donc sauvegarde du contexte d’exécution et passage à l’état prêt.