말감둜그

ν¬λž˜ν”„ν†€ μ •κΈ€ WEEK10 DAY 79 - PintOS Project3 λ³Έλ¬Έ

Krafton jungle

ν¬λž˜ν”„ν†€ μ •κΈ€ WEEK10 DAY 79 - PintOS Project3

habbn 2024. 3. 26. 23:36
728x90

πŸ“†2024.3.26

 

Virtual Memory - Memory Management

 

Implement Supplemental Page Table

 

νŽ˜μ΄μ§€ ν΄νŠΈμ™€ μžμ› 관리λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” 각 νŽ˜μ΄μ§€μ— λŒ€ν•œ 좔가적인 정보λ₯Ό λ‹΄κ³  μžˆμ„ 보쑰 νŽ˜μ΄μ§€ ν…Œμ΄λΈ”(Supplemental Page Table) 을 κ΅¬ν˜„ν•΄μ•Ό ν•œλ‹€.

 

1. νŽ˜μ΄μ§€ ν΄νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ 그곳에 μ–΄λ–€ 데이터가 μžˆμ—ˆμ–΄μ•Ό ν–ˆλŠ”μ§€λ₯Ό μ•Œμ•„λ‚΄κΈ° μœ„ν•΄ 컀널은 보쑰 νŽ˜μ΄μ§€ ν…Œμ΄λΈ”μ—μ„œ ν΄νŠΈκ°€ λ°œμƒν•œ 가상 νŽ˜μ΄μ§€λ₯Ό νƒμƒ‰ν•œλ‹€.

2. 컀널이 ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ  λ•Œ μ–΄λ–€ μžμ›μ„ ν•΄μ œν•  지 κ³ λ₯΄κΈ° μœ„ν•΄μ„œ 보쑰 νŽ˜μ΄μ§€ ν…Œμ΄λΈ”μ„ μ‘°μ‚¬ν•œλ‹€.

 

SPT의 μ •μ˜

- pml4(νŽ˜μ΄μ§€ ν…Œμ΄λΈ”)μ—μ„œ λΆ€μ‘±ν•œ 정보λ₯Ό μ±„μ›Œμ£ΌκΈ° μœ„ν•œ ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ μ‘΄μž¬ν•˜λŠ” ν…Œμ΄λΈ”

 

- μ•„λž˜μ˜ 보쑰 데이터듀을 λ‹΄κ³  μžˆλŠ”, ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ μ‘΄μž¬ν•˜λŠ” 자료ꡬ쑰

1. 각각의 νŽ˜μ΄μ§€μ— λŒ€ν•΄μ„œ 데이터가 μ‘΄μž¬ν•˜λŠ” κ³³(frame, disk, swap 쀑 μ–΄λ”” μ‘΄μž¬ν•˜λŠ”μ§€)

2. 이에 μƒμ‘ν•˜λŠ” 컀널 가상 μ£Όμ†Œλ₯Ό κ°€λ¦¬ν‚€λŠ” 포인터 정보

3. page와 κ΄€λ ¨λœ μΆ”κ°€ 정보( active인지 inactive인지 λ“±λ“±)


 

PCB(ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ 블둝) 와 μΈν„°λŸ½νŠΈ ν”„λ ˆμž„μ— 같은 정보가 λ‹΄κΈ°λŠ” κ±° μ•„λ‹ˆμ˜€λ‚˜? 그러면 λ‘˜μ΄ 같은 μ‚¬μš©μΈκ°€? 라고 ν—·κ°ˆλ Έλ˜ κ±Έ 정리해봀닀.

 

1. PCB(ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ 블둝)

 

PCBλŠ” 운영 μ²΄μ œκ°€ 각 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 데이터 ꡬ쑰이닀.

PCBμ—λŠ” ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ λ‹€μ–‘ν•œ 정보가 μ €μž₯λœλ‹€. 이 μ •λ³΄λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ, μ‹€ν–‰ 쀑인 μ½”λ“œμ˜ μœ„μΉ˜, λ©”λͺ¨λ¦¬ ν• λ‹Ή 정보, CPU λ ˆμ§€μŠ€ν„° κ°’, ν”„λ‘œμ„ΈμŠ€μ˜ μš°μ„ μˆœμœ„, λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€ 및 μžμ‹ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ 정보 등이 μžˆλ‹€.

