ITEC 352 Lecture 27 Memory(4)
Review Questions? Cache control –L1/L2 Main memory example –Formulas for hits
Memory (4) Objectives Cache memory Intro to virtual memory
Memory (4) Summary so far … We have seen different types of memory elements and gone up the hierarchy of memory. –We have developed RAM, ROM, Registers and looked at Caches. Next: we will see how programs that we develop are allocated memory. Some terminology: –Process: any program in execution is called a process. E.g., A java program that you write is simply a program, unless you execute it. During its execution it becomes a process. There can be multiple processes of the same program.
Memory (4) Memory Allocation Two problems in memory allocation. –Processes must not have conflicts in memory they use. (must have separate memory). E.g., you wouldn’t want memory used by your process to be overwritten by that of another user. Solution: Relocatable Code –Small amount of physical memory (RAM) must be used to execute a large number of processes –(or execute large processes each of which exceed the size of RAM) –Solution: Virtual Memory.
Memory (4) Relocatable code and Virtual Memory Relocatable assembly code: processes must be able to reside in any portion of the physical memory. –Why ? Consider an operating system, where all executions of Microsoft Word must only reside at address 0x What would happen ? –Hence, compiled and assembled programs do not have fixed addresses allocated to them. Virtual memory: use hard disk as an extension for RAM. Intuition: processes are allocated memory in a special portion of the hard disk. They are loaded into RAM only when they are executing on the CPU
Memory (4) Relocatable code Program binary code, such that the addresses of the process address space can be changed dynamically. I.e. it doesn’t map to main memory It has it’s own memory space Operating system replaces with what it deems appropriate
Memory (4) Relocatable Code #include … int main() { int x = 10; return x; } : push %ebp BINARY CODE : mov %esp,%ebp : sub $0x8,%esp … : ret : nop 0x c : push %ebp 0x d : mov %esp,%ebp 0x f : sub $0x8,%esp … 0x c : ret 0x d : nop Compiler + assembler Compiler generates relocatable code: e.g., return instruction is 32 bytes away from beginning of code segment When process is created. The process is given addresses by OS Address called as logical address Address binding: binding each logical address to a location in physical memory Linking and loading
Memory (4) Relocatable Code #include … int main() { int x = 10; return x; } : push %ebp BINARY CODE : mov %esp,%ebp : sub $0x8,%esp … : ret : nop 0x c : push %ebp 0x d : mov %esp,%ebp 0x f : sub $0x8,%esp … 0x c : ret 0x d : nop Compiler + assembler Compiler generates relocatable code: e.g., return instruction is 32 bytes away from beginning of code segment When process is created. The process is given addresses by CPU. Address called as logical address Address binding: binding each logical address to a location in physical memory Linking and loading
Memory (4) Using a HD as memory © Image from Silberschatz and Galvin
Three types of memory addresses C program Compiler/Assembler Binary code (relocatable addresses)\ Aka linear addresses When program is Executed. CPU generated Logical Addresses Also called Virtual address Loader Logical Address Bound to Physical memory address Three types of addresses: linear address (addresses in compiled binaries), logical address (address in the virtual memory) and physical address (address in the RAM when a program is loaded).
Dynamic Relocation using relocation register: mapping logical to physical address. © Image from Silberschatz and Galvin
Memory (4) Virtual Memory (2) When a process is executed, the OS allocates memory for the process on the disk (usually 4 GB of memory is allocated). –This includes a code segment, data segment and program stack. –In UNIX, we usually call this portion of the disk as swap partition. Advantage: Process memory is not tied to the amount of RAM. However, for a CPU to execute a process, the process must be in the physical memory. –Hence, OSes provide methods to map process address space on virtual memory (called logical memory) to physical memory (memory addresses in RAM).
Memory (4) Mapping How can we map logical address spaces to physical address spaces? (brainstorming section).
Memory (4) Mapping 1. Demand paging: 1. Slice up the process address space into equal sized blocks (or frames). 2. Slice up the RAM into the same sized frames called pages. 3. Map a frame to a page 2. Segmentation: 1. Slice up the process address space using logic.
Paging Model of Logical and Physical Memory Process address space on hard disk Process address space in RAM Simple table to map logical address to physical address. © Image from Silberschatz and Galvin
Memory (4) Address Translation How do we map a logical address to a physical address ? Each address is separated into two parts: –Page number (p) –index into a page table –Page offset (d) – combined with base address to define the physical memory address that is sent to the memory unit page number page offset p d m - n n © Silberschatz and Galvin
Paging Hardware © Image from Silberschatz and Galvin
Paging Example 32-byte memory and 4-byte pages Here, the logical page “0” is located at frame “5”. Page “5” in physical memory is at address: 5 * 4 = 20. This is because, each page/frame stores 4 bytes. Assume this is a byte addressable memory. © Silberschatz and Galvin
Free Frames The Operating System maintains a free frame list – which it can then easily allocate to new processes. Here is a before and after allocation of a frame diagram. Before allocation After allocation © Image from Silberschatz and Galvin
Memory (4) Demand Paging Some programs hog memory resources: they are huge and eat up too much physical memory. Most systems attack this problem by only bringing into the physical memory portions of the process that are actually needed. In other words, some pages in the process are not loaded into the physical memory – as long as they are not needed. This is called demand paging.
Memory (4) Summary Cache access Virtual memory