λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
⭐ Group_Study/Operating System

[2μ£Όμ°¨] Process Scheduling

by ν¬μŠ€νŠΈμ‰μ΄ν¬ 2022. 12. 13.

ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§

닀쀑 ν”„λ‘œκ·Έλž˜λ°(Multi - Programming)

βœ” μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€κ°€ μ‹œμŠ€ν…œ 내에 쑴재
βœ” μŠ€μΌ€μ€„λ§(Scheduling): μžμ›μ„ ν• λ‹Ήν•  ν”„λ‘œμ„ΈμŠ€ 선택

βœ” μžμ› 관리

  • μ‹œκ°„λΆ„ν• (time sharing)관리
    • ν•˜λ‚˜μ˜ μžμ›μ„ μ—¬λŸ¬ μŠ€λ ˆλ“œλ“€μ΄ λ²ˆκ°ˆμ•„ κ°€λ©° μ‚¬μš©
    • ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§(Process Sheduling)
  • 곡간뢄할(space sharing)관리
    • ν•˜λ‚˜μ˜ μžμ›μ„ λΆ„ν• ν•˜μ—¬ λ™μ‹œμ— μ‚¬μš©
    • ex: λ©”λͺ¨λ¦¬

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

βœ” μ‹œμŠ€ν…œμ˜ μ„±λŠ₯(Performance) ν–₯상

βœ” μ‹œμŠ€ν…œ μ„±λŠ₯ μ§€ν‘œ(idx)

  • μ‘λ‹΅μ‹œκ°„ (response time)
    • μž‘μ—… μš”μ²­(submission)μœΌλ‘œλΆ€ν„° 응닡을 받을 λ•ŒκΉŒμ§€μ˜ μ‹œκ°„
    • interactive system, real-time system
  • μž‘μ—… μ²˜λ¦¬λŸ‰(throughput)
    • λ‹¨μœ„ μ‹œκ°„ λ™μ•ˆ μ™„λ£Œλœ μž‘μ—…μ˜ 수
    • batch system
  • μžμ› ν™œμš©λ„(resource utilization)
    • 주어진 μ‹œκ°„ λ™μ•ˆ μžμ›μ΄ ν™œμš©λœ μ‹œκ°„

βœ” λͺ©μ μ— λ§žλŠ” μ§€ν‘œ κ³ λ €ν•˜μ—¬ μŠ€μΌ€μ€„λ§ 기법 선택

μ‹œμŠ€ν…œ μ„±λŠ₯ μ§€ν‘œλ“€

βœ” 평균 응닡 μ‹œκ°„(mean response time)
βœ” μ²˜λ¦¬λŸ‰(throughput)
βœ” μžμ› ν™œμš©λ„(resource utilization)
βœ” 곡평성(fairness)
βœ” μ‹€ν–‰ λŒ€κΈ° 방지
βœ” 예츑 κ°€λŠ₯μ„±(predictability)
...

λŒ€κΈ°μ‹œκ°„, μ‘λ‹΅μ‹œκ°„, λ°˜ν™˜μ‹œκ°„

μŠ€μΌ€μ€„λ§ κΈ°μ€€ (Criteria)

βœ” μŠ€μΌ€μ€„λ§ 기법이 κ³ λ €ν•˜λŠ” ν•­λͺ©λ“€

βœ” ν”„λ‘œμ„ΈμŠ€μ˜ νŠΉμ„±

  • I/O-bounded or compute-bounded

βœ” μ‹œμŠ€ν…œ νŠΉμ„±

  • Batch system or interactive system

βœ” ν”„λ‘œμ„ΈμŠ€μ˜ κΈ΄κΈ‰μ„± (urgency)

βœ” ν”„λ‘œμ„ΈμŠ€ μš°μ„ μˆœμœ„(priority)

βœ” ν”„λ‘œμ„ΈμŠ€ 총 μ‹€ν–‰ μ‹œκ°„(total service time)

CPU burst vs I/O burst

βœ” ν”„λ‘œμ„ΈμŠ€ μˆ˜ν–‰ = CPU μ‚¬μš© + I/O λŒ€κΈ°

βœ” CPU burst: CPU μ‚¬μš©μ‹œκ°„
βœ” I/O burst: I/O λŒ€κΈ°μ‹œκ°„

βœ” Burst time은 μŠ€μΌ€μ€„λ§μ˜ μ€‘μš”ν•œ κΈ°μ€€ 쀑 ν•˜λ‚˜

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

