6 min read

OSTEP 21 Swapping Mechanisms

Table of Contents

μ§€κΈˆκΉŒμ§€λŠ” 가상 μ£Όμ†Œ 곡간이 λΉ„ν˜„μ‹€μ μœΌλ‘œ μž‘μ•„ λͺ¨λ‘ 물리 λ©”λͺ¨λ¦¬μ— νƒ‘μž¬κ°€ κ°€λŠ₯ν•˜λ‹€κ³  κ°€μ •ν–ˆλ‹€. 즉, μ‹€ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€μ˜ 전체 μ£Όμ†Œ 곡간이 λ©”λͺ¨λ¦¬μ— νƒ‘μž¬λœ κ²ƒμœΌλ‘œ κ°€μ •ν–ˆλ‹€. 이제 이 가정을 μ™„ν™”ν•΄λ³΄μž.

λ‹€μˆ˜ ν”„λ‘œμ„ΈμŠ€λ“€μ˜ 큰 μ£Όμ†Œ 곡간을 μ§€μ›ν•˜κΈ° μœ„ν•΄, μ£Όμ†Œ 곡간 쀑 ν˜„μž¬ ν•„μš”ν•˜μ§€ μ•ŠλŠ” 일뢀λ₯Ό 보관해 λ‘˜ 곡간이 ν•„μš”ν•˜λ‹€. 일반적으둜 κ·Έ 곡간은 λ©”λͺ¨λ¦¬ 곡간보닀 μš©λŸ‰μ€ 크고, μ†λ„λŠ” 느릴 것이닀. HDD ν˜Ήμ€ SSDκ°€ 될 것이닀.

μš΄μ˜μ²΄μ œλŠ” μ–΄λ–»κ²Œ 크고 느린 HDD, SSDλ₯Ό μ‚¬μš©ν•˜λ©΄μ„œ 마치 μ»€λ‹€λž€ 가상 μ£Όμ†Œ 곡간이 μžˆλŠ” κ²ƒμ²˜λŸΌ ν•  수 μžˆμ„κΉŒ?

μ£Όμ†Œ 곡간이 μΆ©λΆ„νžˆ 크면, ν”„λ‘œκ·Έλž¨μ„ μœ„ν•œ μΆ©λΆ„ν•œ λ©”λͺ¨λ¦¬ 곡간이 μžˆλŠ”μ§€ κ±±μ •ν•  ν•„μš”κ°€ μ—†λ‹€, κ·Έλƒ₯ ν•„μš”ν•  λ•Œ λ©”λͺ¨λ¦¬ 할당을 μš΄μ˜μ²΄μ œμ—κ²Œ μš”κ΅¬ν•˜κΈ°λ§Œ ν•˜λ©΄ λœλ‹€. μš΄μ˜μ²΄μ œκ°€ 이런 가상 ν™˜κ²½μ„ μ œκ³΅ν•˜λ©΄ ν”„λ‘œκ·Έλž¨ μž…μž₯μ—μ„œ 맀우 νŽΈν•΄μ§„λ‹€.

이와 λ°˜λŒ€λ‘œ, μ˜ˆμ „μ—λŠ” λ©”λͺ¨λ¦¬ μ˜€λ²„λ ˆμ΄λΌλŠ” κ°œλ…μ΄ μ‘΄μž¬ν–ˆλ‹€. ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ½”λ“œ λ˜λŠ” λ°μ΄ν„°μ˜ 일뢀λ₯Ό λ©”λͺ¨λ¦¬μ— μˆ˜λ™μœΌλ‘œ νƒ‘μž¬ν•˜κ³  μ œκ±°ν–ˆλ‹€. ν•¨μˆ˜ ν˜ΈμΆœμ΄λ‚˜ 데이터에 μ ‘κ·Όν•  λ•Œλ§ˆλ‹€ μ½”λ“œ λ˜λŠ” 데이터λ₯Ό λ¨Όμ € λ©”λͺ¨λ¦¬μ— νƒ‘μž¬ν•΄μ•Ό ν•˜λŠ” λΆˆνŽΈν•¨μ΄ μžˆμ—ˆλ‹€.

