"Kristiaan Maree" <24*1*7*
3@s*u*e*t*u*a*e*u*a*> wrote:
> Hi,
> if we load the page frames in sorted by page num the memory looks like this:
>
> process 1: 0,1,2,3
> process 2: 4,5,6,7
> process 3: 99,99,99,99
> process 4: 99,99,99,99
>
>
> RAM: 0,1,2,3,4,5,6,7
> DISK: 99,99,99,99,99,99,99
>
> but if we get the instruction '3' there is no process 3 in main memory to swap to,
>
> instead are we supposed to put in 2 each to avoid this?
>
> e.g.
> process 1: 0,1,99,99
> process 2: 2,3,99,99
> process 3: 4,5,99,99
> process 4: 6,7,99,99
>
> RAM: 0,1,2,3,4,5,6,7
> DISK: 99,99,99,99,99,99,99,99
>
> so now instruction 3 changes it to
>
> RAM: 0,1,2,99,4,5,6,7
> DISK: 99,99,99,99,99,99,3,99
>
> or is there a better way?
I'm not sure what your question is about. Are you asking what happens if RAM is full and we are bringing in another process which isn't in RAM?
In that case you would evict the page of *any process* with the lowest "last_accessed" time.
Also, not sure what your RAM and DISK variable represent. Both RAM and DISK should only contain pointers to structures. You should only put 99 in the page table (to show that a page of a process isn't in RAM), it shouldn't appear in RAM or DISK.
We do not modify virtual memory in any way. We assume all pages are always in virtual memory regardless if they are currently in RAM or not. We only ever change the contents RAM and the page table.