#include #include #define BUFSIZE 10240 #define APSIZE 16000 /******************************************************* basically hogs memory and continually modifies the memory it has to put load on the kernel and the page swapping section *******************************************************/ void reverse(char *string,int length); void fill(char *string,int length); void hex_dump(char *ptr,int size,int rowsize); main() { char reserve[BUFSIZE]; char *mp,*ap[APSIZE]; int i = 0; int max; mp = malloc(BUFSIZE); while ((mp != NULL) && (i < APSIZE)) { ap[i] = mp; i++; mp = malloc(BUFSIZE); } max = i - 1; printf("finished allocating, %d slots used\n",max); for (i = 0; i <= max; i++) { fill(ap[i],BUFSIZE); } printf("finished filling ...\n"); for (i = 0; i <= max; i++) { reverse(ap[i],BUFSIZE); } printf("finished reversing ...\n"); { int cur = 0,next = max; while (1) { if ((next > max) || (next < 0)) next = max; if ((cur > max) || (cur < 0)) cur = 0; memcpy(ap[cur],reserve,BUFSIZE); memcpy(ap[next],ap[cur],BUFSIZE); memcpy(reserve,ap[next],BUFSIZE); printf("finished one loop of copy ...\n"); cur++; next--; } } } void hex_dump(char *ptr,int size,int rowsize) { int i = 0; while (i < size) { if (isprint(*ptr)) { printf("%c ",*ptr); } else { printf("%02.2x",(*ptr & 0xff)); } if ((i % rowsize) == (rowsize - 1)) { putchar('\n'); } else { putchar(' '); } i++; ptr++; } putchar('\n'); } void fill(char *string,int length) { int i; for (i = 0; i < length; i++) { string[i] = (unsigned char)((i + 101) & 0xff); } } void reverse(char *string,int length) { int i; int max; char tmp; max = length / 2; for (i = 0; i < max; i++) { tmp = string[i]; string[i] = string[length - 1 - i]; string[length - 1 - i] = tmp; } }