λ©€ν‹°ν”„λ‘œκ·Έλž˜λ° μ‹œμŠ€ν…œ, 즉 λ™μ‹œμ— μ—¬λŸ¬ ν”„λ‘œκ·Έλž¨λ“€μ„ μ‹€ν–‰μ‹œν‚€λŠ” μ‹œμŠ€ν…œμ΄ 발λͺ…λ˜λ©΄μ„œ, λ§Žμ€ ν”„λ‘œμ„ΈμŠ€λ“€μ˜ νŽ˜μ΄μ§€λ₯Ό 물리 λ©”λͺ¨λ¦¬μ— μ „λΆ€ μ €μž₯ν•˜λŠ” 것이 λΆˆκ°€λŠ₯ν•˜κ²Œ λ˜μ—ˆλ‹€. μ‹€μ œ 물리 λ©”λͺ¨λ¦¬λ³΄λ‹€ 더 λ§Žμ€ μš©λŸ‰μ˜ λ©”λͺ¨λ¦¬κ°€ ν•„μš”ν•˜κ²Œ λ˜μ—ˆλ‹€. ν˜„λŒ€ 가상 λ©”λͺ¨λ¦¬κ°€ 이λ₯Ό μ–΄λ–»κ²Œ μˆ˜ν–‰ν•˜λŠ”μ§€ μ§€κΈˆλΆ€ν„° μ•Œμ•„λ³΄μž.

1. μŠ€μ™‘ 곡간

μš°μ„  λ””μŠ€ν¬μ— νŽ˜μ΄μ§€λ“€μ„ μ €μž₯ν•  수 μžˆλŠ” 일정 곡간을 확보해야 ν•œλ‹€. 이 μš©λ„μ˜ 곡간을 μŠ€μ™‘ 곡간(swap space) 이라고 ν•œλ‹€. λ©”λͺ¨λ¦¬ νŽ˜μ΄μ§€λ₯Ό μ½μ–΄μ„œ 이곳에 μ“°κ³  (swap out), μ—¬κΈ°μ„œ νŽ˜μ΄μ§€λ₯Ό μ½μ–΄μ„œ λ©”λͺ¨λ¦¬μ— νƒ‘μž¬ (swap in) μ‹œν‚€κΈ° λ•Œλ¬Έμ΄λ‹€. μŠ€μ™‘ κ³΅κ°„μ˜ μž…μΆœλ ₯ λ‹¨μœ„λŠ” νŽ˜μ΄μ§€λΌκ³  κ°€μ •ν•œλ‹€. μš΄μ˜μ²΄μ œλŠ” μŠ€μ™‘ 곡간에 μžˆλŠ” λͺ¨λ“  νŽ˜μ΄μ§€λ“€μ˜ λ””μŠ€ν¬ μ£Όμ†Œλ₯Ό κΈ°μ–΅ν•΄μ•Ό ν•œλ‹€.

μŠ€μ™‘ κ³΅κ°„μ˜ ν¬κΈ°λŠ” μ‹œμŠ€ν…œμ΄ μ‚¬μš©ν•  수 μžˆλŠ” λ©”λͺ¨λ¦¬ νŽ˜μ΄μ§€μ˜ μ΅œλŒ€ 수λ₯Ό κ²°μ •ν•˜κΈ° λ•Œλ¬Έμ— μ€‘μš”ν•˜λ‹€. 일단 μŠ€μ™‘ κ³΅κ°„μ˜ ν¬κΈ°λŠ” 맀우 크닀고 κ°€μ •ν•˜μž.

OSTEP 21 Swapping Mechanisms-1691479560583.jpeg

물리 λ©”λͺ¨λ¦¬μ—λŠ” 4개의 νŽ˜μ΄μ§€, μŠ€μ™‘ κ³΅κ°„μ—λŠ” 8개의 νŽ˜μ΄μ§€κ°€ μ‘΄μž¬ν•œλ‹€. 물리 λ©”λͺ¨λ¦¬λŠ” ν”„λ‘œμ„ΈμŠ€ 0, 1, 2κ°€ κ³΅μœ ν•˜κ³  μžˆλ‹€. μœ νš¨ν•œ νŽ˜μ΄μ§€ λͺ‡ 개만 λ©”λͺ¨λ¦¬μ— 올렀 λ†“μ•˜κ³ , λ‚˜λ¨Έμ§€λŠ” λ””μŠ€ν¬μ— μŠ€μ™‘ μ•„μ›ƒλ˜μ–΄ μžˆλ‹€. 3번 ν”„λ‘œμ„ΈμŠ€λŠ” λͺ¨λ“  νŽ˜μ΄μ§€κ°€ μŠ€μ™‘ 아웃 λ˜μ–΄ μžˆλŠ” κ²ƒμœΌλ‘œ 보아 ν˜„μž¬ 싀행쀑이 μ•„λ‹ˆλ‹€.

