16.05.2015 Views

Working with the Unix OS

Working with the Unix OS

Working with the Unix OS

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Process Scheduling<br />

Memory Management Policies<br />

! swapping - transfer entire processes between primary and secondary memory<br />

! demand paging - transfer memory pages<br />

- entire process does not have to reside in main memory<br />

- allows process to be greater than physical memory<br />

- more processes to fit simultaneously in memory<br />

! swapping<br />

- managing space on swap device<br />

- swapping processes out of main memory<br />

- swapping processes into main memory<br />

! Managing Swap Space<br />

The kernel maintains free space for <strong>the</strong><br />

swap device in an in-core table, called a<br />

map.<br />

Figure 56. Algorithm for Allocating Space<br />

from Maps<br />

algorithm malloc /* algorithm to allocate map space */<br />

input: (1) map address /* indicates which map to use */<br />

(2) requested number of units<br />

output: address, if successful<br />

0, o<strong>the</strong>rwise<br />

{<br />

for (every map entry)<br />

{<br />

if (current map entry can fit requested units)<br />

{<br />

if (requested units == number of units in entry)<br />

delete entry from map;<br />

else<br />

adjust start address of entry;<br />

return (original address of entry);<br />

}<br />

}<br />

return(0);<br />

}<br />

Initial Swap Map Address Units<br />

1 10000<br />

allocate 100 101 9900<br />

allocate50 151 9850<br />

allocate 100 251 9750<br />

free 50 @ 101 101 50<br />

251 9750<br />

free 100 @ 1 1 150<br />

251 9750<br />

allocate 200 1 150<br />

451 9550<br />

- freed resource completely fill a hole in <strong>the</strong> map<br />

- freed resource partially fill a hole in <strong>the</strong> map<br />

- freed resource partially fill a hole but are not contiguous to any resources in <strong>the</strong> map<br />

! Swapping Process Out<br />

- fork system call must allocate space for child process<br />

- brk system call increase <strong>the</strong> size of a process<br />

- process becomes larger as stack grows<br />

- kernel wants free space to swap in a process<br />

176

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!