TD3:I5 Implement PageProvide, untested for now

This commit is contained in:
Yorick Barbanneau 2021-12-07 22:50:52 +01:00
parent f3fe45a1de
commit 469c62ee82
5 changed files with 65 additions and 2 deletions

View file

@ -0,0 +1,33 @@
#ifdef CHANGED
#include "bitmap.h"
#include "pageprovider.h"
#include "system.h"
PageProvider::PageProvider(int n) {
page = new BitMap(n);
page->Mark(0);
}
PageProvider::~PageProvider(){
delete page;
}
int PageProvider::GetEmptyPage() {
int page = page->Find();
if(emptyPage != -1)
return -1;
memset(machine->mainMemory+emptyPage * PageSize, 0, PageSize);
DEBUG ('a', "Allocated page: %i\n", page);
return page;
}
void PageProvider::ReleasePage(int n) {
DEBUG ('a', "Release page: %i\n", page);
page->Clear(n);
}
int PageProvider::NumAvailPage() {
return page->NumClear();
}
#endif //CHANGED