# Demand Paging ## 定義 1. 一個page,當有需要的時候,才load到memory裏頭 - 減少I/O - 減少對memory的需求,能有更多的user 2. 一個page被需要時機為,當有==reference==指到它 - invalid reference -> abort - not in memory -> page fault 3. pure demand paging - Start a process with ==no== page - 只有被需要才送到memory 4. prepaging - 預測哪些page將被使用,將他們置換進來 - 避免pure demand paging一開始大量的page fault ## Support 1. ==Swapper==(midterm scheduler)管理整個process 2. ==Pager==管理一個process中的各個page 3. Hardware - ==Page Table==:valid-invalid bit (in or not in memory) - ==Secondary memory==(swap space, backing store):disk ## Page Fault Note:page fault OS造成的;segmentation fault user造成的 第一次reference會引發trap給OS(page fault trap) ### STEP 1. OS查看PCB所指到的page table - Invalid reference -> abort - not in memory -> continue 2. 找一個空的frame 3. 將page從disk swap進frame 4. 重設page table,valid bit = 1 5. 重新執行指令  ## Page Replacement 發生page fault,但是沒有free frame時,需要置換 ### STEP 1. swap一個frame回去backing store(replacement algorithms) 2. swap目標page進來frame ## Demand Paging Performance ### Effective Access Time (EAT): (1 – p) x ma + p x pft 1. Parameter - p:page fault rate - ma:mem. access time - pft:page fault time 2. 存取時間會正比於page fault time(因為page fault time所花時間大) 3. program通常都是locality的reference(access在附近的memory) ---> 一個page fault會帶進4KB的memory content,降低page fault發生的機會 4. page fault time的組成 - page-fault ==interrupt== - **read page from disk最耗時** - restart process
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up