operating systems 8 – virtual memory

13
OPERATING SYSTEMS 8 – VIRTUAL MEMORY PIETER HARTEL 1

Upload: gage-hall

Post on 03-Jan-2016

29 views

Category:

Documents


4 download

DESCRIPTION

Operating Systems 8 – virtual memory. PIETER HARTEL. Principle of locality: memory references tend to cluster. Only resident set of pages in memory Page fault brings in a missing page Page fault may need to free a frame Advantages Process size can be > memory size - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Operating Systems 8 – virtual memory

1

OPERATING SYSTEMS 8 – VIRTUAL MEMORYPIETER HARTEL

Page 2: Operating Systems 8 – virtual memory

2

Principle of locality: memory references tend to cluster

Only resident set of pages in memory

Page fault brings in a missing page

Page fault may need to free a frame

Advantages

Process size can be > memory size

The resident set of many processes in memory at the same time

Challenges

OS has to predict future

Avoid thrashing

Concurrency may spoil locality time

pages

Page 3: Operating Systems 8 – virtual memory

3

Principle of separation: mechanism and policy

A policy describes what is allowed to be done

A mechanism describes how it is done

Examples:

$ ls -ltotal 5320-rw-r--r-- 1 pieter ewi 574825 2012-07-29 12:00 1-Hardware.pptx-rw-r--r-- 1 pieter ewi 623208 2012-07-29 11:58 2-Overview.pptx

$ ps -lF S UID PID PPID PRI NI SZ TTY TIME CMD1 S 0 46 2 75 -5 0 ? 00:00:00 cqueue5 S pieter 5908 5899 80 0 27341 ? 00:00:00 sshd0 S pieter 5909 5908 80 0 12805 pts/1 00:00:00 bash0 R pieter 6076 5909 80 0 11040 pts/1 00:00:00 ps

Page 4: Operating Systems 8 – virtual memory

4

Paging address translation mechanism

Page table per process (how large?)

Cache page table entries in Translation Look aside buffer (TLB)

Page 5: Operating Systems 8 – virtual memory

5

Hierarchical page table

Page table in virtual memory

Disadvantage?

Always in memory

Page 6: Operating Systems 8 – virtual memory

6

Alternative mechanism: Inverted page table

One entry per frame instead of one entry per page (n > m)

Disadvantage?

Page 7: Operating Systems 8 – virtual memory

7

Policies

Replacement policies

Optimal, LRU, FIFO, and Clock (more…)

Resident set policies

Fixed and variable (more…)

Others…

Page 8: Operating Systems 8 – virtual memory

8

Page replacement policies

Difficult

Easy

Page 9: Operating Systems 8 – virtual memory

9

Resident set management policies

Choices: Fixed vs variable allocation and Local vs global scope

Working set size depends on the time t (can we measure this?)

Use page fault frequency changes as a trigger (how?)

Page 10: Operating Systems 8 – virtual memory

10

Linux

Three level page table

Clock algorithm with 8 bit age

Page 11: Operating Systems 8 – virtual memory

11

int main(int argc, char* argv[]) { int cnt, flt; char buffer[N*P]; struct rusage usage; if(argc > 1) mlock(buffer, N*P); getrusage(RUSAGE_SELF, &usage); flt = usage.ru_minflt; for (cnt=0; cnt < N*P; cnt++) { buffer[cnt] = 0; getrusage(RUSAGE_SELF, &usage); if( flt != usage.ru_minflt ) { flt = usage.ru_minflt; /* save cnt and flt to print later */ } } /* print table of cnt and flt */}

Page faults

gcc Getrusage.c

./a.out

./a.out xx

cd /usr/include/bits/

more resource.h

man mlock

Page 12: Operating Systems 8 – virtual memory

12

int main(int argc, char *argv[]) { void *src, *tgt; int in = open(argv[1], O_RDONLY); int out = open(argv[2], O_RDWR| O_CREAT|O_TRUNC, 0666); int flags = (argc > 3 ? MAP_PRIVATE : MAP_SHARED); size_t sz = lseek(in, 0, SEEK_END); lseek(out, sz - 1, SEEK_SET); write(out, "\0", 1); src = mmap(NULL, sz, PROT_READ, MAP_PRIVATE, in, 0); tgt = mmap(NULL, sz, PROT_WRITE, flags, out, 0); memcpy(tgt, src, sz); munmap(src, sz); munmap(tgt, sz); close(in); close(out); return 0;}

Sharing

Output?

gcc Mmap.c

strace ./a.out Mmap.c Foo.c

./a.out Mmap.c Bar.c xx

diff Mmap.c Foo.c

diff Mmap.c Bar.c

od –c Bar.c

man mmap

Page 13: Operating Systems 8 – virtual memory

13

Summary

Principles of locality and separation

Memory management necessary to match slow I/O to fast processor

Clean separation of logical from physical addresses

Every modern system has virtual memory