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