Given the partial code, encode, complete, compile, debug and run the program. The language is C++
Posted: Sat May 14, 2022 3:25 pm
Given the partial code, encode, complete, compile, debug
and run the program.
The language is C++
#include"stdafx.h" #include<stdio.h> #include<conio.h>. #include<string.h> #include<stdlib.h> #include<iostream> usingnamespacestd; struct alloclist { char *startAlloc; char *endAlloc; intfk_pid; alloclist *nxt; }; Struct procList { int pid; int jobStatus; char *startProc; char *endProc; procList *nxt; }; boolinitProc (proclist *&, int*, int); boolinitAlloc(allocList*&, int*,int); intdoFirstFit(proclist *, alloclist *); intcmptFragmentation (procList*, alloclist*); int search(procList*, int); bool reset(procList*, alloclist*); int _tmain(intargc, _TCHAR* argv[]) { intarrMemory[ ]={100, 500, 200, 300, 600}; intarrJobs [ ]={212, 17, 112, 426, 500}; allocList *ptrAllocStart=NULL; procList *ptrProcStart=NULL; initProc(ptr ProcStart, arrJobs, (sizeof(arrJobs/sizeof(int))); initAlloc(ptrAllocStart, arrMemory, (sizeof(arrMemory)/sizeof(int))); cout<<"Memory Block:"<<endl<<"Block\tSpace"<<endl; int i; for(i=0; i<sizeof(arrMemory) /sizeof(int); i++) cout<<i+1<<"\t"<<arrMemory<<endl; cout<<"\nJobs:"<<endl<<"Job\tSize"<<endl; for(i=0; i<sizeof(arrJobs)/sizeof(int); i++)
intjobLoaded=0; int fragmentation=0; jobLoaded=doFirstFit(ptrProcStart, ptrAllocStart); fragmentation=cmptFragmentation (pt ProcStart, ptrAllocStart); alloclist *memtrav=ptrAllocStart; getch(); return 0; } boolinitProc (proclist *&ptrProcStart, int* ptrArrProc, int length) { int i; proclist *ptr Proc-ptr ProcStart; for(i=0; i<length; i++) { if(ptr Proc != NULL) { ptr Proc->nxt=newprocList; ptr Proc ptrProc->nxt; ptrProc->startProc=(char*) malloc(*(ptrArrProc+i)); ptrProc->endProc-ptrProc->startProc + *(ptrArrProc+i); memset(ptrProc->startProc, 'a'+i,*(ptrArrProc+i)); ptrProc-jobStatus=0; ptrProc->pid=i; ptr Proc->nxt=NULL; } else { ptr Proc=newprocList; ptr Proc->startProc=(char*) malloc(*(ptrArrproc+i)); ptr Proc->endProc=ptrProc->startProc + *(ptrArrProc+i); memset(ptrProc->startProc, 'a'+i, *(ptrArrProc+i)); ptrProc->jobStatus=0; ptrProc->pid=i; ptrProc->nxt=NULL; ptr ProcStart=ptr Proc; } } return true; } boolinitAlloc (allocList*&ptrAllocstart, int *ptrArrAlloc, int length) { int i; alloclist *ptrAlloc=ptrAllocStart; for(i=0; i<length; i++) { if(ptrAlloc !=NULL)
cout<<"\n\nFirst Fit:\nMemory Block\tSize\t Job\tInternal " <<" Fragmentation\n"; int i=0; while(memory! =NULL) { i++; cout<<"\t"«<i<<"\t"<<memory->endAlloc-memory->startAlloc<<"\t" <<memory->fk_pid<<"\t" <<memory->endAlloc-memory->startAlloc-search(proc, memory->fk_pid-1) <<endl; memory=memory->nxt; } return ; } int search(proclist* job, int id) { int size; while( job!=NULL) { if(job->pid=wid) { size=(int)job->endProc-(int)job->startProc; break; ) job=job->nxt; return size; } intcmptFragmentation (procList* jobs, alloclist* mem) { alloclist *memtrav, *temp; proclist *jobtrav; jobtrav-jobs; memtrav=mem; int freespace=8, memsize, jobsize; int i=0; while(memtrav->nxt !=NULL) { if(memtrav->nxt->fk_pidur) { freespace+=(memtrav->nxt->endAlloc-memtrav->nxt->startAlloc); tempamemtrav->nxt; memtrav->nxt-memtrav->nxt->nxt; delete tempi } memtrav=memtrav->nxt; }
if(memtrav->fk_pid==0) { freespace+= (memtrav->endAlloc-memtrav->startAlloc); memtrav=memtrav->nxt; } memtrav=mem; while(memtrav!=NULL) { jobsize=search(jobs, memtrav->fk_pid-1); memsize=memtrav->endAlloc-memtrav->startAlloc; if(memtrav->fk_pid!=0) { memtrav->endAlloc=memtrav->startAlloc+jobsize; } freespace+=(memsize-jobsize); memtrav=memtrav->nxt; } memtrav=mem; while(memtrav!=NULL) { if(memtrav->nxt==NULL) { memtrav->nxt=newalloclist; memtrav=memtrav->nxt; memtrav->startAlloc=(char*)malloc(freespace); memtrav->endAlloc=memtrav->startAlloc+freespace; memset(memtrav->startAlloc, 0, freespace); memtrav->fk_pid=0; memtrav->nxt=NULL; break; } memtrav=memtrav->nxt; } memtrav=mem; cout<<endl<<endl<<"Defragmentation\nMemory <<"Block\tSize\tJob\tFreeSpace\n"; while(memtrav!=NULL) { i++; cout<<"\t"«<i<<"\t"<<memtrav->endAlloc-memtrav->startAlloc <<"\t"<<memtrav->fk_pid <<"\t"<<memtrav->endAlloc-memtrav->startAlloc- search(jobs,memtrav->fk_pid-1)<<endl; memtrav=memtrav->nxt; } while(jobtrav!=NULL) {
if(jobtrav->jobStatus==0) { doFirstFit(jobs, mem); cmptFragmentation (jobs, mem); } jobtrav=jobtrav->nxt; } return 0; } bool reset(proclist* jobs, alloclist* mem) { proclist* tempj-jobs;; alloclist* tempa=mem; while( jobs->nxt!=NULL) { jobs-jobs->nxt; free (tempj); tempj-jobs; } free(tempj); while(mem->nxt!=NULL) { mem=mem->nxt; free (tempa); tempa=mem; } free(tempa); return true; }
and run the program.
The language is C++
#include"stdafx.h" #include<stdio.h> #include<conio.h>. #include<string.h> #include<stdlib.h> #include<iostream> usingnamespacestd; struct alloclist { char *startAlloc; char *endAlloc; intfk_pid; alloclist *nxt; }; Struct procList { int pid; int jobStatus; char *startProc; char *endProc; procList *nxt; }; boolinitProc (proclist *&, int*, int); boolinitAlloc(allocList*&, int*,int); intdoFirstFit(proclist *, alloclist *); intcmptFragmentation (procList*, alloclist*); int search(procList*, int); bool reset(procList*, alloclist*); int _tmain(intargc, _TCHAR* argv[]) { intarrMemory[ ]={100, 500, 200, 300, 600}; intarrJobs [ ]={212, 17, 112, 426, 500}; allocList *ptrAllocStart=NULL; procList *ptrProcStart=NULL; initProc(ptr ProcStart, arrJobs, (sizeof(arrJobs/sizeof(int))); initAlloc(ptrAllocStart, arrMemory, (sizeof(arrMemory)/sizeof(int))); cout<<"Memory Block:"<<endl<<"Block\tSpace"<<endl; int i; for(i=0; i<sizeof(arrMemory) /sizeof(int); i++) cout<<i+1<<"\t"<<arrMemory<<endl; cout<<"\nJobs:"<<endl<<"Job\tSize"<<endl; for(i=0; i<sizeof(arrJobs)/sizeof(int); i++)
intjobLoaded=0; int fragmentation=0; jobLoaded=doFirstFit(ptrProcStart, ptrAllocStart); fragmentation=cmptFragmentation (pt ProcStart, ptrAllocStart); alloclist *memtrav=ptrAllocStart; getch(); return 0; } boolinitProc (proclist *&ptrProcStart, int* ptrArrProc, int length) { int i; proclist *ptr Proc-ptr ProcStart; for(i=0; i<length; i++) { if(ptr Proc != NULL) { ptr Proc->nxt=newprocList; ptr Proc ptrProc->nxt; ptrProc->startProc=(char*) malloc(*(ptrArrProc+i)); ptrProc->endProc-ptrProc->startProc + *(ptrArrProc+i); memset(ptrProc->startProc, 'a'+i,*(ptrArrProc+i)); ptrProc-jobStatus=0; ptrProc->pid=i; ptr Proc->nxt=NULL; } else { ptr Proc=newprocList; ptr Proc->startProc=(char*) malloc(*(ptrArrproc+i)); ptr Proc->endProc=ptrProc->startProc + *(ptrArrProc+i); memset(ptrProc->startProc, 'a'+i, *(ptrArrProc+i)); ptrProc->jobStatus=0; ptrProc->pid=i; ptrProc->nxt=NULL; ptr ProcStart=ptr Proc; } } return true; } boolinitAlloc (allocList*&ptrAllocstart, int *ptrArrAlloc, int length) { int i; alloclist *ptrAlloc=ptrAllocStart; for(i=0; i<length; i++) { if(ptrAlloc !=NULL)
cout<<"\n\nFirst Fit:\nMemory Block\tSize\t Job\tInternal " <<" Fragmentation\n"; int i=0; while(memory! =NULL) { i++; cout<<"\t"«<i<<"\t"<<memory->endAlloc-memory->startAlloc<<"\t" <<memory->fk_pid<<"\t" <<memory->endAlloc-memory->startAlloc-search(proc, memory->fk_pid-1) <<endl; memory=memory->nxt; } return ; } int search(proclist* job, int id) { int size; while( job!=NULL) { if(job->pid=wid) { size=(int)job->endProc-(int)job->startProc; break; ) job=job->nxt; return size; } intcmptFragmentation (procList* jobs, alloclist* mem) { alloclist *memtrav, *temp; proclist *jobtrav; jobtrav-jobs; memtrav=mem; int freespace=8, memsize, jobsize; int i=0; while(memtrav->nxt !=NULL) { if(memtrav->nxt->fk_pidur) { freespace+=(memtrav->nxt->endAlloc-memtrav->nxt->startAlloc); tempamemtrav->nxt; memtrav->nxt-memtrav->nxt->nxt; delete tempi } memtrav=memtrav->nxt; }
if(memtrav->fk_pid==0) { freespace+= (memtrav->endAlloc-memtrav->startAlloc); memtrav=memtrav->nxt; } memtrav=mem; while(memtrav!=NULL) { jobsize=search(jobs, memtrav->fk_pid-1); memsize=memtrav->endAlloc-memtrav->startAlloc; if(memtrav->fk_pid!=0) { memtrav->endAlloc=memtrav->startAlloc+jobsize; } freespace+=(memsize-jobsize); memtrav=memtrav->nxt; } memtrav=mem; while(memtrav!=NULL) { if(memtrav->nxt==NULL) { memtrav->nxt=newalloclist; memtrav=memtrav->nxt; memtrav->startAlloc=(char*)malloc(freespace); memtrav->endAlloc=memtrav->startAlloc+freespace; memset(memtrav->startAlloc, 0, freespace); memtrav->fk_pid=0; memtrav->nxt=NULL; break; } memtrav=memtrav->nxt; } memtrav=mem; cout<<endl<<endl<<"Defragmentation\nMemory <<"Block\tSize\tJob\tFreeSpace\n"; while(memtrav!=NULL) { i++; cout<<"\t"«<i<<"\t"<<memtrav->endAlloc-memtrav->startAlloc <<"\t"<<memtrav->fk_pid <<"\t"<<memtrav->endAlloc-memtrav->startAlloc- search(jobs,memtrav->fk_pid-1)<<endl; memtrav=memtrav->nxt; } while(jobtrav!=NULL) {
if(jobtrav->jobStatus==0) { doFirstFit(jobs, mem); cmptFragmentation (jobs, mem); } jobtrav=jobtrav->nxt; } return 0; } bool reset(proclist* jobs, alloclist* mem) { proclist* tempj-jobs;; alloclist* tempa=mem; while( jobs->nxt!=NULL) { jobs-jobs->nxt; free (tempj); tempj-jobs; } free(tempj); while(mem->nxt!=NULL) { mem=mem->nxt; free (tempa); tempa=mem; } free(tempa); return true; }