Memory Management, Early Systems
• Single-User Contiguous
Scheme
• Fixed Partitions
• Dynamic Partitions
• Deallocation
• Relocatable Dynamic
Partitions
• Conclusion
Single User Configurations
Fixed Partitions
Dynamic Partitions
Relocatable Dynamic Partitions
1
2
Single-User Contiguous Scheme
• Each program loaded in its entirety into memory and
allocated as much contiguous memory space as needed.
• If program was too large -- it couldn’t be executed.
• Minimal amount of work done by Memory Manager.
• Hardware needed : 1) register to store base address;
2) accumulator to track size of program as it is loaded into
memory.
3
Algorithm to Load a Job
in a Single-user System
1. Store first memory location of program into base register
2. Set program counter equal to address of first memory location
3. Load instructions of program
4. Increment program counter by number of bytes in instructions
5. Has the last instruction been reached?
If yes, then stop loading program
If no, then continue with step 6
6. Is program counter greater than memory size?
If yes, then stop loading.
If no, then continue with step 7
7. Load instruction in memory
8. Go to step 3.
4
Fixed (Static) Partitions
• Attempt at multiprogramming using fixed partitions
– one partition for each job
– size of partition designated by reconfiguring the system
– partitions can’t be too small or too large.
• Critical to protect job’s memory space.
• Entire program stored contiguously in memory during
entire execution.
• Internal fragmentation is a problem.
Algorithm to Load a Job in a
Fixed Partition
5
1. Determine job’s requested memory
size
2. If job_size > size of largest
partition then reject job
Print appropriate message
Go to step 1 to handle next job
Else continue with step 3
3. Set counter to 1
4. Do while counter <= number of
partitions in memory
If job_size > mem_partition_size
(counter)
then counter = counter + 1
Else
If mem_partition_status (counter) = “free”
then load job into mem_partition(counter)
change mem_partition_status(counter)
to “busy”
go to step 1
Else counter = counter + 1
End do
5. No partition available at this time, put job
in waiting queue
6. Go to step 1
6
Simplified Fixed Partition
Memory Table (Table 2.1)
Partition
size
Memory
address
Access Partition
status
100K 200K Job 1 Busy
25K 300K Job 4 Busy
25K 325K Free
50K 350K Job 2 Busy
Original State
100K
Partition 1
25K
Partition 2
Partition 3 25K
Partition 4
50K
Job List :
J1
J2
J3
J4
30K
50K
30K
25K
Job 1 (30K)
Job 4 (25K)
Job 2 (50K)
7
After Job Entry
Partition 1
Partition 2
Partition 3
Partition 4
Table 2.1 : Main memory use during
fixed partition allocation of Table 2.1.
Job 3 must wait.
8
Dynamic Partitions
• Available memory kept in contiguous blocks and jobs
given only as much memory as they request when loaded.
• Improves memory use over fixed partitions.
• Performance deteriorates as new jobs enter the system
– fragments of free memory are created between blocks
of allocated memory (external fragmentation).
Dynamic Partitioning of Main Memory &
Fragmentation (Figure 2.2)
9
10
Dynamic Partition Allocation Schemes
• First-fit: Allocate the first partition that is big enough.
– Keep free/busy lists organized by memory location (low-
order to high-order).
– Faster in making the allocation.
• Best-fit: Allocate the smallest partition that is big enough
– Keep free/busy lists ordered by size (smallest to largest).
– Produces the smallest leftover partition.
– Makes best use of memory.
First-Fit Allocation Example
(Table 2.2)
Job List J1
J2
J3
J4
10K
20K
30K*
10K
Memory
location
Memory Job
block size number
Job
size Status
Internal
fragmentation
10240 30K J1 10K Busy 20K
40960 15K J4 10K Busy 5K
56320 50K J2 20K Busy 30K
107520 20K Free
Total Available: 115K Total Used: 40K
11
Best-Fit Allocation Example
(Table 2.3)
Job List J1
J2
J3
J4
10K
20K
30K
10K
Memory
location
Memory Job
block size number
Job
size Status
Internal
fragmentation
40960 15K J1 10K Busy 5K
107520 20K J2 20K Busy None
10240 30K J3 30K Busy None
56230 50K J4 10K Busy 40K
Total Available: 115K Total Used: 70K
12
13
First-Fit Algorithm
1. Set counter to 1
2. Do while counter <= number of blocks in memory
If job_size > memory_size(counter)
then counter = counter + 1
else
load job into memory_size(counter)
adjust free/busy memory lists
go to step 4
End do
3. Put job in waiting queue
4. Go fetch next job
First-Fit Memory Request (Table 2.4)
Before request After request
Beginning Memory Beginning Memory
address block size address block size
4075 105 4075 105
5225 5 5225 5
6785 600 *6985 400
7560 20 7560 20
7600 205 7600 205
10250 4050 10250 4050
15125 230 15125 230
24500 1000 24500 1000
14
15
Best-Fit Algorithm
If initial_mem_waste > mem_waste
Then subscript = counter
initial_mem_waste = mem_waste
counter = counter + 1
End do
6. If subscript = 0
Then put job in waiting queue
Else
load job into mem_size(subscript)
adjust free/busy memory lists
7. Go fetch next job
1. Initialize mem_block(0) = 99999
2. Compute initial_mem_waste =
memory_block(0) – job_size
3. Initialize subscript = 0
4. Set counter to 1
5. Do while counter <= number of
blocks in memory
If job_size > mem_size(counter)
Then counter = counter + 1 Else
mem_waste = mem_size(counter) –
job_size
Best-Fit Memory Request (Table 2.5)
Before request After request
Beginning Memory Beginning Memory
address block size address block size
4075 105 4075 105
5225 5 5225 5
6785 600 6785 600
7560 20 7560 20
7600 205 *7800 5
10250 4050 10250 4050
15125 230 15125 230
24500 1000 24500 1000
16
17
Best-Fit vs. First-Fit
• Increases memory use
• Memory allocation takes
more time
• Reduces internal
fragmentation
First-Fit Best-Fit
• More complex algorithm
• Searches entire table
before allocating memory
• Results in a smaller “free”
space (sliver)
18
Release of Memory Space :
Deallocation
• Deallocation for fixed partitions is simple
– Memory Manager resets status of memory block to
“free”.
• Deallocation for dynamic partitions tries to combine free
areas of memory whenever possible
– Is the block adjacent to another free block?
– Is the block between 2 free blocks?
– Is the block isolated from other free blocks?
19
Algorithm to Deallocate
Memory Blocks
If job_location is adjacent to 1+ free
blocks
Then
If job_location is between 2 free
blocks
Then merge all 3 blocks into 1
block
mem_size(counter-1) =
mem_size(counter-1) + job_size
+ mem_size(counter+1)
Set status of mem_size(counter+1)
to null entry
Else
merge both blocks into one
mem_size(counter-1) =
mem_size(counter-1) + job_size
Else
search for null entry in free memory
list
enter job_size and beginning_address
in entry slot
set its status to “free”
20
Case 1: Joining 2 Free Blocks
Before Deallocation After Deallocation
Beginning
address
4075
Memory
block size
105
Status
Free
Beginning
address
4075
Memory
block size
105
Status
Free
5225 5 Free 5225 5 Free
6785 600 Free 6785 600 Free
7560 20 Free 7560 20 Free
(7600) (200) (Busy)1
*7600 205 Free
*7800 5 Free 10250 4050 Free
10250 4050 Free 15125 230 Free
15125 230 Free 24500 1000 Free
24500 1000 Free
21
Case 2: Joining 3 Free Blocks
Before Deallocation After Deallocation
Beginning
address
4075
Memory
block size
105
Status
Free
Beginning
address
4075
Memory
block size
105
Status
Free
5225 5 Free 5225 5 Free
6785 600 Free 6785 600 Free
7560 20 Free 7560 245 Free
(7600) (200) (Busy)1
* (null)
*7800 5 Free 10250 4050 Free
10250 4050 Free 15125 230 Free
15125 230 Free 24500 1000 Free
24500 1000 Free
22
Case 3: Deallocating an Isolated Block
Busy List Before Busy List After
Beginning
address
7805
Memory
block size
1000
Status
Busy
Beginning
address
7805
Memory
block size
1000
Status
Busy
*8805 445 Busy * (null entry)
9250 1000 Busy 9250 1000 Busy
23
Relocatable Dynamic Partitions
• Memory Manager relocates programs to gather all empty
blocks and compact them to make 1 memory block.
• Memory compaction (garbage collection, defragmentation)
performed by OS to reclaim fragmented sections of
memory space.
• Memory Manager optimizes use of memory & improves
throughput by compacting & relocating.
24
Compaction Steps
• Relocate every program in memory so they’re contiguous.
• Adjust every address, and every reference to an address,
within each program to account for program’s new
location in memory.
• Must leave alone all other values within the program (e.g.,
data values).
25
Original Assembly Language Program
(Figure 2.4)
A: EXP 132, 144, 125, 110 ;the data values
BEGIN: MOVEI 1,0 ;initialize register 1
MOVEI 2,0 ;initialize register 2
LOOP: ADD 2,A(1) ;add (A + reg 1) to reg 2
ADDI 1,1 ;add 1 to reg 1
CAIG 1,4-1 ;is reg 1 > 4-1?
JUMPA LOOP ;if not, go to Loop
MOVE 3,2 ;if so, move reg 2 to reg 3
IDIVI 3,4 ;divide reg 3 by 4,
;remainder to register 4
EXIT ;end
END
26
Assembly Language Program Loaded
into Memory (Figure 2.4)
000000’ 000000 000132 A: EXP 132,144,125,110
000001’ 000000 000144
000002’ 000000 000125
000003’ 000000 000110
000004’ 201 01 0 00 000000 BEGIN: MOVEI 1,0
000005’ 201 02 0 00 000000 MOVEI 2,0
000006’ 270 02 0 01 000000’ LOOP: ADD 2,A(1)
000007’ 271 01 0 00 000001 ADDI 1,1
000008’ 307 01 0 00 000003 CAIG 1,4-1
000009’ 324 00 0 00 000006’ JUMPA LOOP
000010’ 200 03 0 00 000002 MOVE 3,2
000011’ 231 03 0 00 000004 IDIVI 3,4
000012’ 047 00 0 00 000012 EXIT
000000 END
27
Program in Memory During
Compaction & Relocation
• Free list & busy list are updated
– free list shows partition for new block of free memory
– busy list shows new locations for all relocated jobs
• Bounds register stores highest location in memory
accessible by each program.
• Relocation register contains value that must be added to
each address referenced in program so it can access correct
memory addresses after relocation.
Memory Before & After Compaction
(Figure 2.5)
28
Contents of relocation register & close-up of Job 4
memory area (a) before relocation & (b) after relocation
and compaction (Figure 2.6)
29
30
More Overhead is a Problem with
Compaction & Relocation
• Timing of compaction (when, how often) is crucial.
• Approaches to timing of compaction:
1. Compact when certain percentage of memory is busy
(e.g., 75%).
2. Compact only when jobs are waiting.
3. Compact after certain amount of time.
31
Key Terms
• address
• best-fit memory allocation
• bounds register
• compaction
• deallocation
• dynamic partitions
• external fragmentation
• first come first served
• first-fit memory allocation
• fixed partitions
• internal fragmentation
• K
• multiprogramming
• relocatable dynamic
partitions
• relocation
• relocation register

