πŸ“ŒCS/OS

[OS] μŠ€μΌ€μ€„λŸ¬μ˜ μ’…λ₯˜: μž₯κΈ°, 쀑기, 단기 μŠ€μΌ€μ€„λŸ¬

dar0m! 2021. 8. 4. 18:31

 

μž₯κΈ° μŠ€μΌ€μ€„λŸ¬(long term scheduler)

μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ₯Ό 쀀비큐에 넣을 것인가 κ²°μ •

μž‘μ—… μŠ€μΌ€μ€„λŸ¬λΌκ³ λ„ λΆ€λ₯΄λ©° μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ₯Ό 쀀비큐에 μ‚½μž…ν• μ§€λ₯Ό κ²°μ •ν•˜λŠ” 역할을 ν•œλ‹€. λ””μŠ€ν¬μ—μ„œ ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ„ 가져와 컀널에 λ“±λ‘ν•˜λ©΄ ν”„λ‘œμ„ΈμŠ€κ°€ λ˜λŠ”λ° μ΄λ•Œ λ””μŠ€ν¬μ—μ„œ μ–΄λ–€ ν”„λ‘œκ·Έλž¨μ„ 가져와 컀널에 등둝할지(쀀비큐에 등둝할지) κ²°μ •ν•œλ‹€.

  • μž₯κΈ° μŠ€μΌ€μ€„λŸ¬λŠ” μˆ˜μ‹­ 초 내지 수 λΆ„ λ‹¨μœ„λ‘œ 가끔 호좜되기 λ•Œλ¬Έμ— μƒλŒ€μ μœΌλ‘œ 속도가 느린 것이 ν—ˆμš©λ©λ‹ˆλ‹€.
  • λ˜ν•œ μž₯κΈ° μŠ€μΌ€μ€„λŸ¬λŠ” λ©”λͺ¨λ¦¬μ— λ™μ‹œμ— μ˜¬λΌκ°€ μžˆλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ 수λ₯Ό μ‘°μ ˆν•˜λŠ” 역할을 ν•œλ‹€.

ν•˜μ§€λ§Œ ν˜„λŒ€μ˜ μ‹œλΆ„ν•  μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©λ˜λŠ” 운영 μ²΄μ œμ—λŠ” 일반적으둜 μž₯κΈ° μŠ€μΌ€μ€„λŸ¬λ₯Ό 두지 μ•ŠλŠ” κ²½μš°κ°€ λŒ€λΆ€λΆ„μ΄λ‹€. κ³Όκ±°μ—λŠ” 적은 μ–‘μ˜ λ©”λͺ¨λ¦¬λ₯Ό λ§Žμ€ ν”„λ‘œμ„ΈμŠ€λ“€μ—κ²Œ ν• λ‹Ήν•˜λ©΄ ν”„λ‘œμ„ΈμŠ€λ‹Ή λ©”λͺ¨λ¦¬ λ³΄μœ λŸ‰μ΄ 적어져 μž₯κΈ° μŠ€μΌ€μ€„λŸ¬κ°€ 이λ₯Ό μ‘°μ ˆν•˜λŠ” 역할을 ν–ˆμ§€λ§Œ ν˜„λŒ€μ˜ 운영체제 μ—μ„œλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μ‹œμž‘λ˜λ©΄ μž₯κΈ° μŠ€μΌ€μ€„λŸ¬ 없이 λ°”λ‘œ κ·Έ ν”„λ‘œμ„ΈμŠ€μ— λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•΄ μ€€λΉ„ 큐에 λ„£μ–΄μ£Όκ²Œ λœλ‹€. 

 

쀑기 μŠ€μΌ€μ€„λŸ¬(medium term scheduler)

λ©”λͺ¨λ¦¬μ— 적재된 ν”„λ‘œμ„ΈμŠ€ 수 관리

