operating systems - memory management

90
Damian Gordon

Upload: damian-gordon

Post on 15-Jul-2015

247 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Operating Systems - Memory Management

Damian Gordon

Page 2: Operating Systems - Memory Management
Page 3: Operating Systems - Memory Management

HARD DISK

(MAIN

MEMORY)

(SECONDARY

MEMORY)

2

CACHE 1

Page 4: Operating Systems - Memory Management
Page 5: Operating Systems - Memory Management
Page 6: Operating Systems - Memory Management
Page 7: Operating Systems - Memory Management
Page 8: Operating Systems - Memory Management
Page 9: Operating Systems - Memory Management
Page 10: Operating Systems - Memory Management
Page 11: Operating Systems - Memory Management

HARD DISK

(MAIN

MEMORY)

(SECONDARY

MEMORY)

2

CACHE 1

Page 12: Operating Systems - Memory Management

HARD DISK

(MAIN

MEMORY)

(SECONDARY

MEMORY)

2

CACHE 1

101

Approximate number of clock cycles to access the various elements of the memory hierarchy.

Page 13: Operating Systems - Memory Management

HARD DISK

(MAIN

MEMORY)

(SECONDARY

MEMORY)

2

CACHE 1

101

103

Approximate number of clock cycles to access the various elements of the memory hierarchy.

Page 14: Operating Systems - Memory Management

HARD DISK

(MAIN

MEMORY)

(SECONDARY

MEMORY)

2

CACHE 1

101

103

107

Approximate number of clock cycles to access the various elements of the memory hierarchy.

Page 15: Operating Systems - Memory Management

Let’s consider an operating system model with a single user, and how they use memory.

Page 16: Operating Systems - Memory Management

MAINMEMORY

Page 17: Operating Systems - Memory Management

200Kavailable

MAINMEMORY

Page 18: Operating Systems - Memory Management

If I create a program:

200Kavailable

MAINMEMORY

Page 19: Operating Systems - Memory Management

If I create a program:

PROGRAM 1

200Kavailable

MAINMEMORY

Page 20: Operating Systems - Memory Management

If I create a program:

to be processed, it has

to be writen entirely into

Main Memory, in

contiguous space

PROGRAM 1

200Kavailable

MAINMEMORY

Page 21: Operating Systems - Memory Management

PROGRAM 1

200Kavailable

MAINMEMORY

Page 22: Operating Systems - Memory Management

If the program is bigger:

PROGRAM 1

200Kavailable

MAINMEMORY

Page 23: Operating Systems - Memory Management

If it doesn’t fit in the

memory, it’s can’t be

processed.

200Kavailable

MAINMEMORY

Page 24: Operating Systems - Memory Management

This is the limitation of all computers, if a program is too big, we have to do one of two things:

1. Get more memory

2. Make the program smaller

Page 25: Operating Systems - Memory Management

Store first location of program in the base register

(for memory protection);

Set Program Counter to the first memory location;

Read first instruction of program;

WHILE (last instruction reached OR Program Counter is

greater than Memory Size)

DO Increment the Program Counter;

IF (last instruction reached)

THEN Stop Loading Program;

END IF;

IF (Program Counter is greater than Memory Size)

THEN Stop Loading Program;

END IF;

Load instruction into memory;

Read next instruction of program;

END WHILE;

Page 26: Operating Systems - Memory Management

To allow more than one program to run at the same time, the memory is subdivided into FIXED PARTITIONS.

Page 27: Operating Systems - Memory Management

MAINMEMORY

250K

Page 28: Operating Systems - Memory Management

PARTITION 1

PARTITION 2

PARTITION 3

PARTITION 4

PARTITION 5

250K

100K

25K

25K

50K

50K

Page 29: Operating Systems - Memory Management

This leaves us with less memory, but at least more than one user (and their user process) can be logged into the system at the same time.

If we want to adjust the size of the partitions we need to shut down the system, go into the boot login, and then restart.

Page 30: Operating Systems - Memory Management

WHILE (there are still jobs in the queue)

DO Determine the job’s requested memory size;

IF Job size > Size of Largest Partition

THEN Reject the Job;

PRINT “Job Rejected: Not Enough Memory”;

Exit; /* this iteration and get next job */

END IF;

MyCounter := 1;

WHILE (MyCounter <= Number of Partitions in Memory)

