Skip to content

Latest commit

Β 

History

History
95 lines (62 loc) Β· 6.4 KB

SchedulingAlgorithms.md

File metadata and controls

95 lines (62 loc) Β· 6.4 KB

CPU μŠ€μΌ€μ€„λ§ μ•Œκ³ λ¦¬μ¦˜

μš΄μ˜μ²΄μ œμ—μ„œ CPUλ₯Ό μ–΄λ–€ μˆœμ„œλ‘œ 할당할지 κ²°μ •ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.
μ‹œμŠ€ν…œ μ„±λŠ₯을 μ΅œμ ν™”ν•˜κ³  ν”„λ‘œμ„ΈμŠ€λ“€μ΄ μ μ ˆν•œ μ‹œκ°„μ— CPUλ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

πŸ’‘μŠ€μΌ€μ€„λ§ μ•Œκ³ λ¦¬μ¦˜ 평가 κΈ°μ€€

image

ν•­λͺ© μ„€λͺ…
CPU μ‚¬μš©λ₯ (CPU Utilization) 전체 μ‹œμŠ€ν…œ μ‹œκ°„ 쀑 CPUκ°€ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” μ‹œκ°„μ˜ λΉ„μœ¨μž…λ‹ˆλ‹€.
μ²˜λ¦¬λŸ‰(Throughput) λ‹¨μœ„ μ‹œκ°„λ‹Ή μ™„λ£Œλ˜λŠ” μž‘μ—…μ˜ μˆ˜μž…λ‹ˆλ‹€. μ²˜λ¦¬λŸ‰μ΄ λ§Žμ„μˆ˜λ‘ μ‹œμŠ€ν…œμ˜ μ„±λŠ₯이 μ’‹λ‹€κ³  νŒλ‹¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
λŒ€κΈ° μ‹œκ°„(Waiting Time) ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό ν• λ‹Ήλ°›κΈ° μœ„ν•΄ κΈ°λ‹€λ¦¬λŠ” μ‹œκ°„μž…λ‹ˆλ‹€. λŒ€κΈ° μ‹œκ°„μ΄ μ§§μ„μˆ˜λ‘ ν”„λ‘œμ„ΈμŠ€μ˜ 응닡 μ‹œκ°„μ΄ λ‹¨μΆ•λ©λ‹ˆλ‹€.
응닡 μ‹œκ°„(Response Time) ν”„λ‘œμ„ΈμŠ€κ°€ 처음으둜 CPUλ₯Ό ν• λ‹Ήλ°›μ•„μ„œ 처음 좜λ ₯이 λ‚˜νƒ€λ‚  λ•ŒκΉŒμ§€ κ±Έλ¦¬λŠ” μ‹œκ°„μž…λ‹ˆλ‹€.
λ°˜ν™˜ μ‹œκ°„(Turnaround Time) ν”„λ‘œμ„ΈμŠ€κ°€ μ‹œμŠ€ν…œμ— μ§„μž…ν•œ μ‹œμ λΆ€ν„° 싀행이 μ’…λ£Œλ˜μ–΄ μ‹œμŠ€ν…œμ—μ„œ λΉ μ Έλ‚˜κ°€λŠ” μ‹œμ κΉŒμ§€ κ±Έλ¦¬λŠ” μ‹œκ°„μž…λ‹ˆλ‹€.

μ°Έκ³ 

λ¬Έλ§₯κ΅ν™˜ : ν”„λ‘œμ„ΈμŠ€κ°€ μ‚¬μš©μ€‘μ΄λ˜ CPUλ₯Ό λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ λ„˜κ²¨μ€„ λ•Œ μ΄μ „μ˜ ν”„λ‘œμ„ΈμŠ€ μƒνƒœ(λ¬Έλ§₯)을 λ³΄κ΄€ν•˜κ³  μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€ μƒνƒœλ₯Ό μ μž¬ν•˜λŠ” μž‘μ—…μž…λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€μ˜ λ¬Έλ§₯은 κ·Έ ν”„λ‘œμ„ΈμŠ€μ˜ PCB(ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ λΈ”λŸ­)에 κΈ°λ‘λ©λ‹ˆλ‹€.

μ˜€λ²„ν—€λ“œ : λ¬Έλ§₯κ΅ν™˜μ΄ μΌμ–΄λ‚˜λŠ” λ™μ•ˆ λ‹€λ₯Έ μž‘μ—…μ„ ν•  수 μ—†λŠ”λ° κ·Έ μ‹œκ°„μ„ μΌμ’…μ˜ μ˜€λ²„ν—€λ“œλΌκ³  ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ’‘λΉ„μ„ μ ν˜• μŠ€μΌ€μ€„λ§

CPUκ°€ ν•œ 번 ν• λ‹Ήλœ ν”„λ‘œμ„ΈμŠ€λŠ” 진행 쀑에 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ κ°•μ œλ‘œ κ·Έ 자리λ₯Ό 뺏을 수 μ—†μœΌλ©°, ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€κ°€ 슀슀둜 싀행을 μ™„λ£Œν•˜κ±°λ‚˜ λŒ€κΈ° μƒνƒœλ‘œ μ „ν™˜λ˜μ–΄μ•Όλ§Œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ CPUκ°€ ν• λ‹Ήλ©λ‹ˆλ‹€.

