Types of Memory Allocation Schemes
Short Description
Download Types of Memory Allocation Schemes...
Description
Memory Management: Early Systems Single-User Configurations Configurations → Fixed Partitions → Dynamic Dynamic Partitions → Relocatable Relocatable Dynamic Partitions
“Memory is the primary and fundamental power, without which there could be no other intellectual operation.” —Samuel Johnson (1709–1784) Types of memory allocation schemes: Single-user systems Fixed partitions Dynamic partitions Relocatable dynamic partitions • • • •
1. Single-User Contiguous Scheme: Program is loaded in its entirety into memory and allocated as much contiguous space in memory as it needs. Jobs processed sequentially in single-user systems Requires minimal minimal work by the Memory Manager • Register to store the base address Accumulator to keep track of the program size • Accumulator Disadvantages of Single-User Contiguous Scheme: Doesn’t support multiprogramming Not cost effective • •
• •
2. Fixed Partitions: Main memory is partitioned; one partition/job. partition/job. Allows multiprogramming Partition sizes remain static unless and until computer system id shut down, reconfigured, reconfigured, and restarted Requires protection of the job’s memory space Requires matching job size with partition size • •
• •
To allocate memory spaces to jobs, the operating system’s Memory Manager must keep a table as shown below:
Tabl able e 2.1 2.1:: A sim simpli plifie fied d fi fixe xed d par partit tition ion me memor mory y table with the free partition shaded NOTE: Job 3 must wait even though 70K of free spac sp ace e is av avai aila labl ble e in Par arti titi tion on 1 wh wher ere e Jo Job b 1 occupies only 30K of the 100K available
Figur igure e 2.1: Main memor memory y use during fix fixed ed partition allocation of Table 2.1
Disadvantages: Requires entire program to be stored contiguously Jobs are allocated space on the basis of first available partition of required size • •
•
• • •
Works well only if all of the jobs are of the same size size or if the sizes are known ahead of time Arbitrary partition sizes lead to undesired results Too small a partition size results in large jobs having longer turnaround time Too large a partition size results in memory waste or internal fragmentation fragmentation
3. Dynamic Partitions: Jobs are given only as much memory as they request when they are loaded Available memory is kept in contiguous blocks Memory waste is comparatively small • •
Disadvantages: Fully utilizes memory only when the first jobs are loaded Subsequent allocation allocation leads to memory waste or external fragmentation • •
Figure 2.2: Main memory use during dynamic partition allocation
Best-Fit versus First-Fit Allocation Free partitions are allocated on the following basis:
First-fit memory allocation: First partition fitting the requirements
Leads to fast allocation of memory space Advantage: Faster in making allocation •
Disadvantage: Leads to memory waste
Best-fit memory allocation: Smallest partition fitting the requirements requirements Results in least wasted space Internal fragmentation reduced but not eliminate Advantage: Makes the best use of memory space Disadvantage: Slower in making allocation • •
Figure 2.3: An example of a first-fit free scheme
Algorithm for First-Fit: Assumes Memory Manager keeps two lists, one for free memory and one for busy memory blocks Loop compares the size of each job to the size of each memory block until a block is found that’s large enough to fit the job Job is stored into that block of memory Memory Manager moves out of the loop to fetch the next job from the entry queue If the entire list is searched in vain, then the job is placed into a waiting queue The Memory Manager then Figure 2.3: An example of a best-fit free fetches the next job and repeats the process •
•
•
•
•
•
Tab able le 2. 2.2: 2: St Stat atus us of ea each ch memory mem ory blo block ck bef befor ore e an and d after a request is made for a bloc bl ock k of 20 200 0 sp spac aces es us usin ing g the first-fit algorithm
• –
Algorithm for Best-Fit: Goal: find the smallest memory block into which the job will fit
Entire table must be searched before allocation Hypothetical allocation schemes: Next-fit: Starts searching from last allocated block, for the next available block when a new job arrives Worst-fit: Allocates the largest free available block to the new job • Opposite of best-fit • Good way to explore the theory of memory allocation; might not be the best choice for an actual system
–
•
–
–
Tab Table le 2.3 2.3:: Sta Status tus of ea each ch memory memo ry block before and after a request is made for a mem emor ory y blo loc ck of 20 200 0 spac sp aces es us usin ing g th the e be best st-f -fit it algorithm
Deallocation: Freeing an allocated memory space For fixed-partition system: Straightforward process When job completes, completes, Memory Manager resets the status status of the job’s job’s memory memory block to “free” Any code—for example, binary values with 0 indicating free and 1 indicating busy —may be used For dynamic-partition system: Algorithm tries to combine free areas of memory whenever possible Three cases: Case 1: When the block to be deallocated is adjacent to another free block Case 2: When the block to be deallocated is between two free blocks Case 3: When the block to be deallocated is isolated from other free blocks • •
•
• •
Case 1: Joining Two Free Blocks Change list must reflect starting address of the new free block In the example, example, 7600—which 7600—which was the address address of the first instructio instruction n of the job that just released this block Memory block size for the new free space must be changed to show its new size—that is, the combined total of the two free partitions In the example, (200 + 5) •
•
(TOP) Table 2.5: Free list after deallocation for Case 1 (LEFT) Table 2.4: Original free list before deallocation for Case 1
Case 2: Joining Three Free Blocks Deallocated memory space is between two free memory blocks Change list to reflect the starting address of the new free block In the example, 7560— which was the smallest beginning address address Sizes of the three free partitions must be combined In the example, (20 + 20 + 205) Combined entry is given the status of null entry In the example, 7600 •
•
•
Table 2.6: Original free list before deallocation for Case 2
Table 2.7: Free list after job has released memory
Case 3: Deallocating an Isolated Block Space to be deallocated is isolated from other free areas System learns that the memory block to be released is not adjacent to any free blocks of memory, it is between two other busy areas Must search the table for a null entry Null entry in the busy list occurs when a memory block between two other busy memory blocks is returned to the free list The The job to be dea deallo llocat cated ed is of size 445 and begins begin s at loca location tion 8805. The aste asterisk risk indicates indicates the soon-to-be-free memory block.
Table 2.8: Original free list before deallocation for Case 3
Table 2.9: Memory list before deallocation
Table 2.10: Busy list after the job has released its memory memor y. The aste asterisk risk indicates indicates the new null entry in the busy list.
4. Relocatable Dynamic Partitions: Memory Memory Manager Manager relocates relocates programs programs to gather together all of the empty blocks Compact the empty blocks to make one block of memory large enough to acco accomm mmod odat ate e some some or all all of the the jobs jobs waiting to get in Compaction: Recl Reclai aimi ming ng frag fragme ment nted ed sections of the memory space Every program in memory must be relocated so they are contiguous Oper peratin ting syste ystem m must dist isting inguish ish Table T able 2.11: Free list after the job has relea released sed between addresses and data values its memory. The asterisk indicates the new free • Ever Every y addr addres ess s mus ustt be adju adjust sted ed to block entry replacing the null entry account for the program’s new location in memory • Data values must be left alone Compaction issues: What goes on behind the scenes when relocation and compaction take place? What keeps track of how far each job has moved from its original storage area? What lists have to be updated? •
•
•
•
• • •
What lists have to be updated? Free list must show the partition for the new block of free memory Busy list must show the new locations for all of the jobs already in process that were relocated Each job will have a new address except for those that were already at the lowest memory locations
• •
•
Special-purpose Special-purpose registers are used for relocation: Bounds register • Stores highest location accessible by each program Relocation register • Contains the value that must be added to each address referenced in the program so it will be able to access the correct memory addresses after relocation • If the program isn’t relocated, the value stored in the program’s relocation register is zero •
•
Figure 2.7: Three snapshots of memory before and after compaction
Figure 2. 2.8: 8: Contents of rel eloc ocat atio ion n reg egis iste terr and an d close-up of Job 4 memory area ar ea (a) bef befor ore e re reloc locat ation ion and (b) after relocation and compaction
Compacting and relocating optimizes optimizes the use of memory and thus improves throughput Options for when and and how often it should should be done: When a certain percentage of memory is busy • When there are jobs waiting to get in • After a prescribed amount of time has elapsed • Goal: Optimize processing processing time and memory use while keeping overhead as low as possible •
•
Summary Four memory management techniques were used in early systems: single-user systems, fixed partitions, dynamic partitions, and relocatable dynamic partitions Memory waste in dynamic partitions is comparatively small as compared to fixed partitions First-fit is faster in making allocation but leads to memory waste Best-fit makes the best use of memory space but slower in making allocation Compacting and relocating optimizes optimizes the use of memory and thus improves throughput All techniques require require that the entire entire program must: must: a) Be loaded into into memory memory b) Be stored stored contiguously contiguously c) Remain in memory memory until the job job is completed Each technique puts severe restrictions on the size of the jobs: can only be as large as the largest partitions in memory •
•
• • •
•
•
Processor Management Program (Job): A unit of work that has been submitted by user to an operating system An inactive unit, such as a file stored on a disk Process (Task): An active entity, which requires a set of resources, including a processor and special registers, to perform its function A single instance of an executable program Processor (CPU): performs calculations and executes programs In single-user single-user systems: Processor is busy only when user is executing a job, at all other times it is idle Processor management is simple In a multiprogrammin multiprogramming g environment: Processor must be allocated to each job in a fair and efficient manner Requires scheduling scheduling policy and a scheduling algorithm Interrupt: A hardware signal signal that suspends suspends execution of a program program and activates activates the execution of interrupt handler Context Switch: Saving a job’s processing information information in its PCB when interrupted Context switching occurs in all preemptive Job Scheduling Versus Process Scheduling Processor Manager has two sub managers: Job Scheduler: Scheduler: • In charge of job scheduling • Initiates the job based on certain criteria Process Scheduler: • In charge of process scheduling • Assigns the CPU to execute processes of those jobs placed on READY queue by Job Scheduler Job Scheduler (High level scheduler): Initiates the job based on certain criteria Puts jobs in a sequence that uses all system’s resources as fully as possible Strives for balanced mix of jobs with large I/O interaction and jobs with lots of computation Tries to keep most system components busy most of time Process Scheduler (Low level scheduler): Determines which jobs will get the CPU, when, and for how long Decides when processing should be interrupted Determines which queues the job should be moved to during its execution Recognizes when a job has concluded and should be terminated I/O-bound jobs have many brief CPU cycles and long I/O cycles, e.g., printing a series of documents CPU-bound jobs have long CPU cycles and shorter I/O cycles, e.g., finding the first 300 prime numbers Total effect of all CPU cycles, from both I/O-bound and CPU-bound jobs, approximates a Poisson distribution curve •
–
–
•
–
–
•
–
•
•
–
•
•
•
•
•
•
–
–
–
– –
–
–
– –
–
•
•
•
Figure 4.1: Distribution of CPU cycle
Figu igure re 4.2 4.2:: A typ typica icall job (or process) chang ch anges es sta status tus as it move mo ves s th thrrou ough gh th the e system from HOLD to FINISHED
10
•
Middle level scheduler (third layer): Used in a highly interactive environment Removes active jobs from memory to reduce degree of multiprogramming multiprogramming Allows jobs to be completed faster Job and Process Status Job status: A job takes one of the following states as it moves through the system HOLD, READY, WAITING, RUNNING, FINISHED Transition from one status to another is initiated by either the Job Scheduler (JS) or the Process Scheduler (PS): HOLD to READY: JS, using a predefined policy READY to RUNNING: PS, using some predefined algorithm RUNNING back to READY: PS, according to some predefined time limit or other criterion RUNNING to WAITING: PS, and is initiated by an instruction in the job WAITING to READY: PS, and is initiated by signal from I/O device manager that I/O request has been satisfied and job can continue. RUNNING to FINISHED: PS or JS, if job is finished or error has occurred Process Control Blocks Process Control Block (PCB): Data structure that contains basic info about the job including What it is Where it’s going How much of its processing has been completed Where it’s stored How much it has spent in using resources Contents of Process Control Block (PCB): Process identification Process status (HOLD, READY, RUNNING, WAITING) Process state (process status word, register contents, main memory info, resources, process priority) Accounting (CPU time, total time, memory occupancy, I/O operations, number of input records read, etc.) PCBs and Queuing PCB of a job: Contains all of the data about the job needed by the operating system to manage the processing of the job Created when job scheduler accepts the job Updated as job goes from beginning to end of Figure 4.3: Contents of its execution each job’s Process Control Queues use PCBs to track jobs Block PCBs, not jobs, are linked to form queues – Queues must be managed by process scheduling scheduling policies and algorithms –
–
•
–
•
–
–
–
–
–
–
•
–
–
–
– –
•
–
–
–
–
•
–
–
•
–
Process Scheduling Policies
•
–
–
–
Operating system must resolve three limitations of a system before scheduling all jobs in a multiprogramming environment: Finite number of resources (e.g., disk drives, printers, and tape drives) Some resources can’t be shared once they’re allocated (e.g., printers) Some resources require operator intervention (e.g., tape drives)
Figure 4.4: Queuing paths from HOLDshould: to process scheduling policy A good FINISHED Maximize throughput by running as many jobs as possible in a given amount of time Minimize response time by quickly turning around interactive requests Minimize turnaround time by moving entire jobs in and out of system quickly Minimize waiting time by moving jobs out of READY queue as quickly as possible Maximize CPU efficiency by keeping CPU busy 100 percent of time Ensure fairness for all jobs by giving every one an equal amount of CPU and I/O time Need for Interrupts: When a job claims CPU for a very long time before issuing an I/O request Builds up READY queue & empties I/O queues Creates an unacceptable imbalance in the system Process Scheduler uses interrupts when a predetermined slice of time has expired Suspends all activity on the currently running job Reschedules it into the READY queue Types of Scheduling Policies: o Preemptive scheduling policy: Interrupts processing processing of a job and transfers the CPU to another job o Nonpreemptive scheduling policy: Functions without external interrupts Process Scheduling Algorithms Types of Process Scheduling Algorithms: First Come, First Served (FCFS) Shortest Job Next (SJN) Priority Scheduling Shortest Remaining Time (SRT) Round Robin Multiple Level Queues First-Come, First-Served First-Served Nonpreemptive Handles jobs according to their arrival time: the earlier they arrive, the sooner they’re served Simple algorithm to implement: uses a FIFO queue Good for batch batch systems; unacceptable unacceptable for interactive systems systems Turnaround time is unpredictable Jobs arrival sequence: A, B, C Average turnaround time: Job A has a CPU cycle of 15 milliseconds •
–
–
–
– –
•
–
–
•
–
–
• • • • • •
• •
• • •
•
Figure 4.5: Timeline for job sequence A, B, C using the FCFS algorithm
Job B has a CPU cycle of 2 millisecon milliseconds ds Job C has a CPU cycle of 1 millisecond Jobs arrival sequence: C, B, A Job A has a CPU cycle of 15 Average turnaround time: milliseconds 7.3 s Job B has a CPU cycle of 2 milliseconds milliseconds Figure 4.6: Timeline for job sequence C, B, A using the Job C has a CPU cycle of 1 millisecond FCFS algorithm Shortest Job Next (SJN) Nonpreemptive Handles jobs based on length of their CPU cycle time Easiest to implement in batch environments Doesn’t work in interactive systems Optimal only when all jobs are available at same time and the CPU estimates are available and accurate Four batch jobs A, B, C, D, all in the READY queue Job: A B C D Average turnaround time: CPU cycle: 5 2 6 4 • •
•
• •
• • • • •
Figure 4.7: Timeline Timeline for job sequence B, D, A, C using the SJN
Priority Scheduling • •
• •
• •
•
•
Nonpreemptive Gives preferential treatment to important jobs o Programs with highest priority are processed first o Not interrupted until CPU cycles are completed or a natural wait occurs FCFS policy is used if two or more jobs with equal priority in READY queue System System administr administrator ator or Processor Processor Manager use different different methods of assignin assigning g priorities Shortest Remaining Time Preemptive version of the SJN algorithm Processor allocated to job closest to completion o Current job can be preempted if newer job in READY queue has shorter time to completion Cannot be implemented in interactive system o Requires advance knowledge of the CPU time required to finish each job SRT involves more overhead than SJN o OS monitors CPU time for all jobs in READY queue and performs context switching
Arrival time: 0 1 2 3 Job: A B C D CPU cycle: Job: A B 6 3 C D 1 4 Turnaround: Turnaround: 14 4 1
Figure 4.8: Timeline for job sequence A, B, C, D using the preemptive SRT algorithm
Arrival time: 2 3 Job: C D CPU cycle: 1 4
0 1 A B 6 3
Figure 4.9: Timeline for job sequence A, B, C, D using the nonpreemptive SJN algorithm
Job: A B C D Turnaround: 6 9 5
Round Robin Preemptive Used extensively in interactive systems Based on a predetermined slice of time (time quantum) that’s given to each job Size of time quantum crucial to system performance o Usually varies from 100 ms to 1-2 s Ensures CPU is equally shared among all active processes and is not monopolized by any one job • • • •
•
Arrival time: 0 1 2 3 Job: A B Time slice: 4ms C D If Job’s CPU cycle > time quantum cycle: 8 4A B C CPU Job: o Job is preempted and put at the end of the READY queue 9 D 5 and its information is saved in its PCB Turnaround: Turnaround: 20 7 24 •
•
If Job’s CPU cycle < time quantum o If job is finished, all resources allocated to it are released & completed job is returned to user o If interrupted by I/O request, then info is saved in PCB & it is linked at end of the appropriate I/O queue o Once Once I/O reques requestt is satis satisfie fied, d, job returns returns to end of READY READY queue queue to await await allocation of CPU CPU cycle of job A: 8 ms Figur igure e 4.11 4.11:: Conte Context xt swit switches ches for job A with three different different time quantums. quantums. In (a) the job finishes finishes before before the tim time e quantum expires. expires. In (b) and (c), the time quantum expires first, interrupting the job.
Figure 4.10: Timeline for job sequence A, B, C, D using the preemptive round robin algorithm
• • –
• –
–
• – –
Efficiency depends on the size of time quantum in relation to the average CPU cycle If the quantum is too large - larger than most CPU cycles Algorithm reduces to the FCFS scheme If the quantum is too small Amount of context switching slows down the execution of the jobs Amount of overhead is dramatically dramatically increased General rules of thumb for selecting the proper time quantum: Should be long enough to allow 80% of CPU cycles to run to completion Should be at least 100 times longer than the time required to perform one context switch
•
These rules are flexible and depend on the system
Multiple-Level Queues Work in conjunction with several other schemes Found in systems with jobs that can be grouped according to a common characteristic Examples: Priority-based system with different queues for each e ach priority level System with all CPU-bound jobs in one queue and all I/O-bound jobs in another Hybrid system with batch jobs in background queue and interactive jobs in a foreground queue Four primary methods to the movement of jobs: No Movement Between Queues Movement Between Queues Variable Time Quantum Per Queue Aging No Movement Between Queues: The processor is allocated to the jobs in the high-priority queue in FCFS fashion Allocated to jobs in lower priority queues only when the high priority queues are empty Movement Between Queues Adjusts the priorities assigned to each job A job may also have its priority increased Good in interactive systems
• • •
– –
–
•
– –
– –
•
–
–
•
–
–
–
Variable Time Quantum Per Queue: Each of the queues is given a time quantum twice as long as the previous queue CPU-bound job can execute for longer and longer periods of time, thus improving its chances of finishing faster Aging: System moves the old job to the next highest queue, and so on until it reaches the top queue Ensures that jobs in the lower-level queues will eventually complete their execution
•
–
–
•
–
–
A Word About Interrupts Types of Interrupts: Page interrupts to accommodate job requests Time quantum expiration interrupts I/O interrupts when READ or WRITE command is issued Internal interrupts (synchronous interrupts) result from arithmetic operation or job instruction Illegal arithmetic operations (e.g., dividing by 0). Illegal job instructions (e.g., attempts to access protected storage locations) Interrupt handler: Control program that handles the interruption sequence of events When operating system detects a nonrecoverable nonrecoverable error, the interrupt handler follows this sequence: The type of interrupt is described and stored The state of the interrupted process process is saved The interrupt is processed The processor resumes normal operation Summary •
–
–
– –
–
–
•
•
– –
–
–
•
•
•
•
•
• • •
•
•
•
Process scheduler assigns the CPU to execute processes of those jobs placed on READY queue by Job Scheduler Total effect of all CPU cycles, from both I/O-bound and CPU-bound jobs, approximates a Poisson distribution curve Transition from one status to another is initiated by either Job Scheduler (JS) or Process Scheduler (PS) PCB of a job contains all data about the job needed by OS to manage the processing of the job A good process scheduling scheduling policy policy should maximize CPU efficiency efficiency by keeping CPU CPU busy 100 percent of time FIFO has simple algorithm to implement but turnaround time is unpredictable SJN minimizes average waiting time but results in infinite postponement of some jobs Priority scheduling ensures fast completion of important jobs but results in infinite postponement of some jobs SRT ensures fast completion of short jobs but involves more overhead than SJN, incurred by context switching Efficiency in round robin policy depends on the size of time quantum in relation to the average CPU cycle Multiple-level queues counteract indefinite postponement with aging or other queue movement
View more...
Comments