Vous êtes sur la page 1sur 65

Pr.

Ayache | Chapitre 1: généralités 2


Introduction

• Qu’est ce qu’un système d’exploitation(SE)


– En avez-vous déjà utilisé un? Exemples.

• Pourquoi c'est important?

• Qui utilise un système d'exploitation ?

Pr. Ayache | Chapitre 1: généralités 3


Où trouve-t-on le système
d'exploitation ?

Pr. Ayache | Chapitre 1: généralités 4


Différents Types de Systèmes
D’exploitation: Exemples

Pr. Ayache | Chapitre 1: généralités 5


Qu’est ce qu’un système SE?
• Un SE est une interface entre l’utilisateur et le matériel d’un ordinateur

Utilisateur= l’humain devant la machine


• suivant le contexte : utilisateur final, ou développeur
• interagit directement... avec le matériel !

Applications= les logiciels avec lesquels veut


interagir l’utilisateur final
• messagerie, traitement de texte, lecteur de musique, etc
Matériel = la machine physique
Et donc :Operating System = tout le reste
• logiciel d’infrastructure : «noyau», «pilotes», «services», etc
• «entre le matériel et les applications»

Pr. Ayache | Chapitre 1: généralités 6


Rôle de l’OS : les deux fonctions
essentielles

Machine virtuelle
• cacher la complexité sous une interface«plus jolie»
• fournir certains services de base aux applications
• IHM, stockage persistant, accès internet, gestion du temps
• permettre la portabilité des programmes
• pouvoir lancer un même exécutable sur différents matériels

Gestionnaire de ressources
• Partager chaque ressource entre les applications
• exploiter «au mieux» les ressources disponibles
• assurer la protection des applications (et du système)
Pr. Ayache | Chapitre 1: généralités 7
Pourquoi apprenons-nous le système
d'exploitation ?

Administrateurs Développeurs
Réseaux Développeurs
• Compilation
• Network Monitoring • System Call
• Intrusion Detection Systems • Management du
• Distributed/ Parallel Computing Stockage
• Virtualization • Processus
• Containerization Administrateurs Spécialiste en
Réseaux OS Cyber sécurité

Individuels
• Input/output Security Specialists
• File Management • Forensics: dead, live
• Access Control Individuels • Access Control Lists
• Ease of Usage • Deadlocks
• Transparency • Antiviruses/Malwares
• Memory Dumping
Pr. Ayache | Chapitre 1: généralités 8
Buts d’un SE

● Transformer une machine matérielle en une machine utilisable,


c'est-à- dire fournir des outils adaptés aux besoins indépendamment
des caractéristiques physiques,
● Optimiser l’utilisation du matériel principalement pour des raisons
économiques.
Mais il faut également la garantie d’un bon niveau en matière de :
• Sécurité : intégrité, contrôle des accès confidentialité…
• Fiabilité : degré de satisfaction des utilisateurs même dans des conditions
hostiles et imprévues,
• Efficacité : performances et optimisation du système pour éviter tout surcoût
en termes de temps et de places consommées par le système au détriment de
l’application.
Pr. Ayache | Chapitre 1: généralités 9
Functions of an Operating
System?

Pr. Ayache | Chapitre 1: généralités 10


Operating System Engineering

Chapitre 1 • Introduction et Généralité

Chapitre 2 • Gestion du CPU

Chapitre 3 • Gestion des Processus

Chapter 4 • Gestion de la Mémoire

Chapitre 5 • File Systems & Input/Output

Pr. Ayache | Chapitre 1: généralités 11


Grading

ACTIVITIES PERCENTAGES

Quizzes 15%
TP/ TD 25%

Final Exam 50%

Class Participation 10%

Pr. Ayache | Chapitre 1: généralités 12


Plan

Chapitre 1: Généralités

• Introduction : définition du terme «Système d’exploitation»

• Interface entre OS et utilisateur : le shell

• Interface entre logiciel et matériel : l’architecture

• Isolation entre noyau et applications : les syscalls

• Quelques syscalls UNIX incontournables

Pr. Ayache | Chapitre 1: généralités 13


Organisation d'une
machine

Pr. Ayache | Chapitre 1: généralités 14


