00001
00006
00007 #define T_MOT 4 // Taille en octets d'un mot
00008 #define NPP 16 // Nb de pages physiques
00009 #define NMPPP 32 // Nb max de mot dans une page
00010 typedef mot_t = char[4];
00011 mot_t mem[NPP][NMPPP];
00012
00013
00014 #define T_MAX_CODE 256 // Taille max (en mots) de la zone de code
00015 #define T_MAX_DONNEES 256 // Taille max (en mots) de la zone de donnees
00016 #define T_MAX_PILE 256 // Taille max (en mots) de la zone de pile
00017
00018
00019 #define N_MAX_PROC 10 // Taille de la table des processus
00020 #define N_INDIR 5 // Taille de la table des pages 1er niveau
00021 #define N_PAGES 4 // Taille de la table des pages 2eme niveau
00022
00023 #define PP_RAM 0 // RAM
00024 #define PP_SWAP 1 // Swap
00025 #define PP_VIDE -1 // Inutilise
00026
00027 #define D_RD 0
00028 #define D_RDWR 1
00029
00030
00031 struct st_ad_page_physique {
00032 int num_ppage;
00033 short type;
00034 };
00035
00036 struct st_ad_indirect {
00037 short droits;
00038
00039 struct st_ad_page_physique[N_PAGES];
00040 };
00041
00042 struct st_proc {
00043 int cur_inst;
00044 int cur_vpage;
00045 int taille_code;
00046 int taille_donnees;
00047 int taille_pile;
00048
00049 struct st_ad_indirect *table_indir[N_INDIR];
00050 };
00051
00052 struct st_proc table_proc[N_MAX_PROC];
00053
00054
00055 #define Z_DONNEES 0
00056 #define Z_PILE 1
00057 #define Z_CODE 2
00058 int num_vpage(int place, short zone);