Introduction
Le système d’exploitation d’un
ordinateur ou d’une installation informatique est un ensemble de programmes
qui remplissent deux grandes fonctions :
- gérer les ressources de l’installation
matérielle en assurant leurs partages entre un ensemble plus ou
moins grand d’utilisateurs
- assurer un ensemble de services en présentant
aux utilisateurs une interface mieux adaptée à leurs besoins
que celle de la machine physique
Un système informatique est un ensemble
de matériels et de logiciels destiné à réaliser
des tâches mettant en jeu le traitement automatique de l’information.
La communication d’un tel système
avec le monde extérieur est assurée par des organes d’accès
; ceux ci permettent également une interaction avec des dispositifs
physiques que le système informatique est chargé de surveiller
ou piloter.
La fonction d’un système informatique
est la fourniture de prestations (services) capables d’aider à la
réalisation de problèmes usuels :
- gestion de l’information : stockage,
désignation, recherche, communication, protection contre les intrusions
ou les incidents;
- préparation et mise au point
de programmes;
- gestion de l’ensemble des ressources
pour permettre l’exploitation des programmes (c’est-à-dire création
d’un environnement nécessaire à l’exécution du programme);
- gestion et partage de l’ensemble des
ressources (matériels, informations, ...) entre l’ensemble des usagers;
On peut considérer que cet ensemble
de prestations, fournies par le système d’exploitation, constitue
pour l’usager de ce système, une machine nouvelle qualifiée
d’abstraite ou de virtuelle, par opposition à la machine physique
réalisée par l’assemblage de composants matériels.
|
|
|
Le logiciel de base peut lui-même être décomposé en deux niveaux :
-----> Les outils et services (compilateurs,
chargeurs, éditeurs, utilitaires, ...)
-----> Le système d’exploitation
Finalités du système d’exploitation
- Gestion des informations : stockage,
recherche protection
- Gestion des ressources matérielles
et logicielles : optimisation, sécurité, exécution
des applications, partage entre usager
- Assurer une sécurité vis
à vis du matériel et personnel
- Rendre compte de l’activité de
la machine
Fonctions du système d’exploitation
Les principales fonctions du système d’exploitation peuvent être classées hiérarchiquement :
Différents types de classifications sont utilisés :
- par la méthode d’accès
au système par l’usager,
- par sessions : ce sont les systèmes
transactionnels ou conversationnels (ex : réservation d’un billet
SNCF)
- par requête : temps réel
- par travaux (batch) : traitement
par lots (ex: mise à jour des comptes bancaires la nuit)
- par le genre d’applications des
usagers
- développement de programmes
- manipulation des données
- par la configuration matérielle
- un seul processeur : système
monoprocesseur
- plusieurs processeurs : système
multiprocesseur
- basée sur un réseau
: système réseau
- par la politique de partage des
ressources physiques et logiques
- partage de la mémoire entre
plusieurs programmes : système multiprogrammé
- partage du temps processeur entre
les programmes en exécution : temps partagé (partage par
quantum de temps) ou temps réel (partage par priorité des
taches)
- par le nombre d’usagers simultanés
- système monoposte
- système mulitposte
- La fiabilité : limiter les conséquences
des défaillances matérielles ou des erreurs des utilisateurs.
En cas de panne, éviter les pertes d’information ou leur incohérence.
- Efficacité : Utiliser au
mieux les ressources et possibilités matérielles (sans en
consommer trop pour lui-même)
- Facilité d’emploi : Offrir un
langage de commande (dialogue usager/système) et des diagnostics
d’erreurs (système/usager) clairs et précis
- Adaptabilité : permettre des
modifications matérielles et logicielles les plus simples possibles,
à l’aide d’outils spécialisés
- Mesurabilité : Enregistrer la
comptabilité des ressources utilisées par les usagers, mesurer
les paramètres de fonctionnement et de charge
Quelques systèmes d'exploitation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Structure d’un système d’exploitation
Le noyau
Les fonctions principales du noyau sont
:
L’allocateur (dispatcheur) du CPU qui
est responsable de la répartition du temps disponible de l’unité
de traitement entre les différents processus. La priorité
d’un processus est attribuée par le planificateur (scheduleur) selon
l’urgence et les ressources requises. L’allocateur doit aussi sauvegarder
l’état de la machine lorsque le processus s’interrompt et indiquer
au CPU le processus suivant ; le processus interrompu est sauvegardé
dans un bloc d’information appelé vecteur d’état ou descripteur.
La gestion des interruptions dont la tâche
est de déterminer la source de l’interruption et d’activer la procédure
de service correspondante.
Le support de l’environnement des processus
dont le rôle du noyau, dans la synchronisation des processus est
généralement limité à l’implantation des deux
primitives WAIT (décrémente le sémaphore S d’une unité
mais n’est jamais négative) et SIGNAL (incrémente S d’une
unité) utilisées par les niveaux supérieurs du système.
Ces deux opérateurs maintiennent un compteur (S) et assurent la
suspension et la réactivation des processus.
Gestion de la mémoire centrale
On peut distinguer différentes
façons de gérer la mémoire centrale :
Les partitions de taille fixe qui consistent à découper la mémoire physique en partitions fixes, mais pas nécessairement de tailles identiques, et qui sont fixées à la génération du système. Cela occasionne un gaspillage de mémoire du fait de la différence entre les tailles des jobs et des partitions.
Les partitions de taille variable qui adaptent les partitions à la taille des programmes. Le problème commence lorsqu’un programme termine son exécution, il crée un trou qui ne correspond pas forcément à la taille d’un processus en attente. Pour éviter cela, on réalise une opération de compactage (réallocation ou relocation) qui réalise une translation dynamique des programmes. Elle est réalisée à l’aide des registres de base et du dispositif calculant, au moment de l’exécution, l’adresse effective (adresse effective = adresse de base + adresse relative au début du programme).
La translation dynamique et protection consiste à comparer l’adresse effective calculée avec les adresses extrêmes de la zone allouée au programme, stockées dans des registres bornés. Cela comporte quatre dispositifs (registre de base, registre de bornes, dispositif de calcul de l’adresse effective, dispositif de vérification de l’appartenance de l’adresse effective à la zone mémoire du processus). Grâce à ces dispositifs, le système peut déplacer un programme et retasser la mémoire. Les processus inactifs peuvent ainsi être mis en attente (SWAPPING) et remplacés par d’autres. Les inconvénients sont le temps utilisé pour retasser la mémoire et l’exigence d’allouer à chaque processus une zone mémoire d’un seul tenant.
La segmentation consiste à diviser un programme en segment correspondant à une entité logique telle une procédure ou un bloc de données. Le système gère un ensemble de tables de segments, contenant les adresses de chargement des segments de chaque programme (une par job), afin de savoir où ils sont stockés. L’adresse contient deux champs (le numéro du segment et le déplacement à l’intérieur du segment).
La mémoire virtuelle consiste à traiter séparément les adresses référencées par un programme (adresse virtuelles) et les adresses de la mémoire physique (adresses réelles). C’est un espace mémoire qui n’existe pas mais qui peut être utilisé par le programmeur comme modèle de mémoire centrale à sa disposition.
La pagination, nécessaire pour réaliser une mémoire virtuelle, consiste à découper les deux espaces adresses (réel et virtuel) en pages de la même taille et à mettre en œuvre un mécanisme de transfert de page entre la mémoire virtuelle et réelle.
Organisation des entrées-sorties
La difficulté provient de causes
matérielles et de facteurs objectifs mais aussi de la gestion optimale
des ressources et de la simplification de la tâche de l’utilisateur
.
Ex :
Enchainement des processus - Parallélisme
Considérons deux programmes distincts
P et Q et leurs processus associés p et q.
L’exécution de l’ensemble (p,q)
peut se dérouler de diverses manières, caractérisées
par des formes particulières de sa trace temporelle :
(1) -------- p --------------
----------q------------
(2) --p-- --p--
--p-- --p--
--q-- --q-- --q--
(3) -----p----------
----------q---------
Les différentes schémas se
caractérisent comme suit :
- schéma 1 : on exécute
entièrement un processus, puis l’autre, par exemple p d’abord;
- schéma 2 : on exécute
alternativement une suite d’instructions de p, puis une suite d’instructions
de q, et ainsi de suite jusqu’à la fin des deux processus;
- schéma 3 : l’exécution
de p et q est simultanée; ce schéma nécessite deux
processeurs distincts.
Pour comparer ces schémas d’exécution, il est commode d’introduire la notion de niveau d’observation. On peut ainsi considérer une suite d’actions d’un processus comme une action unique, c’est-à-dire observer le déroulement du processus en prenant une unité d’exécution moins fine que l’instruction. Par exemple, si on redéfinit l’action élémentaire comme l’exécution d’une procédure, la trace du processus ne comporte que les états à chaque appel ou retour de procédure. Le niveau d’observation le plus fin (celui des instructions) est appelé niveau de base.
Plaçons nous d’abord à un
niveau d’observation où, par convention, l’exécution complète
de chacun des programmes P et Q représente une action unique. Les
définitions qui suivent sont relatives à ce niveau :
- le schéma de type 1 est celui
d’une exécution séquentielle de p et q. La fin d’un processus
entraîne le début d’un autre
- les schémas de type 2 et 3 sont
des schémas d’exécution parallèle.
Revenons au niveau de base. On peut alors faire une distinction entre les schémas 2 et 3. En effet, dans le schéma 2, en raison de l’unicité du processeur, une seule action peut-être en cours à un instant donné, contrairement au schéma 3. On dit qu’il y a parallélisme réel dans le schéma 3, pseudo-parallélisme dans le schéma 2. Le parallélisme réel nécessite deux processeurs distincts.
Exemple : Les usagers d’un système d’exploitation fonctionnant en temps partagé sur un monoprocesseur ont l’impression que leurs programmes s’exécutent en parallèle car leur niveau d’observation est celui de commandes composées de nombreuses instructions. En revanche, au niveau de base, ces instructions sont atomiques et sont exécutées séquentiellement par le processeur.
La situation décrite par les schémas 1 et 2 ne résulte pas d’un lien logique entre p et q, mais seulement de l’unicité du processeur. Elle peut être caractérisée comme suit : soit un ensemble de processus dont les contextes ont en commun un objet tel qu’à un instant donné un seul processus puisse l’utiliser. On dit alors que cet objet constitue pour les processus une ressource critique, ou que les processus sont en exclusion mutuelle (ou encore en compétition) pour l’usage de la ressource. Dans la situation décrite, le processeur est une ressource critique pour les processus p et q.
Le système de gestion de fichiers
Le SGF joue le rôle central
dans un système d’exploitation car il doit gérer la plupart
des informations des usagers et du système lui-même.
Il a des liens étroits avec le
système d’E/S (Unix a trouvé conceptuellement intéressant
commode de ne pas faire la différence entre un fichier et un périphérique).
La conservation des fichiers et la réalisation
des fonctions d’accès impliquent la prise en charge par le SGF de
:
- la gestion du support physique en masquant
à l’utilisateur les détails de l’organisation physique de
ses fichiers
- la sécurité et la protection
des fichiers, c’est à dire la garantie de leur intégrité
en cas d’incident ou de malveillance et le respect des règles d’utilisation
fixées (droits d’accès, conditions de partage...)
Le multiprocessing englobe plusieurs technique qui consistent à utiliser plusieurs processeurs en parallèle pour effectuer des taches qui demande une grande puissance de calcul, ou pour parer à d’éventuelles défaillances du processeur, ce qui est assez rare.
SMPNSP
On utilise 2 processeurs qui se partagent
la mémoire, le bus, les disques etc.. Il faut pour cela que le système
d’exploitation puisse gérer plusieurs processeurs (WINDOWS NT™ ou
Novell avec SMP) et que bien sur les programmes soient développés
afin d’utiliser pleinement cette technique. Malgré cela, il y a
un risque de saturation du bus ou de la mémoire.
Il existe alors une variante de cette technique. Chaque processeur a sa propre mémoire. De ce fait, les processeurs ne vont pas polluer la mémoire des autres. Le système est donc plus stable. Cette technique est utilisée dans les serveurs de très haut de gamme car c’est une solution onéreuse.
Clusters
On relie des machines qui peuvent être
de milieux de gamme par des connexions à très haut débit.
On gère ces machines de manière à ce que l’utilisateur
final ne les aperçoive que comme une seule et unique machine. C’est
une solution moins onéreuse mais dont la tolérance aux pannes
est moins bonne.
Principales caractéristiques :
pwd : pour connaître sa position
dans l’arborescence
cd <nom de répertoire> : pour
se déplacer dans l’arborescence
ls : pour voir le contenu du répertoire
man <commande> : pour connaître
la syntaxe d’une commande
cat <fichier> : pour voir le contenu
d’un fichier
write <nom utilisateur> : pour envoyer
des messages à un autre utilisateur
who : pour savoir qui est connecté
à la machine
etc...
Les avantages d'Unix
Généralités
Il y a deux versions de WINDOWS NT™
WINDOWS NT™ Workstation (WK)
Destiné plus particulièrement
aux postes de travail clients, mais il peut également gérer
un petit réseau local. Il est vendu avec une seule licence d’utilisation
comme poste de travail. Il ne dispose pas de tous les utilitaires et fonctions,
présents sur la version serveur, pour être utilisé
comme serveur dans un grand réseau.
WINDOWS NT™ Server (SR)
Cette version est destinée a gérer
un réseau de grande taille. Il intègre les fonctions client-serveur.
Il est vendu avec une licence serveur et 5 licences postes de travail.
En raison des fonctions qu’il est amené à exécuter
(serveur de fichier, serveur d’application) il nécessite une machine
plus performante que son petit frère Workstation.
Caractéristiques :
Portabilité du système
Entre la couche système et la couche
hardware de WINDOWS NT™, le concepteur a implémenté une couche
nommée HAL (Hardware Abstraction Layer). Cette couche est la seule
partie à modifier pour faire fonctionner WINDOWS NT™ sur différents
processeurs comme Intel™, Alpha, Power PC, Mips etc.. Bien entendu, c’est
le fabricant de la machine qui doit implémenter la couche nécessaire
pour le bon fonctionnement du logiciel sur sa plate-forme. WINDOWS NT™
WK et NT SR ont la possibilité de gérer respectivement jusqu’à
2 et 4 microprocesseurs. Cette limitation est aussi définie dans
cette couche HAL. Ainsi certains fabriquants fournissent avec leurs serveurs,
une version de NT capable de gérer jusqu'à 8 microprocesseurs
ou plus.
Reconnaissance de systèmes de
fichier
WINDOWS NT™ est capable de gérer
les systèmes de fichier FAT, NTFS et HPFS.
FAT (File Allocation Table)
C'est le type de partition standard de
DOS Windows™ 3.X et Windows™ 95. Il est mieux adapté à des
partitions de petites tailles (~300Mb). Fat limite la taille maximum de
la partition à 2Go. Il existe une nouvelle version de la FAT appelée
FAT 32 qui vient de paraître
et qui repousse cette limite à quelques milliards de Go. Elle est
incluse dans la nouvelle version de Windows 95 OS/R2. FAT est un système
de fichier très mauvais en matière de sécurité.
On ne peut pas faire d’audit, pas de gestion des droits, mais une fonction
Undelete est implémentée ce qui permet de récupérer
un fichier ou répertoire effacé par mégarde.
NTFS (New Technology File System)
C'est un système non plus basé
sur une table mais sur une structure arborescente de type arbre binaire
(Btree). Ceci permet un accès aux fichiers beaucoup plus rapide
qu’avec FAT. La barrière des 2Go de partition n’existe plus puisqu’elle
est maintenant limitée à 16 milliard de Go. Ce qui est largement
supérieur aux besoins actuels du marché. En terme de sécurité
NTFS permet d’associer des droits (lecture, écriture, effacement
etc.) à chaque fichier, groupes de fichiers ou répertoires
ainsi qu’a chaque utilisateur. Il permet de faire une audit sur les fichiers
ou répertoires, ce qui permet de savoir qui a effectué une
opération sur un fichier (effacement, création, lecture...).
NTFS possède également des fonctions de tolérances
de pannes et de RAID. Malheureusement NTFS n’a pas de fonction Undelete.
On ne peut pas formater une disquette NTFS. NTFS n’est pas compatible avec
FAT.
HPFS (High Performance File System)
C'est le système utilisé
par IBM™ corp. Pour son système d’exploitation OS/2. WINDOWS NT™
est capable de lire et écrire sur ce type de partitions. C’est aussi
une partition 32 bits qui comprend des fonctions de sécurité.
Elle n’est absolument pas compatible avec FAT ni même NTFS.
Windows 95 - Windows 98 (Microsoft)
C’est le système d’exploitation
le plus vendu au monde actuellement : il équipe la majorité
des Pcs.
Il succède au système Dos/Windows
mais assure la compatibilité.
Caractéristiques :
FAT : File allocation Table. C'est une structure de données qui permet au système de gérer l'espace disque, les zones libres, occupées et leur allocation à des fichiers ou des répertoires.
Les premières versions de Windows95
ainsi que toutes les versions de DOS utilisaient un système de fichier
appelé FAT16 (voire FAT12 pour les plus anciennes). Cette table
avait 2^12 (4096) ou 2^16 (65536) entrées qui représentent
chacune une unité élémentaire d'espace disque. Quand
le système de fichier à besoin de place disque, il s'alloue
donc des clusters (ensembles de secteurs physiques du disque, généralement
de 512octets). 65536 clusters pour une partition de plus d'1 Go nous donne
donc des clusters de 32 Ko. Cela signifie en particulier qu'un fichier
de 100 octets utilisera un cluster entier sur votre disque dur (jusqu'à
32 Ko pour une partition de plus d'1 Go). Certains utilitaires de compression
de disque peuvent (Stacker par exemple) peuvent mettre plusieurs fichiers
dans un même cluster.
Il n'est pas rare d'avoir 15000 fichiers
sur un disque de 2 Go, ce qui peut représenter une perte de 250
Mo (plus de 10 %). Si vous voulez savoir combien vous perdez de place,
essayez chkdrv.
La table ci-dessous récapitule la
taille des clusters en fonction de la taille des partitions (pour les dos
>= 4.0) avec FAT16
taille de la partition en Mo | <128 | <256 | <512 | <1024 | <2048 |
taille du cluster en Ko | 2 | 4 | 8 | 16 | 32 |
la FAT32 permet de gérer des disques jusqu'à 2 Téra octets avec les tailles de cluster suivantes :
taille de la partition en Go | <8 | <16 | <32 | >32 |
taille du cluster en Ko | 4 | 8 | 16 | 32 |
Quel OS supportent la FAT32 ?
A priori, seuls Windows95 OSR2 et Linux
supportent la FAT32. Il est impossible de l'utiliser avec une version antérieur
de Windows ou avec WindowsNT (La version 5 devrait le permettre).
Quelle est l'influence de la FAT32 sur
les performances disques ?
D'après Microsoft, l'influence
de la FAT32 sur les performances est négligeable pour la majorité
des utilisateurs. Certains programmes peuvent gagner un peu en vitesse
du fait de la FAT32, d'autres, surtout qui font de larges accès
séquentiels en lecture ou en écriture, peuvent être
légèrement pénalisés
Des benchmarks montrent en général
quelques pour cents de dégradation sur les performances disques.
Cela peut s'expliquer très simplement par l'augmentation du nombre
de clusters pour les grandes partitions et est vrai pour tous les systèmes
de fichiers.