Changes between Version 11 and Version 12 of AS6-TME-B2


Ignore:
Timestamp:
Mar 3, 2021, 11:39:24 AM (4 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B2

    v11 v12  
    1 
     1{{{#!comment
    22{{{#!protected ------------------------------------------------------------------------------------
    33'''''''''''''''
     
    55'''''''''''''''
    66}}}
    7 
     7}}}
    88= Gestion des interruptions
    99
     
    1818
    19191. À quoi servent les interruptions ?
     20{{{#!protected ------------------------------------------------------------------------------------
     21'''''''''''''''
     22* Les interruptions sont un mécanisme permettant de traiter au plus vite un événement matériel ou une demande d'un autre processeur.
     23'''''''''''''''
     24}}}
    20251. Une interruption en informatique est à la fois une suspension temporaire d'un programme et un signal électrique. Comment s'appelle le signal d'interruption et comment s'appelle le code permettant de la traiter ?
    21261. Quel état peut prendre un signal d'interruption ?
     
    31361. Qui exécute le code de traitement du signal d'interruption ?
    32371. Quand un signal d'interruption s'active est ce que le noyau sait toujours quoi faire ?
    33 1. Que signifie acquitter un signal d'interruption ? (on dit aussi acquitter un interruption)
     381. Que signifie acquitter un signal d'interruption ? (on dit aussi acquitter une interruption)
    34391. Comment fait-on pour acquitter une interruption ?
    35401. Que signifie l'expression «vol de cycles» ?
     
    44491. Que signifie ICU et à quoi cela sert-il ?
    45501. Que signifie masquer une interruption ?
    46 1. Dans l'ICU, que contient le registre `ICU_INT` ?
     511. Dans l'ICU, que contient le registre `ICU_STATE` ?
    47521. Dans l'ICU, que contient le registre `ICU_MASK` ?
    48531. Dans l'ICU, comment fait-on pour modifier la valeur de `ICU_MASK` ?
    49 1. Dans l'ICU, que contient le registre `ICU_VECTOR` ?
     541. Dans l'ICU, que contient le registre `ICU_HIGHEST` ?
    50551. Dans l'ICU, il y a autant de jeu de registres que de processeur, pourquoi ?
    51561. Qu'est-ce que la fonction `kinit()` ?
     
    6974
    7075{{{#!protected
    71 Le but de ce TP est d'analyser, de modifier et d'utiliser le gestionnaire d'interruption.
     76=== La plateforme
     77
     78
     79Le but de ce TP est d'analyser, de modifier et d'utiliser le gestionnaire d'interruption.
     80Nous allons utiliser la même plateforme que la dernière fois, mais malheureusement celle-ci avait un bug matériel.
     81Vous allez donc devoir prendre un nouveau simulateur [htdocs:files/almo1.x.gz almo1.x.gz] (vous devez télécharger ce fichier, le dézipper et le placer dans le répertoire AS6/bin à la place du précédent).
     82
     83La plateforme que nous allons utiliser contient :
     84- un processeur
     85- une mémoire multisegment pour le code et les données du noyau et de l'utilisateur.
     86- une ROM pour le boot
     87- un contrôleur multittys (4)
     88- un timer
     89- une icu
     90
     91Sur cette plateforme, les composants produisant des IRQ sont le timer et les 4 ttys. Ces IRQ sont destinées au processeur, mais elles passent par l'ICU. l'ICU permet de masquer individuellement chaque IRQ et si plusieurs sont levées simultanément alors l'ICU permet de dire quelle est celle prioritaire. La manière dont sont routées les IRQ n'est pas modifiable par logiciel, les IRQ sont des signaux électriques câblés par les architectes. Sur `almo1`:
     92- L'IRQ du timer entre sur l'entrée n°1 de l'ICU.
     93- Les IRQ de TTY entrent respectivement sur les entrées 3, 4, 5 et 6 de l'ICU.
     94
     95**Question** : faire un dessin représentant la plateforme avec les signaux IRQ.
     96
     97
     98=== Analyse de code
     99
     100
     101Pour ce TP, il n'y aura qu'une seule étape parce que j'ai voulu ajouter un minimum de code.
     102En effet, la gestion des IRQ est liée à la gestion des périphériques puisque c'est eux c'est essentiellement eux qui les produise. Or, la gestion des périphériques de faire par le mécanisme des pilotes de périphériques. J'en présenterai une version simplifiée lorsque nous verrons les périphériques initiateurs. Pour l'heure, il s'agit de comprendre juste comment sont traités les IRQ et de jouer un peu avec.
     103
     104Par rapport à l'étape 6 sur tp1, voici les changments
     105{{{
     1067_isr/
     107├── common
     108│   └── syscalls.h
     109├── kernel
     110│   ├── harch.c
     111│   ├── harch.h
     112│   ├── hcpu.h
     113│   ├── hcpu.S
     114│   ├── kernel.ld
     115│   ├── kinit.c
     116│   ├── klibc.c
     117│   ├── klibc.h
     118│   ├── kpanic.c
     119│   ├── kpanic.h
     120│   ├── ksyscalls.c
     121│   └── Makefile
     122├── Makefile
     123├── uapp
     124│   ├── main.c
     125│   └── Makefile
     126└── ulib
     127    ├── crt0.c
     128    ├── libc.c
     129    ├── libc.h
     130    ├── Makefile
     131    └── user.ld
     132}}}
    72133
    73134
    74135
     136
     137
     138
     139