μŠ€μ™‘ κ³΅κ°„μ—λ§Œ μŠ€μ™‘μ„ ν•  수 μžˆλŠ” 것은 μ•„λ‹ˆλ‹€. 물리 λ©”λͺ¨λ¦¬κ°€ μΆ”κ°€ 곡간을 확보해야 ν•  λ•Œ, μ½”λ“œ μ˜μ—­μ˜ νŽ˜μ΄μ§€λ“€μ΄ μ°¨μ§€ν•˜λŠ” 물리 νŽ˜μ΄μ§€λŠ” μ¦‰μ‹œ λ‹€λ₯Έ νŽ˜μ΄μ§€κ°€ μ‚¬μš©ν•  수 μžˆλ‹€. μ½”λ“œκ°€ μ €μž₯λ˜μ–΄ μžˆλŠ” 파일 μ‹œμŠ€ν…œ μ˜μ—­μ΄ μŠ€μ™‘ λͺ©μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” 것이닀. ν•΄λ‹Ή νŽ˜μ΄μ§€λ“€μ€ λ””μŠ€ν¬μ— 원본이 있기 λ•Œλ¬Έμ—, μ–Έμ œλ“ μ§€ μŠ€μ™‘ 인이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

2. Present Bit

이제 νŽ˜μ΄μ§€ μŠ€μ™‘μ„ μœ„ν•œ κΈ°λŠ₯을 λ‹€λ£° μ°¨λ‘€λ‹€. ν•˜λ“œμ›¨μ–΄ 기반 TLBλ₯Ό μ‚¬μš©ν•˜λŠ” μ‹œμŠ€ν…œμ„ κ°€μ •ν•  것이닀.

λ©”λͺ¨λ¦¬κ°€ μ°Έμ‘°λ˜λŠ” 과정을 remind ν•΄λ³΄μž.

  1. ν”„λ‘œμ„ΈμŠ€κ°€ 가상 λ©”λͺ¨λ¦¬ μ°Έμ‘°λ₯Ό μƒμ„±ν•œλ‹€ (λͺ…λ Ήμ–΄ νƒ‘μž¬, 데이터 μ ‘κ·Ό λ“±)
  2. ν•˜λ“œμ›¨μ–΄λŠ” λ©”λͺ¨λ¦¬μ—μ„œ μ›ν•˜λŠ” 데이터λ₯Ό κ°€μ Έμ˜€κΈ° 전에, μš°μ„  가상 μ£Όμ†Œλ₯Ό 물리 μ£Όμ†Œλ‘œ λ³€ν™˜ν•œλ‹€.
    1. κ°€μƒμ£Όμ†Œμ—μ„œ VPN을 μΆ”μΆœν•œ 후에 TLB에 ν•΄λ‹Ή 정보가 μžˆλŠ”μ§€ κ²€μ‚¬ν•œλ‹€. (TLB 히트) λ§Œμ•½ μ„±κ³΅ν•˜λ©΄ 물리 μ£Όμ†Œλ₯Ό 얻은 뒀에 λ©”λͺ¨λ¦¬λ‘œ κ°€μ Έμ˜¨λ‹€.
    2. λ§Œμ•½ VPN을 TLBμ—μ„œ 찾을 수 μ—†λ‹€λ©΄ (TLB 미슀), ν•˜λ“œμ›¨μ–΄λŠ” νŽ˜μ΄μ§€ ν…Œμ΄λΈ”μ˜ λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό νŒŒμ•…ν•˜κ³  (νŽ˜μ΄μ§€ ν…Œμ΄λΈ” 베이슀 λ ˆμ§€μŠ€ν„° μ‚¬μš©), VPN을 인덱슀둜 ν•˜μ—¬ μ›ν•˜λŠ” νŽ˜μ΄μ§€ ν…Œμ΄λΈ” ν•­λͺ© (PTE) λ₯Ό μΆ”μΆœν•œλ‹€.
    3. ν•΄λ‹Ή νŽ˜μ΄μ§€ ν…Œμ΄λΈ” ν•­λͺ©μ΄ μœ νš¨ν•˜κ³ , κ΄€λ ¨ νŽ˜μ΄μ§€κ°€ 물리 λ©”λͺ¨λ¦¬μ— μ‘΄μž¬ν•˜λ©΄ ν•˜λ“œμ›¨μ–΄λŠ” PTEμ—μ„œ PFN 정보λ₯Ό μΆ”μΆœν•˜κ³  κ·Έ 정보λ₯Ό TLB에 νƒ‘μž¬ν•œλ‹€.
    4. νƒ‘μž¬ ν›„ λͺ…λ Ήμ–΄λ₯Ό μž¬μ‹€ν–‰ν•œλ‹€. μ΄λ²ˆμ—λŠ” TLB νžˆνŠΈμ΄λ‹€.

