etc/μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬

[μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬ μ‹€κΈ°] μŠ€μΌ€μ€„λ§(Scheduling)

minzhen 2022. 7. 22. 01:52

Scheduling

ν”„λ‘œμ„ΈμŠ€κ°€ μƒμ„±λ˜μ–΄ 싀행될 λ•Œ ν•„μš”ν•œ μ‹œμŠ€ν…œμ˜ μ—¬λŸ¬ μžμ›μ„ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€μ—κ²Œ ν• λ‹Ήν•˜λŠ” μž‘μ—…
  • ν”„λ‘œμ„ΈμŠ€κ°€ μƒμ„±λ˜μ–΄ μ™„λ£Œλ  λ•ŒκΉŒμ§€ ν”„λ‘œμ„ΈμŠ€λŠ” μ—¬λŸ¬ μ’…λ₯˜μ˜ μŠ€μΌ€μ€„λ§ 과정을 거치게 됨

 

μŠ€μΌ€μ€„λ§μ˜ μ’…λ₯˜

  • μž₯κΈ° μŠ€μΌ€μ€„λ§ : μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ μ‹œμŠ€ν…œ μžμ›μ„ ν• λ‹Ήν• μ§€ κ²°μ • → μ€€λΉ„μƒνƒœ 큐둜 λ³΄λ‚΄λŠ” μž‘μ—…
  • 쀑기 μŠ€μΌ€μ€„λ§ : μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ CPUλ₯Ό 할당받을 것인지 κ²°μ •
  • 단기 μŠ€μΌ€μ€„λ§ : ν”„λ‘œμ„ΈμŠ€ 싀행을 μœ„ν•΄ CPU ν• λ‹Ήμ‹œκΈ°, νŠΉμ • ν”„λ‘œμ„ΈμŠ€ μ§€μ •

 

μŠ€μΌ€μ€„λ§μ˜ λͺ©μ 

  • 곡정성 : λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€μ— κ³΅μ •ν•˜κ²Œ ν• λ‹Ή
  • 처리율 증가 : λ‹¨μœ„ μ‹œκ°„λ‹Ή ν”„λ‘œμ„ΈμŠ€λ₯Ό μ²˜λ¦¬ν•˜λŠ” λΉ„μœ¨ 증가
  • CPU 이용λ₯  증가 : CPUκ°€ μˆœμˆ˜ν•˜κ²Œ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•˜λŠ” μ†Œμš”μ‹œκ°„ λΉ„μœ¨ 증가
  • μš°μ„ μˆœμœ„ μ œλ„ : μš°μ„ μˆœμœ„κ°€ 높은 ν”„λ‘œμ„ΈμŠ€ λ¨Όμ € μ‹€ν–‰
  • μ˜€λ²„ν—€λ“œ μ΅œμ†Œν™” : μ˜€λ²„ν—€λ“œ μ΅œμ†Œν™”
  • 응닡 μ‹œκ°„ μ΅œμ†Œν™” : μž‘μ—…μ„ μ§€μ‹œν•˜κ³ , λ°˜μ‘ν•˜κΈ° μ‹œμž‘ν•˜λŠ” μ‹œκ°„ μ΅œμ†Œν™”
  • λ°˜ν™˜ μ‹œκ°„ μ΅œμ†Œν™” : ν”„λ‘œμ„ΈμŠ€λ₯Ό μ œμΆœν•œ μ‹œκ°„λΆ€ν„° 싀행이 μ™„λ£Œλ  λ•ŒκΉŒμ§€ κ±Έλ¦¬λŠ” μ‹œκ°„μ„ μ΅œμ†Œν™”ν•¨
  • λŒ€κΈ° μ‹œκ°„ μ΅œμ†Œν™” : ν”„λ‘œμ„ΈμŠ€κ°€ μ€€λΉ„μƒνƒœ νμ—μ„œ λŒ€κΈ°ν•˜λŠ” μ‹œκ°„ μ΅œμ†Œν™”
  • κ· ν˜• μžˆλŠ” μžμ›μ˜ μ‚¬μš© : λ©”λͺ¨λ¦¬, μž…·μΆœλ ₯ μž₯치 λ“±μ˜ μžμ›μ„ κ· ν˜• 있게 μ‚¬μš©
  • λ¬΄ν•œ μ—°κΈ° νšŒν”Ό : μžμ›μ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ¬΄ν•œμ • μ—°κΈ°λ˜λŠ” μƒνƒœ νšŒν”Ό κ°€λŠ₯

 

비선점(Non-Preemptive) μŠ€μΌ€μ€„λ§

이미 ν• λ‹Ήλœ CPUλ₯Ό λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ κ°•μ œλ‘œ λΉΌμ•—μ•„ μ‚¬μš©ν•  수 μ—†λŠ” μŠ€μΌ€μ€„λ§ 기법
  • ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό ν• λ‹Ήλ°›μœΌλ©΄ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€κ°€ μ™„λ£Œλ  λ•ŒκΉŒμ§€ CPUλ₯Ό μ‚¬μš©ν•œλ‹€.
  • ν”„λ‘œμ„ΈμŠ€ 응닡 μ‹œκ°„ 예츑 용이
  • 일괄 처리 방식에 적합

