00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef LIB_KSINU_H
00010 #define LIB_KSINU_H
00011
00012 #include <stdlib.h>
00013 #include <stdio.h>
00014 #include <sys/types.h>
00015 #include <sys/stat.h>
00016 #include <fcntl.h>
00017 #include <unistd.h>
00018
00019
00020
00021
00022
00023
00024
00025 #define T_MOT 4 // Taille en octets d'un mot
00026 #define NPP 16 // Nb de pages physiques en memoire
00027 #define NMPPP 32 // Nb max de mot dans une page
00028 #define NPPS 255 // Nb de pages physiques dans le swap
00029 #define T_PAGE NMPPP*T_MOT // Taille en octets d'une page
00030
00031
00032 typedef unsigned char octet_t;
00033 typedef octet_t mot_t[T_MOT];
00034 typedef mot_t page_t[NMPPP];
00035
00036
00037 #define T_MAX_CODE 8 // Taille max (en mots) de la zone de code
00038 #define T_MAX_DONNEES 8 // Taille max (en mots) de la zone de donnees
00039 #define T_MAX_PILE 8 // Taille max (en mots) de la zone de pile
00040
00041
00042 page_t mem[NPP];
00043 int swap_d;
00044
00045
00046
00047
00048
00049
00050
00051
00052 #define N_MAX_PROC (NMPPP-NPP/T_MOT-1) // Taille de la table des processus
00053 #define DEBUT_T_PAGES (N_MAX_PROC+1) // Debut de la table des pages ds la page des meta-info
00054 #define DEBUT_T_PROC 1 // Debut de la table des processus ds la page des meta-info
00055 #define NUM_PAGE_META 0 // Numero de la page des meta-inof contenant notamment la table des processus
00056 #define NUM_PAGE_SWAP 1 // Num de la page mem contenant la 1ere page de la liste des pages swap libres
00057 #define PAGE_VIDE 0 // Indique que l'emplacement (numero de pp) dans la memoire est libre
00058 #define NO_MORE_PID 0 // Plus d'emplacement libre ds la table des proc
00059 #define NO_MORE_PAGE 0 // Plus de page physique libre en memoire
00060 #define NO_MORE_SWAP 255 // Plus de page physique libre ds le swap
00061
00062
00063 #define PP_RAM 1 // RAM
00064 #define PP_SWAP 2 // Swap
00065 #define PP_NULL 0 // Inutilise par le processus
00066
00067
00068 #define D_RD 1
00069 #define D_RDWR 2
00070
00071
00072
00073
00074
00075
00076
00077
00078 struct cellule {
00079
00080 struct cellule *suivant;
00081
00082 int pid;
00083 int temps;
00084
00085 int page;
00086 };
00087
00088
00089 typedef struct {
00090 struct cellule *tete;
00091 } l_fifo;
00092
00093
00094
00095
00096
00097
00098
00099 int quantum;
00100
00101
00102 l_fifo liste_proc;
00103
00104
00105
00106
00107
00108
00109
00110 l_fifo liste_pages;
00111
00112 #endif