Système d’exploitation L’architecture des ordinateurs en bref Ordinateur personnel simple Le processeur (CPU) Extrait les instructions de la mémoire et les exécute. Cycle de base: 1. Extraire 2. Décoder 3. Exécuter Plusieurs registres de 32 ou 64 bits. Trois registres spéciaux: • Compteur ordinal (PC) • Pointeur de pile (SP) • Mot d’état (PSW) Pipeline Le processeur possède des unités séparées pour l’extraction, le décodage et l’exécution. Différentes étapes de différentes instructions peuvent être traitées en parallèle. Processeur superscalaire On dispose de plusieurs unités d’exécutions (ex. arithmétique entière, en point flottant et logique). Deux ou plusieurs opérations sont traité à la fois Processeur multi-coeurs Modes utilisateur et noyau • 2 modes de fonctionnement: – Mode noyau: Accès à l’ensemble du système – Mode utilisateur: Accès restreint • Le système d’exploitation tourne en mode noyau • Un des bits du PSW indique le mode. Appels système Pour accéder aux services du système d’exploitation, un programme utilisateur doit effectuer un appel système qui consiste en: – – – – Basculer en mode noyau Invoquer le système d’exploitation Revenir en mode utilisateur Retourner le contrôle au programme utilisateur. Exemple: Lecture ou écriture sur le disque dur. Interruption La bascule entre les modes utilisateur et noyau est générée par l’instruction trap qui interrompt le programme en cours pour donner le contrôle à un gestionnaire d’interruption: – Passe en mode noyau – Trouve l’adresse de la fonction cible dans une table d’interruption – Exécute la fonction Selon le type d’interruption, le gestionnaire effectue l’action appropriée. Exemple: Une interruption peut aussi être déclenchée par le matériel pour avertir d’une situation imprévue (division par 0, débordement de pile, etc.). Langage assembleur sur Pentium eax et ebx sont deux des registres de 32 bits. • • • • • • • add eax, ebx mov eax, 3 mov ebx, eax mov ebx, [eax] inc ecx sub eax, ebx cmp eax, ebx ; eax = eax + ebx ; eax = 3 ; ebx = eax ; ebx = *eax ; ecx++ ; eax = eax – ebx ; compare eax et abx et ; modifie le PSW (FLAGS) Langage assembleur sur Pentium L’instruction cmp modifie le bit ZF de FLAGS Par exemple, le code C suivant: if (EAX == 0) EBX = 1; Else EBX = 2; peut s’écrire: Langage assembleur sur Pentium cmp eax, 0 jz mov jmp A1: mov A2: ; if ( eax==0) ZF=1 else ZF=0 A1 ebx, 2 A2 ; if (ZF==1) goto A1 ; ebx=2 ; goto A2 ebx, 1 ; ebx=1 Langage assembleur sur Pentium • Appels de fonctions effectués à l’aide de la pile. • Le registre ESP contient l’adresse du dessus de la pile. • L'instruction CALL fait un saut inconditionnel vers une sous-routine (empile l’adresse de l’instruction suivante). • L’instruction RET dépile une adresse et saute à cette adresse. • L’instruction PUSH sert à empiler les arguments • L’instruction POP sert à dépiler les arguments La mémoire La mémoire est construite comme une Hiérarchie de couches La mémoire cache •Principalement contrôlée par le matériel. •Souvent plusieurs niveaux. •Utilise le principe de la localité qui dit qu’une ressource utilisée à un instant donné risque fort d’être utilisée à nouveau dans un futur proche. La mémoire principale •RAM (Random Access Memory) •La capacité augmente rapidement •Présentement on peut facilement atteindre 16 Go sur un ordinateur personnel Les disques durs Plusieurs millions de fois plus lents que la mémoire principale Les bandes magnétiques • Le principal avantage est le très faible coût • Peut prendre plusieurs minutes pour accéder à l’information. • Utilisé pour l’archivage des données et pour stocker de grandes quantités d’information. Systèmes multitâches • Plusieurs programmes sont en mémoires. • Quand un programme est bloqué parce qu’il attend le résultat d’une E/S alors un autre programme peut utiliser le CPU. • Deux problèmes se posent: 1. Comment protéger les programmes les uns contre les autres? 2. Comment reloger les programmes en mémoires? Les registres base-limite Les périphériques • Matériel – contrôleur – Périphérique • Logiciel – Pilote Le pilote de périphérique • Fonctionne habituellement en mode noyau • 3 façons de l’installer – Lier avec le noyau et redémarrer le système (plusieurs systèmes UNIX fonctionnent ainsi) – Ajouter une entrée dans un fichier spécial et redémarrer le système (Windows fonctionne ainsi) – Ajouter sans arrêter le système et sans redémarrage (plug-and-play) Le contrôleur de périphérique • Fourni une interface simple au système d’exploitation • Possède un petit nombre de registres utilisés pour la communication. • Le pilote reçoit une commande du SE qu’il converti en valeurs qu’il écrit dans les registres du contrôleur. – Registres mappés en mémoire – Instructions IN, OUT avec numéro de port. Les entrées/sorties Trois méthodes: 1. Attente active 2. Utilisation des interruptions 3. Accès direct à la mémoire Attente active Un appel système est effectué par un programme utilisateur. Le noyau appelle le pilote approprié qui demeure actif tant que l’opération n’est pas terminée. Le contrôle est retourné au programme utilisateur. Utilisation des interruptions Le pilote demande au contrôleur de périphérique d’effectuer une interruption lorsque l’opération sera terminée. À la réception de l’interruption, le pilote lira l’information en provenance du contrôleur de périphérique. Accès direct à la mémoire (DMA) • Nécessite du matériel supplémentaire: puce DMA (Direct Memory Access) • Pour communiquer avec un périphérique, le CPU initialise la puce DMA. • Celle-ci s’occupera de la communication avec le périphérique ainsi que du transfert de données entre la mémoire et le contrôleur. Il avertira le processeur lorsque l’opération sera complétée.