Download Lecture Slides on Memory Management | CSCI 4717 and more Study notes Computer Architecture and Organization in PDF only on Docsity! 1 Memory Management – Page 1 of 44CSCI 4717 – Computer Architecture CSCI 4717/5717 Computer Architecture Topic: Memory Management Reading: Stallings, Sections 8.3 and 8.4 Memory Management – Page 2 of 44CSCI 4717 – Computer Architecture Memory Management • Uni-program – memory split into two parts – One for Operating System (monitor) – One for currently executing program • Multi-program – Non-O/S part is sub-divided and shared among active processes • Remember segment registers in the 8086 architecture – Hardware designed to meet needs of O/S – Base Address = segment address Memory Management – Page 3 of 44CSCI 4717 – Computer Architecture Swapping • Problem: I/O (Printing, Network, Keyboard, etc.) 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 • Programmers will eventually use all of this memory for a single process – Swapping Memory Management – Page 4 of 44CSCI 4717 – Computer Architecture 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! – It could make the situation worse – Disk I/O is typically fastest of all, so it still is an improvement Memory Management – Page 5 of 44CSCI 4717 – Computer Architecture Partitioning • Splitting memory into sections to allocate to processes (including Operating System) • Two types – Fixed-sized partitions – Variable-sized partitions Memory Management – Page 6 of 44CSCI 4717 – Computer Architecture Fixed-Sized Partitions (continued) • Equal size or Unequal size partitions • Process is fitted into smallest hole that will take it (best fit) • Some wasted memory due to each block having a hole of unused memory at the end of its partition • Leads to variable sized partitions 2 Memory Management – Page 7 of 44CSCI 4717 – Computer Architecture Fixed- sized partitions Memory Management – Page 8 of 44CSCI 4717 – Computer Architecture Variable-Sized Partitions • Allocate exactly the required memory to a process • This leads to a hole at the end of memory, too small to use – Only one small hole - less waste • When all processes are blocked, swap out a process and bring in another • New process may be smaller than swapped out process • Reloaded process not likely to return to same place in memory it started in • Another hole • Eventually have lots of holes (fragmentation) Memory Management – Page 9 of 44CSCI 4717 – Computer Architecture Variable-Sized Partitions Memory Management – Page 10 of 44CSCI 4717 – Computer Architecture Solutions to Holes in Variable- Sized Partitions • Coalesce - Join adjacent holes into one large hole • Compaction - From time to time go through memory and move all hole into one free block (c.f. disk de-fragmentation) Memory Management – Page 11 of 44CSCI 4717 – Computer Architecture Relocation • No guarantee that process will load into the same place in memory • Instructions contain addresses – Locations of data – Addresses for instructions (branching) • Logical address – relative to beginning of program • Physical address – actual location in memory (this time) • Base Address – start of program or block of data • Automatic conversion using base address Memory Management – Page 12 of 44CSCI 4717 – Computer Architecture Paging (continued) • Split memory into equal sized, small chunks -page frames • Split programs (processes) into equal sized small chunks – pages • Allocate the required number page frames to a process • Operating System maintains list of free frames • A process does not require contiguous page frames 5 Memory Management – Page 25 of 44CSCI 4717 – Computer Architecture Translation Lookaside Buffer • Every virtual memory reference causes two physical memory access • Fetch page table entry • Fetch data • Use special cache for page table – TLB Memory Management – Page 26 of 44CSCI 4717 – Computer Architecture Translation Lookaside Buffer (continued) Memory Management – Page 27 of 44CSCI 4717 – Computer Architecture Translation Lookaside Buffer (continued) • Complexity! Virtual address translated to a physical address • Reference to page table – might be in TLB, main memory, or disk • Referenced word may be in cache, main memory, or disk • If referenced word is on disk, it must be copied to main memory • If in main memory or on disk, block must be loaded to cache and cache table must be updated Memory Management – Page 28 of 44CSCI 4717 – Computer Architecture TLB and Cache Operation Memory Management – Page 29 of 44CSCI 4717 – Computer Architecture Segmentation • Paging is not (usually) visible to the programmer • Segmentation is visible to the programmer • Usually different segments allocated to program and data • May be a number of program and data segments Memory Management – Page 30 of 44CSCI 4717 – Computer Architecture Advantages of Segmentation • Simplifies handling of growing data structures – O/S will expand or contract the segment as needed • Allows programs to be altered and recompiled independently, without re-linking and re-loading • Lends itself to sharing among processes • Lends itself to protection since O/S can specify certain privileges on a segment-by-segment basis • Some systems combine segmentation with paging 6 Memory Management – Page 31 of 44CSCI 4717 – Computer Architecture Recursion • Many complex algorithmic functions can be broken into a repetitive application of a simple algorithm. • The typical recursion function begins with an initial value of n which is decremented with each recursive call until the last call reaches a terminal value of n. • A recursive function contains a call to itself. • "Definition of recursion: See recursion" Memory Management – Page 32 of 44CSCI 4717 – Computer Architecture Recursion – Factorial • Non-Recursive Function: int factorial(int n) { int return_val = 1; for (int i = 1; i <= n; i++) return_val = return_val * i; return return_val; } • Recursive Function: int rfactorial(int n) { if ((n == 1) || (n == 0)) return (1); else return (n*rfactorial(n - 1)); } Memory Management – Page 33 of 44CSCI 4717 – Computer Architecture Recursion – Fibonacci Numbers "f(i) = f(i–1) + f(i–2)" • Non-Recursive Function: int fibonacci(int n) { int fibval_i = 1; int fibval_i_minus_1 = 0; int fibval_i_minus_2 = 0; if ((n == 0)||(n == 1)) return n; else { for (int i = 2; i <= n; i++) { fibval_i_minus_2 = fibval_i_minus_1; fibval_i_minus_1 = fibval_i; fibval_i = fibval_i_minus_1 + fibval_i_minus_2; } } return fibval_i; } Memory Management – Page 34 of 44CSCI 4717 – Computer Architecture Recursion – Fibonacci Numbers (continued) • Recursive Function: int rfibonacci(int n) { if ((n == 0)||(n == 1)) return n; else return rfibonacci(n - 1) + rfibonacci(n - 2); } Memory Management – Page 35 of 44CSCI 4717 – Computer Architecture Comparing Recursive and Non- Recursive Functions • Non-recursive function has more variables. Where does recursive function store values. • Non-recursive function has more code recursive requires less code and therefore less memory. Memory Management – Page 36 of 44CSCI 4717 – Computer Architecture In-Class Exercise • In groups, discuss how recursion might affect an operating system • Compare & contrast iterative vs. recursion algorithms in terms of growth/memory usage 7 Memory Management – Page 37 of 44CSCI 4717 – Computer Architecture Pentium II • Hardware for segmentation and paging • Unsegmented unpaged – virtual address = physical address – Low complexity – High performance • Unsegmented paged – Memory viewed as paged linear address space – Protection and management via paging – Berkeley UNIX Memory Management – Page 38 of 44CSCI 4717 – Computer Architecture Pentium II (continued) • Segmented unpaged – Collection of local address spaces – Protection to single byte level – Translation table needed is on chip when segment is in memory • Segmented paged – Segmentation used to define logical memory partitions subject to access control – Paging manages allocation of memory within partitions – Unix System V Memory Management – Page 39 of 44CSCI 4717 – Computer Architecture Pentium II Segmentation • Each virtual address is 16-bit segment and 32- bit offset • 2 bits of segment are protection mechanism • 14 bits specify segment • Unsegmented virtual memory 232 = 4Gbytes • Segmented 246=64 terabytes – Can be larger – depends on which process is active – Half (8K segments of 4Gbytes) is global – Half is local and distinct for each process Memory Management – Page 40 of 44CSCI 4717 – Computer Architecture Pentium II Protection Protection bits give 4 levels of privilege • 0 most protected, 3 least • Use of levels software dependent • Usually level 3 is for applications, level 1 for O/S and level 0 for kernel (level 2 not used) • Level 2 may be used for apps that have internal security, e.g., database • Some instructions only work in level 0 Memory Management – Page 41 of 44CSCI 4717 – Computer Architecture Pentium II Paging • Segmentation may be disabled in which case linear address space is used • Two level page table lookup • First, page directory – 1024 entries max – Splits 4G linear memory into 1024 page groups of 4Mbyte – Each page table has 1024 entries corresponding to 4Kbyte pages – Can use one page directory for all processes, one per process or mixture Page directory for current process always in memory • Use TLB holding 32 page table entries • Two page sizes available 4k or 4M Memory Management – Page 42 of 44CSCI 4717 – Computer Architecture Pentium Segment/Paging Operation