μ»΄ν“¨ν„°μ—λŠ” μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€κ°€ μ‹œμŠ€ν…œ 내에 μ‘΄μž¬ν•˜κΈ°μ— μžμ›μ„ ν• λ‹Ήν•  ν”„λ‘œμ„ΈμŠ€λ₯Ό 선택해야 ν•œλ‹€. 이것을 μŠ€μΌ€μ€„λ§μ΄λΌ ν•œλ‹€. 즉 ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§μ€ ν”„λ‘œμ„Έμ„œ μ‚¬μš©μ‹œκ°„μ„ ν”„λ‘œμ„ΈμŠ€λ“€μ—κ²Œ λΆ„λ°°ν•˜λŠ” 것이닀.

 

μŠ€μΌ€μ€„λ§μ˜ λͺ©μ μ€ μ‹œμŠ€ν…œμ˜ μ„±λŠ₯을 ν–₯μƒμ‹œν‚€λŠ” 것이닀.

 

μ‹œμŠ€ν…œ μ„±λŠ₯의 μ§€ν‘œμ—λŠ” 무엇이 μžˆμ„κΉŒ ❓

  1. 응닡 μ‹œκ°„ : μž‘μ—… μš”μ²­μœΌλ‘œλΆ€ν„° 응닡을 받을 λ•ŒκΉŒμ§€μ˜ μ‹œκ°„
  2. μž‘μ—… μ²˜λ¦¬λŸ‰ : λ‹¨μœ„ μ‹œκ°„ λ™μ•ˆ μ™„λ£Œλœ μž‘μ—…μ˜ 수
  3. μžμ› ν™œμš©λ„ : μ£Όμ–΄μ§„ μ‹œκ°„ λ™μ•ˆ μžμ›μ΄ ν™œμš©λœ μ‹œκ°„

이외에도 λ‹€μ–‘ν•œ μ§€ν‘œλ“€μ΄ μžˆμ§€λ§Œ μ§€ν‘œμ˜ μ’…λ₯˜λ³΄λ‹€ μ€‘μš”ν•œκ²ƒμ€ λͺ©μ μ— 맞게 μ§€ν‘œλ₯Ό 선택해 μŠ€μΌ€μ€„λ§ 기법을 λ”°λ₯΄λŠ” 것이닀. 예λ₯Ό λ“€μ–΄μ„œ 응닡 μ‹œκ°„μ΄ μ€‘μš”ν•œ μ‹œμŠ€ν…œμ€ λŒ€ν™”ν˜• μ‹œμŠ€ν…œμ—μ„œ, μž‘μ—… μ²˜λ¦¬λŸ‰μ€ μΌκ΄„μ²˜λ¦¬ μ‹œμŠ€ν…œμ—μ„œ μžμ› ν™œμš©λ„λŠ” λΉ„μ‹Ό μž₯λΉ„μ˜ μ‹œμŠ€ν…œμΌ 경우 μ€‘μš”ν•˜λ‹€.

 

μŠ€μΌ€μ€„λ§ 기법이 κ³ λ €ν•˜λŠ” ν•­λͺ©λ“€μ„ μ•Œμ•„λ³΄μž.

  • ν”„λ‘œμ„ΈμŠ€μ˜ νŠΉμ„± : I/O-bounded , compute-bounded
  • μ‹œμŠ€ν…œ νŠΉμ„± : Batch system, interactive system
  • ν”„λ‘œμ„ΈμŠ€μ˜ κΈ΄κΈ‰μ„±
  • ν”„λ‘œμ„Έμ˜ μš°μ„ μˆœμœ„
  • ν”„λ‘œμ„ΈμŠ€ 총 μ‹€ν–‰μ‹œκ°„

 

 

ν”„λ‘œμ„ΈμŠ€λŠ” CPUλ₯Ό μ‚¬μš©ν•˜κ³  I/Oλ₯Ό λŒ€κΈ°ν•˜κ³  μ‚¬μš©ν•˜λ©΄μ„œ μˆ˜ν–‰λœλ‹€. CPU burstλž€ CPU μ‚¬μš©μ‹œκ°„μ„ μ΄μ•ΌκΈ°ν•˜κ³  I/O burstλž€ I/OλŒ€κΈ° μ‹œκ°„μ„ μ΄μ•ΌκΈ°ν•œλ‹€. Burst time은 μŠ€μΌ€μ€„λ§μ˜ κΈ°μ€€μ˜ ν•˜λ‚˜λ‘œμ¨ CPU burst > I/O burst 라면 compute-bounded λΌκ³ ν•œλ‹€. λ°˜λ©΄μ— CPU burst < I/O burst 라면 I/O-bounded라고 ν•œλ‹€.

 

 

μŠ€μΌ€μ€„λ§μ˜ 단계