νŽ˜μ΄μ§€κ°€ λ””μŠ€ν¬λ‘œ μŠ€μ™‘λ˜λŠ” 것을 κ°€λŠ₯ν•˜κ²Œ ν•˜λ €λ©΄ λ§Žμ€ 기법듀이 μΆ”κ°€λ˜μ–΄μ•Ό ν•œλ‹€. ν•˜λ“œμ›¨μ–΄κ°€ PTEμ—μ„œ ν•΄λ‹Ή νŽ˜μ΄μ§€κ°€ 물리 λ©”λͺ¨λ¦¬μ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 ν‘œν˜„ν•΄μ•Ό ν•œλ‹€. present bitλ₯Ό μ‚¬μš©ν•˜μ—¬ 각 νŽ˜μ΄μ§€ ν…Œμ΄λΈ” 항볡에 μ–΄λ–€ νŽ˜μ΄μ§€κ°€ μ‘΄μž¬ν•˜λŠ”μ§€λ₯Ό ν‘œν˜„ν•œλ‹€. present bitκ°€ 1둜 μ„€μ •λ˜μ–΄ 있으면, 물리 λ©”λͺ¨λ¦¬μ— ν•΄λ‹Ή νŽ˜μ΄μ§€κ°€ μ‘΄μž¬ν•œλ‹€λŠ” 것이고, μœ„μ—μ„œ μ„€λͺ…ν•œ λŒ€λ‘œ μž‘λ™ν•œλ‹€. ν•˜μ§€λ§Œ 0으둜 μ„€μ •λ˜μ–΄ 있으면 λ©”λͺ¨λ¦¬μ— ν•΄λ‹Ή νŽ˜μ΄μ§€κ°€ μ‘΄μž¬ν•˜μ§€ μ•Šκ³  λ””μŠ€ν¬ μ–΄λ”˜κ°€μ— μ‘΄μž¬ν•œλ‹€λŠ” 것을 λ‚˜νƒ€λ‚Έλ‹€.

물리 λ©”λͺ¨λ¦¬μ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” νŽ˜μ΄μ§€ μ°Έμ‘°λ₯Ό νŽ˜μ΄μ§€ 폴트 (page fault) 라 ν•œλ‹€. νŽ˜μ΄μ§€ ν΄νŠΈκ°€ λ°œμƒν•˜λ©΄ 이 νŽ˜μ΄μ§€ 폴트λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ 운영체제둜 μ œμ–΄κΆŒμ΄ λ„˜μ–΄κ°„λ‹€. 즉, νŽ˜μ΄μ§€ 폴트 ν•Έλ“€λŸ¬κ°€ μ‹€ν–‰λœλ‹€.

3. νŽ˜μ΄μ§€ 폴트

TLB 처리 방법에 따라 두 μ’…λ₯˜μ˜ μ‹œμŠ€ν…œμœΌλ‘œ λ‚˜λˆŒ 수 μžˆλ‹€. ν•˜λ“œμ›¨μ–΄ 기반 TLB μ‹œμŠ€ν…œ, μ†Œν”„νŠΈμ›¨μ–΄ 기반 TLB μ‹œμŠ€ν…œ. 두 μ’…λ₯˜ λͺ¨λ‘ νŽ˜μ΄μ§€ ν΄νŠΈκ°€ λ°œμƒν•˜λ©΄ μš΄μ˜μ²΄μ œκ°€ κ·Έ 처리λ₯Ό λ‹΄λ‹Ήν•œλ‹€. 운영체제의 νŽ˜μ΄μ§€ 폴트 ν•Έλ“€λŸ¬κ°€ κ·Έ 처리 λ©”μ»€λ‹ˆμ¦˜μ„ κ·œμ •ν•œλ‹€.