Organisation d'une machine

 Un ou plusieurs CPUs, contrôleurs de périphériques connectés via


un bus commun permettant l'accès à une mémoire partagée.
 Exécution parallèle des CPUs et des périphériques en compétition
dans la mémoire suivant un cycle d’horloge.

Pr. Ayache | Chapitre 1: généralités 15


Architecture multiprocessing
symétrique
• Chaque CPU a ses propores registres / cache
• Tous les CPU partage la même mémoire physique
• Assure plus de disponibilité
Exemple: AIX d’IBM

Pr. Ayache | Chapitre 1: généralités 16


Architecture multiprocessing
symétrique
Les problèmes:
les constructeurs de processeurs augmentaient la
puissance de leurs produits en élevant la fréquence
de calcul de leurs processeurs mono cœurs:
1. En effet, l'augmentation de fréquence d’un
processeur cause rapidement des problèmes de
surchauffe
2. La demande d’ordinateurs moins encombrants
et plus fin et légers
La solution
Le traitement multicœur contribue à relever ces
défis.

Pr. Ayache | Chapitre 1: généralités 17


La notion multi-cœurs (
multicore)
• Le terme « multi-cœur » est employé pour décrire un
processeur composé d’au moins deux cœurs (ou unités de
calcul) gravés au sein de la même puce.
• Un cœur physique est un ensemble de circuits capables
d’exécuter des programmes de façon autonome.
• éviter les problèmes reliées au refroidissement des circuits
• plus rapide et efficace
• Permet l’ execution de tâches complexe sur des PC de
petite taille

L’Intel Core 2 Duo E6600 est un processeur double cœur.

Pr. Ayache | Chapitre 1: généralités 18


La notion multi-cœurs
( multicore)
• Accès non uniforme au mémoire: NUAM

Pr. Ayache | Chapitre 1: généralités 19


Environnement de calcul:
Systèmes clustrés
• Comme des systèmes multi-processeurs, mais plusieurs systèmes
travaillant ensemble
• Partage généralement du stockage via un réseau de stockage (SAN)
• Fournit un service à haute disponibilité qui survit aux échecs
• Certains clusters sont destinés à l'informatique haute performance
(HPC)
• Les applications doivent être écrites pour utiliser la parallélisation

Pr. Ayache | Chapitre 1: généralités 20


Environnement de calcul:
Système clusterés

Pr. Ayache | Chapitre 1: généralités 21


Environnement de calcul :
virtualisation
• faire fonctionner sur une seule machine (Machine
virtuelle) plusieurs systèmes d’exploitation ou
plusieurs applications, séparément les uns des autres,
comme s’ils fonctionnaient sur des machines
physiques distinctes.

Pr. Ayache | Chapitre 1: généralités 22


Environnement de calcul :
virtualisation vs conteneurisation

Pr. Ayache | Chapitre 1: généralités 23


Interface entre OS et
utilisateur : le shell

Pr. Ayache | Chapitre 1: généralités 24


Interface entre OS et utilisateur :
le shell

Les services offerts par un shell :


• Exécution de programmes
• charger un programme en mémoire, le lancer, l’arrêter
• choisir quel programme est au premier-plan
• exploration et administration des espaces de stockage
• naviguer dans les fichiers, copier, supprimer
• confort et ergonomie
• presse-papiers, drag-and-drop, corbeille
• ...

Pr. Ayache | Chapitre 1: généralités 25


Différents types de shell :
l’interpréteur de commandes

Attention :terminal (ou émulateur de terminal) ƒ= shell!

Interface textuelle = Command-Line Interface= CLI

exemples : Bourne shell (1977), bash, zsh...


Pr. Ayache | Chapitre 1: généralités 26
Différents types de shell : le
bureau graphique

Interface graphique =Graphical User Interface= GUI

exemples : Gnome, bureau de Windows, Aqua (Mac OSX)...

Pr. Ayache | Chapitre 1: généralités 27


et encore : l’écran d’accueil du
smartphone

exemples : Android Launcher, Google Now, Facebook home...

Pr. Ayache | Chapitre 1: généralités 28


Conclusion : le shell

différents types de shell : CLI vs GUI à souris vs GUI tactile


► fonctionnalités similaires
► pour l’OS : une «application» comme les autres!