λ°œμƒν•˜λŠ” λΉˆλ„ 및 ν• λ‹Ή μžμ›μ— 따라 μŠ€μΌ€μ€„λ§μ„ κ΅¬λΆ„ν•œλ‹€.

✌ Long-term Scheduling

Job scheduling이 μ†ν•˜λ©° Job schedulingμ΄λž€ μ–΄λ–€ Job을 컀널에 등둝할 것인지λ₯Ό λ§ν•œλ‹€. Job scheduling은

ν”„λ‘œμ„ΈμŠ€ 수λ₯Ό μ‘°μ ˆν•˜λ―€λ‘œ 닀쀑 ν”„λ‘œκ·Έλž˜λ°μ˜ 정도λ₯Ό μ‘°μ ˆν•œλ‹€. κ·Έλž˜μ„œ I/O-bounded와 compute-bounded ν”„λ‘œμ„ΈμŠ€λ“€μ„ 잘 μ„žμ–΄μ„œ 선택해야 ν•œλ‹€. κ·Έλž˜μ•Ό CPUκ°€ μž‘μ—…μ„ ν•˜μ§€ μ•Šκ±°λ‚˜ I/O λŒ€κΈ°κ°€ μ—†μ–΄ μŠ€ν…Œ 쀄 링이 νž˜λ“  경우 λ“± λΉ„νš¨μœ¨μ„±μ΄ 생기지 μ•ŠλŠ”λ‹€.

✌ Mid-term Scheduling

μ–΄λŠ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν• μ§€ κ²°μ •ν•˜λŠ” κ²ƒμœΌλ‘œ Swapping이 μ†ν•œλ‹€.

✌ Short-term Scheduling

Process scheduling이 여기에 μ†ν•˜λ©° Process schedulingμ΄λž€ ν”„λ‘œμ„Έμ„œλ₯Ό ν• λ‹Ήν•  ν”„λ‘œμ„ΈμŠ€λ₯Ό κ²°μ •ν•˜λŠ” 것이닀. κ°€μž₯ λΉˆλ²ˆν•˜κ²Œ λ°œμƒλ˜κΈ°μ— 맀우 빨라야 ν•œλ‹€.

 

μŠ€μΌ€μ€„λ§ 단계 ν•œλˆˆμ— 보기

 

μŠ€μΌ€μ€„λ§ 정책을 μ•Œμ•„λ³΄μž ❗

  • 선점 VS 비선점
선점/비선점 μŠ€μΌ€μ€„λ§ 의미 μž₯점 단점
비선점 μŠ€μΌ€μ€„λ§ ν• λ‹Ή 받은 μžμ›μ„ 슀슀둜 λ°˜λ‚©ν•  λ•ŒκΉŒμ§€ μ‚¬μš©ν•˜κΈ°μ— λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ λΉΌμ•—μ„μˆ˜ μ—†λ‹€. Context switch overheadκ°€ 적닀. 평균 μ‘λ‹΅μ‹œκ°„ 증가, 높은 μš°μ„ μˆœμœ„λ₯Ό κ°€μ§„ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ λ°€λ €λ‚œλ‹€.
선점 μŠ€μΌ€μ€„λ§ νƒ€μ˜μ— μ˜ν•΄ μžμ›μ„ λΉΌμ•—κΈΈ 수 μžˆλ‹€. 응닡성이 λ†’μ•„ μ‹œλΆ„ν•  μ‹œμŠ€ν…œ 등에 μ ν•©ν•˜λ‹€. Context switch overheadκ°€ 크닀.

 

  • μš°μ„ μˆœμœ„
μš°μ„ μˆœμœ„ μŠ€μΌ€μ€„λ§ 의미 μž₯점 단점
정적 μš°μ„ μˆœμœ„ ν”„λ‘œμ„ΈμŠ€ μƒμ„±μ‹œ κ²°μ •λœ μš°μ„ μˆœμœ„κ°€ 계속 μœ μ§€λ¨ κ΅¬ν˜„μ΄ 쉽고 overheadκ°€ 적닀. μ‹œμŠ€ν…œ ν™˜κ²½ 변화에 λŒ€ν•œ λŒ€μ‘μ΄ μ–΄λ ΅λ‹€.
동적 μš°μ„ μˆœμœ„ ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ 변화에 λ”°λΌμƒμ„±μ‹œ κ²°μ •λœ μš°μ„ μˆœμœ„ λ³€κ²½ κ΅¬ν˜„μ΄ λ³΅μž‘ν•˜κ³  overheadκ°€ 크닀. μ‹œμŠ€ν…œ ν™˜κ²½ 변화에 λŒ€ν•΄ μœ μ—°ν•œ λŒ€μ‘μ΄ κ°€λŠ₯ν•˜λ‹€.

+ Recent posts