λ§Œμ•½ μš”μ²­λœ νŽ˜μ΄μ§€κ°€ λ©”λͺ¨λ¦¬μ— μ—†κ³ , λ””μŠ€ν¬λ‘œ μŠ€μ™‘λ˜μ—ˆλ‹€λ©΄, μš΄μ˜μ²΄μ œλŠ” ν•΄λ‹Ή νŽ˜μ΄μ§€λ₯Ό λ©”λͺ¨λ¦¬λ‘œ μŠ€μ™‘ν•΄ μ˜¨λ‹€. κ·Έλ ‡λ‹€λ©΄ μ›ν•˜λŠ” νŽ˜μ΄μ§€μ˜ μœ„μΉ˜λ₯Ό μ–΄λ–»κ²Œ νŒŒμ•…ν• κΉŒ?

λ§Žμ€ μ‹œμŠ€ν…œλ“€μ—μ„œ ν•΄λ‹Ή νŽ˜μ΄μ§€μ˜ μŠ€μ™‘ κ³΅κ°„μ‚¬μ—μ„œμ˜ μœ„μΉ˜λ₯Ό νŽ˜μ΄μ§€ ν…Œμ΄λΈ”μ— μ €μž₯ν•œλ‹€. μš΄μ˜μ²΄μ œλŠ” PFNκ³Ό 같은 PTE λΉ„νŠΈλ“€μ„ νŽ˜μ΄μ§€μ˜ λ””μŠ€ν¬ μ£Όμ†Œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 데 μ‚¬μš©ν•  수 μžˆλ‹€. νŽ˜μ΄μ§€ 폴트 λ°œμƒ μ‹œ μš΄μ˜μ²΄μ œλŠ” νŽ˜μ΄μ§€ ν…Œμ΄λΈ” ν•­λͺ©μ—μ„œ νŽ˜μ΄μ§€μ˜ λ””μŠ€ν¬ 상 μœ„μΉ˜λ₯Ό νŒŒμ•…ν•˜μ—¬ λ©”λͺ¨λ¦¬λ‘œ νƒ‘μž¬ν•œλ‹€.

λ””μŠ€ν¬ IOκ°€ μ™„λ£Œλ˜λ©΄ μš΄μ˜μ²΄μ œλŠ” ν•΄λ‹Ή PTE의 PFN 값을 νƒ‘μž¬λœ νŽ˜μ΄μ§€μ˜ λ©”λͺ¨λ¦¬ μœ„μΉ˜λ‘œ κ°±μ‹ ν•œλ‹€. 이 μž‘μ—…μ΄ μ™„λ£Œλ˜λ©΄ νŽ˜μ΄μ§€ 폴트λ₯Ό λ°œμƒμ‹œν‚¨ λͺ…λ Ήμ–΄κ°€ μž¬μ‹€ν–‰λœλ‹€. μž¬μ‹€ν–‰μœΌλ‘œ 인해 TLB λ―ΈμŠ€κ°€ λ°œμƒν•  수 μžˆλ‹€. TLB 미슀 처리 κ³Όμ •μ—μ„œ TLB 값이 κ°±μ‹ λ˜κ³ , μ΅œμ’…μ μœΌλ‘œ λ§ˆμ§€λ§‰ μž¬μ‹€ν–‰ μ‹œμ— TLBμ—μ„œ μ£Όμ†Œ λ³€ν™˜ 정보λ₯Ό μ°Ύμ•„ 이λ₯Ό 톡해 물리 μ£Όμ†Œμ—μ„œ μ›ν•˜λŠ” λ°μ΄ν„°λ‚˜ λͺ…λ Ήμ–΄λ₯Ό κ°€μ Έμ˜¨λ‹€.

IO 전솑 μ€‘μ—λŠ” ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€κ°€ blocked μƒνƒœκ°€ λœλ‹€λŠ” 것에 μœ μ˜ν•΄μ•Ό ν•œλ‹€. νŽ˜μ΄μ§€ 폴트 처리 μ‹œ μš΄μ˜μ²΄μ œλŠ” λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•  수 μžˆλ‹€. ν•œ ν”„λ‘œμ„ΈμŠ€μ˜ IOμž‘μ—… (νŽ˜μ΄μ§€ 폴트 λ“±) 은 였래 κ±Έλ¦¬λŠ” 일이기 λ•Œλ¬Έμ— IOμž‘μ—…κ³Ό λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ 싀행을 μ€‘μ²©μ‹œν‚€λŠ” 방식을 톡해 ν•˜λ“œμ›¨μ–΄λ₯Ό 효율적으둜 μ‚¬μš©ν•œλ‹€.

4. λ©”λͺ¨λ¦¬μ— 빈 곡간이 μ—†μœΌλ©΄?

