Syst©me d'exploitation

  • View
    4

  • Download
    0

Embed Size (px)

DESCRIPTION

présentation de OS + processus

Text of Syst©me d'exploitation

  • paumier@univ-mlv.fr 1

    Cours de systme

    Qu'est-ce qu'un systme d'exploitation ?Introduction Linux

    Sbastien Paumier

    Illustrations provenant du site http://tux.crystalxp.net/

  • paumier@univ-mlv.fr 2

    Objectifs du cours

    savoir ce qu'est un systme d'exploitation (OS)

    connatre les grandes questions se poser pour en concevoir un

    connatre le modle de Linux savoir programmer des applications

    systme

  • paumier@univ-mlv.fr 3

    Ressources

    "Systmes d'exploitation", d'Andrew Tanenbaum

    poly du cours de systme de D. Revuz: http://igm.univ-mlv.fr/~dr

    exemples du cours et code du premier noyau:

    http://igm.univ-mlv.fr/~paumier/systeme/

  • paumier@univ-mlv.fr 4

    Qu'est-ce qu'un OS ?

    interface entre les applications et le matriel physique

    matriel

    systme

    applications

    utilisateurs

  • paumier@univ-mlv.fr 5

    Missions permettre d'accder au matriel de faon

    transparente un programme n'a pas savoir s'il crit

    sur un disque ext3 ou une cl USB fat32 grer les ressources (accs physiques,

    mmoire, CPU) optimiser l'usage de la machine (taux

    d'occupation du CPU, minimisation des mouvements des ttes de lecture des disques, minimiser le swap, gestion de l'nergie sur les systmes portables, etc)

  • paumier@univ-mlv.fr 6

    Missions veiller la scurit des applications et

    des donnes fournir une qualit de service

    viter les famines, garantir un accs prioritaire root, temps de rponse sur un OS temps rel, etc

    tre robuste viter de planter ! tolrance l'erreur (blocs disques

    dfectueux, reboot sauvage, etc)

  • paumier@univ-mlv.fr 7

    Les types de systme

    mono vs multi-utilisateurs un OS de tlphone peut tre mono-

    utilisateur mono vs multi-tches

    DOS tait monotche mono vs multi-processeurs temps rel: garantit un dlai maximal

    d'excution quelles que soient les conditions

  • paumier@univ-mlv.fr 8

    Le multi-utilisateurs

    suppose de pouvoir protger les donnes de chacun sur les supports de stockage

    ncessite la notion de droits d'accs protge les utilisateurs entre eux protge le systme:

    impossible de dtruire le systme en supprimant par accident une DLL :)

  • paumier@univ-mlv.fr 9

    Le multi-tches

    suppose de pouvoir protger les processus les uns des autres

    ncessite la notion de protection de la mmoire

    rendu possible par le mode protg et la mmoire virtuelle pagine

    seul le noyau peut accder tout les processus ne peuvent physiquement

    pas sortir de leurs pages mmoire

  • paumier@univ-mlv.fr 10

    Le noyau espace mmoire protg+ensemble de

    programmes qui forment la base minimale de l'OS

    tout ce qui n'est pas un appel systme fonctionnera dans l'espace utilisateur

    exemple de choix de conception: l'interface graphique

    dans le systme sous Windows programme utilisateur (serveur X) sous

    Linux

  • paumier@univ-mlv.fr 11

    Types de noyau

    monolithique: tout est dans le noyau (systme de fichiers, pilotes, etc)

    Linux, FreeBSD micro-noyau: seulement le strict

    minimum (ordonnanceur+mmoire virtuelle)

    Minix, Mac OS X hybride (Windows NT) exo-noyau: rien n'est protg

  • paumier@univ-mlv.fr 12

    Pourquoi tudier Linux ? logiciel libre (ouvert et gratuit) trs portable (PC, MacBook,

    smartphones, Xbox, etc) interface simple et lgante (les appels

    systmes) met en uvre beaucoup de notions

    intressantes: processus, droits d'accs, mmoire virtuelle, journalisation, temps rel, modules dynamiques, etc

    formidable mutualisation d'expertise

  • paumier@univ-mlv.fr 13

    Un peu d'histoire

    1969: UNIX (Thompson et Ritchie) 1987: Minix (Tanenbaum) 1991: premier noyau Linux (Torvalds) 1994: v1.0 qui donne le premier systme

    GNU/Linux depuis, de nombreuses distributions:

    Debian, Ubuntu, Fedora, SuSE, Red Hat, Mandriva, Slackware, ArchLinux, Gentoo, etc

  • paumier@univ-mlv.fr 14

    Architecture

    noyau monolithique qui gre le matriel, la mmoire, l'ordonnancement des tches

    sparation en couches (noyau, libs, applications)

    sparation en deux espaces distincts: espace utilisateur (user land) espace noyau (kernel land)

    base sur un contrle matriel: le mode protg du processeur

  • paumier@univ-mlv.fr 15

    Un modle en couches la portabilit est assure par les couches

    basses possible grce un langage puissant

    invent pour crire UNIX: le C un binaire n'est pas portable, mais il

    suffit de recompiler une application pour la porter sur un OS compatible

    pas besoin de toucher au code! concept anctre de l'ide de machine

    virtuelle

  • paumier@univ-mlv.fr 16

    Un modle en couches du trs bon gnie logiciel, car on a des

    interfaces propres qui permettent de faire abstraction des couches plus basses

    polymorphisme qui facilite la portabilit et l'extensibilit:

    pour un nouveau processeur, il suffit de changer les codes assembleur bas niveau

    pour un nouveau systme de fichier, il suffit d'implmenter les variantes de read, write, open... fs/

  • paumier@univ-mlv.fr 17

    Un modle en couches

    on obtient des codes plus srs, car pour court-circuiter une couche, il faudrait la matriser parfaitement

    exemple de bug d un mlange entre la couche systme et la libc:

    int main(int argc,char* argv[]) {if (argc!=2) return 1;int fd=open(argv[1],O_CREAT|O_TRUNC|O_WRONLY,0700);FILE* f=fdopen(fd,"w");close(fd);fprintf(f,"Oooops\n");fclose(f);return 0;

    }

    bug_FILE.cpp

  • paumier@univ-mlv.fr 18

    Modes rel et protg mode rel (par dfaut au boot):

    on peut excuter n'importe quelle instruction

    accs total la mmoire physique mode protg bas sur un contrle

    matriel (utilis dans les OS modernes): protection de la mmoire, ce qui permet

    la mmoire virtuelle et la pagination commutation de contexte 4 niveaux de privilges

    boot/boot.s

  • paumier@univ-mlv.fr 19

    Protection de la mmoire

    ide: interdire un programme d'accder de la mmoire qui ne lui appartient pas, s'il n'a pas le bon niveau de privilge

    en mode protg, tous les accs mmoire sont contrls par le processeur par rapport une zone autorise

    en cas de violation, Linux tue le programme fautif avec un signal SIGSEGV: segmentation fault kernel/traps.c

  • paumier@univ-mlv.fr 20

    Commutation de contexte changement de contexte:

    sauver l'tat du processus courant (valeurs des registres)

    restaurer l'tat d'un autre processus P reprendre l'excution de P o elle s'tait

    arrte permet de donner l'illusion du multi-

    tches opration critique si trop lente ou trop

    frquente kernel/sched.cinclude/linux/sched.h

  • paumier@univ-mlv.fr 21

    Bascule noyau/utilisateur quand un processus utilisateur doit

    accder au systme physique, pour des raisons de protection, il doit demander au noyau de le faire pour lui

    d'o l'obligation de changer de contexte en copiant des choses entre user land et kernel land

    trs coteux, donc on prfre bufferiser autant que possible

    exemple: copie d'un fichier

  • paumier@univ-mlv.fr 22

    Bascule noyau/utilisateur

    version basique, utilisant la bufferisation par dfaut de la libc:

    int main(int argc,char* argv[]) {int c;while ((c=fgetc(stdin))!=EOF) {

    fputc(c,stdout);}return 0;}

    $>mangcc|time./io_buf>err0.01user0.00system0:00.57elapsed2%CPU(0avgtext+0avgdata0maxresident)k0inputs+1280outputs(0major+234minor)pagefaults0swaps

  • paumier@univ-mlv.fr 23

    Bascule noyau/utilisateur version non bufferise, qui cote trs

    cher:int main(int argc,char* argv[]) {setvbuf(stdin,NULL,_IONBF,0);setvbuf(stdout,NULL,_IONBF,0);int c;while ((c=fgetc(stdin))!=EOF) {

    fputc(c,stdout);}return 0;}

    $>mangcc|time./io_buf>err0.01user0.00system0:00.57elapsed2%CPU(0avgtext+0avgdata0maxresident)k0inputs+1280outputs(0major+234minor)pagefaults0swaps

    $>mangcc|time./io_unbuf>err0.34user1.62system0:02.09elapsed93%CPU(0avgtext+0avgdata0maxresident)k0inputs+1280outputs(0major+228minor)pagefaults0swaps

  • paumier@univ-mlv.fr 24

    Mode noyau/utilisateur

    grce au mode protg, les programmes utilisateur n'ont physiquement pas accs l'espace du noyau

    mais en mode noyau, on a tous les droits !

    le code du noyau tant critique, on met un maximum de choses en dehors

    exemple: on peut redmarrer un serveur graphique plant sans devoir rebooter

  • paumier@univ-mlv.fr 25

    Problme de maintenance

    si on ne peut pas toucher au noyau, on doit le changer ou le recompiler chaque mise jour de n'importe quel morceau!

    il ft un temps o il fallait recompiler chaque update d'un driver...

    pour simplifier cela, introduction de codes noyau chargeables dynamiquement: les modules

  • paumier@univ-mlv.fr 26

    Problme de maintenance

    mme philosophie avec les bibliothques partages et l'dition de liens dynamiques

    on peut changer un morceau de code sans devoir tout rinstaller ou recompiler, et bien souvent, sans rebooter

    proprit vitale pour certains systmes critiques (banques, hopitaux, etc)

  • paumier@univ-mlv.fr 27

    Les appels systme

    interface simple et lgante pour communiquer de faon homogne

    les diamants:ssize_tread(intfd,void*buf,size_tn);

    ssize_twrite(intfd,constvoid*buf,size_tn);

    lire ou crire des octets vers on ne sait pas quoi (et on ne veut surtout pas savoir!):

    fichier ordinaire, fichier spcial, terminal,