Page principale   Liste des fichiers  

lib_KSInu.h

Aller à la documentation de ce fichier.
00001 
00006 #ifndef LIB_KSINU_H
00007 #define LIB_KSINU_H
00008 
00009 #define <stdlib.h>
00010 #define <stdio.h>
00011 
00012 
00013 /***************************************************
00014  Definition de la memoire pour la machine virtuelle
00015 ***************************************************/
00016 
00017 // Typt pour manipuler la memoire
00018 typedef mot_t = char[4]; // mot_t represente un mot mem ie une instruction
00019 
00020 // Definition de la memoire
00021 #define T_MOT 4   // Taille en octets d'un mot
00022 #define NPP 16    // Nb de pages physiques
00023 #define NMPPP 32  // Nb max de mot dans une page
00024 mot_t mem[NPP][NMPPP];   // Memoire pour la machine virtuelle
00025 
00026 // Organisation de la zone memoire d'un processus
00027 #define T_MAX_CODE 256     // Taille max (en mots) de la zone de code 
00028 #define T_MAX_DONNEES 256  // Taille max (en mots) de la zone de donnees
00029 #define T_MAX_PILE 256     // Taille max (en mots) de la zone de pile
00030 
00031 /***************************************************
00032  Definition de la table des processus
00033 ***************************************************/
00034 
00035 // Constantes de la table des processus
00036 #define N_MAX_PROC 10 // Taille de la table des processus
00037 #define N_INDIR 5     // Taille de la table des pages 1er niveau
00038 #define N_PAGES 4     // Taille de la table des pages 2eme niveau
00039 
00040 // Constantes indiquant le type de la page physique
00041 #define PP_RAM 0   // RAM
00042 #define PP_SWAP 1  // Swap
00043 #define PP_VIDE -1 // Inutilise
00044 
00045 // Constantes indiquant les droits d'acces a une page
00046 #define D_RD 0
00047 #define D_RDWR 1
00048 
00049 // Structure representant le 1er niv de correspondance page v -> page phys
00050 struct st_ad_page_physique {
00051   int num_ppage; // Num de la page physique correspondante
00052   short type;    // RAM (PP_RAM) Swap (PP_SWAP) Vide (PP_VIDE)
00053 };
00054 
00055 // Structure representant le 1er niv de correspondance page v -> page phys
00056 struct st_ad_indirect {
00057   short droits; // Droits d'acces a la mem (D_RD/D_RDWR)
00058   // Table de correpondance page virtuelle -> page physique (2eme niv)
00059   struct st_ad_page_physique[N_PAGES];
00060 };
00061 
00062 // Struture representant un processus
00063 struct st_proc {
00064   int cur_inst;       // instruction courante dans la page
00065   int cur_vpage;      // page virtuelle courante
00066   int taille_code;    // Taille de la zone de code
00067   int taille_donnees; // Taille de la zone de donnees
00068   int taille_pile;    // Taille de la zone de pile
00069   // Table de correpondance page virtuelle -> page physique (1er niv)
00070   struct st_ad_indirect *table_indir[N_INDIR]; 
00071 };
00072 
00073 // Table des processus
00074 struct st_proc table_proc[N_MAX_PROC];
00075 
00076 
00077 #endif

Généré le Thu May 30 16:28:16 2002 pour KSInu par doxygen1.2.15