|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Mats Étudiant Inscription : novembre 2011 Messages : 1 ![]() |
Bonjour,
Je suis étudiant en 3ème année en Informatique de gestion et je dois, dans le cadre d'un projet en Système d'exploitation, réaliser un mini OS. La table des interruptions, la segmentation, la pagination ont déjà été mis en place dans un précédent projet. Le but du projet actuel est de réaliser les routines déclenchées lors de l'appel à INT 0x80 en mode protégé (On ne doit gérer que le read et write). J'ai codé le write et il fonctionne correctement, par contre, pour ce qui est du read, j'ai pas mal de difficultés depuis quelques semaines expliquant mon message. Ce qui est déjà en place :
Ce qui doit être fait :
L'appel système doit être bloquant, c'est-à-dire que si l'appel read n'a pas pu lire le nombre demandé de caractères (buffer clavier pas (assez) rempli, il doit attendre que l'utilisateur remplisse le buffer clavier en tappant au clavier. C'est la partie pour laquelle j'ai le plus de mal, je ne vois pas trop comment faire... Les fichiers : kern.asm : Le kernel keyb.asm : Routines appelée lors de l'interruption clavier screen.asm : Permet la gestion de l'écran (Scrolling, affichage, etc...) syscalls.asm : Gère les appels systèmes INT 0x80 Votre aide serait précieuse ! Merci d'avance ! Mats |
|
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() être humain Inscription : décembre 2007 Messages : 471 ![]() |
int 80h est une fonction, contenant des instructions executées comme toutes les instructions, à la suite les unes de autres, avec possibilité de tests et branchements.
sachant celà, il n'est pas compliqué d'imaginer une sequence permettant de bloquer tant que tout n'est pas entré. par exemple, une boucle avec test d'egalité, si egal à nombre de char attendus, alors on sort. en assembleur, ça pourrait se traduire ainsi: Code :
l'idée est de creer une fonction int80: , qui commencerais par un switch case vers les sous fonctions supportées. en fin de switch case, la fonction n'est pas supportée, on retourne l'erreur correspondante. voilà, j'espere que ça t'aide un peu. sinon, tu peux visiter des sites comme osdev, osdever, et autres communautés specialisées sur les OS, mais bien souvent, ils sont uniquement en anglais, ce qui n'est pas un problème pour un programmeur normallement. |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com