00001
00002
00003
00004
00005
00006 #include "lib_ksinu.h"
00007 #include "systeme.h"
00008
00009
00010 int main (int argc, char *argv[]) {
00011 page_t page_mem,page_swap;
00012 mot_t mot_swap,mot_mem;
00013 int i,j;
00014 int num_page_swap,num_page_suivante;
00015 int mem_d;
00016
00017 for (i=0 ; i<4 ; i++) {
00018 mot_mem[i] = (octet_t)0;
00019 mot_swap[i] = (octet_t)0;
00020 }
00021
00022 if ((swap_d=open("f.swap",O_RDWR|O_CREAT|O_TRUNC,0666)) == -1) {
00023 fprintf(stderr,"Impossible d'ouvrir ou de creer le fihier swap\n");
00024 return -1;
00025 }
00026
00027
00028 for (i=0 ; i<NMPPP ; i++) {
00029 memcpy(page_swap[i], mot_swap, T_MOT);
00030 }
00031 for (i=0 ; i<NPPS ; i++) {
00032 if (write(swap_d,page_swap,T_PAGE) != T_PAGE) {
00033 fprintf(stderr,"Impossible d'initialiser le fihier swap\n");
00034 return -1;
00035 }
00036 }
00037 if (lseek(swap_d,0,SEEK_SET) == -1) {
00038 return -1;
00039 }
00040
00041 num_page_suivante = NMPPP*T_MOT - 1;
00042 num_page_swap = num_page_suivante + 1;
00043 while (num_page_swap != NO_MORE_SWAP) {
00044
00045 for (i=0 ; i<NMPPP ; i++) {
00046 for (j=0 ; j<T_MOT ; j++) {
00047 if (num_page_swap >= NPPS)
00048 num_page_swap = NO_MORE_SWAP;
00049 mot_swap[j] = (octet_t)num_page_swap;
00050 if (num_page_swap != NO_MORE_SWAP)
00051 num_page_swap++;
00052 }
00053 memcpy(page_swap[i], mot_swap, T_MOT);
00054 }
00055
00056 if (lseek(swap_d,num_page_suivante*T_PAGE,SEEK_SET) == -1) {
00057 return -1;
00058 }
00059 if (write(swap_d,page_swap,T_PAGE) != T_PAGE) {
00060 return -1;
00061 }
00062 num_page_suivante = num_page_swap-1;
00063 }
00064
00065
00066
00067 mot_mem[3] = (octet_t)DEBUT_T_PROC;
00068 memcpy(page_mem[0], mot_mem, T_MOT);
00069
00070 for (i=1 ; i<N_MAX_PROC+1 ; i++) {
00071 mot_mem[2] = (octet_t)PP_NULL;
00072 memcpy(page_mem[i], mot_mem, T_MOT);
00073 }
00074
00075 mot_mem[0] = (octet_t)2;
00076 mot_mem[1] = (octet_t)0;
00077 mot_mem[2] = (octet_t)PAGE_VIDE;
00078 mot_mem[3] = (octet_t)PAGE_VIDE;
00079 for (i=N_MAX_PROC+1 ; i<NMPPP ; i++) {
00080 if (i == N_MAX_PROC+2) {
00081 mot_mem[0] = (octet_t)PAGE_VIDE;
00082 mot_mem[1] = (octet_t)PAGE_VIDE;
00083 }
00084 memcpy(page_mem[i], mot_mem, T_MOT);
00085 }
00086 memcpy(mem[NUM_PAGE_META], page_mem, T_PAGE);
00087
00088 for (i=0 ; i<NMPPP ; i++) {
00089 for (j=0 ; j<T_MOT ; j++) {
00090 mot_mem[j] = (octet_t)j+i*T_MOT;
00091 }
00092 memcpy(page_mem[i], mot_mem, T_MOT);
00093 }
00094 memcpy(mem[NUM_PAGE_SWAP], page_mem, T_PAGE);
00095
00096 mem_d=open("./f.mem",O_CREAT|O_TRUNC|O_RDWR,0666);
00097 write(mem_d,mem,NPP*NMPPP*T_MOT);
00098
00099
00100 quantum = 1;
00101 liste_init(liste_proc);
00102 liste_init(liste_pages);
00103
00104 return 0;
00105 }