From c0806e50e7d844244b98f3d59127daf3629a94c8 Mon Sep 17 00:00:00 2001 From: RinRi Date: Tue, 8 Nov 2022 23:36:16 +0300 Subject: [PATCH] week9 --- week09/ex1.c | 66 ++++++++++++++++++++++++++++++++++++++++++++ week09/ex1.out | Bin 0 -> 20896 bytes week09/ex1.sh | 9 ++++++ week09/ex2.txt | 8 ++++++ week09/input.txt | 1 + week09/inputmy1.txt | 1 + 6 files changed, 85 insertions(+) create mode 100644 week09/ex1.c create mode 100755 week09/ex1.out create mode 100755 week09/ex1.sh create mode 100644 week09/ex2.txt create mode 100644 week09/input.txt create mode 100644 week09/inputmy1.txt diff --git a/week09/ex1.c b/week09/ex1.c new file mode 100644 index 0000000..e3ea195 --- /dev/null +++ b/week09/ex1.c @@ -0,0 +1,66 @@ +#include +#include +#include + +typedef struct { + int page; + unsigned char count; +} PageFrame; + +int findFrame(PageFrame *pframes, int n, int page) { + for (int i = 0; i < n; ++i) + if (pframes[i].page == page) + return i; + + return -1; +} + +int oldestFrame(PageFrame *pframes, int n) { + int mn = INT_MAX, mnpos = -1; + for (int i = 0; i < n; ++i) + if (pframes[i].page < mn) + mn = pframes[i].page, mnpos = i; + + return mnpos; +} + +/* + * My program doesn't simulate the "timer". + * Instead, it shifts everything every iteration. + * That's why I haven't implemented r-bits. + */ + +int main(int argc, char **argv) { + FILE *f = fopen("input.txt", "r"); + + PageFrame pframes[100]; + for (int i = 0; i < 100; ++i) + pframes[i].page = -1, pframes[i].count = 0; + + int testFrames = atoi(argv[1]); + + float miss = 0, hit = 0; + unsigned long page; + + while (fscanf(f, "%lu", &page) != EOF) { + int frame = findFrame(pframes, testFrames, page); + + if (frame == -1) { + miss++; + int oldest = oldestFrame(pframes, testFrames); + pframes[oldest].page = page; + pframes[oldest].count = (1 << 7); + } else { + hit++; + pframes[frame].count |= (1 << 7); + } + + // do refresh after every access + for (int i = 0; i < testFrames; ++i) + pframes[i].count >>= 1; + } + + printf ("hits: %f\nmisses: %f\nratio: %f\n", hit, miss, hit / miss); + + fclose(f); +} diff --git a/week09/ex1.out b/week09/ex1.out new file mode 100755 index 0000000000000000000000000000000000000000..46d8391638b5fd403ae2a7411558b947cf8d4012 GIT binary patch literal 20896 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