νŠΉμ§•

  • κ°„λ‹¨ν•˜κ³  κ΅¬ν˜„μ΄ μ‰¬μ›Œμ„œ, μž‘μ€ 규λͺ¨μ˜ μ‹œμŠ€ν…œμ—μ„œ 많이 μ‚¬μš©λ©λ‹ˆλ‹€.
  • μ‹€ν–‰ μ‹œκ°„μ΄ κΈ΄ ν”„λ‘œμ„ΈμŠ€κ°€ λ¨Όμ € 할당될 경우, λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ λŒ€κΈ°ν•˜λŠ” μ‹œκ°„μ΄ κΈΈμ–΄μ Έ 전체 μ‹œμŠ€ν…œμ˜ μ„±λŠ₯이 μ €ν•˜λ  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œμ—μ„œλŠ” 보닀 효율적인 μ„ μ ν˜• μŠ€μΌ€μ€„λ§ 방식이 μ‚¬μš©λ©λ‹ˆλ‹€.

❗FCFS(First-Come, First-Served) μ•Œκ³ λ¦¬μ¦˜

image

  • μ„ μž…μ„ μΆœ λ°©μ‹μœΌλ‘œ κ°€μž₯ λ¨Όμ € λ„μ°©ν•œ ν”„λ‘œμ„ΈμŠ€λΆ€ν„° CPUλ₯Ό ν• λ‹Ήν•©λ‹ˆλ‹€.
  • λŒ€κΈ° μ‹œκ°„μ΄ κΈΈμ–΄μ§ˆ 수 있고, μ‹€ν–‰ μ‹œκ°„μ΄ κΈ΄ ν”„λ‘œμ„ΈμŠ€κ°€ λ¨Όμ € λ„μ°©ν•˜λ©΄ 전체 μ‹€ν–‰ μ‹œκ°„μ΄ κΈΈμ–΄μ Έ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ“€μ˜ λŒ€κΈ° μ‹œκ°„μ΄ λ”μš± κΈΈμ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

❗SJF(Shortest Job First) μ•Œκ³ λ¦¬μ¦˜

image

  • μ‹€ν–‰ μ‹œκ°„μ΄ κ°€μž₯ 짧은 ν”„λ‘œμ„ΈμŠ€λΆ€ν„° CPUλ₯Ό ν• λ‹Ήν•©λ‹ˆλ‹€.
  • μ‹€ν–‰ μ‹œκ°„μ„ μ˜ˆμΈ‘ν•˜λŠ” 것이 μ–΄λ ΅κΈ° λ•Œλ¬Έμ—, ν”„λ‘œμ„ΈμŠ€κ°€ 도착할 λ•Œλ§ˆλ‹€ μ˜ˆμƒ μ‹€ν–‰ μ‹œκ°„μ„ κ³„μ‚°ν•˜κ³  이λ₯Ό 기반으둜 CPUλ₯Ό ν• λ‹Ήν•©λ‹ˆλ‹€.

❗HRN( Highest Response Ratio Next) μ•Œκ³ λ¦¬μ¦˜

image

  • ν”„λ‘œμ„ΈμŠ€ 처리의 μš°μ„  μˆœμœ„λ₯Ό CPU 처리 κΈ°κ°„κ³Ό ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€μ˜ λŒ€κΈ° μ‹œκ°„μ„ λ™μ‹œμ— κ³ λ €ν•΄ μ„ μ •ν•©λ‹ˆλ‹€.
  • μš΄μ„ μˆœμœ„λŠ” λŒ€κΈ° μ‹œκ°„κ³Ό μ„œλΉ„μŠ€ μ‹œκ°„μ„ μ΄μš©ν•˜μ—¬ κ²°μ •ν•©λ‹ˆλ‹€.
μš°μ„ μˆœμœ„ κ°’ = (λŒ€κΈ° μ‹œκ°„ + μ„œλΉ„μŠ€ μ‹œκ°„) / μ„œλΉ„μŠ€ μ‹œκ°„
  • HRN μ•Œκ³ λ¦¬μ¦˜μ€ 일반적으둜 μ‹œμŠ€ν…œμ˜ 평균 λŒ€κΈ° μ‹œκ°„κ³Ό 평균 λ°˜ν™˜ μ‹œκ°„μ„ μ€„μ΄λŠ” 데 νš¨κ³Όμ μž…λ‹ˆλ‹€.
  • λŒ€κΈ° μ‹œκ°„μ΄ 0인 ν”„λ‘œμ„ΈμŠ€λŠ” μš°μ„ μˆœμœ„λ₯Ό 갖지 λͺ»ν•˜κ³  계속 λŒ€κΈ°ν•˜κ²Œ λ˜λ―€λ‘œ, 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 방법이 ν•„μš”ν•©λ‹ˆλ‹€.
  • λŒ€κΈ° μ‹œκ°„μ„ κ³ λ €ν•˜λ―€λ‘œ μ˜€λ²„ν—€λ“œκ°€ 크고 κ΅¬ν˜„μ΄ λ³΅μž‘ν•©λ‹ˆλ‹€.