More Related Content

PPT
Top down design
PDF
DCA- Basic Fundamental, My computer, Desktop, History of computer
PPT
The structure of process
PPTX
Block diagram of motherboard
PPTX
Google meeting APP
PPTX
Presentation1
PDF
Computers: Questions & Answers Theory
PDF
Asp.Net Abbreviations
Top down design
DCA- Basic Fundamental, My computer, Desktop, History of computer
The structure of process
Block diagram of motherboard
Google meeting APP
Presentation1
Computers: Questions & Answers Theory
Asp.Net Abbreviations

Similar to memory-management-early-systems in BS INFORMATION TECHNOLOGY (20)

PPTX
synchronization in operating system structure
PPTX
Lecture 8.pptx Operating system lecture
PDF
CH05.pdf
PPT
Process synchronization(deepa)
PPT
Lecture16-17.ppt
PPTX
Operating System Engineering
PPT
Ch7 OS
 
PPTX
Operating Systems - Memory Management
PDF
22CS201 COA
PPTX
Chapter 5 - Operating Synchronization.pptx
PPT
Operating System
PPTX
Lecture 5- Process Synchronization (1).pptx
PDF
Slides for OS 06-Sync.pdf
PPTX
Mutual Exclusion using Peterson's Algorithm
PPT
PDF
Lecture 5- Process Synchonization_revised.pdf
PDF
chapter2-OS.pdf
PPTX
data structures and algorithms Unit 4
PPTX
Memory Management
synchronization in operating system structure
Lecture 8.pptx Operating system lecture
CH05.pdf
Process synchronization(deepa)
Lecture16-17.ppt
Operating System Engineering
Ch7 OS
 
