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 "fifo.h"
00011 
00012 
00013 /**************************************************************************************
00014  Entierement fait par Martin Ludovic
00015 **************************************************************************************/
00016 
00017 
00018 /*******************************************************************************
00019  Gestion (liberation / reservation) des num de processus et des pages physiques
00020 ********************************************************************************/
00021 
00022 /// Fonction permettant de liberer un num de processus
00023 int liberer_pid (int pid);
00024 
00025 /// Fonction retournant un num de processus libre
00026 int pid_libre();
00027 
00028 /// Fonction permettant de liberer un num de page physique ds la memoire
00029 int liberer_page (int page);
00030 
00031 /// Fonction retournant un num de page physique libre ds la memoire
00032 int page_libre (int pid);
00033 
00034 /// Fonction retournant un num de page physique en memoire en l'ayant eventuellement liberee de force
00035 int page_forcee (int pid);
00036 
00037 /// Fonction permettant de liberer un num de page physique ds le swap
00038 int liberer_page_swap (int page);
00039 
00040 /// Fonction retournant un num de page physique libre ds le swap
00041 int page_swap_libre();
00042 
00043 
00044 /**************************************************************
00045  Interaction entre memoire principale et secondaire
00046 **************************************************************/
00047 
00048 /// Fonction permettant de mettre en mem principale une page se trouvant ds le swap
00049 int rapatrier_page_swap (int pid, int page);
00050 
00051 /// Fonction permettant de copier une page du swap ds la mem princale
00052 int page_swap2mem (int num_page_swap, int num_page_mem);
00053 
00054 /// Fonction permettant de copier une page de la mem princale ds le swap
00055 int page_mem2swap (int num_page_mem, int num_page_swap);
00056 
00057 
00058 /***************************************************************
00059  Gestion de la table des pages des processus
00060 ****************************************************************/
00061 
00062 // Constantes indiquant la zone de la memoire du precessus
00063 #define Z_CODE 0     // Zone de code
00064 #define Z_DONNEES 1  // Zone de donnees
00065 #define Z_PILE 2     // Zone de pile
00066 
00067 /// Structure definissant une adresse virtuelle
00068 typedef struct {
00069   int zone; ///< Zone mémoire du processus (code, pile ou donnees)
00070   int num;  ///< Numero du mot ds la zone
00071 } vad_t;
00072 
00073 /// Structure definissant un mot physique
00074 typedef struct {
00075   int type;   ///< Type de la mem ou se trouve la page (RAM ou swap)
00076   int page;   ///< Numero de la page
00077   int mot;    ///< Numero du mot
00078 } info_mot_t;
00079 
00080 /// Fonction retournant le num de page (ds la mem ou le swap) d'une adresse virtuelle
00081 int adresse_phys (int pid, vad_t ad_v, info_mot_t *info);
00082 
00083 /// Fonction permettant d'ajouter une page a la table des pages d'un processus
00084 int page_add2proc (int pid, int zone, int page);
00085 
00086 /// Fonction pour supprimer la derniere page d'une zone de la table des pages d'un proc
00087 int page_supp2proc (int pid, int zone);
00088 
00089 /// Fonction permettant de modifier le pid du processus pere
00090 int changer_ppid (int pid, int ppid);
00091 
00092 /// Fonction permettant de lire le pid du processus pere
00093 int lire_ppid (int pid);
00094 
00095 /// Modifie la hauteur de la pile
00096 int changer_esp (int pid, int op);
00097 
00098 /// Retourne la hauteur de la pile
00099 int lire_esp (int pid);
00100 
00101 
00102 /**********************************************************************
00103  Acces (lecture / ecriture) a la memoire (principale et secondaire)
00104 ***********************************************************************/
00105 
00106 /// Fonction permettant de lire un mot se trouvant ds la mem principale
00107 int lire_mot_mem (int num_mot, int num_pp, mot_t mot);
00108 
00109 /// Fonction permettant d'ecrire un mot se trouvant ds la mem principale
00110 int ecrire_mot_mem (int num_mot, int num_pp, mot_t mot);
00111 
00112 /// Fonction permettant de lire un mot a partir d'une adresse virtuelle
00113 int lire_mot (int pid, vad_t ad_v, mot_t mot);
00114 
00115 /// Fonction qui ecrit un mot a partir d'une adresse virtuelle
00116 int ecrire_mot (int pid, vad_t ad_v, mot_t mot);
00117 
00118 /// Fonction permettant d'ecrire une page dans la mem swap
00119 int ecrire_page_swap (page_t page, int num_page);
00120 
00121 
00122 /**************************************************************
00123  Interpretation d'une entree de la table des processus
00124 **************************************************************/
00125 
00126 /// Fonction qui permet de changer l'etat d'un processus
00127 int changer_etat(int etat, mot_t mot);
00128 
00129 /// Fonction qui permet de lire l'etat d'un processus
00130 int lire_etat(mot_t mot);
00131 
00132 /// Fonction qui permet de changer le type de la table des pages d'un processus
00133 int changer_type_pp(int type, mot_t mot);
00134 
00135 /// Fonction qui permet de lire le type de la table des pages d'un processus
00136 int lire_type_pp(mot_t mot);
00137 
00138 
00139 /**************************************************************
00140  Acces au tampons d'entrees / sorties d'un processus
00141 **************************************************************/
00142 
00143 /// Verrouille un tampon
00144 int verrouiller_tampon (int pid, int num_tampon);
00145 
00146 /// Deverrouille un tampon
00147 int deverrouiller_tampon (int pid, int num_tampon);
00148 
00149 /// Fonction qui ecrit un caractere dans le tampon d'entree d'un processus
00150 int ecrire_stdin (int pid, char c);
00151 
00152 /// Fonction qui lit un caractere dans le tampon d'entree d'un processus
00153 int lire_stdin (int pid, char* c);
00154 
00155 /// Fonction qui ecrit un caractere dans le tampon de sortie d'un processus
00156 int ecrire_stdout (int pid, char c);
00157 
00158 /// Fonction qui lit un caractere dans le tampon de sortie d'un processus
00159 int lire_stdout (int pid, char* c);
00160 
00161 
00162 /**************************************************************
00163  Interpretation d'une instruction
00164 **************************************************************/
00165 
00166 // Code des instructions
00167 #define I_AFFECT 1
00168 #define I_AFFECTP 2
00169 #define I_SI 3
00170 #define I_SAUT 4
00171 #define I_CPILE 5
00172 #define I_DPILE 6
00173 #define I_APPEL 7
00174 #define I_RETOUR 8
00175 #define I_TEST 9
00176 #define I_TRAPPE 10
00177 #define I_AFFECTSP 11
00178 #define I_DONNEES 255
00179 
00180 // Code des trappes
00181 #define T_CLONE 1
00182 #define T_RECOUVRE 2
00183 #define T_ATTENDS 3
00184 #define T_FIN 4
00185 #define T_CAPTURE 5
00186 #define T_EMETS 6
00187 #define T_ID 7
00188 #define T_IDP 8
00189 #define T_LIT 9
00190 #define T_ECRIT 10
00191 
00192 /// Fonction qui execute l'instruction courante du processus donne
00193 void next_inst (int pid);
00194 
00195 /// Fonction qui interprete les signaux pendant d'un processus
00196 void interprete_signaux (int pid);
00197 
00198 /// Fonction qui cree un fichier contenant l'image du proc a un instant donne
00199 void creer_immage_mem (int pid);
00200 
00201 /// Fonction qui cree un fichier contenant l'image de toute la mem du sys
00202 void creer_image_totale (int pid);
00203 
00204 #endif

Généré le Sun Sep 29 22:47:22 2002 pour KSInu par doxygen1.2.16