πŸ’‘μ„ μ ν˜• μŠ€μΌ€μ€„λ§

CPUκ°€ ν˜„μž¬ μ‹€ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°•μ œλ‘œ μ€‘λ‹¨μ‹œν‚€κ³ , μš°μ„ μˆœμœ„κ°€ 높은 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ CPUλ₯Ό ν• λ‹Ήν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

νŠΉμ§•

  • μ‹€ν–‰ μ‹œκ°„μ΄ κΈ΄ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ CPUκ°€ μ˜€λž«λ™μ•ˆ ν• λ‹Ήλ˜λŠ” 것을 λ°©μ§€ν•˜κ³ , μ‹œμŠ€ν…œμ˜ 응닡 μ‹œκ°„κ³Ό μ²˜λ¦¬μœ¨μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‹€ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€κ°€ κ°•μ œλ‘œ μ€‘λ‹¨λ˜μ–΄ μžμ› λ‚­λΉ„κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν”„λ‘œμ„ΈμŠ€ μ „ν™˜μ— ν•„μš”ν•œ μ˜€λ²„ν—€λ“œκ°€ μΆ”κ°€λ˜κΈ° λ•Œλ¬Έμ— λΉ„μ„ μ ν˜• λ°©μ‹λ³΄λ‹€λŠ” κ΅¬ν˜„μ΄ λ³΅μž‘ν•˜κ³  μ˜€λ²„ν—€λ“œκ°€ 큰 κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€.

❗Round Robin μ•Œκ³ λ¦¬μ¦˜

image

μ‹œλΆ„ν•  μ‹œμŠ€ν…œμ„ μœ„ν•œ μ„ μ ν˜• μŠ€μΌ€μ€„λ§ 방식. ν”„λ‘œμ„ΈμŠ€λ“€ 사이에 μš°μ„ μˆœμœ„λ₯Ό 두지 μ•Šκ³ , μˆœμ„œλŒ€λ‘œ μ‹œκ°„λ‹¨μœ„(Time Quantum)둜 CPUλ₯Ό ν• λ‹Ήν•˜λŠ” λ°©μ‹μ˜ CPU μŠ€μΌ€μ€„λ§ μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€.

  • μ‹œκ°„ λ‹¨μœ„ λ™μ•ˆ ν”„λ‘œμ„ΈμŠ€λ₯Ό μˆ˜ν–‰ν•œ ν›„, μ™„λ£Œλ˜μ§€ μ•Šμ•˜μ„ 경우 μ€€λΉ„ 큐의 끝으둜 λ°€λ €λ‚©λ‹ˆλ‹€.
  • μ‹œκ°„ ν• λ‹ΉλŸ‰μ΄ μ μ ˆν•˜κ²Œ μ„€μ •λ˜μ–΄μ•Ό ν•˜λ©°, ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰ μ‹œκ°„μ΄ λͺ¨λ‘ λ™μΌν•˜μ§€ μ•Šμ„ 경우, λŒ€κΈ° μ‹œκ°„μ΄ κΈΈμ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

❗SRT(Shortest Remaining Time) μ•Œκ³ λ¦¬μ¦˜

image

  • SJF μŠ€μΌ€μ€„λ§μ„ 선점 ν˜•νƒœλ‘œ μˆ˜μ •ν•œ λ°©μ‹μž…λ‹ˆλ‹€.
  • ν˜„μž¬ μž‘μ—… 쀑인 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ€‘λ‹¨μ‹œν‚€κ³  μ΅œλ‹¨ μž”μ—¬μ‹œκ°„ ν”„λ‘œμ„ΈμŠ€μ˜ 처리λ₯Ό μ‹œμž‘ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
  • μ„ μ ν˜• SJF μŠ€μΌ€μ€„λ§ λ˜λŠ” SRTF (Shortest Remaining Time First) μŠ€μΌ€μ€„λ§μ΄λΌκ³ λ„ ν•©λ‹ˆλ‹€.

❗Multilevel Feedback Queue μ•Œκ³ λ¦¬μ¦˜

image

  • μ—¬λŸ¬ 개의 큐λ₯Ό μ΄μš©ν•˜μ—¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό μŠ€μΌ€μ€„λ§ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€.
  • 각 νλŠ” μ„œλ‘œ λ‹€λ₯Έ μš°μ„ μˆœμœ„λ₯Ό κ°–κ³  있으며, μš°μ„ μˆœμœ„κ°€ 높은 큐뢀터 μŠ€μΌ€μ€„λ§μ΄ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.
  • νλ§ˆλ‹€ ν• λ‹Ήλœ μš°μ„ μˆœμœ„μ™€ μŠ€μΌ€μ€„λ§ μ•Œκ³ λ¦¬μ¦˜μ„ λ‹€λ₯΄κ²Œ μ μš©ν•  수 μžˆμœΌλ―€λ‘œ, 각 ν”„λ‘œμ„ΈμŠ€μ˜ νŠΉμ„±μ— 따라 μ μ ˆν•œ 큐에 ν• λ‹Ήν•˜μ—¬ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.