μœ„ μ„€λͺ…μ—μ„œ, page in을 μœ„ν•œ λ©”λͺ¨λ¦¬κ°€ μΆ©λΆ„ν•˜λ‹€κ³  κ°€μ •ν–ˆλ‹€. λ©”λͺ¨λ¦¬μ— μ—¬μœ  곡간이 μ—†λ‹€λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν• κΉŒ?

λ©”λͺ¨λ¦¬μ— νƒ‘μž¬ν•˜κ³ μž ν•˜λŠ” νŽ˜μ΄μ§€λ₯Ό μœ„ν•œ 곡간을 ν™•λ³΄ν•˜κΈ° μœ„ν•΄, λ‹€λ₯Έ νŽ˜μ΄μ§€λ“€μ„ λ¨Όμ € page out ν•˜λ €κ³  ν•  수 μžˆλ‹€. 이 ꡐ체 νŽ˜μ΄μ§€λ₯Ό μ„ νƒν•˜λŠ” 것을 νŽ˜μ΄μ§€ ꡐ체 μ •μ±… (page replacement policy) 라고 ν•œλ‹€.

쒋은 νŽ˜μ΄μ§€ ꡐ체 정책을 μœ„ν•΄ λ§Žμ€ λ…Έλ ₯이 μžˆμ—ˆλ‹€. 잘λͺ»λœ ꡐ체 정책을 μ„ νƒν•˜λ©΄, ν”„λ‘œκ·Έλž¨μ΄ λ©”λͺ¨λ¦¬ 속도가 μ•„λ‹ˆλΌ λ””μŠ€ν¬ μ†λ„λ‘œ 싀행될 수 있기 λ•Œλ¬Έμ΄λ‹€. λ‹€μŒ μž₯μ—μ„œ ꡐ체 정책에 λŒ€ν•΄ μžμ„Ένžˆ λ‹€λ£° 것이닀.

5. νŽ˜μ΄μ§€ 폴트의 처리

OSTEP 21 Swapping Mechanisms-1691483926992.jpeg

OSTEP 21 Swapping Mechanisms-1691483933676.jpeg

6. κ΅μ²΄λŠ” μ–Έμ œ μΌμ–΄λ‚˜λŠ”κ°€

μ§€κΈˆκΉŒμ§€λŠ” λ©”λͺ¨λ¦¬μ— μ—¬μœ  곡간이 고갈된 후에 ꡐ체 μ•Œκ³ λ¦¬μ¦˜μ΄ μž‘λ™ν•˜λŠ” 것을 κ°€μ •ν•˜μ˜€λ‹€. ν•˜μ§€λ§Œ 이 방법은 νš¨μœ¨μ μ΄μ§€ λͺ»ν•˜λ‹€. 또, μš΄μ˜μ²΄μ œλŠ” 항상 μ–΄λŠ μ •λ„μ˜ μ—¬μœ  λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•˜κ³  μžˆμ–΄μ•Ό ν•œλ‹€. 이λ₯Ό μœ„ν•΄ λŒ€λΆ€λΆ„μ˜ μš΄μ˜μ²΄μ œλ“€μ€ μ—¬μœ  곡간에 κ΄€λ ¨λœ μ΅œλŒ“κ°’κ³Ό μ΅œμ†Ÿκ°’ (high watermark HW, low watermark LW) 을 μ„€μ •ν•˜μ—¬ ꡐ체 μ•Œκ³ λ¦¬μ¦˜μ— ν™œμš©ν•œλ‹€.

μš΄μ˜μ²΄μ œκ°€ μ—¬μœ  κ³΅κ°„μ˜ 크기가 μ΅œμ†Ÿκ°’λ³΄λ‹€ μž‘μ•„μ§€λ©΄ μ—¬μœ  곡간 확보λ₯Ό λ‹΄λ‹Ήν•˜λŠ” λ°±κ·ΈλΌμš΄λ“œ μ“°λ ˆλ“œκ°€ μ‹€ν–‰λ˜κ³ , μ—¬μœ  κ³΅κ°„μ˜ 크기가 μ΅œλŒ“κ°’μ— 이λ₯Ό λ•ŒκΉŒμ§€ νŽ˜μ΄μ§€λ₯Ό μ œκ±°ν•œλ‹€. 이λ₯Ό 일반적으둜 μŠ€μ™‘ 데λͺ¬ λ˜λŠ” νŽ˜μ΄μ§€ 데λͺ¬μ΄λΌκ³  λΆˆλ¦°λ‹€.