L'AS/400, aujourd'hui connu sous le nom d'IBM iSeries, a été une révolution technologique dans le domaine des systèmes informatiques depuis son introduction en 1988. Conçu pour répondre aux besoins des entreprises, il a réussi à allier simplicité et puissance, devenant un incontournable pour de nombreuses entreprises du monde entier. Mais qu'est-ce qui rend ce système vraiment unique, et pourquoi a-t-il connu un tel succès ? Cet article explore les aspects clés de son design, de son architecture et de son évolution à travers les années.
Le cœur de l'AS/400 réside dans sa capacité à intégrer différents systèmes et technologies dans une seule machine. Ce système n'est pas simplement un serveur : c'est une plateforme tout-en-un qui combine un environnement d'exécution, un système de gestion de bases de données, une interface utilisateur, et bien plus encore. Le système repose sur une architecture unifiée où tout est conçu pour fonctionner ensemble de manière transparente. L'AS/400 est ainsi une machine "technologiquement indépendante", capable de supporter différentes applications et langages sans nécessiter une refonte totale de l'infrastructure.
Une des caractéristiques les plus marquantes de l'AS/400 est son interface machine indépendante, qui permet aux utilisateurs de travailler avec différents systèmes d'exploitation sans être liés à une technologie spécifique. Cette approche a permis à l'AS/400 de se maintenir dans le temps, même face à l'évolution rapide de la technologie et des attentes des utilisateurs.
La base de données intégrée, l'Object Database (ou DB2/400), est un autre pilier central de l'AS/400. Contrairement aux autres systèmes de l'époque, où la gestion des bases de données était souvent une tâche complexe nécessitant une solution séparée, l'AS/400 a intégré directement un puissant système de gestion de bases de données. Cela a simplifié la gestion des données et a permis de garantir l'intégrité et la sécurité des informations, ce qui est crucial dans un environnement commercial.
En matière de sécurité, l'AS/400 a toujours été un modèle de fiabilité. Son système d'autorisation très détaillé et flexible permet aux administrateurs de contrôler l'accès à chaque aspect du système, du niveau le plus bas au plus élevé. Ce contrôle granulaire est essentiel dans les environnements d'entreprise où la protection des données et des ressources est primordiale.
L'AS/400 a également été un pionnier dans la gestion des processus. Grâce à son système de gestion des processus, les utilisateurs peuvent exécuter des tâches simultanées sans compromettre la performance du système. Ce processus de gestion efficace permet au système de gérer plusieurs applications de manière transparente, tout en optimisant l'utilisation des ressources.
Dans un monde où le travail en réseau est devenu la norme, l'AS/400 a également su se réinventer avec l'essor du client-serveur. Il a permis aux entreprises d'intégrer des solutions de type client-serveur tout en conservant sa robustesse et sa simplicité d'utilisation. Cette transition vers le client-serveur a été facilitée par l'architecture ouverte de l'AS/400, qui offrait des options de communication avec d'autres systèmes.
L'un des plus grands défis rencontrés par l'AS/400 a été sa transition vers des processeurs PowerPC RISC dans les années 1990. Cette évolution a permis à la machine de conserver sa compétitivité en matière de performance tout en maintenant son caractère unique. Les modifications apportées à l'architecture interne du système, tout en intégrant ces nouveaux processeurs, ont nécessité une grande révision du code et une mise à jour majeure des compétences des développeurs.
Le système a toujours été soutenu par une équipe dévouée d'ingénieurs et de créateurs, dont certains ont été les architectes mêmes de l'AS/400, comme Frank G. Soltis, l'un des pionniers du projet. Le livre "Inside the AS/400" écrit par Soltis offre un regard détaillé sur l'évolution de ce système et les défis qui ont été relevés par l'équipe de Rochester. Ce n'est pas simplement un
Comment assurer l'intégrité et la disponibilité des bases de données sur AS/400 : Le rôle des déclencheurs et de l'intégrité référentielle
L'intégrité des données dans un système de gestion de base de données est essentielle pour garantir leur exactitude, leur cohérence et leur fiabilité. Dans un environnement comme celui de l'AS/400, des mécanismes puissants et sophistiqués permettent de gérer ces aspects de manière transparente. L'un des éléments clés pour assurer cette intégrité est l'utilisation des déclencheurs (triggers), de l'intégrité référentielle et des systèmes de disques à haute disponibilité. Ces outils permettent de maintenir un fonctionnement fluide même en cas de pannes matérielles ou d’erreurs humaines. Examinons ces concepts plus en détail.
Les déclencheurs (ou triggers) sont des mécanismes permettant d'exécuter automatiquement des actions en réponse à des changements dans une base de données. Chaque fois qu'une modification est apportée à un fichier physique — comme l'ajout, la mise à jour ou la suppression d'un enregistrement — un déclencheur peut être activé. Cela permet d'assurer que les actions nécessaires soient prises sans intervention manuelle, garantissant ainsi une intégrité dynamique des données.
Les déclencheurs peuvent être configurés pour se déclencher avant ou après un événement spécifique. Par exemple, si un enregistrement dans un fichier d'inventaire est mis à jour, et que la quantité en stock tombe en dessous d'un seuil déterminé, un programme peut être lancé pour réapprovisionner automatiquement l'article. Cette fonction de "déclencheur" joue un rôle central dans la gestion automatisée des bases de données et la réduction des erreurs humaines. De plus, chaque fichier physique peut avoir jusqu'à six déclencheurs définis pour les événements d'insertion, de mise à jour et de suppression, ce qui permet une personnalisation fine des actions à mener.
Un autre mécanisme essentiel pour garantir la qualité des données dans les bases de données est l'intégrité référentielle. Celle-ci fait référence à la capacité du système à maintenir des relations logiques entre les données présentes dans différentes tables ou fichiers. Si une modification dans un fichier est effectuée sans prendre en compte l'impact sur les autres fichiers liés, cela pourrait entraîner une incohérence des données. C’est ici qu’intervient l’intégrité référentielle : elle empêche, par exemple, l’ajout d’une référence dans un fichier secondaire si celle-ci ne correspond pas à une entrée existante dans le fichier maître.
Prenons l'exemple d'un fichier de clients où chaque enregistrement contient un identifiant unique. Si ce client est référencé dans d'autres fichiers, il est important qu'aucun programme ne puisse ajouter un identifiant de client dans un fichier secondaire sans que celui-ci existe d'abord dans le fichier principal. Cela garantit que toutes les relations entre les fichiers sont valides, prévenant ainsi les incohérences.
Cependant, même avec ces mécanismes en place, le risque de perte de données reste une préoccupation importante. Les systèmes de stockage de données, bien qu'efficaces, sont sujets à des pannes mécaniques. C’est pourquoi la mise en place de stratégies de haute disponibilité est cruciale. L’AS/400 offre deux solutions majeures à cet égard : le mirroring des disques et l'utilisation de matrices de disques (RAID). Le mirroring consiste à dupliquer intégralement les données d'un disque sur un autre, garantissant ainsi la disponibilité immédiate des informations même en cas de défaillance d’un disque. Cette solution assure une disponibilité maximale mais présente un coût élevé dû à la duplication complète des disques.
Une alternative moins coûteuse mais efficace est l’utilisation des matrices de disques, ou RAID. Dans cette configuration, les données sont réparties sur plusieurs disques, et un disque supplémentaire peut être ajouté pour offrir une redondance. Si un disque tombe en panne, les données peuvent être récupérées à l'aide d'une opération XOR (ou "exclusive OR"), qui permet de reconstruire les données manquantes à partir des autres disques du groupe. Cette méthode, bien qu’efficace, repose sur des calculs complexes et nécessite une gestion soignée des disques pour éviter une surcharge sur un disque unique.
En résumé, la combinaison des déclencheurs, de l'intégrité référentielle et des systèmes de stockage à haute disponibilité garantit que les bases de données sur AS/400 peuvent maintenir leur fiabilité, leur cohérence et leur performance, même en cas de défaillance matérielle ou de modifications complexes des données.
Il est essentiel de comprendre que ces technologies ne sont pas simplement des solutions ponctuelles, mais font partie d'un écosystème global qui doit être régulièrement surveillé et maintenu. Les stratégies de sauvegarde et de récupération, la gestion proactive des disques et la surveillance des déclencheurs doivent faire partie intégrante de la gestion quotidienne d’une base de données. Ces éléments interagissent pour offrir une résilience maximale face aux divers défis que peuvent rencontrer les systèmes d'information.
Comment la gestion des autorisations dans un système multi-utilisateur assure-t-elle la sécurité et la flexibilité dans un environnement informatique ?
Dans les systèmes multi-utilisateurs, la gestion des autorisations et de la sécurité est essentielle pour garantir l'intégrité et la confidentialité des données, ainsi que pour assurer que seuls les utilisateurs autorisés puissent accéder à certaines ressources ou effectuer des actions spécifiques. L'une des approches utilisées pour faciliter cette gestion est l’utilisation des listes d'autorisations et des profils de groupe, permettant d’assigner des autorisations à plusieurs utilisateurs ou objets en même temps.
Les listes d'autorisations sont particulièrement efficaces lorsqu'un objet doit être accessible par plusieurs utilisateurs, mais avec des niveaux d'autorisation différents. IBM a introduit cette approche dans l'environnement System/36, où une liste d'autorisations permet à plusieurs utilisateurs d’accéder à un objet, tout en leur accordant des droits variés. Par exemple, un utilisateur peut disposer d'un droit de modification, un autre d'un droit d’utilisation, et un troisième d’un droit d'accès complet. Une gestion rigoureuse de ces listes est nécessaire pour ajouter, supprimer ou modifier les utilisateurs et leurs droits, ce qui doit être effectué via un système de gestion des autorisations spécifique. Ainsi, cette approche permet d’éviter d'avoir à attribuer des autorisations séparées pour chaque utilisateur, ce qui simplifie la gestion dans les environnements complexes.
Les profils de groupe permettent, eux aussi, de simplifier la gestion des autorisations. Un groupe, tel qu’un département dans une entreprise, peut se voir attribuer des droits communs, tout en permettant à chaque utilisateur individuel de posséder un profil personnel. Ce profil personnel peut alors prévaloir sur les droits généraux accordés au groupe, offrant une flexibilité supplémentaire pour gérer des cas particuliers au sein de l'organisation. Par exemple, si un membre du groupe nécessite un accès plus limité ou plus étendu qu'un autre, ces ajustements peuvent être facilement réalisés sans affecter les autres membres du groupe.
L'environnement System/36, en particulier, a introduit des concepts innovants, comme la possibilité de donner une autorisation à un fichier inexistant. Cela permet à une application de System/36 de garantir l'accès à des fichiers même avant leur création effective, ce qui est particulièrement utile dans des systèmes où les fichiers sont créés dynamiquement. En revanche, dans le système System/38, une telle approche n’était pas possible, ce qui limitait la flexibilité des processus d’autorisation. Une fois qu'un fichier était supprimé dans le System/38, toutes les traces d'autorisations étaient également effacées, ce qui n'était pas le cas dans l'environnement System/36 où l’autorisation pouvait perdurer au-delà de la suppression du fichier.
Il est aussi important de noter que la recherche d'autorisations suit un algorithme précis, afin de s’assurer que les autorisations sont attribuées de manière cohérente et fiable. Lorsqu’un utilisateur tente d’accéder à un objet, le système vérifie, dans un ordre défini, si l'utilisateur a des droits d’accès : d’abord via son profil individuel, puis via le profil du groupe auquel il appartient, et enfin via les autorisations publiques. Cette approche garantit qu'un utilisateur peut disposer de plus ou moins d'autorité par rapport à d'autres membres du groupe ou à l'autorisation publique, permettant une personnalisation précise des droits d’accès à différents objets.
L'algorithme de recherche des autorisations commence par vérifier les droits du profil utilisateur individuel. Si aucune autorisation n'est trouvée à ce niveau, le système passe alors à la recherche dans le profil du groupe de l'utilisateur. Si aucune autorisation n'est trouvée dans ce profil non plus, c'est l'autorisation publique qui est alors recherchée. Ce processus est essentiel pour que l'accès à l'objet soit sécurisé et pour s'assurer que les droits d'un utilisateur sont respectés tout en permettant une flexibilité dans la gestion des accès.
Ce système de gestion des autorisations repose sur une hiérarchie rigide et permet d'établir des droits d’accès personnalisés pour chaque utilisateur ou groupe. Il assure que l'accès aux objets se fait de manière cohérente, tout en offrant suffisamment de flexibilité pour répondre à des besoins spécifiques, tels que les ajustements de sécurité à un niveau granulaire. Cette approche joue un rôle crucial dans la sécurité des systèmes complexes, comme l’AS/400, et répond aux besoins croissants de gestion des autorisations dans un monde de plus en plus connecté.
Il est également important de comprendre que ces systèmes de gestion des autorisations ne sont pas statiques. À mesure que les exigences de sécurité évoluent, de nouvelles fonctionnalités peuvent être ajoutées pour répondre à des besoins spécifiques, sans perturber l'intégrité du système existant. La sécurité d'un système multi-utilisateur ne réside pas uniquement dans les mécanismes d’autorisation en place, mais aussi dans la capacité à adapter et à renforcer ces mécanismes en fonction des nouvelles menaces et exigences.
Ainsi, bien que l'on parle souvent de sécurité en termes d'accès aux données et aux objets, la flexibilité du système de gestion des autorisations doit être prise en compte pour assurer que les ressources du système soient protégées tout en permettant des ajustements faciles et non disruptifs. Les autorisations doivent être gérées de manière dynamique pour répondre aux besoins des utilisateurs, des groupes et des applications, tout en maintenant la sécurité globale du système.
Comment les interruptions, exceptions et événements sont gérés au niveau du MI ?
Les programmes et processus exécutés au niveau du MI (Machine Interface) ne connaissent pas les interruptions au niveau matériel. Cependant, lorsqu'une interruption se produit en raison de l'exécution d'un programme MI, elle doit être signalée au niveau du MI. C'est le rôle du SLIC (System-Level Interrupt Controller) de détecter, traiter et signaler ces interruptions au MI.
Il existe une distinction fondamentale entre une exception et un événement au niveau du MI. Une exception peut être définie comme une erreur définie par la machine, détectée lors de l'exécution d'une instruction, ou une condition définie par l'utilisateur, identifiée par un programme utilisateur. Un événement, en revanche, est un événement survenant pendant l'opération de la machine, qui peut présenter un intérêt pour les utilisateurs de la machine. Les exceptions sont synchrones, c'est-à-dire qu'elles sont causées par l'exécution d'une instruction particulière, tandis que les événements sont asynchrones, provoqués par des actions extérieures à l'instruction en cours d'exécution.
Prenons quelques exemples pour mieux comprendre ces concepts. Supposons qu'un programme tente de diviser un nombre par zéro, ce qui est une erreur évidente. Cette erreur sera signalée comme une exception lorsqu'elle sera détectée lors de l'exécution de l'instruction de division. Elle est synchrone, car la même erreur se produira au même endroit du programme chaque fois qu'il sera exécuté, sous réserve que les valeurs des données restent constantes. En revanche, si une opération d'E/S, telle que la lecture d'un enregistrement depuis un disque, est en cours d'exécution pendant l'exécution de notre programme, un événement se produira lorsque cette opération d'E/S sera terminée. L'achèvement de l'opération d'E/S est un événement asynchrone, car il n'est pas lié à l'exécution du programme en cours, et peut se produire à tout moment.
Les exceptions peuvent être de deux types au MI : erreurs et conditions définies par l'utilisateur. De la même manière, les événements sont divisés en deux catégories : les événements liés à l'objet, comme le fait d'atteindre une limite de messages dans une file d'attente, et les événements liés à la machine, comme l'écoulement d'un intervalle de temps spécifié. Un processus MI peut surveiller un ensemble d'événements et prendre des mesures en fonction de certains ou de tous ces événements.
L'introduction des modèles de programmes et de processus ILE (Integrated Language Environment) a entraîné certains changements dans la gestion des exceptions. Dorénavant, une exception au niveau du MI est un message de processus formellement structuré. Tous les messages de processus sont conservés dans l'espace de la file d'attente de processus, qui fait partie de la structure du processus ILE. En raison de cette gestion par message, un délai est possible entre la signalisation et le traitement de l'exception. Cependant, la gestion des exceptions dans les modèles ILE reste semblable à celle des modèles originaux.
Ce qui est nouveau dans les modèles ILE, c'est que la surveillance et le traitement des exceptions sont désormais contrôlés explicitement par l'utilisateur du MI. Des moniteurs d'exception sont utilisés pour détecter la survenue d'exceptions spécifiques. Ces moniteurs peuvent être activés et désactivés par des instructions placées dans le flux d'instructions du MI. Plusieurs moniteurs peuvent être activés simultanément, chaque moniteur ayant une priorité qui déterminera l'ordre de recherche et de traitement des exceptions lorsque plusieurs moniteurs sont actifs. Chaque moniteur est associé à une procédure de gestion des exceptions, qui est toujours une procédure externe ILE.
Le SLIC prend en charge à la fois la surveillance et la gestion des événements et des exceptions. Nous avons vu dans le chapitre précédent que l'accès aux objets système est surveillé par la machine. Cette fonctionnalité, couplée à certaines instructions spéciales insérées dans le flux d'instructions PowerPC, permet d'accomplir la plupart des fonctions de surveillance des événements. La gestion des exceptions, quant à elle, est en grande partie assurée par le matériel et signalée aux routines de gestion des exceptions du SLIC via le mécanisme d'interruptions PowerPC.
Le SLIC prend en charge un grand nombre d'interruptions, dont certaines sont causées par l'exécution d'une instruction et d'autres par des événements système. L'architecture PowerPC définit un total de 15 types d'interruptions. Cinq d'entre elles sont causées par le système :
-
Réinitialisation système — cette interruption se produit à chaque fois que le système est réinitialisé ou mis sous tension.
-
Contrôle machine — cette interruption signale un dysfonctionnement matériel.
-
Interruption externe — cette interruption avertit le processeur qu'un événement externe (par exemple, une opération d'E/S) nécessite son attention.
-
Moniteur de performance — cette interruption signale qu'un événement surveillé s'est produit, si la fonction de surveillance de la performance est activée.
-
Décrémenter — utilisée pour les fonctions de minuterie, cette interruption signale l'écoulement d'un intervalle de temps.
Les interruptions causées par l'exécution d'instructions incluent :
-
Stockage de données — cette interruption signale que l'instruction tente un accès à la mémoire qui ne peut être effectué.
-
Stockage d'instructions — similaire à l'interruption de stockage de données, mais elle se produit lorsqu'une tentative est faite pour récupérer la prochaine instruction.
-
Erreur de stockage direct — cette interruption se produit lors d'un accès à une adresse de stockage direct.
-
Alignement — cette interruption se déclenche lorsqu'une tentative d'accès à un opérande mal aligné sur une frontière mémoire a lieu.
-
Programme — utilisée pour signaler des tentatives d'exécution d'instructions privilégiées sans autorisation ou des tentatives d'exécution d'un op-code invalide.
La gestion des exceptions au niveau du SLIC repose principalement sur des fonctions de routage. Le mécanisme d'interruptions PowerPC initie cette fonction de routage chaque fois qu'une interruption matérielle est détectée. Une fois l'exception survenue, tous les gestionnaires d'exception du SLIC reçoivent l'opportunité de traiter l'exception. Si l'exception est prise en charge, le processus continue comme si rien ne s'était passé. Si elle n'est pas traitée dans le SLIC, le processus est terminé et l'exception est transmise au gestionnaire d'exception approprié dans le modèle ILE.
La gestion des interruptions est cruciale pour assurer la stabilité et la performance des systèmes informatiques modernes, particulièrement dans un environnement complexe où les événements externes et internes peuvent interférer avec les processus en cours d'exécution. Le contrôle précis de ces événements permet aux systèmes d'être plus réactifs et résistants aux erreurs, garantissant ainsi une expérience utilisateur optimale.
Comment le processeur gère-t-il les interruptions et les changements de contexte ?
Lorsqu'un matériel détecte une interruption, le contrôle est transféré à l'un des premiers gestionnaires d'exceptions de niveau (FLEH). Ces gestionnaires prennent en charge la majorité des exceptions courantes. Si une de ces routines prend en charge l'exception, le contrôle est retourné au traitement normal des instructions. Si l'exception est causée par une instruction et n'a pas été gérée, le FLEH transmet le contrôle au gestionnaire d'exceptions de niveau supérieur (SLEH).
Le SLEH peut gérer certaines exceptions moins fréquentes mais néanmoins attendues, telles qu'une exception de verrouillage d'un objet système. Il est également responsable du tri des exceptions qui ne peuvent pas être gérées dans le SLIC. Si l'exception non traitée s'est produite lors de l'exécution d'une instruction traduite depuis le MI, le SLEH passe le contrôle au générateur d'exception MI. Si l'exception s'est produite lors de l'exécution d'une instruction SLIC, le contrôle est transféré au gestionnaire d'exceptions de troisième niveau (TLEH).
Le TLEH prend le contrôle lorsque l'exception survient pendant l'exécution d'une routine SLIC. Il reçoit le contrôle du SLEH, le gestionnaire de vérification de machine, si la vérification de la machine s'est produite lors de l'exécution d'une routine SLIC, ou pendant toute autre routine SLIC ayant détecté une exception. Le TLEH invoque d'abord les gestionnaires d'exception spécifiques au composant (CSEH) qui ont été définis par les différents composants du SLIC. Après leur exécution, les CSEH rendent le contrôle au TLEH, qui décide alors de la marche à suivre. Si l'exception s'est produite dans une tâche SLIC exécutée dans le cadre d'un processus MI, le contrôle est passé au générateur d'exception MI. Si l'exception s'est produite dans une tâche SLIC qui ne faisait pas partie d'un processus MI, la tâche est détruite.
Les CSEH, définis par les composants du SLIC, sont responsables de libérer les ressources acquises pendant une opération, de nettoyer les résultats partiels d'une opération échouée ou de tolérer une défaillance dans une séquence de code particulière. Les CSEH sont activés par le TLEH. Les blocs CSEH à exécuter pour une tâche particulière sont déterminés par les blocs CSEH liés au TDE de la tâche. Chaque bloc CSEH contient l'adresse de la routine CSEH, le pointeur de pile du définisseur et toutes les données nécessaires à l'exécution de la routine. Une fois tous les CSEH exécutés, le contrôle est restitué au TLEH.
Le générateur d'exception MI prépare les données pour le message du processus, effectue certaines opérations de nettoyage, puis envoie le message à l'espace de file d'attente du processus MI approprié.
Changement de contexte matériel
Étant donné que les routines d'exception décrites peuvent avoir besoin d'accéder à des instructions privilégiées au niveau du PowerPC, le mécanisme d'interruption doit être capable de changer l'état du processeur lorsque le contrôle est transféré à l'une de ces routines. Ce processus est généralement décrit comme un changement de contexte du processeur. Le contexte est défini comme l'état du processeur en ce qui concerne les privilèges, la relocalisation, la protection de la mémoire, le mode 64 bits, la sécurité C2, etc.
En plus du simple changement de contexte, le mécanisme d'interruption doit effectuer une synchronisation du contexte. Cela signifie que le matériel du processeur doit garantir que toutes les instructions lancées avant l'interruption seront exécutées dans le contexte dans lequel elles ont été initiées. Ensuite, le matériel s'assure que les instructions suivantes seront récupérées et exécutées dans le contexte établi par l'opération.
Dans le chapitre précédent, nous avons étudié le registre d'état de la machine (MSR) et la signification de certains des bits de ce registre. L'architecture PowerPC du MSR définit plusieurs autres bits, dont certains ont été décrits dans la section précédente. Ce qui est important à comprendre, c'est que les réglages de tous les bits du MSR déterminent le contexte du processeur. L'état de ces bits peut être modifié lorsqu'une interruption du processeur se produit.
L'instruction d'appel système (sc) peut être utilisée pour appeler une routine SLIC lorsqu'il est nécessaire de changer le contexte du processeur. Cette instruction peut être utilisée dans des programmes MI traduits pour invoquer la partie SLIC du système d'exploitation et effectuer un service. Comme nous l'avons vu, lorsque l'instruction sc est exécutée par le processeur, une interruption d'appel système est générée. Les lecteurs familiers avec l'architecture S/370 reconnaîtront probablement que l'instruction sc dans l'architecture PowerPC ressemble beaucoup à l'instruction Supervisor Call (SVC) de l'architecture S/370. L'exécution de l'une ou l'autre de ces instructions provoque une interruption.
Processus d'interruption dans PowerPC
Lorsque n'importe quelle interruption se produit, le matériel du processeur PowerPC effectue d'abord une synchronisation du contexte pour s'assurer que l'opération de traitement de l'interruption ne commence que lorsque toutes les instructions en cours d'exécution auront été exécutées et auront signalé toutes les exceptions qu'elles causeraient. Il est à noter que chaque interruption a une priorité, de sorte que si plusieurs interruptions sont en attente, la plus haute priorité est sélectionnée en premier.
L'adresse effective de l'instruction qui était en cours d'exécution lorsque l'interruption s'est produite est ensuite enregistrée dans un registre spécial de 64 bits, appelé le registre Machine Status Save/Restore Register 0 (SRR 0). Dans le cas d'une interruption d'appel système, l'adresse effective de l'instruction suivant l'instruction sc est stockée dans SRR 0. Ensuite, certains bits du MSR actuel sont enregistrés dans un autre registre spécial de 64 bits, appelé le registre Machine Status Save/Restore Register 1 (SRR 1). Enfin, d'autres bits dans SRR 1 sont chargés avec des informations spécifiques au type d'interruption survenue.
Après avoir enregistré l'état actuel de la machine, le matériel d'interruption modifie certains des bits du MSR. Les nouveaux réglages des bits MSR sont spécifiquement définis par l'architecture pour chaque type d'interruption. En particulier, les bits de relocalisation (MSRIR et MSRDR) sont toujours désactivés, de sorte que les routines d'interruption utilisent des adresses réelles et ne rencontrent jamais de fautes de page. Après avoir modifié les bits du MSR, le matériel d'interruption provoque ensuite la récupération de la prochaine instruction depuis une adresse qui est un décalage fixe par rapport à une adresse de base. L'architecture PowerPC définit également le décalage spécifique à utiliser pour chaque type d'interruption.
Le résultat du traitement matériel des interruptions décrit ci-dessus est de transférer le contrôle vers la première instruction de l'une des routines de gestion des interruptions SLIC. Le contexte du processeur a également été changé avant que cette routine prenne le contrôle, ce qui permet, par exemple, d'exécuter des instructions privilégiées dans cette routine.
Lorsque la routine de gestion de l'interruption est terminée, elle exécute une autre instruction spéciale PowerPC. Cette instruction, appelée Return From Interrupt (rfi), restaure l'état du processeur tel qu'il était avant l'interruption. Les bits sélectionnés dans SRR 1 sont d'abord placés dans les bits correspondants du MSR. Ensuite, la prochaine instruction est récupérée, sous le contrôle de la nouvelle valeur MSR, à partir de l'adresse contenue dans SRR 0. Si cette instruction active des exceptions en attente, l'interruption associée à la plus haute priorité parmi celles en attente sera générée avant la première instruction dans le contexte établi à la fin de l'instruction rfi.
Quelles transformations sociales ont façonné la religion védique et le système des castes en Inde ancienne ?
Comment assurer la sécurité dans les installations de surface des champs pétroliers terrestres ?
Comment utiliser la méthode AHP pour l'analyse des projets d'investissement ?
Les Cosaques Vitaliy Doudine
Composés de coordination : Théorie, Propriétés et Applications
Les nombres quantiques : Comprendre les orbitales atomiques et leurs applications
Programme d'activités périscolaires : "Centre de Presse" pour les classes 5-9

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский