Virtual Memory (Making a Process)
-
Upload
david-evans -
Category
Technology
-
view
686 -
download
2
description
Transcript of Virtual Memory (Making a Process)
![Page 1: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/1.jpg)
cs4414 Fall 2013University of Virginia
David Evans
Class 21:Making a Process
(Virtual Memory)
![Page 2: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/2.jpg)
University of Virginia cs4414 2
Recap: Last Week
12 November 2013
run::Process::new(program, argv, options)
Rust
Run
time
spawn_process_os(prog, args, env, dir, in_fd, …)
fork()
libc: fork()
linux kernel: fork syscall
int 0x80
jumps into kernel codesets supervisor mode
![Page 3: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/3.jpg)
University of Virginia cs4414 3
Plan for This Week
• How the Kernel Makes a Process– Virtual Memory
• Thursday: diving into fork.c
12 November 2013
![Page 4: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/4.jpg)
April 10, 2023 University of Virginia cs4414 4
Batch Processing
Program Computer Center
Your Program Runs
Output: Invalid OperationCharge: $174.32
From Class 3:
![Page 5: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/5.jpg)
University of Virginia cs4414 5
Process Abstraction
12 November 2013
Provide each program with the illusion that it owns the whole machine.
The best example of this way to do things is Linux, which is an operating system, which is a program that keeps track of other programs in a computer and gives each its due in space and time.
Guy Steele, “How to Grow a Language”HT: Anonymous for posting link in Piazza
forum
![Page 6: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/6.jpg)
University of Virginia cs4414 6
Memory Isolation
12 November 2013
Memory Space 1
Memory Space 2
Process 1 should only be able to access Memory Space 1Process 2 should only be able to access Memory Space 2
![Page 7: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/7.jpg)
University of Virginia cs4414 7
Software-Based Memory Isolation
12 November 2013
…movq %rax, -8(%rbp)…
Original Code
Safe Loader
…movq -8(%rbp),%rdxandq %rdx,%rgxmovq %rax, %rdx…
“Sandboxed” Code
Assumes %rdx is reserved and %rgx is protected and holds a mask for the memory segment
![Page 8: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/8.jpg)
University of Virginia cs4414 812 November 2013
SOSP 1993
SOSP 1993
![Page 9: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/9.jpg)
University of Virginia cs4414 912 November 2013
![Page 10: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/10.jpg)
University of Virginia cs4414 10
Hardware-Based Memory Isolation
12 November 2013
…movq %rax, -8(%rbp)…
Original Code Running Code
…movq %rax, -8(%rbp)…
Memory Space 1
Memory Space 2
![Page 11: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/11.jpg)
University of Virginia cs4414 11
Virtual Memory
12 November 2013
address in Process P
Virtual Memory Mapping
physical address owned by Process P
User-level processes cannot access physical memory directly: all memory addresses created by process P are virtual addresses, mapped into physical addresses owned by process P
![Page 12: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/12.jpg)
University of Virginia cs4414 12
Getting Into the Details…
12 November 2013
![Page 13: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/13.jpg)
University of Virginia cs4414 1312 November 2013
SOSP 1967
Procedure Base Register:segment number of executing procedure
Argument PointerBase PointerLinkage PointerStack Pointer
Descriptor Base Register
![Page 14: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/14.jpg)
University of Virginia cs4414 14
Generating an Address
12 November 2013
18 bits 18 bits
218 = 262144
![Page 15: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/15.jpg)
University of Virginia cs4414 1512 November 2013
Addressing Mode selects:Argument PointerBase PointerLinkage PointerStack Pointer
![Page 16: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/16.jpg)
University of Virginia cs4414 16
Descriptor Base Register
12 November 2013
What does MULTICS need to do to switch processes?
![Page 17: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/17.jpg)
University of Virginia cs4414 1712 November 2013
![Page 18: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/18.jpg)
University of Virginia cs4414 18
1982
12 November 2013
"It used to be that programs were easy to copy and change. But manufacturers began to lose money as many people made copies of software and gave them to their friends. Now, many manufacturers have figured out how to 'copy-protect' discs. A copy-protected disc–like a cartridge–can’t be copied or changed. To our mind this is a disaster: Most people learn programming by changing programs to fit their own needs. This capability of customization is what makes computers so attractive. New ways of copy protection will probably be found soon. Until then, a computer owner may have to put up with being 'locked out' of his own machine.”
Popular Mechanics, January 1982
![Page 19: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/19.jpg)
University of Virginia cs4414 1912 November 2013
Intel 80186 Intel 80286First x86 Processor with Virtual Memory Support
“Protected Mode”
![Page 20: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/20.jpg)
University of Virginia cs4414 2012 November 2013
http://en.wikipedia.org/wiki/File:Intel_i80286_arch.svg
![Page 21: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/21.jpg)
University of Virginia cs4414 21
Five x86-64 Processor ModesReal Mode: pretend to be an 8086
20-bit direct-access address space
Protected Mode: “native state”
System Management Mode: platform-specific power management and security (separate address space)
Compatibility Mode: pretend to be x86-32
IA-32e/64-bit Mode: run applications in 64-bit address space
12 November 2013
“For brevity, the 64-bit sub-mode is referred to as 64-bit mode in IA-32 architecture.”
![Page 22: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/22.jpg)
University of Virginia cs4414 2212 November 2013
Protected State (can only be modified by the kernel):
RFLAGS (includes EFLAGS)
Control Registers
Includes I/O Privilege Level
CR0 bit 0: controls if processor is in protected mode
CR3: page directory base register
![Page 23: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/23.jpg)
University of Virginia cs4414 23
Address Translation
12 November 2013
Logical Address
Segmentation Unit
Linear Address
PagingUnit
Physical Address
Mem
ory
![Page 24: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/24.jpg)
University of Virginia cs4414 24
Accessing Memory
12 November 2013
16 bits to select segment, 16- 32- or 64- bits to select offset
Actual addressable space for user-level process in Unix: 247 bytes = 128TiB
![Page 25: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/25.jpg)
University of Virginia cs4414 25
Computing the Linear Address
12 November 2013
Logical Address
Segmentation Unit
Linear Address
PagingUnit
Physical Address
Mem
ory
Segment Selector Offset
Logical (“General”, “Virtual”) Address
Segment selection is inferred from instruction type
![Page 26: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/26.jpg)
University of Virginia cs4414 26
Fetching an Instruction
12 November 2013
Code Segment
Instruction Pointer (Offset)EIP
CS
32 bits
16 bits
Table Index Ring
Global or
Local Table13 bits 1 2
Only Kernel can write to Segment Registers
![Page 27: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/27.jpg)
University of Virginia cs4414 27
Segmentation Tables
12 November 2013
Global Descriptor Table (GDT)
13 bits – up to 8192 entries
Segments can overlap!
base address
limitlinear address space
0-264 - 1
![Page 28: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/28.jpg)
University of Virginia cs4414 28
Segmentation Tables
12 November 2013
Global Descriptor Table (GDT)
Local Descriptor Table
(per process)
13 bits – up to 8192 entries How does the processor find the GDT/LDT?
![Page 29: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/29.jpg)
University of Virginia cs4414 2912 November 2013
The GDT and LDT are just data structures in memory!
Special registers store their locations
![Page 30: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/30.jpg)
University of Virginia cs4414 3012 November 2013
Logical Address
Segmentation
Unit
Linear Address
PagingU
nit
Physical Address
Memory
![Page 31: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/31.jpg)
University of Virginia cs4414 31
Paging
12 November 2013
264 linear addresses
What would it cost to have 264 bytes of RAM?
Logical Address
Segmentation Unit
Linear Address
![Page 32: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/32.jpg)
University of Virginia cs4414 3212 November 2013
$10 per 1GB = 230 bytes 264 bytes = $10 * 234
$172B ~ ½ Google’s Market Cap
![Page 33: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/33.jpg)
University of Virginia cs4414 33
Paging
12 November 2013
Logical Address
Segmentation Unit
Linear Address
PagingUnit
Physical Address
Mem
ory
We don’t need to store the whole address space in memory!Most of it is unused, and we can store rarely-used parts on the disk.
![Page 34: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/34.jpg)
University of Virginia cs4414 3412 November 2013
Image from Wikipedia
Linear Address
PagingUnit
Physical Address
Mem
ory
![Page 35: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/35.jpg)
University of Virginia cs4414 35
Overview (Intel 386)
12 November 2013
CR3
Page Directory Page Table
Physical Memory
Dir Page Offset
CR3+Dir
Page Entry
Page + Offset
12 bits(4K pages)
10 bits(1K tables)
10 bits(1K entries)
32-bit linear address
![Page 36: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/36.jpg)
University of Virginia cs4414 36
Page Table Entries
12 November 2013
CR3
Page Directory
Page Table Physical Memory
Page Entry
Page + Offset20 bits: physical address of page12 bits: flags
user/kernel pagewrite permissionpresent
![Page 37: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/37.jpg)
University of Virginia cs4414 37
386 Checkup
12 November 2013
CR3
Page Directory Page Table
Physical Memory
Dir Page Offset
CR3+Dir
20 bits addr / 12 bits flags
Page + Offset
12 bits(4K pages)
10 bits(1K tables)
10 bits(1K entries)
32-bit linear address
How many pages do we need to store the page table?
![Page 38: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/38.jpg)
University of Virginia cs4414 38
How slow is this???!
12 November 2013
Logical Address
Segmentation Unit
Linear Address
PagingUnit
Physical Address
Mem
ory
GDTR
Global Descriptor Table
CR3
Page Directory Page Table
Physical Mem
ory
Dir Page Offset
![Page 39: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/39.jpg)
University of Virginia cs4414 3912 November 2013
Logical Address
Segmentation Unit
Linear Address
PagingUnit
Physical Address
Mem
ory
GDTR
Global Descriptor Table
CR3
Page Directory Page Table
Physical Mem
ory
Dir Page Offset
Translation Lookaside Buffer (Cache)
![Page 40: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/40.jpg)
University of Virginia cs4414 40
Page Fault
12 November 2013
CR3
Page Directory
Page TablePhysical Memory
Page Entry
20 bits: physical address of page12 bits: flags
user/kernel pagewrite permissionpresent
![Page 41: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/41.jpg)
University of Virginia cs4414 4112 November 2013
How common are page faults?
![Page 42: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/42.jpg)
University of Virginia cs4414 4212 November 2013
top -o mem -stats pid,command,cpu,mem,mregion,vsize,faults
![Page 43: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/43.jpg)
University of Virginia cs4414 4312 November 2013
top -o mem -stats pid,command,cpu,mem,mregion,vsize,faults
Physical Memory: 9106M used (2553M “wired” – cannot be paged out)+ 5090M unused= 14196M
where is my missing ~2GB???!
Virtual Memory: 594G (total)
![Page 44: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/44.jpg)
University of Virginia cs4414 4412 November 2013
How expensive is a page fault?
![Page 45: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/45.jpg)
University of Virginia cs4414 4512 November 2013
#include <stdio.h>#include <stdlib.h>
int main(int argc, char **argv) { char *s = (char *) malloc (1); int i = 0; while (1) { printf("%d: %x\n", i, s[i]); i += 4; }}
What will this program do?
> ./a.out 0: 04: 08: 012: 0…1033872: 01033876: 01033880: 01033884: 0Segmentation fault: 11
![Page 46: Virtual Memory (Making a Process)](https://reader035.fdocuments.in/reader035/viewer/2022081413/5498be4db47959ae2a8b467a/html5/thumbnails/46.jpg)
University of Virginia cs4414 46
Charge
• Make progress on your projects: everyone should have a clear idea what you are doing now
• Will post more details on next deliverable (design reviews) soon
12 November 2013
Challenge: write a program that takes N as an input and produces (nearly) exactly N page faults.