일반적으둜 PCBλŠ” 운영 체제 컀널 내뢀에 있으며, 각 ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•΄ ν•˜λ‚˜μ˜ PCBκ°€ ν• λ‹Ήλœλ‹€. PCBλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰ μƒνƒœκ°€ λ³€ν™”ν•  λ•Œλ§ˆλ‹€ μ—…λ°μ΄νŠΈλœλ‹€.

 

λ¬Έλ§₯ κ΅ν™˜ μ‹œμ— μ€‘μš”ν•œ 역할을 ν•œλ‹€.

ν˜„μž¬ μ‹€ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœλ₯Ό PCB에 μ €μž₯ν•œλ‹€. 이 μƒνƒœμ—λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ λ ˆμ§€μŠ€ν„° κ°’, ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°(PC), μŠ€νƒ 포인터(SP) 등이 포함될 수 μžˆλ‹€.

λ‹€μŒ μ‹€ν–‰ν•  ν”„λ‘œμ„ΈμŠ€μ˜ PCB둜 μ œμ–΄λ₯Ό μ „ν™˜ν•˜κ³ , ν•΄λ‹Ή PCB에 μ €μž₯된 μƒνƒœλ₯Ό CPU λ ˆμ§€μŠ€ν„°μ— λ³΅μ›ν•œλ‹€.

μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€μ˜ μ½”λ“œκ°€ μ‹€ν–‰λ˜λ„λ‘ μ œμ–΄λ₯Ό μ „ν™˜ν•œλ‹€.

 

2. μΈν„°λŸ½νŠΈ ν”„λ ˆμž„

 

μΈν„°λŸ½νŠΈ ν”„λ ˆμž„μ€ CPUμ—μ„œ λ°œμƒν•œ μΈν„°λŸ½νŠΈλ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ 정보λ₯Ό μ €μž₯ν•˜λŠ” 데 μ‚¬μš©λœλ‹€.

μΈν„°λŸ½νŠΈκ°€ λ°œμƒν•˜λ©΄ CPUλŠ” ν˜„μž¬ μ‹€ν–‰ 쀑인 μ½”λ“œμ˜ μƒνƒœλ₯Ό μ €μž₯ν•˜κ³ , μΈν„°λŸ½νŠΈ 처리λ₯Ό μœ„ν•œ νŠΉμ • ν”„λ‘œμ‹œμ €λ‘œ μ œμ–΄λ₯Ό μ „ν™˜ν•œλ‹€. μ΄λ•Œ μΈν„°λŸ½νŠΈ ν”„λ ˆμž„μ—λŠ” ν˜„μž¬ CPU λ ˆμ§€μŠ€ν„°μ˜ μƒνƒœ, ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„° κ°’, μŠ€νƒ 포인터 κ°’ 등이 μ €μž₯λœλ‹€.

μΈν„°λŸ½νŠΈ μ²˜λ¦¬κ°€ μ™„λ£Œλ˜λ©΄ 이전에 μ €μž₯된 CPU μƒνƒœλ₯Ό λ³΅μ›ν•˜μ—¬ μΈν„°λŸ½νŠΈ μ΄μ „μ˜ μƒνƒœλ‘œ λ³΅κ·€ν•œλ‹€.

 

μ •λ¦¬ν•˜μžλ©΄, PCBλŠ” 운영 μ²΄μ œκ°€ 각 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ 데이터 ꡬ쑰둜 μ‚¬μš©λ˜λ©°, ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ λ‹€μ–‘ν•œ 정보가 μ €μž₯λœλ‹€. μΈν„°λŸ½νŠΈ ν”„λ ˆμž„μ€ CPUμ—μ„œ λ°œμƒν•œ μΈν„°λŸ½νŠΈλ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ 정보λ₯Ό μ €μž₯ν•˜λŠ” 데 μ‚¬μš©λ˜λ©°, CPU μƒνƒœμ˜ μ €μž₯ 및 볡원 등이 μ£Όμš” λͺ©μ μ΄λ‹€.

 

 

 

 

 

728x90