quartz/content/notes/22-virtual-memory.md
2022-11-01 13:49:33 +13:00

105 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "22-virtual-memory"
aliases:
tags:
- cosc204
- lecture
---
# Swapping and virtual memory
swapping
- if there is not enough physical memory we need to sawp processes out of the main ememory to the secondary storage e.g., disk
- ![slide](https://i.imgur.com/ImjjXkb.png)
- when a process is ready, it is swapped into the main memory
- allows more processes to multitask
partially loaded proceses
- dynamic loading
- load a potion of code when it is called as some code may not need to be executed, e.g., code for handling errors
- pros
- process not limited by amount of avilable memory
- more processes multitasking
- quicker to swap than entire process
virtual memory
- idea that processes dont need to be fully in memory to run
extends main memory to secondary storage, and allows dynamic loading of processes while they execute
- programmer deals with vmem just like paging scheme
- mem manager in OS kernel controls loading pages of the process into main mem from secondary storage
# Demand paging
dont load a page into mem until it is referenced by CPU
implementing
- in paging scheme there are extra bits in the table to provide more information
- valid/invlid bit
- protection bits
- in demand paging the mem manager uses valid/invalid bit to tell if a page is loaded
![example|400](https://i.imgur.com/JeQxF4H.png)
note: each page can be stored twice: loaded in main memory and in the backing store - these two copies need to remain consistent. i.e.., changes to one must be reflected in the other
page faults
- "trap" occurs when trying to access and invalid page
- what the os does:
- check if caused by invalid memory access or unavailable page frame
- if nvalid mem access
- terminate process
- else
- find a free frame
- read the page from the disk to the free frame
- modify the page table
- restart the instruction
- VMAs are searched to find valid areas or memory access
# page replacement algorithms
If main memory is full when a page fault is generated, one of the pages currently being held needs to be replaced.
This means an extra step in the operating systems page-servicing routine.
- Find the desired page on the backing store (secondary storage).
- Find a free frame of memory
- If theres a free frame in memory, use it
- Otherwise: Select a frame to swap out
- Save it to the backing store (in case its changed)
- Proceed as before.
FIFO
- replace the oldest page
- ![example](https://i.imgur.com/EM09dtl.png)
- pro
- simple to understand/implement
- con
- maybe first page to be ref'd is often being referenced
- belady's anomaly: possible to increase numbe of page faults when increasing the number of frames in memory
Optimal page replacement
- replace the page that will not be used for the longest time
- ![example](https://i.imgur.com/RiNi1JI.png)
- pro: optimal
- con: can predict future
LRU (least recently used)
- replace page than has not been used for the longest time
- ![example](https://i.imgur.com/VpMGeXY.png)
- pro: optimal if you look back in time
- con: time consuming to keep record of LRU
- future memory references resemble past ones
# frame allocation
how many frames to allocate to a process?
how to distribute frames among n processes in a multitasking scenario
- equal allocation: all created equal: so each get equal number of frames
- proportional allocation: allocate depending on size of process
- local vs global replacement:
- local: steal from your own frames
- global: can steal from "victim" processes
# thrashing
when a proces has too lttle frames it will have a lot of page faults.
a thrashing process spending more time paging than executing
the working set of a process is the number of pages a process needs in orde