本文是我在上UCSD的 CSE 120: Principles of Operating Systems (Winter 2020) 整理的笔记,这一课主要介绍了操作系统里面虚拟内存的概念,主要是对上一节课的逻辑内存的一部分补充,关于segment和page的概念可以参考上一篇笔记。
Review
-
Segments and Pages
-
Structuring memory as segements/pages allows:
- partitioning memory for convenient allocation
- reorganizing memory for convenient usage
-
Approaches
- Relocation via address translation
- Protection via matching operations with objects
-
Result: a logically organized memory
-
-
Optimization
-
Not all pieces need to be in memory
- Need only piece being referenced
- Other pieces can be on disk
- Bring pieces in only when needed
-
Illusion: there is much more memory
-
Needed:
- A way to identify whether a piece is in memory
- A way to bring in a piece (from where to where?)
- Relocation (address translation)
-
-
From logical to virtual memory
-
Logical memory becomes virtual memory
- Still logical (seperate organization from physical)
- Virtual: memory seems to exist, regardless of how (memory or disk)
-
Virtual memory: illusion of large memory
- Keep only portion of logical memory in physical
- Rest is kept on disk (larger, slower, cheaper)
- Unit of memory is segment or page (or both)
-
Logical address space
$\rightarrow$
virtual address space
-
Virtual memory based on paging
-
Paged virtual memory
- All of pages reside on disk
- Some also reside in physical memory (which ones?)
-
Contents of page table entry
- Valid: is entry valid (page in physical memory or not)
- Ref: has this page been referenced yet?
- Mod: has this page been modified?
- Frame: what frame is this page in?
- Prot: what are the allowable operations?
-
Address Translation
-
Process:
-
Get entry: index page table with page number
-
If valid bit is off, which cause a page fualt, then trap into kernel
-
Find page on disk
-
Read it into a free frame
- may need to make room if there is no available frame: page replacement
-
Record frame number in page table entry
-
Set valid bit and other fields
-
-
Retry instruction (return from page-fault trap)
-
-
Possible faults under segmentation/paging
-
two kinds of address:
- Virtual address: (segment s, page p, offset i)
- Physical address: (frame f, offset i)
-
Use s to index segment table (to get page table)
- may get a segment fualt
-
Check bound (Is p < bound?)
- may get a segmentation violation
-
Use p to index page table (to get frame f)
- may get a page fault
-
Physical address: concatenate f and i
-
-
Cost of page faults is high
-
Disk: 5 ~ 6 orders magnitude slower than RAM
-
Example:
- RAM access time: 100 nsec
- Disk access time: 10 msec
- p = page fault probability
- Effective access time: 100 + p * 10,000,000 nsec
- if p = 0.1%, effective access time = 10,100 nsec (100 times slower!)
-
-
Possible implementation
-
Principle of Locality
-
Not all pieces referenced uniformly over time
- Make sure most referenced pieces in memory
- If not, thrashing: constant fetching of pieces
-
References cluster in time/space
- Will be same or neighboring areas
- Allows prediction based on past
-
-
Page replacement policy
-
Goal: remove page not in locality of reference
-
Page replacement is about:
- which page(s) to remove
- when to remove them
-
How to do it in cheapest way possible, with:
- least amount of additional hardware
- least amount of software overhead
-
-
Basic Page Replacement Algorithms
-
FIFO: select page that is oldest
- Simple: keep pointer to next frame after last loaded
- Doesn’t perform well (oldest may be popular)
-
OPT: Optimal Page Replacement
-
Optimal: replace page that will be accessed furthest in future
-
Not realistic:
- Requires predicting the future
- Useful as a benchmark
-
-
LRU: Least Recently Used
-
Replace page that was least recently used
- LRU means used furthest in the past
-
Takes advantage of locality of reference
-
Must have some way of tracking frame with LRU page : requires hardware support
-
-
Others
-
Approximating LRU: Clock Algorithm
-
Select page that is old and not recently used
- Clock (second chance) is approximation of LRU
-
Hardware support: reference bit
- Associated with each frame is a reference bit
- Reference bit is in page table entry
-
How reference bit is used
- When frame filled with page, set bit to 0 (by OS)
- If frame is accessed, set bit to 1 (by hardware)
-
Working process
-
Arrange all frames in circle (clock)
-
Clock hand: next frame to consider
-
Page fault: find frame
- If ref bit 0, select frame
- Else, set ref bit to 0
- Advance clock hand
- If frame found, break out of loop, else repeat
-
If frame had modified page, must write it to disk
-
-
-
Resident Set Management
-
Resident set: process’s pages in physical memory
- One set per process
- How big should resident set be? Which pages?
- Who provides frame (same process or another)?
-
Local: limit frame selection to request process
- Isolates effects of page behavior on processes
- Inefficient: some processes have unused frames
-
Global: select any frame (from any process)
- Efficient: resident sets grow/shrink accordingly
- No isolation: process can negatively affect another (by replacing other process’s important pages)
-
-
Multiprogramming Level
- Multiprogramming level: number of processes in physical memory (non-empty resident sets)
- Goal: increase multiprogramming level - how?
- However, beyond certain point: thrashing (make processor utilization pretty low since many processes may not be working)
- Resident set should contain the working set
-
Denning’s Working Set Model
-
Introduction
-
Working set:
$W(t, \Delta)$
- Pages referenced during last delta (process time)
-
Process given frames to hold working set
-
Add/remove pages according to
$W(t, \Delta)$
-
If working set doesn’t fit, swap process out
-
-
Working set is a local replacement policy
- Process’s page fault behavior doesn’t affect others
-
Problem: difficult to implement
- Must timestamp pages in working set
- Must determine if timestamp older than
$t - \Delta$
- How should
$\Delta$
be determined?
-
Contrast to Clock
- Clock: simple, easy to implement, global policy
-