DO IF (Job Size > Memory_Partition[Counter].Size

THEN MyCounter := MyCounter + 1;

ELSE IF (Memory_Partition[Counter].Status == “FREE”;

THEN Load job into Memory_Partition[Counter];

Memory_Partition[Counter].Status := “BUSY”;

Exit; /* this iteration and get next job */

ELSE MyCounter := MyCounter + 1;

END IF;

END WHILE;

No partition available;

put job in waiting queue;

END WHILE;

Page 31: Operating Systems - Memory Management

To make this work, the Memory manager needs to keep a Partition Table to remember the status of all the partitions.

Page 32: Operating Systems - Memory Management

To make this work, the Memory manager needs to keep a Partition Table to remember the status of all the partitions.

Partition Number

Partition Size

MemoryAddress Access

PartitionStatus

1 100K 200K Job1 BUSY

2 25K 300K Job4 BUSY

3 25K 325K FREE

4 50K 350K Job2 BUSY

5 50K 400K FREE

Page 33: Operating Systems - Memory Management

Which looks like this in memory:

Page 34: Operating Systems - Memory Management

Which looks like this in memory:

PARTITION 1

PARTITION 2

PARTITION 3

PARTITION 4

PARTITION 5

250K

100K

25K

25K

50K

50K

Page 35: Operating Systems - Memory Management

Let’s add some jobs in:

Page 36: Operating Systems - Memory Management

Let’s add some jobs in:

PARTITION 1

PARTITION 2

PARTITION 3

PARTITION 4

PARTITION 5

100K

25K

25K

50K

50K

250K

Page 37: Operating Systems - Memory Management

Let’s add some jobs in:

PARTITION 1

PARTITION 2

PARTITION 3

PARTITION 4

PARTITION 5

100K

25K

25K

50K

50K

PROGRAM 1

250K

Page 38: Operating Systems - Memory Management

Let’s add some jobs in:

PARTITION 1

PARTITION 2

PARTITION 3

PARTITION 4

PARTITION 5

100K

25K

25K

50K

50K

PROGRAM 1

PROGRAM 2250K

Page 39: Operating Systems - Memory Management

Let’s add some jobs in:

PARTITION 1

PARTITION 2

PARTITION 3

PARTITION 4

PARTITION 5

100K

25K

25K

50K

50K

PROGRAM 1

PROGRAM 2250K

PROGRAM 3

Page 40: Operating Systems - Memory Management

Let’s add some jobs in:

PARTITION 1

PARTITION 2

PARTITION 3

PARTITION 4

PARTITION 5

100K

25K

25K

50K

50K

PROGRAM 1

PROGRAM 2

PROGRAM 3

250K

INTERNAL FRAGMENTATION

Page 41: Operating Systems - Memory Management

Let’s add some jobs in:

PARTITION 1

PARTITION 2

PARTITION 3

PARTITION 4

PARTITION 5

100K

25K

25K

50K

50K

PROGRAM 1

PROGRAM 2

PROGRAM 3

250K

INTERNAL FRAGMENTATION

INTERNAL FRAGMENTATION

Page 42: Operating Systems - Memory Management

Let’s add some jobs in:

PARTITION 1

PARTITION 2

PARTITION 3

PARTITION 4

PARTITION 5

100K

25K

25K

50K

50K

PROGRAM 1

PROGRAM 2

PROGRAM 3

250K

INTERNAL FRAGMENTATION

INTERNAL FRAGMENTATION

EMPTY PARTITION

Page 43: Operating Systems - Memory Management

Let’s add some jobs in:

PARTITION 1

PARTITION 2

PARTITION 3

PARTITION 4

PARTITION 5

100K

25K

25K

50K

50K

PROGRAM 1

PROGRAM 2

PROGRAM 3

250K

INTERNAL FRAGMENTATION

INTERNAL FRAGMENTATION

EMPTY PARTITION

EMPTY PARTITION

Page 44: Operating Systems - Memory Management

Selecting the correct set of partition sizes is a tricky business, too small and larger jobs will be waiting forever to run, too big and there is a lot of wasted space.

Page 45: Operating Systems - Memory Management

An alternative is DYNAMIC PARTITIONS, where a job is given the space it requests, if there is space available for it.

This takes care of lots of problems.

Page 46: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

250K

Page 47: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

250K

PROGRAM 1

Page 48: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

PROGRAM 1

250K

Page 49: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

PROGRAM 1

PROGRAM 2

250K

Page 50: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

PROGRAM 1

PROGRAM 2

250K

Page 51: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

PROGRAM 1

PROGRAM 2

PROGRAM 3

250K

Page 52: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

PROGRAM 1

PROGRAM 2

PROGRAM 3250K

Page 53: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

PROGRAM 1

PROGRAM 2

PROGRAM 3250KPROGRAM 4

Page 54: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

PROGRAM 1

PROGRAM 2

PROGRAM 3250K

PROGRAM 4

Page 55: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

PROGRAM 1

PROGRAM 2

250K

PROGRAM 4

PROGRAM 5

PROGRAM 3

Page 56: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

PROGRAM 1

PROGRAM 2

250K

PROGRAM 4

PROGRAM 5

PROGRAM 3

Page 57: Operating Systems - Memory Management

It isn’t perfect, because the next program will go into the slot that is freed up by a completed job.

Page 58: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

PROGRAM 1

PROGRAM 2

250K

PROGRAM 4

PROGRAM 5

PROGRAM 3

Page 59: Operating Systems - Memory Management

Let’s add some jobs in:

MAINMEMORY

PROGRAM 1

PROGRAM 2

250K

PROGRAM 4

PROGRAM 5

PROGRAM 3

Page 60: Operating Systems - Memory Management

Let’s add some jobs in: PROGRAM 1

PROGRAM 2

250K

PROGRAM 4

PROGRAM 5

Page 61: Operating Systems - Memory Management

Let’s add some jobs in: PROGRAM 1

PROGRAM 2

250K

PROGRAM 4

PROGRAM 5

Page 62: Operating Systems - Memory Management

Let’s add some jobs in: PROGRAM 1

PROGRAM 2

250K

PROGRAM 4

PROGRAM 5

EXTERNAL FRAGMENTATION

Page 63: Operating Systems - Memory Management

So however we partition, we end up with fragmentation, one way or the other.

Page 64: Operating Systems - Memory Management

PROGRAM 1

PROGRAM 2

250K

PROGRAM 4

PROGRAM 5

PROGRAM 3

Page 65: Operating Systems - Memory Management

PROGRAM 1

PROGRAM 2

250K

PROGRAM 4

PROGRAM 5

So how do we decide where to slot in a new job?

PROGRAM 3

Page 66: Operating Systems - Memory Management

So how do we decide where to slot in a new job?

PROGRAM 1

PROGRAM 2

PROGRAM 3 250K

PROGRAM 4

PROGRAM 5

PROGRAM 6

Page 67: Operating Systems - Memory Management

Here is the first slot free

PROGRAM 1

PROGRAM 2

PROGRAM 3 250K

PROGRAM 4

PROGRAM 5

PROGRAM 6

Page 68: Operating Systems - Memory Management

Here is the first slot free

PROGRAM 1

PROGRAM 2

PROGRAM 3 250K

PROGRAM 4

PROGRAM 5

PROGRAM 6

Page 69: Operating Systems - Memory Management

But here’s a better fitPROGRAM 1

PROGRAM 2

PROGRAM 3 250K

PROGRAM 4

PROGRAM 5

PROGRAM 6

Page 70: Operating Systems - Memory Management

But here’s a better fitPROGRAM 1

PROGRAM 2

PROGRAM 3 250K

PROGRAM 4

PROGRAM 5

PROGRAM 6

Page 71: Operating Systems - Memory Management

So we can either add the new block to the first available slot (FIRST-FIT ALGORITHM) or we can add the new block to the most suitable available slot (BEST-FIT ALGORITHM).

Page 72: Operating Systems - Memory Management

If the Memory Manager wants a FIRST-FIT ALGORITHM then it stores a table in order of memory locations.

If the Memory Manager wants a BEST-FIT ALGORITHM then it stores a table in order of size of memory locations.

Starts Size Status

200 50 BUSY

250 50 FREE

300 15 BUSY

315 40 FREE

355 25 BUSY

Starts Size Status

315 40 FREE

250 50 FREE

300 15 BUSY

355 25 BUSY

315 40 BUSY

Starts Size Status

Page 73: Operating Systems - Memory Management

After a job is completed, there are three cases for deallocating space in memory:

Page 74: Operating Systems - Memory Management

1. There are jobs either side of the freed space:

PROGRAM 3

PROGRAM 4

PROGRAM 6

PROGRAM 3

PROGRAM 4

PROGRAM 5 PROGRAM 5

PROGRAM 8 PROGRAM 8

Page 75: Operating Systems - Memory Management

2. There are is a job on one side, and it’s free on the other side of the freed space:

PROGRAM 3

PROGRAM 6

PROGRAM 3

PROGRAM 5 PROGRAM 5

PROGRAM 8 PROGRAM 8

Page 76: Operating Systems - Memory Management

3. There are no jobs on either side of the freed space:

PROGRAM 6

PROGRAM 5 PROGRAM 5

PROGRAM 8 PROGRAM 8

Page 77: Operating Systems - Memory Management

Let’s look at the implications of each of these cases in terms of what the Memory Manager has to do to remember the FREE and BUSY memory spaces.

Page 78: Operating Systems - Memory Management

1. There are jobs either side of the freed space:

PROGRAM 3

PROGRAM 4

PROGRAM 6

PROGRAM 3

PROGRAM 4

PROGRAM 5 PROGRAM 5

PROGRAM 8 PROGRAM 8

Page 79: Operating Systems - Memory Management

1. There are jobs either side of the freed space:

PROGRAM 3

PROGRAM 4

PROGRAM 6

PROGRAM 3

PROGRAM 4

PROGRAM 5 PROGRAM 5

PROGRAM 8 PROGRAM 8

250-300

315-340

300-315

200-250

355-380

340-355

250-300

315-340

300-315

200-250

355-380

340-355

Page 80: Operating Systems - Memory Management

1. There are jobs either side of the freed space:

250-300

315-340

300-315

200-250

355-380

340-355

250-300

315-340

300-315

200-250

355-380

340-355

Starts Size Status

200 50 BUSY

250 50 BUSY

300 15 BUSY

315 25 BUSY

340 15 FREE

355 25 BUSY

Starts Size Status

200 50 BUSY

250 50 BUSY

300 15 FREE

315 25 BUSY

340 15 FREE

355 25 BUSY

Page 81: Operating Systems - Memory Management

2. There are is a job on one side, and it’s free on the other side of the freed space:

PROGRAM 3

PROGRAM 6

PROGRAM 3

PROGRAM 5 PROGRAM 5

PROGRAM 8 PROGRAM 8

Page 82: Operating Systems - Memory Management

2. There are is a job on one side, and it’s free on the other side of the freed space:

PROGRAM 3

PROGRAM 6

PROGRAM 3

PROGRAM 5 PROGRAM 5

PROGRAM 8 PROGRAM 8

250-300

300-315

200-250

355-380

315-355

250-300

200-250

355-380

300-355

Page 83: Operating Systems - Memory Management

2. There are is a job on one side, and it’s free on the other side of the freed space:

250-300

300-315

200-250

355-380

315-355

250-300

200-250

355-380

300-355

Starts Size Status

200 50 BUSY

250 50 BUSY

300 15 BUSY

315 40 FREE

355 25 BUSY

Starts Size Status

200 50 BUSY

250 50 BUSY

300 15 FREE

315 40 FREE

355 25 BUSY

Page 84: Operating Systems - Memory Management

2. There are is a job on one side, and it’s free on the other side of the freed space:

Starts Size Status

200 50 BUSY

250 50 BUSY

300 15 BUSY

315 40 FREE

355 25 BUSY

Starts Size Status

200 50 BUSY

250 50 BUSY

300 15 FREE

315 40 FREE

355 25 BUSY

Page 85: Operating Systems - Memory Management

2. There are is a job on one side, and it’s free on the other side of the freed space:

Starts Size Status

200 50 BUSY

250 50 BUSY

300 15 BUSY

315 40 FREE

355 25 BUSY

Starts Size Status

200 50 BUSY

250 50 BUSY

300 15 FREE

315 40 FREE

355 25 BUSY

Starts Size Status

200 50 BUSY

250 50 BUSY

300 55 FREE

355 25 BUSY

Page 86: Operating Systems - Memory Management

3. There are no jobs on either side of the freed space:

PROGRAM 6

PROGRAM 5 PROGRAM 5

PROGRAM 8 PROGRAM 8

Page 87: Operating Systems - Memory Management

3. There are no jobs on either side of the freed space:

PROGRAM 6

PROGRAM 5 PROGRAM 5

PROGRAM 8 PROGRAM 8

250-300

300-315

200-250

355-380

315-355

250-355

200-250

355-380

Page 88: Operating Systems - Memory Management

3. There are no jobs on either side of the freed space:

250-300

300-315

200-250

355-380

315-355

250-355

200-250

355-380

Starts Size Status

200 50 BUSY

250 50 FREE

300 15 BUSY

315 40 FREE

355 25 BUSY

Starts Size Status

200 50 BUSY

250 50 FREE

300 15 FREE

315 40 FREE

355 25 BUSY

Page 89: Operating Systems - Memory Management

3. There are no jobs on either side of the freed space:

Starts Size Status

200 50 BUSY

250 50 FREE

300 15 BUSY

315 40 FREE

355 25 BUSY

Starts Size Status

200 50 BUSY

250 50 FREE

300 15 FREE

315 40 FREE

355 25 BUSY

Page 90: Operating Systems - Memory Management

3. There are no jobs on either side of the freed space:

Starts Size Status

200 50 BUSY

250 50 FREE

300 15 BUSY

315 40 FREE

355 25 BUSY

Starts Size Status

200 50 BUSY

250 50 FREE

300 15 FREE

315 40 FREE

355 25 BUSY

Starts Size Status

200 50 BUSY

250 105 FREE

355 25 BUSY