Page principale   Liste par ordre alphabétique   Liste des composants   Liste des fichiers   Composants   Déclarations  

interpreteur.h

Aller à la documentation de ce fichier.
00001 /**
00002   \file interpreteur.h
00003   \brief Entete de interpreteur.c
00004 */
00005 
00006 #ifndef INTERPRETEUR_H
00007 #define INTERPRETEUR_H
00008 
00009 #include "lib_ksinu.h"
00010 #include "commandes.h"
00011 #include "fifo.h"
00012 
00013 /// Fonction retournant un num de processus libre
00014 int pid_libre();
00015 
00016 /// Fonction retournant un num de page physique libre ds la memoire
00017 int page_libre(int pid);
00018 
00019 /// Fonction retournant un num de page physique libre ds le swap
00020 int page_swap_libre();
00021 
00022 /// Fonction permettant de liberer un num de processus
00023 int liberer_pid (int pid);
00024 
00025 /// Fonction permettant de liberer un num de page physique ds la memoire
00026 int liberer_page (int page);
00027 
00028 /// Fonction permettant de liberer un num de page physique ds le swap
00029 int liberer_page_swap (int page);
00030 
00031 /// Fonction permettant de mettre en mem principale une page se trouvant ds le swap
00032 int rapatrier_page_swap (int pid, int page);
00033 
00034 // Constantes indiquant la zone de la memoire du precessus
00035 #define Z_CODE 0     // Zone de code
00036 #define Z_DONNEES 1  // Zone de donnees
00037 #define Z_PILE 2     // Zone de pile
00038 
00039 /// Structure definissant une adresse virtuelle
00040 typedef struct {
00041   int zone; ///< Zone mémoire du processus (code, pile ou donnees)
00042   int num;  ///< Numero du mot ds la zone
00043 } vad_t;
00044 
00045 /// Structure definissant une page physique
00046 typedef struct {
00047   int type;   ///< Type de la mem ou se trouve la page (RAM ou swap)
00048   int droits; ///< Droits d'acces a la page
00049   int num;    ///< Numero de la page
00050 } info_page_t;
00051 
00052 /// Fonction retournant le num de page (ds la mem ou le swap) d'une adresse virtuelle
00053 int adresse_phys (int pid, vad_t ad_v, info_page_t info);
00054 
00055 /// Fonction permettant de lire un mot se trouvant ds la mem principale
00056 int lire_mot_mem (int num_mot, int num_pp, mot_t mot);
00057 
00058 /// Fonction permettant de lire une page se trouvant ds la mem principale
00059 int ecrire_mot_mem (int num_mot, int num_pp, mot_t mot);
00060 
00061 /// Fonction permettant de copier une page du swap ds la mem princale
00062 int page_swap2mem (int num_page_swap, int num_page_mem);
00063 
00064 /// Fonction permettant de copier une page de la mem princale ds le swap
00065 int page_mem2swap (int num_page_mem, int num_page_swap);
00066 
00067 /// Fonction permettant de lire un mot a partir d'une adresse virtuelle
00068 int lire_mot (int pid, vad_t ad_v, mot_t mot);
00069 
00070 /// Fonction qui ecrit un mot a partir d'une adresse virtuelle
00071 int ecrire_mot (int pid, vad_t ad_v, mot_t mot);
00072 
00073 // Code des instructions
00074 #define I_AFFECT 1
00075 #define I_AFFECTP 2
00076 #define I_SI 3
00077 #define I_SAUT 4
00078 #define I_CPILE 5
00079 #define I_DPILE 6
00080 #define I_APPEL 7
00081 #define I_RETOUR 8
00082 #define I_TEST 9
00083 #define I_TRAPPE 10
00084 #define I_AFFECTSP 11
00085 #define I_DONNEES 255
00086 
00087 // Code des trappes
00088 #define T_CLONE 1
00089 #define T_RECOUVRE 2
00090 #define T_ATTENDS 3
00091 #define T_FIN 4
00092 #define T_CAPTURE 5
00093 #define T_EMETS 6
00094 #define T_ID 7
00095 #define T_IDP 8
00096 #define T_LIT 9
00097 #define T_ECRIT 10
00098 
00099 /// Fonction qui execute l'instruction courante du processus donne
00100 void next_inst (int pid);
00101 
00102 
00103 #endif

Généré le Fri Jun 7 09:49:32 2002 pour KSInu par doxygen1.2.16