Operating Systems - Memory Management
22CS201 COA
Chapter 5 - Operating Synchronization.pptx
Operating System
Lecture 5- Process Synchronization (1).pptx
Slides for OS 06-Sync.pdf
Mutual Exclusion using Peterson's Algorithm
Lecture 5- Process Synchonization_revised.pdf
chapter2-OS.pdf
data structures and algorithms Unit 4
Memory Management
Ad

Recently uploaded (20)

PPT
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
PDF
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PDF
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
PDF
1 - Historical Antecedents, Social Consideration.pdf
DOCX
search engine optimization ppt fir known well about this
PDF
Architecture types and enterprise applications.pdf
PPTX
Custom Battery Pack Design Considerations for Performance and Safety
PDF
STKI Israel Market Study 2025 version august
PDF
Credit Without Borders: AI and Financial Inclusion in Bangladesh
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PDF
A review of recent deep learning applications in wood surface defect identifi...
PPTX
Microsoft Excel 365/2024 Beginner's training
PPT
What is a Computer? Input Devices /output devices
PPTX
Chapter 5: Probability Theory and Statistics
PDF
The influence of sentiment analysis in enhancing early warning system model f...
PDF
Getting started with AI Agents and Multi-Agent Systems
PPTX
AI IN MARKETING- PRESENTED BY ANWAR KABIR 1st June 2025.pptx
PDF
A proposed approach for plagiarism detection in Myanmar Unicode text
PDF
Abstractive summarization using multilingual text-to-text transfer transforme...
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
1 - Historical Antecedents, Social Consideration.pdf
search engine optimization ppt fir known well about this
Architecture types and enterprise applications.pdf
Custom Battery Pack Design Considerations for Performance and Safety
STKI Israel Market Study 2025 version august
Credit Without Borders: AI and Financial Inclusion in Bangladesh
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
A review of recent deep learning applications in wood surface defect identifi...
Microsoft Excel 365/2024 Beginner's training
What is a Computer? Input Devices /output devices
Chapter 5: Probability Theory and Statistics
The influence of sentiment analysis in enhancing early warning system model f...
Getting started with AI Agents and Multi-Agent Systems
AI IN MARKETING- PRESENTED BY ANWAR KABIR 1st June 2025.pptx
A proposed approach for plagiarism detection in Myanmar Unicode text
Abstractive summarization using multilingual text-to-text transfer transforme...
Ad