μ’…λ₯˜

  • FCFS (First Come Frist Service) : ν”„λ‘œμ„ΈμŠ€κ°€ μ€€λΉ„μƒνƒœ 큐에 λ„μ°©ν•œ μˆœμ„œμ— 따라 CPU ν• λ‹Ή. κ°€μž₯ κ°„λ‹¨ν•œ μ•Œκ³ λ¦¬μ¦˜.
  • SJF (Shortest Job First) : μ€€λΉ„μƒνƒœ νμ—μ„œ λŒ€κΈ°μ€‘μΈ ν”„λ‘œμ„ΈμŠ€ 쀑 μ‹€ν–‰μ‹œκ°„μ΄ κ°€μž₯ 짧은 ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œ μ‹œκΉŒμ§€ μžμ› 점유. κ°€μž₯ 적은 평균 λŒ€κΈ°μ‹œκ°„μ„ μ œκ³΅ν•˜λŠ” 졜적 μ•Œκ³ λ¦¬μ¦˜. κΈ°μ•„ ν˜„μƒ λ°œμƒ
  • μš°μ„ μˆœμœ„ (Priority) : ν”„λ‘œμ„ΈμŠ€λ³„ μš°μ„ μˆœμœ„κ°€ μ£Όμ–΄μ§€κ³ , μš°μ„ μˆœμœ„μ— 따라 CPU ν• λ‹Ή
  • HRN (Highest Response-ratio Next) : ν˜„μž¬ 응닡λ₯ μ΄ κ°€μž₯ 높은 것을 선택 → μš°μ„ μˆœμœ„ 계산식 = ( λŒ€κΈ°μ‹œκ°„ + μ„œλΉ„μŠ€(μ‹€ν–‰)μ‹œκ°„ ) / μ„œλΉ„μŠ€ μ‹œκ°„. κΈ°μ•„ ν˜„μƒ μ΅œμ†Œν™” 기법
  • κΈ°ν•œλΆ€ (Deadline) : μž‘μ—…λ“€μ΄ λͺ…μ‹œλœ μ‹œκ°„μ΄λ‚˜ κΈ°ν•œ 내에 μ™„λ£Œλ˜λ„λ‘ κ³„νš

 

선점(Preemptive) μŠ€μΌ€μ€„λ§

ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό ν• λ‹Ήλ°›μ•„ μ‹€ν–‰ 쀑일 λ•Œ μš°μ„ μˆœμœ„κ°€ 높은 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό κ°•μ œλ‘œ λΉΌμ•—μ•„ μ‚¬μš©ν•  수 μžˆλŠ” μŠ€μΌ€μ€„λ§ 기법
  • μš°μ„ μˆœμœ„κ°€ 높은 ν”„λ‘œμ„ΈμŠ€λ₯Ό λΉ λ₯΄κ²Œ 처리 κ°€λŠ₯
  • 주둜 λΉ λ₯Έ 응닡 μ‹œκ°„μ„ μš”κ΅¬ν•˜λŠ” λŒ€ν™”μ‹ μ‹œλΆ„ν•  μ‹œμŠ€ν…œμ— μ‚¬μš©
  • λ§Žμ€ μ˜€λ²„ν—€λ“œ(Overhead) 초래 (*μ˜€λ²„ν—€λ“œ : μ²˜λ¦¬μ— λ“œλŠ” 간접적 μ²˜λ¦¬μ‹œκ°„·λ©”λͺ¨λ¦¬)

μ’…λ₯˜

  • λΌμš΄λ“œ 둜빈(Round Robin) : 같은 크기의 CPU μ‹œκ°„ ν• λ‹Ή
  • SRT(Shortest Remaining Time First) : κ°€μž₯ 짧은 μ‹œκ°„μ΄ μ†Œμš”λ˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό λ¨Όμ € μˆ˜ν–‰ν•˜κ³ , 남은 처리 μ‹œκ°„μ΄ 더 μ§§λ‹€κ³  νŒλ‹¨λ˜λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μ€€λΉ„ 큐에 생기면 μ–Έμ œλΌλ„ ν”„λ‘œμ„ΈμŠ€κ°€ 선점됨
  • 닀단계 큐(Multi Level Queue) : μž‘μ—…λ“€μ„ μ—¬λŸ¬ μ’…λ₯˜ κ·Έλ£Ή λΆ„ν• 
  • 닀단계 ν”Όλ“œλ°± 큐 : νλ§ˆλ‹€ μ„œλ‘œ λ‹€λ₯Έ CPUμ‹œκ°„ ν• λ‹ΉλŸ‰ λΆ€μ—¬, FIFO와 λΌμš΄λ“œ 둜빈 μŠ€μΌ€μ€„λ§ 기법을 ν˜Όν•©ν•œ 것