TD3 II.2 Manage processes counter

This commit is contained in:
Yorick Barbanneau 2021-12-16 15:31:30 +01:00
parent 479d37133c
commit dcb11cf311
3 changed files with 24 additions and 2 deletions

View file

@ -168,6 +168,10 @@ AddrSpace::AddrSpace (OpenFile * executable)
DEBUG('x', "Initialize memory map size:%d\n", bitmapSize);
memoryMap = new BitMap(bitmapSize);
memoryMap->Mark(0);
semProcessesCounter->P();
processes++;
semProcessesCounter->V();
DEBUG('x', "Increase Process counter:%d\n", processes);
#endif //CHANGED
AddrSpaceList.Append(this);
@ -180,15 +184,31 @@ AddrSpace::AddrSpace (OpenFile * executable)
AddrSpace::~AddrSpace ()
{
#ifdef CHANGED
for(unsigned i = 0; i < numPages; i++) {
pageProvider->ReleasePage(pageTable[i].physicalPage);
}
#endif
DEBUG('s',"Delete Page Table\n");
delete [] pageTable;
pageTable = NULL;
AddrSpaceList.Remove(this);
#ifdef CHANGED
DEBUG('c',"Delete Semaphores, memorymap\n");
delete semThreadsCounter;
delete semAllocateUserStack;
delete memoryMap;
semProcessesCounter->P();
processes--;
semProcessesCounter->V();
DEBUG('c', "Decrease Process counter:%d\n", processes);
#endif
if ( processes == 0 ){
DEBUG('c', "No more processes on RAM, call Exit()\n");
interrupt->Powerdown();
}
}
//----------------------------------------------------------------------