λ„ˆλ¬΄ λ§Žμ€ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•΄ μ‹œμŠ€ν…œμ˜ μ„±λŠ₯이 μ €ν•˜λ˜λŠ” 경우 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ©”λͺ¨λ¦¬μ— 적재된 ν”„λ‘œμ„ΈμŠ€μ˜ 수λ₯Ό λ™μ μœΌλ‘œ μ‘°μ ˆν•˜κΈ° μœ„ν•΄ μΆ”κ°€λœ μŠ€μΌ€μ€„λŸ¬. 

  • μŠ€μ™€ν•‘(Swapping) : μž₯κΈ° μŠ€μΌ€μ€„λŸ¬μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ λ©”λͺ¨λ¦¬μ— μ˜¬λΌμ™€ μžˆλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ 수λ₯Ό μ‘°μ ˆν•˜λŠ” 역할을 ν•œλ‹€.
    • λ§Œμ•½ λ©”λͺ¨λ¦¬μ— λ§Žμ€ 수의 ν”„λ‘œμ„ΈμŠ€κ°€ μ μž¬λ˜μ–΄ ν”„λ‘œμ„ΈμŠ€ λ‹Ή λ³΄μœ ν•˜κ³  μžˆλŠ” λ©”λͺ¨λ¦¬λŸ‰μ΄ κ·Ήλ„λ‘œ 적어지면 CPU μˆ˜ν–‰μ— λ‹Ήμž₯ ν•„μš”ν•œ ν”„λ‘œμ„ΈμŠ€μ˜ μ£Όμ†Œ 곡간쑰차도 λ©”λͺ¨λ¦¬μ— μ˜¬λ €λ†“κΈ° μ–΄λ €μš΄ 상황이 λ°œμƒν•˜κ²Œ λœλ‹€.
    • κ·Έλ ‡κ²Œ 되면 λ””μŠ€ν¬ I/Oκ°€ μˆ˜μ‹œλ‘œ λ°œμƒν•˜κ²Œ λ˜μ–΄ μ‹œμŠ€ν…œμ˜ μ„±λŠ₯이 μ‹¬κ°ν•˜κ²Œ μ €ν•˜λ  수 μžˆλ‹€.
      • 가상메λͺ¨λ¦¬ μ²΄μ œμ—μ„œ λ„ˆλ¬΄λ§Žμ€ ν”„λ‘œμ„ΈμŠ€κ°€ 적재되면 ν•˜λ“œλ””μŠ€ν¬ μž…μΆœλ ₯이 κ³Όλ‹€ν•΄μ Έμ„œ μ‹œμŠ€ν…œμ΄ 거의 λ©ˆμΆ”λŠ” ν˜„μƒμ΄ λ°œμƒ(Trashing)
      • Trashing : λ©”λͺ¨λ¦¬ μ˜μ—­μ— μ ‘κ·Όν•˜κ²Œ 될 λ•Œ, λ©”λͺ¨λ¦¬μ— νŽ˜μ΄μ§€ λΆ€μž¬(=νŽ˜μ΄μ§€ 폴트(Page fault)율이 높은 것을 의미
    • 이런 경우 λ©”λͺ¨λ¦¬μ— μ˜¬λΌμ™€ μžˆλŠ” ν”„λ‘œμ„ΈμŠ€ 쀑 μΌλΆ€μ˜ λ©”λͺ¨λ¦¬λ₯Ό ν†΅μ§Έλ‘œ λΉΌμ•—μ•„ κ·Έ λ‚΄μš©μ„ λ””μŠ€ν¬μ˜ μŠ€μ™‘ μ˜μ—­μ— μ €μž₯ν•΄ λ‘”λ‹€. 이와 같은 ν–‰μœ„λ₯Ό μŠ€μ™‘ 아웃(swap out)이라고 ν•©λ‹ˆλ‹€.
    • λ””μŠ€ν¬λ‘œ μŠ€μ™‘ μ•„μ›ƒμ‹œμΌœμ•Ό ν•˜λŠ” 경우 봉쇄 μƒνƒœ(쀑단 μƒνƒœ)에 μžˆλŠ” ν”„λ‘œμ„ΈμŠ€λ“€μ„ 첫번째둜 μŠ€μ™‘ 아웃 μ‹œν‚΅λ‹ˆλ‹€. μ΄μœ λŠ” 봉쇄 μƒνƒœμ˜ ν”„λ‘œμ„ΈμŠ€λ“€μ€ λ‹Ήμž₯ CPUλ₯Ό νšλ“ν•  κ°€λŠ₯성이 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.
    • 봉쇄 μƒνƒœμ˜ ν”„λ‘œμ„ΈμŠ€λ“€μ„ μŠ€μ™‘ μ•„μ›ƒμ‹œμΌœλ„ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•ŠλŠ” 경우 쀑기 μŠ€μΌ€μ€„λŸ¬λŠ” 타이머 μΈν„°λŸ½νŠΈκ°€ λ°œμƒν•΄ μ€€λΉ„ 큐둜 μ΄λ™ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μΆ”κ°€μ μœΌλ‘œ μŠ€μ™‘μ•„μ›ƒ μ‹œν‚¨λ‹€.
    • λ©”λͺ¨λ¦¬μ— μ—¬μœ κ°€ 생기면 λ‹€μ‹œ 적재(swap in)ν•œλ‹€.

쀑기 μŠ€μΌ€μ€„λŸ¬μ˜ λ“±μž₯으둜 ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœμ—λŠ” 쀑지(suspenden, stopped) μƒνƒœκ°€ μΆ”κ°€ λ˜μ—ˆμœΌλ©° 쀑지 μƒνƒœμ˜ ν”„λ‘œμ„ΈμŠ€λŠ” λ©”λͺ¨λ¦¬λ₯Ό ν†΅μ§Έλ‘œ λΉΌμ•—κΈ°κ³  λ””μŠ€ν¬λ‘œ μŠ€μ™‘ μ•„μ›ƒλœλ‹€. 쀑지 μƒνƒœλŠ” μ€‘지 μ€€λΉ„ μƒνƒœμ™€ λ΄‰μ‡„ 쀑지 μƒνƒœκ°€ μžˆλ‹€.

  • 쀑지 μ€€λΉ„(suspended ready) : μ€€λΉ„ μƒνƒœμ˜ ν”„λ‘œμ„ΈμŠ€κ°€ 쀑기 μŠ€μΌ€μ€„λŸ¬μ— μ˜ν•΄ λ””μŠ€ν¬λ‘œ swap out
  • 봉쇄 쀑지(suspended block) : 봉쇄 μƒνƒœμ˜ ν”„λ‘œμ„ΈμŠ€κ°€ 쀑기 μŠ€μΌ€μ€„λŸ¬μ— μ˜ν•΄ λ””μŠ€ν¬λ‘œ swap out

쀑지 봉쇄 μƒνƒœμΈ ν”„λ‘œμ„ΈμŠ€κ°€ 봉쇄 λ˜μ—ˆλ˜ 쑰건을 λ§Œμ‘±ν•˜κ²Œ 되면 이 ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœλŠ” 쀑지 μ€€λΉ„ μƒνƒœλ‘œ λ°”λ€Œκ²Œ λœλ‹€. 쀑지 μƒνƒœμ— μžˆλŠ” ν”„λ‘œμ„ΈμŠ€λ“€μ€ 쀑지 μ€€λΉ„ μƒνƒœμ΄λ“  쀑지 봉쇄 μƒνƒœμ΄λ“  관계없이 λ©”λͺ¨λ¦¬λ₯Ό μ‘°κΈˆλ„ λ³΄μœ ν•˜μ§€ μ•Šκ³  λ””μŠ€ν¬μ— ν†΅μ§Έλ‘œ μŠ€μ™‘ μ•„μ›ƒλœ μƒνƒœλ‘œ μ‘΄μž¬ν•˜κ²Œ λœλ‹€.

 

단기 μŠ€μΌ€μ€„λŸ¬(short term scheduler)

λ©”λͺ¨λ¦¬ λ‚΄μ˜ μ€€λΉ„ μƒνƒœμ— μžˆλŠ” μž‘μ—… 쀑 μ‹€ν–‰ ν•  ν”„λ‘œμ„ΈμŠ€λ₯Ό μ„ νƒν•˜μ—¬ CPUλ₯Ό ν• λ‹Ή

CPUμŠ€μΌ€μ€„λŸ¬λΌκ³ λ„ ν•˜λ©° μ€€λΉ„ μƒνƒœμ˜ ν”„λ‘œμ„ΈμŠ€ μ€‘μ—μ„œ μ–΄λ˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‹€μŒ λ²ˆμ— μ‹€ν–‰ μƒνƒœλ‘œ λ§Œλ“€ 것인지λ₯Ό κ²°μ •ν•œλ‹€. μ‹œλΆ„ν•  μ‹œμŠ€ν…œμ—μ„œ 타이머 μΈν„°λŸ½νŠΈκ°€ λ°œμƒν•˜λ©΄ 단기 μŠ€μΌ€μ€„λŸ¬κ°€ ν˜ΈμΆœλœλ‹€.

  • 일반적으둜 μŠ€μΌ€μ€„λŸ¬λΌ 함은 단기 μŠ€μΌ€μ€„λŸ¬λ₯Ό μ˜λ―Έν•˜λ©° 단기 μŠ€μΌ€μ€„λŸ¬λŠ” 미리 μ •ν•œ μŠ€μΌ€μ€„링 μ•Œκ³ λ¦¬μ¦˜μ— 따라 cpuλ₯Ό ν• λ‹Ή ν•  ν”„λ‘œμ„ΈμŠ€λ₯Ό μ„ νƒν•œλ‹€.
  • 단기 μŠ€μΌ€μ€„λŸ¬λŠ” 밀리 μ„Έμ»¨νŠΈ(ms) μ΄ν•˜μ˜ μ‹œκ°„ λ‹¨μœ„λ‘œ 맀우 λΉˆλ²ˆν•˜κ²Œ 호좜되기 λ•Œλ¬Έμ— μˆ˜ν–‰ 속도가 μΆ©λΆ„νžˆ 빨라야 ν•œλ‹€.

 

정리

μŠ€μΌ€μ€„λŸ¬ μ’…λ₯˜ κ΄€λ ¨λœ μƒνƒœ
μž₯κΈ° μŠ€μΌ€μ€„λŸ¬ 생성 μƒνƒœ 관리
쀑기 μŠ€μΌ€μ€„λŸ¬ μ€‘λ‹¨λœ μ€€λΉ„, μ€€λΉ„, μ€‘λ‹¨λœ λŒ€κΈ°, λŒ€κΈ° μƒνƒœ 관리
단기 μŠ€μΌ€μ€„λŸ¬ μ€€λΉ„, μ‹€ν–‰, λŒ€κΈ° μƒνƒœ κ΄€λ¦¬

 

μ°Έκ³