votre OS contient volontiers des applications pré-installées...


• shell, navigateur web, explorateur de fichiers, messagerie,
lecteur multimedia, app store, etc

... et aussi plein de «programmes système»:


• développement : compilateur, assembleur, linker, etc
• sécurité : antivirus, pare-feu, sauvegarde
• maintenance : mise à jour, panneau de configuration
• services réseau : web, base de données, accès distant

Pr. Ayache | Chapitre 1: généralités 29


Positionnement de l’OS

Application 1 Application 2

Kernel

Hardware

Définition : Noyau, ou en VO kernel


Le noyau c’est la partie de l’OS qui n’est pas une application

Pr. Ayache | Chapitre 1: généralités 30


Interface entre logiciel et
matériel : l’architecture

Pr. Ayache | Chapitre 1: généralités 31


Vous avez dit «une interface plus jolie» ?

et c’est vraiment cette formule qui est donnée dans les livres :

source : Tanenbaum. Modern Operating Systems (4th ed, 2014). page 5

Pr. Ayache | Chapitre 1: généralités 32


Un exemple de programme :
la commande cat
int main() {
char buffer[100];
int n;

int fd=open("filename.txt", O_RDONLY);


if(fd == -1)
exit(1);

n=read(fd, buffer, 100);


while( n > 0) {
write(STDOUT, buffer, n);
n=read(fd, buffer, 100);
}
exit(0);
}
Pr. Ayache | Chapitre 1: généralités 33
Architecture d’une machine
typique

CPU1 CPU2 CPU3

System bus

main I/O bridge


memory

I/O bus
USB disk network
controller controller adapter
U S B bus

network
disk
mouse keyboard

Pr. Ayache | Chapitre 1: généralités 34


Langage de programmation vs
langage machine

Pr. Ayache | Chapitre 1: généralités 35


Applications = CPU en «mode restreint»

Pr. Ayache | Chapitre 1: généralités 36


Noyau = CPU en «mode superviseur»

Pr. Ayache | Chapitre 1: généralités 37


Accès au matériel = Memory-
mapped Input/Output

Pr. Ayache | Chapitre 1: généralités 38


Exemple : lecture sur le disque 1/3

MIMO

Pr. Ayache | Chapitre 1: généralités 39


Exemple : lecture sur le disque 2/3

DMA

Pr. Ayache | Chapitre 1: généralités 40


Exemple : lecture sur le disque 3/3

IRQ

Pr. Ayache | Chapitre 1: généralités 41


Un processeur avec support des
interruptions

Pr. Ayache | Chapitre 1: généralités 42


Mécanisme d’interruptions :
déroulement

Pr. Ayache | Chapitre 1: généralités 43


Mécanisme d’interruptions :
vocabulaire

Pr. Ayache | Chapitre 1: généralités 44


Différentes sources
d’interruptions

• Périphériques d’entrées-sorties
• clavier, souris, disque, GPU, réseau, etc
• Pannes matérielles
• température excessive, coupure de courant, etc
• Minuteur système, ou en VOSystem Timer
• interruptions périodiques, typiquement 100Hz ou 1000Hz
• permet à l’OS depercevoir le passage du temps
• bonus : permet au noyau dereprendre la mainsur les
• Évènements logiciels exceptionnels
• erreursfatales : division par zéro, instruction invalide, etc
• trappesvolontaires : appels système (cf diapos suivantes)
• fautes de pages : constatées par la MMU.

Pr. Ayache | Chapitre 1: généralités 45/44


Isolation entre noyau et
applications : les syscalls

Pr. Ayache | Chapitre 1: généralités 46/44


Changement de mode d’exécution :
trappes
Problème : comment une application peut-elle invoquer une
méthode du noyau?

Mauvaisesolution : autoriser les applications à sauter vers les


fonctions situées dans le noyau
• destination arbitraire ►failles de sécurité
• passage en mode superviseur ► quand ? comment?

Solution : se donner une instruction spécialisée pour cet usage


