Memory Allocation in Operating Systems
Memory Allocation in Operating Systems
BESE 22 A&C
Objectives and Functions
• OS is a program that controls execution of application programs and
acts as an interface between the user of a computer and the computer
hardware.
Objectives
• Convenience
◦ Making the computer easier to use
• Efficiency
◦ Allowing better use of computer resources
2
Layers and Views
of a Computer
System
3
Operating System Services
• Program creation - Editors, debuggers.
• Program execution - Tasks such as, Instructions and data load in main memory, I/O device and
file initialization
• Access to I/O devices - OS hides details of specific set of instructions and control signals for
every device. Programmer thinks in terms of simple read and write.
• Controlled access to files - Protection mechanism to control access to files in case of multi-
users.
• System access - Protection of resources and data from unauthorized users
• Error detection and response - Operating system deals with errors in a way to minimize
impact on running application. Response may be ending program that caused the error, or retrying
the operation etc.
• Accounting - Usage statistics for various resources and monitor performance.
4
OS as a
Resource
Manager
5
Types of Operating System
• Interactive
• Programmer/user directly interact with user.
• Batch
◦ User programs are batched together with other programs and submitted by a
computer operator.
◦ Results are printed out after program is completed.
◦ Rare today
6
Early Systems
• Late 1940s to mid 1950s
• No Operating System
• Programs interact directly with hardware
• Two main problems:
◦ Scheduling
◦ Setup time
7
Simple Batch Systems
• Resident Monitor program
• Users submit jobs to operator
• Operator batches jobs
• Monitor controls sequence of events to process batch
• When one job is finished, control returns to Monitor which reads next job
• Monitor handles scheduling
8
Multi-programmed Batch Systems
• I/O devices very slow
• When one program is waiting for I/O, another can use the CPU
9
Single Program
10
Multi-Programming with Two Programs
11
Multi-Programming with Three Programs
12
Time Sharing Systems
• Allow users to interact directly with the computer
◦ i.e. Interactive
• Multi-programming allows a number of users to interact with the
computer
• Requires memory management.
• If many jobs are ready to run, processor has to decide which one to
run.
• Example usage: Multiprogramming with I/O interrupt support.
13
Batch Multiprogramming vs Time Sharing
14
Process
Process: A program in execution
15
Five State Process Model
16
Scheduling
17
Long Term Scheduling
• Determines which programs are submitted for processing
i.e. controls the degree of multi-programming
• Once submitted, a job becomes a process for the short term scheduler
(or it becomes a swapped out job for the medium term scheduler)
18
Short Term Scheduler
• Dispatcher
• Fine grained decisions of which job to execute next
• i.e. which job actually gets to use the processor in the next time slot
19
Medium Term Scheduling
• Part of the swapping function (later…)
• Usually based on the need to manage multi-programming
• If no virtual memory, memory management is also an issue
20
Scheduling
Example
21
Process
Scheduling
23
Memory Management
• Uni-program
◦ Memory split into two
◦ One for Operating System (monitor)
◦ One for currently executing program
• Multi-program
◦ “User” part is sub-divided and shared among active processes
◦ Dynamic sub-division of memory by OS is Memory Management.
24
Swapping
• Problem: I/O is so slow compared with CPU that even in multi-
programming system, CPU can be idle most of the time
Solutions
• Increase main memory
• Expensive
• Leads to larger programs
• Swapping
25
What is Swapping?
• Long term queue of processes stored on disk
• Processes “swapped” in as space becomes available
• As a process completes it is moved out of main memory
• If none of the processes in memory are ready (i.e. all I/O blocked)
◦ Swap out a blocked process to intermediate queue
◦ Swap in a ready process or a new process
◦ But swapping is an I/O process…
26
Use of Swapping
27
Partitioning
• Splitting memory into sections to allocate to processes (including
Operating System)
• Fixed-sized partitions
◦ May not be equal size
◦ Process is fitted into smallest hole that will take it (best fit)
◦ Some wasted memory
◦ Leads to variable sized partitions
28
Fixed
Partitioning
29
Dynamic Partitioning
• Allocate exactly the required memory to a process
• This leads to a hole at the end of memory, too small to use
• When all processes are blocked, swap out a process and bring in
another
• New process may be smaller than swapped out process
• Another hole
30
Dynamic Partitioning
• Eventually have lots of holes (fragmentation)
• Solutions
◦ Coalesce - Join adjacent holes into one large hole
◦ Compaction - From time to time go through memory and move all hole
into one free block
31
Effect of
Dynamic
Partitioning
32
Relocation
• No guarantee that process will load into the same place in memory
• Instructions contain addresses
◦ Locations of data
◦ Addresses for instructions (branching)
33
Paging
• Split memory into equal sized, small chunks -page frames
• Split programs (processes) into equal sized small chunks - pages
34
Allocation of
Free Frames
35
Logical and Physical
Addresses - Paging
36
Virtual Memory
• Demand paging
◦ Do not require all pages of a process in memory
◦ Bring in pages as required
• Page fault
◦ Required page is not in memory
◦ Operating System must swap in required page
◦ May need to swap out a page to make space
◦ Select page to throw out based on recent history
37
References
“Computer Organization and Architecture” by William Stallings
38