Académique Documents
Professionnel Documents
Culture Documents
Avant-Propos
Un système d’exploitation moderne comprend un ou plusieurs processeurs, de la
mémoire principale, des disques, des imprimantes, un écran, un clavier, des interfaces
réseau et autres périphériques d’entrées sorties. C’est un système complexe. Ecrire des
programmes qui prennent en compte tous ces composants et les utilisent correctement
de façon optimale, serait une tâche extrêmement difficile. C’est pourquoi, les
ordinateurs sont équipés d’une couche logicielle appelée système d’exploitation
(Windows, Linux, Mac OS) qui a pour rôle la gestion de tous les périphériques
(matériels) et de fournir aux programmes utilisateurs une interface conviviale
simplifié.
Objectifs du cours
Ce support n’est qu’un bref très condensé des principes de conception et des
mécanismes mis en œuvre dans les systèmes d’exploitation. La connaissance d’un
système d’exploitation est un vaste sujet.
Celui-ci est relié au monde extérieur par des organes d’accès appelé
« Périphériques» permettant au système informatique de communiquer avec les
usagers humains ou avec d’autres équipements.
1.2. Fonctions
La fonction essentiel d’un système informatique est de fournir de services adaptés à
la résolution des problèmes les plus courants des utilisateurs, tel que :
Les problèmes de gestion de l’information qui consiste au stockage,
recherche, communiqué, etc.
Les problèmes liés à la présentation et la mise au point des programmes ;
Les problèmes liés à l’exploitation des programmes.
1.3. Architecture
Un système informatique peut donc se décomposer en :
Logiciel de base : qui est un ensemble de programmes réalisant les fonctions
communes à une large classe d’application.
Logiciel d’application : qui met en œuvre une application spécifique en
faisant appel aux services offerts par le logiciel de base.
Machine physique : qui représente l’ensemble d’équipements ou composant
matériels du système informatique.
LOGICIEL D’APPLICATION
LOGICIEL DE BASE
MACHINE PHYSIQUE
Noter que dans cette architecture, hiérarchique, chaque couche supérieur utilise les
ressources ou services fournies de la couche inferieur ; et cette dernière présente à
la couche supérieur une interface décrivant les ressources ou services qu’elle
fournit. L’interface de la couche la plus haute est celle du système d’exploitation.
Le Système d’Exploitation ;
Les outils et services fournis par le logiciel de base tels que les compilateurs,
les chargeurs, les éditeurs, les utilitaires, etc.
OUTILS ET SERVICES
SYSTEME D’EXPLOITATION
L’Unité Centrale ;
La Mémoire Centrale ;
Le Dispositif de gestion des entrées-sorties.
Ces divers éléments communiquent entre eux par l'intermédiaire du bus, lequel est
subdivisé en :
1) bus des données : qui achemine les données devant être traitées par le
processeur;
2) bus des commandes : qui achemine les commandes devant être exécutées par
le processeur.
Schématiquement un ordinateur peut être représenté comme suit :
Les Unités d’échanges : qui sont des dispositifs intercalés entre l’UCT et les
unités périphériques pour palier la disproportion de vitesse de fonctionnement
entre l’UCT (qui est un équipement électronique) et les unités périphériques
(qui sont des équipements électromécaniques). Ils effectuent le transfert
d’information entre l’UCT et les unités périphériques.
Parmi les unités d’échange, on peut citer :
- Les Bus : qui sont constitués d’un ensemble de conducteurs électriques
montés en parallèle ;
- Un Canal : qui est en fait un processeur spécialisé travaillant en parallèle
avec le processeur central.
Aujourd’hui :
Dans le secteur des ordinateurs de poches (des netbook) Windows est encore très
présent mais moins prédominante, la raison en est que ces appareils n’ont pas une très
grande puissance. C’est donc GNU/Linux qui prend le reste du marché, Mac étant
complètement absent.
Dans le secteur des téléphones portables, nous trouvons de tout avec un écosystème
assez riche : Apple avec une version Mac iPhone, Microsoft avec Windows Mobile,
GNU/Linux (avec notamment Android de Google), Symbian et quelques autres
systèmes.
Dans les secteurs de serveurs et autre infrastructure réseaux, Unix a une belle
place quoique la qualité de GNU/Linux et sa compatibilité lui permettent de prendre
des parts très importantes, Windows est présent, mais minoritaire.
Demain ?
Pour bien aborder l’avenir concernant les OS, il est nécessaire de prendre un certain
nombre de paramètres supplémentaire :
Les applications sont de plus en plus sur le Web, la tendance est au « Cloud
Computing » : les applications sont sur le réseau, pas sur l’ordinateur.
Les téléphones portables permettent de faire de plus en plus de chose.
Les virus informatique ne s’attaquent qu’à Microsoft Windows (pour l’instant).
Les exigences des utilisateurs en termes de simplicité d’administration du
système sont très importantes.
Par contrecoup :
Un gestionnaire de ressources :
Exit
En exécution Créer/réveil
Suspendre
Elu Prêt
Activer
Détruire
Bloquer
En attente du processeur
Débloquer
Bloqué
En attente de ressources
Détruire
1.7.2. Ordonnancement
1.7.2.1. Définition
L’ordonnancement c’est un mécanisme par lequel on donne la main
successivement à tous les processus prêts, dans un système multitâche. C’est
l’ordonnanceur qui met en œuvre l’ordonnancement.
1.7.2.2. Quelques algorithmes utilisés
Dans cette partie, nous allons voir quelques algorithmes d’ordonnancement
simples. Bien sûr, ces algorithmes sont rarement utilisés tels quels dans le systèmes
d’exploitations modernes, qui utilisent des algorithmes d’ordonnancements bien plus
complexes et souvent plus efficaces.
Avec cet algorithme, les programmes à exécuter sont ajouté dans la file
d’attente quand on le démarre. Ceux-ci sont alors stockés dans la file d’attente dans
l’ordre dans lesquels on les a fait démarrer. L’ordinateur décide alors d’exécuter le
programme entré dans la file d’attente avant tous les autres en première. En clair, les
programmes sont exécutés dans l’ordre dans lesquels ils sont rentrés dans la file
d’attente.
Avec cet algorithme, les programmes à exécuter sont ajouté dans la file
d’attente quand on les démarre. Ceux-ci sont alors stocké »s dans la file d’attente dans
l’ordre dans lesquels on les a fait démarrer. Mais contrairement à l’algorithme Last
Input Output, l’ordonnanceur exécuter le programme entré en dernier dans la file
d’attente contenant déjà des programmes en attente, ce sera lui le prochain à être
exécuter, vu qu’il a été ajouté en denier.
Cet algorithme peu souffrir d’un phénomène assez particulier : dans certains
cas, un programme peut très bien mettre énormément de temps avant d’être exécuté.
Cet algorithme est basé sur logique simple. Les programmes à exécuter sont
placé dans la file d’attente et l’ordonnanceur va alors décider d’exécuter ces
processus dans l’ordre. Pour appliquer cet algorithme, on suppose que le temps
d’exécution des différents programmes sont connus à l’avance et sont parfaitement
bornés. Cette contrainte peut sembler absurde, mais elle a un sens dans certains cas
assez rares dans lesquels on connait à l’avance le temps mit par un programme pour
s’exécuter. Dans ce cas l’algorithme est simple : on exécute le programme qui met le
moins de temps à s’exécuter en premier. Une fois celui-ci terminé, on le retire du fil
d’attente et on recommence.
b) Algorithmes préemptifs
Shortest Remaining Time Next :
Round-Rubin : Tourniquet
Cet algorithme est le premier de nos algorithmes qui utilise la méthode du
quantum de temps : on donne à chaque programme un temps fixé une bonne fois pour
toute durant lequel il peut s’exécuter. Une fois ce temps fini, l’ordonnanceur stoppe
celui-ci et demande l’exécution d’un autre programme. Il se base toujours sur une file
d’attente de programmes. Cette liste est ordonnée (comme pour l’algorithme FIFO et
LIFO) et a un début et une fin. Tout programme qui vient d’être lancé est placé à la fin
de cette liste.
Chaque programme dans la file d’attente a droit à un quantum de temps.
Quand un programme a fini son exécution, il doit attendre que tous les autres
programmes aient eu droit à leur quantum de temps avant de pouvoir être exécuté une
nouvelle fois. Pour cela, à la fin de chaque quantum de temps, on place le programme
à la fin de la liste d’attente.
Multilevel feedback queue
Cet algorithme est déjà proche de ceux implémentés dans les systèmes
d’exploitation actuels. La philosophie derrière cet algorithme est :
- D’ordonnancer aux mieux un ensemble de programmes aux temps d’exécution
et aux particularités disparates ;
- D’exécuter en priorité les programmes rapides ;
- D’exécuter en priorité les programmes qui accèdent souvent aux périphériques.
Le principe de cet algorithme est simple : on dispose de plusieurs files d’attentes
comme celle de l’algorithme round-robin. Ces files d’attente sont classées de la plus
basse à la plus haute. Ces files d’attente ont des priorités différentes. De plus, le
quantum de temps est différent suivant la file d’attente : la file d’attente la plus haute a
un quantum de temps très petit, tandis que la file la plus basse a un quantum de temps
élevé.
Exercice pratique des algorithmes d’ordonnancement
a) Soient les processus suivants, dont les données sont précisées par le tableau
suivant :
Processus Temps d’arrivé Temps d’exécution Priorité
P1 0 10 3
P2 5 6 3
P3 5 7 2
P4 8 4 1
P5 12 10 4
Questions :
1. On applique l'algorithme de "premier arrivé, premier servi". Dessiner le
digramme de Gantt correspondant.
2. Calculer le Temps d’attente moyen
3. Calculer le Temps de séjour moyen
- Sur un hôte Mac OS X, dans la zone de recherche, cliquez deux fois sur
l’élément “VirtualBox” du dossier “Applications”. (Il se peut que vous vouliez
mettre cet élément sur votre Dock.)
- Sur un hôte Linux ou Solaris, selon votre environnement de bureau, une icône
“VirtualBox” peut avoir été mis soit dans le groupe “Système” soit dans “Outils
système” de votre menu “Applications”. Sinon vous pouvez taper VirtualBox
dans un terminal.
Quand vous démarrez VirtualBox pour la première fois, une fenêtre comme celle
suivante devrait apparaître :
plus de mémoire sera affectée à la deuxième VM (qui peut même ne pas démarrer si la
mémoire n’est pas disponible). D’un autre côté, vous devriez spécifier autant que votre
système d’exploitation invité (et vos applications) ont besoin pour s’exécuter
correctement.
enregistrements sur le disque, c’est lui qui prend en charge les appels des
fonctions DOS.
e) Le Module de traitement COMMAND.COM : traite les différentes
commandes que l’utilisateur soumet au système d’exploitation (DIR, DEL,
COPY…).
f) Commandes externes : ce sont les autres commandes de MS-DOS qui ne
sont pas dans l’interpréteur de commande COMMAND.COM, soit parce
qu’ils sont rarement utilisées. On appelle commande externes tous fichiers
exécutable du disque (COM et EXE).
Le Module BIOS et interface de Bas niveau doit donc être pour
chaque machine.
Le Module DOS interface de haut niveau, sera le même pour toutes
les machines. Donc les interfaces étant les mêmes (DOS identiques) ;
les applications pourront alors être d’une machine sur une autre.
reverse)
PRINT Imprime le fichier spécifié (exemple : c>print tuto.txt)
EXIT Ferme la fenêtre MS-DOS (exemple : c>exit)
FC Comparaison de fichier
ATTRIB Modifie les attributs d’un fichier. (exemple : c> attrib c:\test +a)
CALCLS Modifier les droits utilisateurs sur un fichier
CHDIR Affiche l’arborescence actuelle. (exemple : c:\temp >chdir)
GNU/Linux
Système d’exploitation
Exemple d’utilisation :
Exemples :
- chgrp unGroupe MonFichier
Change le groupe propriétaire du fichier MonFichier
en unGroupe
- chgrp -r unGroupe monrep
Change le groupe propriétaire du repertoire monRep
ainsi que tout ce qu’il contient en unGroupe
6) Free
- Signification : mémoire libre
- Affiche la mémoire disponible/ utilisée du système
- Options les plus fréquentes :
-b : affiche la mémoire en octets (bytes)
-k : affiche la mémoire en kilooctets
-m : affiche la mémoire en méga octets
-g : affiche la mémoire en giga octets
-h : affiche la mémoire en unités pertinentes pour l’humain
-s : spécifie le délai de réaffichage de la mémoire
-t : affiche en plus la ligne des totaux (RAM +swap)
Exemples :
- Free –m –s 5
Affiche la mémoire du système en méga octets toutes
les 5 secondes
7) Sudo
- Signification : substitute user-do
- Equivalent MS-DOS/MS Windows : runas
- Permet d’exécuter des commandes en tant qu’un autre utilisateur,
donc avec d’autres privilèges que les siens
- Options les plus fréquentes :
-s : Importe les variables d’environnement du shell
-k : lorsque l’on utilise sudo, il garde en mémoire le mot de
passe ; cette option déconnecte l’utilisateur et forcera à
redemander un mot de passe si sudo est exécuté avant le
timeout défini
Exemples :
Sudo reboot
Lance la commande reboot avec les droits de l’utilisateur
root.
8) Ps
- Equivalent MS-DOS/MS Windows : tastlist
- Signification: processes snapshot
-
Affiche les processus en cours
-
Options les plus frequentes:
-u: affiche les processus de l’utilisateur qui exécute la
commande
-au : affiche les processus de tous les utilisateurs
aux : affiche l’intégralité des processus du système.
Equivalent à ps –A
-faux : affiche tous les processus du système en le
regroupant par enchainement d’exécution.
Exemples :
- Ps –u
Tous les processus des utilisateurs courant
- Ps –aux
Tous les processus en cours
9) Shutdown
- Equivalent MS-DOS/MS Windows : shutdown
- Signification: shutdown
- Permet d’éteindre ou relancer la machine au bout d’un temps
détermine (on peut mettre now pour éteindre immédiatement). Les
nouvelles connexions seront bloquées quelques minutes avant
l’extinction et les utilisateurs connectés sont prévenus à l’avance.
- Options les plus fréquentes :
-r : pour relancer (reboot)
-p : pour éteindre
-t : pour programmer le temps (en secondes
-c : pour annuler
Exemples :
- Shutdown-r now : reboot immédiat
- Shutdown-P now : extinction immédiate
- Shutdown-r-t 600 : reboot dans 600 secondes (10
minutes)
- Shutdown-c : annule toutes programmations
d’extinction
Il semblerait que shutdown now ne fonctionne plus, ni sur Ubuntu, ni sur OpenBSD
(du moins sur les miens). Cependant, la commande Shutdown-P now fonctionne.
En effet, il suffit de remplacer ‘’now’’ par ‘’0’’ soit 0 minutes et le tour est joué
10) Passwd
- Signification : Password
- Permet de modifier le mot de passe d’un utilisateur
Exemples :
- Deluser UtilisateurSSH
Supprime l’utilisateur UtilisateurSSH
- Deluser –remove-home NouvelUtilisateur
Supprime l’utilisateur NouvelUtilisateur ainsi que le
répertoire /home/NouvelUtilisateur
- Deluser NouvelUtilisateur users
Supprime l’utilisateur NouvelUtilisateur du groupe
«users»
14) Uptime
- Signification : uptime
- Indique depuis quand le système fonctionne
Exemples :
Uptime
Affiche l’heure actuelle, la durée depuis laquelle le système
fonctionne, le nombre d’utilisateurs actuellement connectés,
et la charge système moyenne ; commande de geek par
excellence à qui ne sert pas à grand-chose pour un utilisateur
lambda, mais utile pour un administrateur.
15) lsusb
- signification : list usb
- liste tous les périphériques USB
- option les plus fréquentes :
-v : affiche des informations plus détaillées
Exemple :
- Lsusb
16) Uname
- Signification : unix name
- Affiche les informations sur le système
- Options les plus fréquentes :
-s : affiche le nom du noyau
-n : affiche le nom de la machine Host
-r : affiche la révision du noyau
-m : affiche le type de processeur de la machine (i386, i686,
etc).
-o : affiche le nom du système d’exploitation
-a : afficher les informations en utilisant les options –snrvmo
Exemple :
- Uname –a
Affiche tout
17) Apt-get
Remarque : contrairement aux commandes précèdent, vous n’avez pas besoin d’être
root pour utiliser cette commande. Vous devez juste être propriétaire du fichier dont
vous voulez modifier les droits d’accès.
Octal
Absolue
Symbolique
2 Méthodes pour
utiliser chmod
Relative
Symbolique
1. Méthodes octale
Droit Binaire Octale Signification
--- 000 0 Aucune permission
--x 001 1 Exécution
-w- 010 2 Ecriture
-wx 011 3 Ecriture + exécution
r-- 100 4 Lecture
r-x 101 5 Lecture + exécution
rw- 110 6 Lecture + écriture
rwx 111 7 Tous les droits
Méthode absolue
1. Méthode Octale
Lecture=r=4
Ecriture=w=2
Exécution=x=1
Exemple :
7=4+2+1=rwx
5=4+0+1=r-x
6=4+2+0=rw-
0=0+0+0=---
Exercice1 : Interpréter
Questions :
WINDOWS
Avantages Inconvénients
- Système prêt à l’emploi - Trop d’application en arrière-plan
- Supporte correctement les - Mis à jour forcée
programmes permettant de faire - Beaucoup d’application préinstallée
fonctionner le matériel inutiles
- Sécurité non optimale : risque de
virus trop important
- Système lent
- Contrôle trop de la part de Microsoft
MAC OS
Avantages Inconvénients
- Rapide - Confidentialité des informations
- Fiable personnelles
- Sécurisé
LINUX
Avantages Inconvénients
- Distribution légère sur le disque dur - Mis à jour à effectuer à la main
- Fonctionnement simple et rapide - Si une mise à jour est mal
- Mode d’emploi bien guidé.( bien effectuée, le système peut
documenté) crasher
- Contenu entièrement - Les paquets codés et compilés
C ne connait pas le type BOOLEAN, néanmoins, vous simulez aisément ce type en donnant
les valeurs 0 et 1 à une variable entière.
Vous pouvez indiquer que vous ne vous intéressez qu’aux valeurs positives d’une variable
entière, ce que vous faites en la déclarant simplement :
Unsigned int
Ce qui signifie entier non signé. Vous considérez alors qu’il peut contenir toutes les valeurs
entières entre 0 et 65535.
Exemple :
main(){
double nb ;
printf(‘’saisir un nombre réel’’) ;
scanf(‘’%d’’, &nb) ;
}
V.4. Operateurs
V.4.1. Opérateurs arithmétique
Symbole Signification
+ Addition
- Soustraction
* Multiplication
/ Division
% Modulo
ou
++i (pré-incrémentation)
Exemples :
Avant chaque opération, i=3 et j=15
Opération Équivalent Résultat
I=++j J=j+1 ; i=j ; I=16 et j=16
I=j++ ; I=j ; j=j+1 ; I=15 et j=16
I++ I=i+1 ; I=4
J=++i + 5 ; I+=1 ; j=i+5 ; I=4 et j=9
J=i++ + 5 ; J=i+5 ; i+=1 ; J=8 et i=4
ex : if (i>0) printf(‘’positif’’);
b) Syntaxe 2
if(condition){ instruction -1;
…
instruction -n;
}
ex: if (i>0){ printf(‘’positif’’);
j=1;
}
c) syntaxe 3
if(condition) instruction -1;
else instruction -2;
instruction -4;
}
exemple: if(i>0){printf(‘’ positif’’);
j=1;
}else{
printf(‘’i<=0’’);
j=0;
}
V.6. Boucles
V.6.1. Boucles tant que (while)
Syntaxe :
a) while(condition) instruction ;
b) while(condition){
Instruction-1 ;
…
Instruction-n ;
}
1 2
3 4
5 6
Travail demandé :
a) Déclarer le tableau MonTableau
b) Insérer les valeurs avec la boucle for
c) Afficher les éléments du tableau
V.8. Fonctions
Les fonctions permettent de decomposer un programme en entités plus petites et donc
de simplifier un programme.
Une fonction peut :
- Se trouver dans le meme module de texte (toutes les declarations et instructions
qui la composent s’y trouvent).
float moitie(int) ;
int triple(int) ;
main(){
int i,j ;
float x ;
i=3 ;
x=moitie(i) ;
x=moitie(i*7) ;
x=moitie(triple(i-1)) ;
}
float moitie(int nb){
return (nb/2.0) ;
}
int triple(int nb){
return (nb*3) ;
}
EXERCICES D’APPLICATION
1. Calculer le périmètre d’un cercle, avec le rayon saisi par l’utilisateur. Sachant que p=
pi*2*rayon
2. Ecrire un programme C qui demande un nombre à l’utilisateur, puis calcule son carré.
3. Ecrire un programme qui permet à l’utilisateur de saisir un nombre et de dire si ce
nombre est positif ou négatif.
4. Ecrire un programme qui lit les n nombre saisie par l’utilisation en suite fait sa
somme.
5. Ecrire un programme qui calcule le factoriel d’un nombre saisie par l’utilisateur.
6. Ecrire un programme C qui lit un nombre et indique s’il est pair ou impair.
7. Ecrire un programme C permettant d’afficher 5 fois le message « Je veux que becky
devienne mon amie »
8. Soit un algorithme
Debut
Lire a
Lire b
X a
Y b
Tant que y<> 0 faire
Xx+1
Yy-1
Fin tant que
Ecrire X
Fin
Questions :
a) Tester à la main pour a=3 etb=2
b) Tester à la main pour a=4 et b=3
c) Que calcul cet algorithme ?
d) Traduire l’algorithme en C
BIBLIOGRAPHIE
Ouvrage
Notes de cours
Webographie
- http://www.virtualbox.org
- https://www.dreamlive.fr
- https://www.Developpez.com
- https://www.helpclic.fr.st
- https://www.siteduzero.com/tuto-apprenez-le système d’exploitaion.html
- www.commentçamarche.net