memory-management-early-systems in BS INFORMATION TECHNOLOGY

  • 1. Memory Management, Early Systems • Single-User Contiguous Scheme • Fixed Partitions • Dynamic Partitions • Deallocation • Relocatable Dynamic Partitions • Conclusion Single User Configurations Fixed Partitions Dynamic Partitions Relocatable Dynamic Partitions 1
  • 2. 2 Single-User Contiguous Scheme • Each program loaded in its entirety into memory and allocated as much contiguous memory space as needed. • If program was too large -- it couldn’t be executed. • Minimal amount of work done by Memory Manager. • Hardware needed : 1) register to store base address; 2) accumulator to track size of program as it is loaded into memory.
  • 3. 3 Algorithm to Load a Job in a Single-user System 1. Store first memory location of program into base register 2. Set program counter equal to address of first memory location 3. Load instructions of program 4. Increment program counter by number of bytes in instructions 5. Has the last instruction been reached? If yes, then stop loading program If no, then continue with step 6 6. Is program counter greater than memory size? If yes, then stop loading. If no, then continue with step 7 7. Load instruction in memory 8. Go to step 3.
  • 4. 4 Fixed (Static) Partitions • Attempt at multiprogramming using fixed partitions – one partition for each job – size of partition designated by reconfiguring the system – partitions can’t be too small or too large. • Critical to protect job’s memory space. • Entire program stored contiguously in memory during entire execution. • Internal fragmentation is a problem.
  • 5. Algorithm to Load a Job in a Fixed Partition 5 1. Determine job’s requested memory size 2. If job_size > size of largest partition then reject job Print appropriate message Go to step 1 to handle next job Else continue with step 3 3. Set counter to 1 4. Do while counter <= number of partitions in memory If job_size > mem_partition_size (counter) then counter = counter + 1 Else If mem_partition_status (counter) = “free” then load job into mem_partition(counter) change mem_partition_status(counter) to “busy” go to step 1 Else counter = counter + 1 End do 5. No partition available at this time, put job in waiting queue 6. Go to step 1
  • 6. 6 Simplified Fixed Partition Memory Table (Table 2.1) Partition size Memory address Access Partition status 100K 200K Job 1 Busy 25K 300K Job 4 Busy 25K 325K Free 50K 350K Job 2 Busy
  • 7. Original State 100K Partition 1 25K Partition 2 Partition 3 25K Partition 4 50K Job List : J1 J2 J3 J4 30K 50K 30K 25K Job 1 (30K) Job 4 (25K) Job 2 (50K) 7 After Job Entry Partition 1 Partition 2 Partition 3 Partition 4 Table 2.1 : Main memory use during fixed partition allocation of Table 2.1. Job 3 must wait.
  • 8. 8 Dynamic Partitions • Available memory kept in contiguous blocks and jobs given only as much memory as they request when loaded. • Improves memory use over fixed partitions. • Performance deteriorates as new jobs enter the system – fragments of free memory are created between blocks of allocated memory (external fragmentation).
  • 9. Dynamic Partitioning of Main Memory & Fragmentation (Figure 2.2) 9
  • 10. 10 Dynamic Partition Allocation Schemes • First-fit: Allocate the first partition that is big enough. – Keep free/busy lists organized by memory location (low- order to high-order). – Faster in making the allocation. • Best-fit: Allocate the smallest partition that is big enough – Keep free/busy lists ordered by size (smallest to largest). – Produces the smallest leftover partition. – Makes best use of memory.
  • 11. First-Fit Allocation Example (Table 2.2) Job List J1 J2 J3 J4 10K 20K 30K* 10K Memory location Memory Job block size number Job size Status Internal fragmentation 10240 30K J1 10K Busy 20K 40960 15K J4 10K Busy 5K 56320 50K J2 20K Busy 30K 107520 20K Free Total Available: 115K Total Used: 40K 11
  • 12. Best-Fit Allocation Example (Table 2.3) Job List J1 J2 J3 J4 10K 20K 30K 10K Memory location Memory Job block size number Job size Status Internal fragmentation 40960 15K J1 10K Busy 5K 107520 20K J2 20K Busy None 10240 30K J3 30K Busy None 56230 50K J4 10K Busy 40K Total Available: 115K Total Used: 70K 12
  • 13. 13 First-Fit Algorithm 1. Set counter to 1 2. Do while counter <= number of blocks in memory If job_size > memory_size(counter) then counter = counter + 1 else load job into memory_size(counter) adjust free/busy memory lists go to step 4 End do 3. Put job in waiting queue 4. Go fetch next job
  • 14. First-Fit Memory Request (Table 2.4) Before request After request Beginning Memory Beginning Memory address block size address block size 4075 105 4075 105 5225 5 5225 5 6785 600 *6985 400 7560 20 7560 20 7600 205 7600 205 10250 4050 10250 4050 15125 230 15125 230 24500 1000 24500 1000 14
  • 15. 15 Best-Fit Algorithm If initial_mem_waste > mem_waste Then subscript = counter initial_mem_waste = mem_waste counter = counter + 1 End do 6. If subscript = 0 Then put job in waiting queue Else load job into mem_size(subscript) adjust free/busy memory lists 7. Go fetch next job 1. Initialize mem_block(0) = 99999 2. Compute initial_mem_waste = memory_block(0) – job_size 3. Initialize subscript = 0 4. Set counter to 1 5. Do while counter <= number of blocks in memory If job_size > mem_size(counter) Then counter = counter + 1 Else mem_waste = mem_size(counter) – job_size
  • 16. Best-Fit Memory Request (Table 2.5) Before request After request Beginning Memory Beginning Memory address block size address block size 4075 105 4075 105 5225 5 5225 5 6785 600 6785 600 7560 20 7560 20 7600 205 *7800 5 10250 4050 10250 4050 15125 230 15125 230 24500 1000 24500 1000 16
  • 17. 17 Best-Fit vs. First-Fit • Increases memory use • Memory allocation takes more time • Reduces internal fragmentation First-Fit Best-Fit • More complex algorithm • Searches entire table before allocating memory • Results in a smaller “free” space (sliver)
  • 18. 18 Release of Memory Space : Deallocation • Deallocation for fixed partitions is simple – Memory Manager resets status of memory block to “free”. • Deallocation for dynamic partitions tries to combine free areas of memory whenever possible – Is the block adjacent to another free block? – Is the block between 2 free blocks? – Is the block isolated from other free blocks?
  • 19. 19 Algorithm to Deallocate Memory Blocks If job_location is adjacent to 1+ free blocks Then If job_location is between 2 free blocks Then merge all 3 blocks into 1 block mem_size(counter-1) = mem_size(counter-1) + job_size + mem_size(counter+1) Set status of mem_size(counter+1) to null entry Else merge both blocks into one mem_size(counter-1) = mem_size(counter-1) + job_size Else search for null entry in free memory list enter job_size and beginning_address in entry slot set its status to “free”
  • 20. 20 Case 1: Joining 2 Free Blocks Before Deallocation After Deallocation Beginning address 4075 Memory block size 105 Status Free Beginning address 4075 Memory block size 105 Status Free 5225 5 Free 5225 5 Free 6785 600 Free 6785 600 Free 7560 20 Free 7560 20 Free (7600) (200) (Busy)1 *7600 205 Free *7800 5 Free 10250 4050 Free 10250 4050 Free 15125 230 Free 15125 230 Free 24500 1000 Free 24500 1000 Free
  • 21. 21 Case 2: Joining 3 Free Blocks Before Deallocation After Deallocation Beginning address 4075 Memory block size 105 Status Free Beginning address 4075 Memory block size 105 Status Free 5225 5 Free 5225 5 Free 6785 600 Free 6785 600 Free 7560 20 Free 7560 245 Free (7600) (200) (Busy)1 * (null) *7800 5 Free 10250 4050 Free 10250 4050 Free 15125 230 Free 15125 230 Free 24500 1000 Free 24500 1000 Free
  • 22. 22 Case 3: Deallocating an Isolated Block Busy List Before Busy List After Beginning address 7805 Memory block size 1000 Status Busy Beginning address 7805 Memory block size 1000 Status Busy *8805 445 Busy * (null entry) 9250 1000 Busy 9250 1000 Busy
  • 23. 23 Relocatable Dynamic Partitions • Memory Manager relocates programs to gather all empty blocks and compact them to make 1 memory block. • Memory compaction (garbage collection, defragmentation) performed by OS to reclaim fragmented sections of memory space. • Memory Manager optimizes use of memory & improves throughput by compacting & relocating.
  • 24. 24 Compaction Steps • Relocate every program in memory so they’re contiguous. • Adjust every address, and every reference to an address, within each program to account for program’s new location in memory. • Must leave alone all other values within the program (e.g., data values).
  • 25. 25 Original Assembly Language Program (Figure 2.4) A: EXP 132, 144, 125, 110 ;the data values BEGIN: MOVEI 1,0 ;initialize register 1 MOVEI 2,0 ;initialize register 2 LOOP: ADD 2,A(1) ;add (A + reg 1) to reg 2 ADDI 1,1 ;add 1 to reg 1 CAIG 1,4-1 ;is reg 1 > 4-1? JUMPA LOOP ;if not, go to Loop MOVE 3,2 ;if so, move reg 2 to reg 3 IDIVI 3,4 ;divide reg 3 by 4, ;remainder to register 4 EXIT ;end END
  • 26. 26 Assembly Language Program Loaded into Memory (Figure 2.4) 000000’ 000000 000132 A: EXP 132,144,125,110 000001’ 000000 000144 000002’ 000000 000125 000003’ 000000 000110 000004’ 201 01 0 00 000000 BEGIN: MOVEI 1,0 000005’ 201 02 0 00 000000 MOVEI 2,0 000006’ 270 02 0 01 000000’ LOOP: ADD 2,A(1) 000007’ 271 01 0 00 000001 ADDI 1,1 000008’ 307 01 0 00 000003 CAIG 1,4-1 000009’ 324 00 0 00 000006’ JUMPA LOOP 000010’ 200 03 0 00 000002 MOVE 3,2 000011’ 231 03 0 00 000004 IDIVI 3,4 000012’ 047 00 0 00 000012 EXIT 000000 END
  • 27. 27 Program in Memory During Compaction & Relocation • Free list & busy list are updated – free list shows partition for new block of free memory – busy list shows new locations for all relocated jobs • Bounds register stores highest location in memory accessible by each program. • Relocation register contains value that must be added to each address referenced in program so it can access correct memory addresses after relocation.
  • 28. Memory Before & After Compaction (Figure 2.5) 28
  • 29. Contents of relocation register & close-up of Job 4 memory area (a) before relocation & (b) after relocation and compaction (Figure 2.6) 29
  • 30. 30 More Overhead is a Problem with Compaction & Relocation • Timing of compaction (when, how often) is crucial. • Approaches to timing of compaction: 1. Compact when certain percentage of memory is busy (e.g., 75%). 2. Compact only when jobs are waiting. 3. Compact after certain amount of time.
  • 31. 31 Key Terms • address • best-fit memory allocation • bounds register • compaction • deallocation • dynamic partitions • external fragmentation • first come first served • first-fit memory allocation • fixed partitions • internal fragmentation • K • multiprogramming • relocatable dynamic partitions • relocation • relocation register