• exemples : TRAP(68k), INT(x86), SWI(ARM), SYSCALLx64)
• interruption logicielle=trappe=exception
• fonctionnement : similaire aux autres types d’interruption
• sauvegarde le contexte CPU
• bascule vers mode superviseur
• branche dans le noyau vers une adresse bien connue
Pr. Ayache | Chapitre 1: généralités 47
Appel système : principe
Appel système, ou en VO system call = syscall
Fonction située dans le noyau, invoquée par un
processus utilisateur via une interruption logicielle
Côté application:
• l’appel est invoqué avec une instruction TRAP
• indifférent au langage de programmation utilisé
• encapsulation dans des fonctions de bibliothèque (ex : libc)
Côté noyau:
• on passe à chaque fois par l’ISR de TRAP
• qui appelle la bonne fonction dans le noyau,
• puis qui rend la main à l’application avec RETI

Exemples :
• read(), write(), fork(), gettimeofday()...
• plusieurs centaines en tout sous Linux
Pr. Ayache | Chapitre 1: généralités 48
Appel système : déroulement

Pr. Ayache | Chapitre 1: généralités 49


Notion de processus
Applications exécutées sur la«machine virtuelle userland»:
• jeu d’instructions restreint (CPU en mode utilisateur)
• pas accès au mécanisme d’interruptions
• accèsinterdità certaines adresses mémoire
• ex : code et données du noyau, périphériques matériels

Protection par «sandboxing» : une nouvelle instance de cette


machine virtuelle pour chaque application en cours
d’exécution
• CPU virtuel(cf chap 2),mémoire virtuelle
• périphériques : accessibles seulement au travers du noyau

Notion de processus (ou en VO process)


« Un programme en cours d’exécution »
Pr. Ayache | Chapitre 1: généralités 50
Notion de processus : remarques

Pr. Ayache | Chapitre 1: généralités 51


La VM userland : en résumé

Application

syscalls
jeu restreint
d’instructions
Kernel
jeu complet
d’instructions

C P U en C P U en
mode utilisateur mode superviseur

• code applicatif exécuté par CPUen mode utilisateur


• pour faire appel au noyau : interface desappels système

Pr. Ayache | Chapitre 1: généralités 52


Positionnement de l’OS

Processus 1 Processus 2

VM 1 VM 2

Kernel

Architecture

Hardware

• chaque application qui s’exécute est un processus user land


• Le noyau virtualise et arbitre les accès au matériel

Pr. Ayache | Chapitre 1: généralités 53


Isolation entre noyau et
applications :
les syscalls

Pr. Ayache | Chapitre 1: généralités 54


Appels système : exemples

source : Silberschatz. Operating Systems Concepts Essentials (2011). p 59


Pr. Ayache | Chapitre 1: généralités 55
Une fonction qui cache un syscall :
getpid()

Remarques :
• le noyau donne un numéro unique à chaque processus
• attribué à la création du processus. ne change jamais ensuite.
• le type pid_test (en général) synonyme de int

Pr. Ayache | Chapitre 1: généralités 56


Une fonction qui cache un syscall :
exit()

Remarques :
• l’exécution ne «revient jamais» d’un appel à exit()
• exit(n) équivalent à un return n depuis le main()
• le «exit status» n est transmis au processus parent
• convention : 0=OK, 1–255=erreur

Pr. Ayache | Chapitre 1: généralités 57


Une fonction qui cache un appel
système : fork()

Remarques :
• sous unix : créer un processus ƒ= changer de programme
• fork()duplique le processus qui a invoqué le syscall
• processus d’origine =«parent», nouveau =«enfant»
• duplicationde la machine virtuelle userland
• CPU virtuel : les deux processus s’exécutenten concurrence
• mémoire virtuelle : chacun s’exécute dans unespace privé

Pr. Ayache | Chapitre 1: généralités 58


Appel système fork : illustration

Pr. Ayache | Chapitre 1: généralités 59


Mon premier interpréteur de
commandes

Pr. Ayache | Chapitre 1: généralités 60


Pr. Ayache | Chapitre 1: généralités 61
À retenir

Pr. Ayache | Chapitre 1: généralités 62


Operating System

Pr. Ayache | Chapitre 1: généralités 63


TP 1: Strace

Pr. Ayache | Chapitre 1: généralités 64


TP 2: System Call

Pr. Ayache | Chapitre 1: généralités 65

Vous aimerez peut-être aussi