2022. 12. 15. 03:47ใ_Study/OperationSystem
Virtual Memory ๐¸.•*¨*•¸.•*¨*•¸.•*¨*•¸.•*¨*•
ํด๋น ์๋ฃ๋ ๊ฐ์ ํ์ต์๋ฃ์ ๋๋ค.'
https://www.youtube.com/watch?v=YCfP9I4K-8Y ๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก swap in, out์ผ๋ก ํ๋๋์คํฌ๋ฅผ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. overhead๊ฐ ๋ฐ์ํ์ฌ ํจ์จ์ ์ด์ง ์์ ์ ์๋๋ฐ ์ง์ญ์ฑ(locality)๋ฅผ ์ด์ฉํ์ฌ ์ฑ๋ฅ์ ๋์ผ ์ ์๋ค.
Hardware and Control Structures
Paging & Segmentation
Memory management
1) All memory references within a process are logical addresses :
๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฐธ์กฐ๋ ๋ ผ๋ฆฌ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ค. (๋ณํ)
- process may be swapped in and out of main memory. : ๋ค๋ฅธ ์์น์ ๋ก๋ฉ์ด ๋ ์๋ ์๋ค.
2) A process may be broken up into a number of pieces : ํ ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ๋ธ๋ก์ผ๋ก ๋๋๋ค.
- Process don't need to be contiguously located in main memory.
๊ผญ ๋ฐ๋์ ์ฐ์์ ์ผ๋ก ์์นํ ํ์๋ ์๋ค.
It is not necessary that all of the pages or segments of a process be in main memory during execution.
์คํ์ ํ์ํ ๋ธ๋ญ๋ง ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ธ์ค์.
If the piece that holds the next instruction to be fetches and the piece that holds the next data location to be accessed are in main memory,
- then at least for a time execution may proceed
OS begins by bringing only one or a few pieces : ์์ํ ๋ ๋ช๊ฐ์ ๋ธ๋ก๋ง ํ ๋นํ๋ค. ํ๋์์ ์คํ ๊ฐ๋ฅํ๋ค.
To include the initial program piece and the initial data piece
Resident set : Portion of process that is in main memory : ์ด๋ฏธ ์์ ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉ๋์ด ์๋ ๋ถ๋ถ
when address is needed that is not in main memory : ์ฐธ์กฐํด์ผํ๋ ์ฃผ์๊ฐ resident set์ ์๋ค๋ฉด?
-> interrupt ๋ฐ์
OS puts the interrupted process in a blocking state : ์ผ๋จ ๋ธ๋ก (์คํํ ์๊ฐ ์์)
OS issues a disk I/O Read request
which causes the OS to place the affected process in the ready state
- when it runs again, required data is in memory.
๊ณ์ interrupt๊ฐ ๋ฐ์ํ๋๋ฐ ํจ์จ์ ์ผ๊น?
-> ๋ ๋ง์ ํ๋ก์ธ์ค๋ฅผ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆด ์ ์์ด ํ์ฉ๋๋ฅผ ๋์ผ ์ ์๋ค.
-> main memory ๋ณด๋ค ํฐ ํ๋ก์ธ์ค๋ ์คํํ ์ ์๋ค.
Partial Loading
main memory may be full : ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๋ ์ฐฌ ๊ฒฝ์ฐ
when ths OS brings one piece in, it must swap one piece out
swap out์ ์งํํด์ผ ํ์ง๋ง, ๋ฐฉ๊ธ ๋ง ๋ค์ด์จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ out ์ํค๋ ๊ฒฝ์ฐ?
thrashing : a state in which the processor spends most of its time swapping pieces rather than executing user instruction CPU ๊ฐ ๋ช ๋ น์ด ์ํํ์ง ๋ชปํ๊ณ swapping ํ๋๋ฐ๋ง ์๊ฐ์ ๋ ์ฐ๋ ๊ฒฝ์ฐ
Principle of Locality
page ์ฐธ์กฐ๋ฅผ ์์ธกํ ์ ์์ด VM ํจ์จ์ฑ์ ๋์ผ ์ ์๋ค. swap out ์ ์ด๋ค ๊ฒ์ ํด์ผํ ์ง ์์ธกํ์ฌ ์ด๋ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ๋ก๋ฉํ ์ง ์ ํํ ์ ์์ด์ interrupt ๋ I/O ์๊ตฌ๋ฅผ ์ค์ผ ์ ์๊ธฐ์ VM ํจ์จ์ฑ์ ๋์ผ ์ ์๋ค.
Paging
Page :
page table์ ๋ง๋ค์ด ์ ๋ฆฌํ๋ค.
page number + offset ์ธ์๋ ๋ค์ด์ค๋ ์ ๋ณด ์ค 4๊ฐ์ง๋
- Present Bit : ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ํ์ฌ ์๋์ง?
- Modify Bit : ๋ด์ฉ์ด ์์ ๋์๋์ง?
- Other Control Bits : Shared? protect?
- Frame number
๋ณํ ๊ณผ์
1. virutal address๊ฐ ๋ค์ด์ค๋ฉด ํ์ด์ง ๋๋ฒ์ ์คํ์ ์ด ์๋ค.
2. ํ์ด์ง ๋๋ฒ๋ฅผ ์ด์ฉํด ํ์ด์ง ํ ์ด๋ธ์ index๋ฅผ ์ฐพ๋๋ค.
3. Frame number๊ฐ ๋ค์ ์๋ ๋ฐ ์ด๋ฅผ + offset์ด๋ ํฉ์ณ ๊ณ์ฐํ์ฌ ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐพ์๋ธ๋ค.
Page Table Size : ๋ด๊ฐ ๋ช ๊ฐ๋ ๊ณ์ฐํ ์ ์์๊น? ์ผ๋ง๋ ํฌ๊ฒ ๋ง๋ค์ด์ผ ํ๋?
Tha amount of memory devoted to page tables
- could be unacceptably high example :
Each process can have up to 2^31bytes(2GB) of virtual memory // ์ต๋ 2๊ธฐ๊ฐ
Using 2^9bytes(=512B) page: // ํ์ด์ง ํฌ๊ธฐ
2^22 page table entries are required per process // ๋๋ 2์ 22๊ฐ์ page table์ด ์ด์ฉ ๊ฐ๋ฅ
To overcome this problem
- Most virtual memory schemes store page tables in virtual memory rather than real memory(n>m)
- when process is running, part of its page table is in main memory // ๋ถ์กฑํด์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ฅผ ์ ์ฅํด์ผํ๋?
Page table sturcture (ํ์ฅ๋ ๊ตฌ์กฐ)
- Hierarchical page scheme : 2๋จ ๊ณ์ธต๊ตฌ์กฐ : ์ผ์ข
์ directory๋ง ๊ฐ์ง๊ณ ์์ผ๋ฉด ๋์ด ๋ ํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์์ ์ ์๋ค.
- 1st level root page table : main memory
- 2nd level table : virtual memory
- ์์ผ๋ฉด page fault(context switching)ํ๊ณ ๊ฐ์ ธ์์ผํ๋ค.
- - Hash / Inverted page tables : Hash ๊ฐ์ ์ฌ์ฉํ ๊ตฌ์กฐ
- Inverted Page Table
- Page# of a virtual address ia mapped into a hash value
- - Hash value points to inverted page table
- Hash Function
Translation Lookaside Buffer (TLB)
Each virtual memory refenrnce -> two physical memory accesses
ํญ์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ ๋ฒ ์ ๊ทผํ๋๋ฐ
1) page table
2) real data
- doubling the memory access time
To overocme the memory access time
- uses special high-speed cache called a translation lookaside buffer (TLB); // ํน๋ณํ cache๋ฅผ ์ฌ์ฉ
- contains those page table entries that have been most recently used.
๊ฐ์ฅ ์ต๊ทผ์ ์ฐธ์กฐ๋ table ํญ๋ชฉ์ ๊ฐ์ง๊ณ ์๋ค.
TLB๋ฅผ ๋จผ์ ํ์ธํด์
์์ผ๋ฉด -> ๋ฐ๋ก ์ฌ์ฉ
์์ผ๋ฉด page table๋ก ๋์ด๊ฐ
page table์์
์์ผ๋ฉด -> TLB ์ ๋ฐ์ดํธ
์์ผ๋ฉด -> page fault
context switching
TLB : Associative mapping
Processor is equipped with HW
That allows it to interrogate simultaneously a number of TLB entries to determine if there is a match on page number.
์ฌ๋ฌ๊ฐ์ TLB๋ฅผ ๋์์ ํ์ธํด์ผํ๋ ๊ฒฝ์ฐ?
TLB์ ํ์ด์ง ๋๋ฒ์ ํจ๊ป frame ๋ฒํธ๊น์ง ๋ค๊ณ ์์ ์ ์์ด์ ๋์์ ์ ๊ทผํ ์ ์๋ค. TLB์ Cache๊ฐ ๊ฐ์ด ์ํธ์์ฉํ๋ ์์๊ฐ ์ ๊ทธ๋ฆผ์ธ๋ฐ, TLB์ hit ํ๋ฉด ๋ฐ๋ก ์๋๋ก ๋ด๋ ค์ Real address์ ์ ๊ทผ๊ฐ๋ฅํ๋ค. TLB์ ์๋ ๊ฒฝ์ฐ miss๋ก page table ์์ ๊ฐ์ ์ฐพ์์ค๊ฒ ๋๋ค. ๊ทธ ์ดํ cache operation์ด ์งํํ๊ฒ ๋๋๋ฐ cache์๋ ๊ฐ์ด ์๋ค๋ฉด ๊ฐ์ ๋ฐ๋ก ์ฌ์ฉํ์ง๋ง ์๋ ๊ฒฝ์ฐ๋ ์ด๋ฅผ update ํ๊ฒ ๋๋ค.
Page Size
smaller the page size
// page size๊ฐ ์์ ์๋ก
- Lesser internal fragmentation // ๋ด๋ถ ๋จํธํ๊ฐ ์ค์ด๋ญ๋๋ค. (paging๊ธฐ๋ฒ)
- but more pages are required per process // ํ์ด์ง๊ฐ ๋ ๋ง์ด ํ์๋ก ํ๋ค.
- More pages are process means larger page tables // page tables์ ๊ฐ์๊ฐ ๋์ด๋ ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด์ฉํด์ผ ํ ์ง๋ ๋ชจ๋ฅธ๋ค.
page table , page์ ์์ผ๋ฉด ๋ ๋ฒ falut๊ฐ ๋ฐ์ํ ์๋ ์๋ค.
๊ฐ ํ๋ก์ธ์ค์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ -> ํ๋์จ์ด๋ฅผ ์ค๊ณํ ๋ ๊ฒฐ์ ๋๋ page์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์๋ ์๋ค.
Large Program์ ์คํํ ๋ :
์ฐธ์กฐ ์ง์ญ์ฑ์ด ๋จ์ด์ง๋ค. -> (๋ฉํฐ์ค๋ ๋)์ฌ๋ฌ ์ฃผ์๋ฅผ ๋ฐ์ด๋์ ์ฐ๋ ค๊ฐ ์๋ค.
๋ฐ๋ผ์ ์ปดํจํฐ๋ง๋ค page size๊ฐ ๋ค๋ฅธ๋ฐ, ์ ์ฐ์ฑ์ ๊ฐ์ง๊ฒ ์ค๊ณํ์๋ค.
์ ์ ์์ page์ mapping์ด ๋๋ค๋ฉด, graph์ ๋ฐ๋ผ์ page size๋ฅผ ์ค์ ํ๋ฉด ๋๋ค.
thread stack๊ณผ ๊ฐ์ ๊ฒฝ์ฐ page size๋ฅผ ์๊ฒํ๋ฉด์, ์ฌ๋ฌ๊ฐ์ page๋ฅผ ์ฐธ์กฐํ๋๊ฒ ์ ๋ฆฌํ๋ค: ๋ค์ํ ์ฐธ์กฐ ๋ถ๋ถ ๊ฐ์ ธ์ค๊ธฐ
์ด์์ฒด์ ๋ ํ๋๋ง ์ง์ํ์ง๋ง, ํ๋์จ์ด๋ ์ฌ๋ฌ ์ฌ์ด์ฆ๋ฅผ ์ง์ํ๋ค.
Thrashing Diagram
If a process does not have 'enough' pages, the page-fault rate is very high
// ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ค๋ฉด page๊ฐ ์ถฉ๋ถํด์ผํ๋ค. ์๋๋ฉด page-fault๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
-> Low CPU utilization
-> OS thinks that it needs to increase the degree of multiprogramming
-> another process added to the system.
CPU ์ฌ์ฉ๋ฅ ์ด ์ฆ๊ฐํ๋ค๊ฐ ๋ฉํฐํ๋ก๊ทธ๋๋ฐ์ด ํ๊ณ์ ๋๋ฌํ๋ฉด?
memory ๋ถ์กฑ ๋ ๋ง์ ํ๋ก๊ทธ๋จ -> page ๊ฐ์๊ฐ ์ค์ด๋ฌ -> ํ์ํ ๋ถ๋ถ์ด main memory ์ ์์ ->page fault ๋ฐ์ -> disk I/O๋ฅผ ์์ฒญ
page fault ๋ฐ์์ disk I/O๋ฅผ ์์ฒญ
๊ธฐ๋ค๋ฆฌ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ ์ฒด์ ์ผ๋ก CPU ์ฌ์ฉ๋ฅ ์ด ๋ ๋จ์ด์ง๋ค.
-> ๋ค์ ํ๋ก์ธ์ค๋ฅผ ๋ ์คํ
-> I/O ์์ฒญ, ๋ ๋จ์ด์ง๋ค.
-> thrashing ๋ฐ์
:memory๊ฐ ๋ถ์กฑํ์ฌ swap in out์ ๊ณ์ ๋ฐ๋ณตํ์ฌ ์ฐ์ฐ์ ํ์ง ์๋ ์ํ
์ง์ญ์ฑ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก paging์ด ๋์ํ๋๋ฐ, ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ์ง์ญ์ผ๋ก ์ด๋ํ ์ ์๊ณ ๊ฒน์ณ์ง ์๋ ์๋ค.
thrashing์ ๋ฐ์ ์์ธ : ๋ด๊ฐ ์ฐธ์กฐํ ํ์ํ size๊ฐ memory size๋ณด๋ค ํฐ ๊ฒฝ์ฐ
Segmentation
address space์ ๋ถ๋ถ์ ๋๋ ์ ์๋ค. ์ฌ๋ฌ๊ฐ์ segments๋ก ๋๋๋๋ฐ ์ฌ์ด์ฆ๊ฐ ๋ค์ํ๋ค.
- simplifies handling of growing data structures
์ฅ์ : ๋ฉ์ด๋ฆฌ์ฑ๋ก ์ฐ๋ ๊ฒ์ด ์๋ ๊ณต๊ฐ์ ๋ถํ ํด์ ์ฌ์ฉํ๋ค. / / ํฐ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋ค.
๊ฐ๋ฐ์๊ฐ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋๋ฐ ํน์ segment๋ฅผ ๋ฐฐ์ ํ๋ค๊ฑฐ๋, ์ด์์ฒด์ ๊ฐ ์ด segment๋ฅผ ํ์ํ๋ฉด ๋ ๋๋ฆฌ๊ณ , ๋ ์ค์ด๋ ๊ฒฝ์ฐ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๋ค.
์ ์ฒด ํ๋ก๊ทธ๋จ์ ์ํฅ์ ์ฃผ์ง ์๊ณ segment๋ง ๋๋ฆฌ๋ฉด ๋๋ค.
์ธ์ ๊ณต๊ฐ์ด ์๋ค๋ฉด, ๋ ํฐ ๊ณต๊ฐ์ผ๋ก ์ด๋ํ๊ธฐ๋ ํ๋ค. swap out
- allows programs to be altherd and recomplied independtly
๋ถ๋ถ๋ง ์ปดํ์ผ์ ๋ค์ํ ์ ์๋ค.
- lends itself to sharing data among processes
ํ๋ก์ธ์ค ๊ฐ์ segment๋ฅผ ๊ณต์ ํ ์๋ ์๋ค.
-lends itself to protection
๋ณดํธ ๋นํธ๋ฅผ ์ค์ ํด์ ๋ณดํธํ ์๋ ์๋ค.
Segment Organization
paging๊ณผ ๋ค๋ฅด๊ฒ length๊ฐ ์ถ๊ฐ ๋์๋ค.
paging : external fragmentation ์ด ์์ (์ธ๋ถ๋จํธํ), ๋ด๋ถ ๋จํธํ๊ฐ ์๋ค. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
๊ณ ์ ํฌ๊ธฐ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ํ๋ก๊ทธ๋๋จธ๋ ์ ์ ์์ง๋ง ํฌ๋ช ํ๊ฒ paging ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค.
segment : internal fragmentation
ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฌ์ฉํ๊ธฐ์ ์ง๊ด์ ์ด๋ค. ํ์ฅ์ฑ๋ ์ข์ผ๋ฉฐ ๋ชจ๋ํ๋ ๊ฐ๋ฅํ๋ค.
Combined Paging & Segments
address space
main memory (frame) ์ ํฌ๊ธฐ์ ๋๊ฐ์ page ํฌ๊ธฐ๋ก ๋๋๋ค. (segment) ํฌ๊ธฐ๋ page๋ณด๋ค ์ปค์ ์ฌ๋ฌ page๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค. segment๋ page๋ฅผ ํ ๋น ๋ฐ์ ์ชผ๊ฐ์ง๋ค.
๊ฐ๋ฐ์ ์ ์ฅ์์ ๋ณด๋ ์ฃผ์์ system์์ ๋ณด๋ ์ฃผ์๊ฐ ๋ค๋ฅด๋ค.
ํ๋ก๊ทธ๋๋จธ ์ ์ฅ์์ logical address๊ฐ ์ด๋ป๊ฒ ๋ณด์ด๋๋ฉด
system ๊ด์ ์์ ๋ณด๋ segment
segment ๋ง๋ค page table ์ด ์๋ค.
Protection and Sharing : Segment ์ ์ด์
Operating System Software
Policies for Virtual Memory : minimize page faults.
๋จ๊ณ๋ณ๋ก ์ด๋ค ์ ์ฑ ์ ์ฐ๋์ง
๋ฉ๋ชจ๋ฆฌ ๋งค๋์
Policy for virtual memory (fetch, placement, replacement)
1. fetch Policy : ์ธ์ main memory๋ก loading ํ ์ง ๊ฒฐ์
- demand paging : ์์ฒญ์ด ์ค๋ฉด fetching : page fault ๊ฐ ์ผ์ด๋์ ์ ์ ๋ ๋ง์ page๋ค์ด fetch๋์ด ์๊ฐ์ด ์ง๋๋ฉด ์์ ํ๊ฐ ๋๋ค.
- prepaging : ํ๋๋์คํฌ์ ๋ฌผ๋ฆฌ์ ์ธ ํน์ง์ ๋ํด์ ๊ธฐ๊ตฌ์ ์ผ๋ก ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ ํ๋๋์คํฌ, ๋ฏธ๋ฆฌ ๊ฐ์ ธ๋ค ๋๊ณ ์ฒ๋ฆฌํ๊ธฐ,
ineffective if extra pages are not referenced
๊ฐ์ ธ๋ค ๋๊ณ ์ฐธ์กฐ ์ํ๋ฉด ๋ฌด์ฉ์ง๋ฌผ. ์ง์ญ์ฑ ๊ธฐ๋ฐ + ๋์คํฌ์ ํน์ฑ
2. Placement Policy ์ด๋ ์์น์ ๋ฐฐ์น๋ฅผ ํ ๊ฒ์ธ์ง : segment ์์ ์ค์ํ๋ค. / ๋ถ์ฐ์์คํ , ๋ฉํฐํ๋ก๊ทธ๋๋ฐ / ์ฐธ์กฐํ ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์
paging ๊ธฐ๋ฒ์์๋ ๊ทธ๋ ๊ฒ ์ค์ํ์ง ์๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ํ๋์จ์ด์ ๊ธฐ๋ฅ, ์ด๋์ ๋ฐฐ์น๋ฅผ ํ๋ ์๊ด์ด ์๋ค.
3. replacement policy : ์๊ฐ ์ฐจ์ด๊ฐ ๋ง์ด ๋ ์ ์๋ค. / ๊ฐ์ฅ ๋ ์ธ ๊ฑฐ ๊ฐ์ page๋ฅผ ์ ๊ฑฐํ๋ค.
static paging algorithms
- Random Replacement : random
- Optimal : ์ต์ / ๊ตฌํ ๋ถ๊ฐ๋ฅ
- Least Recently Used (LRU) : tag์ฌ์ฉ ์ค๋๋ ๊ฒ์ ๋ฐ๊ฟ
- Least Frequently Used (LFU) : ๊ฐ์ฅ ์ ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐ๊ฟ
- First In First Out (FIFO) : ์ํ ํด์ ๋ฐ๊ฟ
Dynamic paging algorithm
- working Set model
- Random Replacement : random
stream ์ ๋ณด๊ฐ ์ ํ ์ฑ๋ฅ์ ์ํฅ์ ๋ผ์น์ง ์์.
๊ฒฐ๊ณผ๊ฐ ๋งค๋ฒ ๋ฐ๋ ์๋ ์๋ค.
- Optimal (Belady's Optimal Algorithm)
๊ฐ์ฅ ๋ฏธ๋์ ๋ฉ๋ฆฌ ์๋ page๋ฅผ ๊ต์ฒดํ๋ค.
๊ฐ์ฅ page fault๊ฐ ์ ์ง๋ง
์ด์์ฒด์ ๊ฐ ๋ฏธ๋์ ์ํฉ์ ์์ง ๋ชปํ๋ฏ๋ก ๊ตฌํ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ ํ๊ฐ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉํ๋ค. (์ต์ ์ ์ํฉ)
FWD(forward distance): ์ ๊ฑฐ๋ฆฌ
- Least Recently Used (LRU) :
๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉํ์ง ์์๋ page๋ฅผ ๊ต์ฒดํ๋ค.
๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐํ๋ page๋ฅผ ๊ธฐ์ต (์๊ฐ)
์ง์ญ์ฑ์ ์๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. -> tag(์ต์ข ์ฐธ์กฐ์๊ฐ)
BKWD(t) = ์ง๋ ๊ฑฐ๋ฆฌ
tag ๋ฅผ ๋งค๋ฒ ์ ๋ฐ์ดํธ ํ๋ฉด ํ๋์จ์ด์ overhead๊ฐ ๋ฐ์ํ๋ค.
Frame์ ํ๋๋ง ๋๋ ค๋ ์ฑ๋ฅ์ด ๋งค์ฐ ์ข์์ง๋ค.
- Least Frequently Used (LFU)
์ ๊ฒ ์ฐธ์กฐ๋ ๊ฒ์ ์ ํ
๊ฐ์ผ๋ฉด Random์ผ๋ก ์ ํ
FREQ(x)
- First In First Out (FIFO) : ์ํ ๋ฒํผ์ฒ๋ผ ๋ค๋ฃฌ๋ค. (์ ์ผ ์ฌ์ด ๋ฐฉ๋ฒ Round Robin)
- ์ฐ๊ฒฐํ ํฌ์ธํฐ๋ง ์์ผ๋ฉด ์ฝ๊ฒ ๊ฐ๋ฅํ๋ค.
- ๊ตฌํ์ด ์ฝ๋ค.
- ๊ฐ์ฅ ์ค๋์ ์ ์ ํ๋ ํ์ด์ง๋ฅผ ์ ํํ๊ธฐ ๋๋ฌธ์ ์ํ buffer์ ์ฌ์ฉํ๋ค.
- AGE(x)
๋ฒจ๋ผ๋์ ์ญ์ค : Frame ๊ฐ์๋ฅผ ๋๋ ธ๋๋ฐ ์ฑ๋ฅ์ด ์ข์์ง์ง ์๋๋ค.
stack alogorithms : frame์ ๋๋ ธ์ ๋ ํฌํจ๊ด๊ณ๊ฐ ์ฑ๋ฆฝํ๋ค. -> ๋ฒจ๋ผ๋์ ์ญ์ค์ด ๋ฐ์ํ์ง ์๊ณ frame์ ๋๋ฆฌ๋ฉด ์ฑ๋ฅ์ด ์ข์์ง๋ค.
LRU : stack
FIFO : ์๋
Clock Policy ( overhead ๊ฐ ์ ์ LRU๋์์๊น?)
Sets of frames is considered to be a circular buffer
each frame has use bit
The use bit is set to 1 -> page fault ๊ฐ ๋ฐ์
use bit์ด 0์ธ ํ๋ ์์ ์ฒดํฌํ๋ค.
-> (fetch๋จ)1์ 0์ผ๋ก ๋ณ๊ฒฝ
-> 0์ ์ฐพ์ผ๋ฉด ๊ทธ๋ค์์ ํฌ์ธํฐ ์ฐ๊ฒฐ
ํ๋ฐํด ๋๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด์ผํ๋ค.
๊ฒฐ๊ตญ frame ์๋ฅผ ๋ง์ด ๋๋ฆฌ๋ฉด ์ฑ๋ฅ์ ์ข์์ง๋ค.
์์ฒญ๋ ๋น์ฉ์ด ์์๋๋ค.
Page buffering
page fault๊ฐ ๋ฐ์์ list๋ฅผ ๊ฒ์ฌ๋ฅผ ํ๋ค.
-> ํ์ํ page๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ค๋ฉด page table์์ p bit์ set์ ํ๋ค.
-> ํ์ํ page๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ค๋ฉด, Free page list์ ๋ฎ์ด์ด๋ค. (buffer)
๋ฐ๋ผ์ ๋ฐ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ ๋ฆฌ์คํธ๋ฅผ ๊ด๋ฆฌ๋ฅผ ํ๋ค. ๋ ๋ฆฌ์คํธ๊ฐ ์๋๋ฐ
Free page list : ํ์ด์ง๋ฅผ ์ถ๊ฐ (ํฌ์ธํฐ๋ง ๊ฐ์ง๊ณ ์๋ ๋ฆฌ์คํธ)
Modified page list : ๋ณ๊ฒฝ ์ฌํญ์ ์ถ๊ฐ
Note that the page is not physically moved about in main memory
๋ ผ๋ฆฌ์ ์ผ๋ก ์์ง์ด๋ ๊ฒ์ด ์๋ ํฌ์ธํฐ๊ฐ ์์ง์ธ๋ค.
๋ด๊ฐ ๊ฐ์ ธ์จ page์ ์๋ ๋ด์ฉ์ด๋ผ๋ฉด ์ฌ์ฉํ๋ค.
page table์์๋ง ํฌ์ธํฐ๋ฅผ ์ ๊ฑฐํ๊ณ , bit=0, free list์ ์ฐ๊ฒฐ.
์ฅ์ : ๋น์ฉ์ ์ค์ผ ์ ์๋ค.
Dynamic Page Frames Allocation
๋จ์ : ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ผ๋ง๋ ํ ๋น ๋ฐ์๋๋์ ๋ฐ๋ผ fault๊ฐ ๋ฌ๋ผ์ง๋ค. -> ์์๋ณด๋จ fault์ด ์ค์ง๋ ์๋๋ค. -> dynamic page frame์ ์ฉ
static paging -> number of required page is fixed, no adjusting the allocation.
Thrashing : ๋๋ฌด ๋ง์ page fault๋ก ์ธํด ๋ฐ์ํ๋ค. (๊ณ์ ๊ต์ฒด)
ํ์ํ ๋งํผ frame์ ํ ๋นํ๋ค.
working set algorithm (๊ฐ์ฅ ํ๋์ ์ธ ๋ชจ๋ธ)
fault๊ฐ ์์ฉ ๊ฐ๋ฅํ ์ ๋๋ฅผ ๊ฐ์ํ๋ค.
window of time : ์ผ์ ๊ธฐ๊ฐ์ ์ฌ์ฉํ๋ page, ๊ณ์ ๋ฐ๋๋ค.
window ํฌ๊ธฐ(์ต๋ ํ๋ ์ ์)๋ง ๊ณ ๋ คํ๋ฉด ๋์ด LRU ๋ณด๋ค overhead ๊ฐ ์ ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ธ์ modified page์ ์์ ์ฌํญ์ disk์ ์ ์ฉํ ๊น?
Cleaning Policy
์ธ์ swap out์ ํ ๊น?
Demand cleaning : ์์ฒญ์ด ์ค๋ฉด, fetch๊ฐ ๋จผ์ ์ผ์ด๋๊ณ , modified page๋ฅผ ์ ๋๋ค.
2๋ฒ ์ฒ๋ฆฌํด์ผํ๊ธฐ ๋๋ฌธ์ CPU ์ฌ์ฉ๋์ด ์ข์ง๋ ์๋ค.
Precleaning : ์์ฒญ๋๊ธฐ ์ ์ batch์ ํ ๋ฒ์ ์ด๋ค.
page buffering์ ์ ์ฉํ๋ฉด ๋ ํจ์จ์ ์ด๋ค.
๊ต์ฒด๋๋ ํ์ด์ง๋ free์ modified(ํ๋ฒ์ ์ผ๊ด์ฒ๋ฆฌ) ๋ก ๋๋๋ค.
free list๋ฅผ ๊ณ์ ์ฌํ์ฉ ํ ์ ์๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ด๋ค. disk ๊น์ง ๊ฐ ํ์๊ฐ ์๋ค.
Load Control : determines the number of processes : ํ๋ก์ธ์ค์ ๊ฐ์๋ฅผ ์ ํ๋ค.
๋๋ฌด ์ ์ ํ๋ก์ธ์ค : swapping์ ์๊ฐ์ด ๋๋ฌด ๋ง์ด ์ฌ์ฉ
๋๋ฌด ๋ง์ ํ๋ก์ธ์ค : thrashing์ด ๋ฐ์
๋ชจ๋ํฐ๋ง์ ํ๊ณ ์๋ค๊ฐ use bit๊ฐ ๋๋ฌด ๋ง์ 1์ด ๋์ page fault ๊ฐ ๋ฐ์ํ๋ฉด : page๋ฅผ ๋๋ฆฐ๋ค.
use bit๊ฐ 0์ธ ์ฌ์ฉํ์ง ์๋ page๊ฐ ๋ง์ด ๋ฐ์ํ๋ฉด page๋ฅผ ์ค์ธ๋ค.
L = S ๊ฐ์ด ๊ฐ๋๋ก ์กฐ์ ํ์ฌ ํ๋ก์ธ์์ ์ฌ์ฉ์ ์ต๋ํ ํ๋ค.
L = page fault meat time
S = time to process a page fault
- ๋ฎ์ ์ฐ์ ์์
- fault๊ฐ ๋ฐ์ํ ํ๋ก์ธ์ค
- ๊ฐ์ฅ ์ต๊ทผ์ activated : working set์ด ์์ loading ํ ์ ๋๊ฐ ์ ๋ค.
- ๊ฐ์ฅ ์์ resident set : ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉ๋ ์ ๋๊ฐ ๊ฐ์ฅ ์ ๋ค. // ์ง์ญ์ฑ ์ฌ์ฉ์ ๋ถ๋ฆฌ
- Largest Process : ๊ณผ๋ํ ๋ฉ๋ชจ๋ฆฌ๋ ์ ๊ฑฐํ๋ฉด ํจ์จ์ ์ด๋ค.
- Process with the largest remaining execution window : ๋จ์ window๊ฐ ๋ง์ ๊ฒ