βœ” λ°œμƒν•˜λŠ” λΉˆλ„ 및 ν• λ‹Ή μžμ›μ— λ”°λ₯Έ ꡬ뢄

βœ” Long-term scheduling

  • Job scheduling

βœ” Mid-term scheduling

  • Memory allocation

βœ” Short-term scheduling

  • Process scheduling

Long-term Scheduling

βœ” Job scheduling

  • μ‹œμŠ€ν…œμ— 제좜 ν•  (kernerl에 등둝 ν• ) μž‘μ—… (Job) κ²°μ •

βœ” 닀쀑 ν”„λ‘œκ·Έλž˜λ°μ˜ 정도(degree) 쑰절

  • μ‹œμŠ€ν…œ 내에 ν”„λ‘œμ„ΈμŠ€μ˜ 수 쑰절

βœ” I/O bounded와 compted-bounded ν”„λ‘œμ„ΈμŠ€λ“€μ„ 잘 μ„žμ–΄μ„œ 선택

  • μž‘μ—…μ˜ νš¨μœ¨μ„±

βœ” μ‹œλΆ„ν•  μ‹œμŠ€ν…œμ—μ„œλŠ” λͺ¨λ“  μž‘μ—…μ„ μ‹œμŠ€ν…œμ— 등둝

  • Long term scheduling λΆˆν•„μš” (μ€‘μš”λ„ ↓)

Mid-term Scheduling

βœ” λ©”λͺ¨λ¦¬ ν• λ‹Ή κ²°μ • (memory allocation)

  • Intermediate-level scheduling
  • Swapping (swap-in / swap-out)

Short-term Scheduling

βœ” Process scheduling

  • ν”„λ‘œμ„Έμ„œλ₯Ό ν• λ‹Ήν•  ν”„λ‘œμ„ΈμŠ€ κ²°μ •

βœ” κ°€μž₯ λΉˆλ²ˆν•˜κ²Œ λ°œμƒ

  • 맀우 λΉ¨λΌμ•Όν•œλ‹€

그림으둜 λ³΄λŠ” μŠ€μΌ€μ€„λ§μ˜ 단계

μŠ€μΌ€μ€„λ§ μ •μ±…(Policy)

βœ” 선점(Preemptive) vs 비선점(Non-Preemptive)
βœ” μš°μ„ μˆœμœ„(Priority)

Preemptive/Non-preemptive scheduling

βœ” Non-preemptive schduling

  • ν• λ‹Ή 받은 μžμ›μ„ 슀슀둜 λ°˜λ‚©ν•  λ•ŒκΉŒμ§€ μ‚¬μš©
    • ex) system call, I/O
  • μž₯점: context switch overheadκ°€ 적음
  • 단점: μž¦μ€ μš°μ„ μˆœμœ„ μ—­μ „, 평균 μ‘λ‹΅μ‹œκ°„ 증가

βœ” Preemptive scheduling

  • νƒ€μ˜μ— μ˜ν•΄ μžμ›μ„ λΊ΄μ•—κΈΈ 수 있음
    • ex) ν• λ‹Ή μ‹œκ°„ μ’…λ£Œ, μš°μ„ μˆœμœ„κ°€ 높은 ν”„λ‘œμ„ΈμŠ€ λ“±μž₯
  • μž₯점: 응닡성 증가 (Time-shraing, real-time system에 적합)
  • 단점: context switch overheadκ°€ 큼

Priority

βœ” ν”„λ‘œμ„ΈμŠ€μ˜ μ€‘μš”λ„

βœ” static priority(정적 μš°μ„ μˆœμœ„)

  • ν”„λ‘œμ„ΈμŠ€ 생성 μ‹œ κ²°μ •λœ priority μœ μ§€
  • κ΅¬ν˜„μ΄ 쉽고, overheadκ°€ 적음
  • μ‹œμŠ€ν…œ ν™˜κ²½ 변화에 λŒ€ν•œ λŒ€μ‘ 어렀움

βœ” dynamic priority(동적 μš°μ„ μˆœμœ„)

  • ν”„λ‘œμ„ΈμŠ€ μƒνƒœ 변화에 따라 priority λ³€κ²½
  • κ΅¬ν˜„μ΄ 볡작, priority μž¬κ³„μ‚° overheadκ°€ 큼
  • μ‹œμŠ€ν…œ ν™˜κ²½ 변화에 μœ μ—°ν•œ λŒ€μ‘ κ°€λŠ₯

λŒ“κΈ€