Algorithm

μŠ€μΌ€μ₯΄λ§ μ•Œκ³ λ¦¬μ¦˜ (FCFS, SJF, SRTF, RR)

wooyeon06 2025. 2. 17. 14:08

 

 

 

 

1. FCFS (First Come, First Served, μ„ μ°©μˆœ)

 

πŸ“Œ νŠΉμ§•:

  • λ¨Όμ € 온 ν”„λ‘œμ„ΈμŠ€λΆ€ν„° μˆœμ„œλŒ€λ‘œ μ‹€ν–‰ (비선점)
  • λ‹¨μˆœν•œ ꡬ쑰, ν•˜μ§€λ§Œ κΈ΄ μž‘μ—…μ΄ λ¨Όμ € 였면 전체 지연 κ°€λŠ₯μ„± 있음 (Convoy Effect)

βœ… μ ν•©ν•œ 경우

  • 배치 처리 μ‹œμŠ€ν…œ (Batch Processing System)
    • λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰λ˜λŠ” κΈ΄ μž‘μ—…μ„ 순차적으둜 μ²˜λ¦¬ν•  λ•Œ
  • ν”„λ¦°ν„° λŒ€κΈ°μ—΄ (Print Queue)
    • λ¨Όμ € 온 인쇄 μž‘μ—…λΆ€ν„° μ°¨λ‘€λ‘œ 인쇄

πŸ’‘ μ˜ˆμ‹œ:

  • 은행 창ꡬ: λ¨Όμ € 온 고객뢀터 μ²˜λ¦¬ν•˜λŠ” 방식
  • 파일 λ‹€μš΄λ‘œλ“œ μ„œλ²„: λ¨Όμ € μš”μ²­ν•œ νŒŒμΌλΆ€ν„° λ‹€μš΄λ‘œλ“œ

 

 

2. SJF (Shortest Job First, μ΅œλ‹¨ μž‘μ—… μš°μ„ )

πŸ“Œ νŠΉμ§•:

  • μ‹€ν–‰ μ‹œκ°„μ΄ κ°€μž₯ 짧은 μž‘μ—…λΆ€ν„° 처리 (비선점)
  • 평균 λŒ€κΈ° μ‹œκ°„ μ΅œμ†Œν™” (ν•˜μ§€λ§Œ κΈ΄ μž‘μ—…μ΄ 계속 밀릴 κ°€λŠ₯μ„± 있음)

βœ… μ ν•©ν•œ 경우

  • 단기 μž‘μ—…μ΄ λ§Žμ€ μ‹œμŠ€ν…œ
    • λΉ λ₯Έ 응닡이 ν•„μš”ν•œ ν™˜κ²½μ—μ„œ 평균 λŒ€κΈ° μ‹œκ°„μ„ μ΅œμ†Œν™”ν•  λ•Œ
  • λ°μ΄ν„°λ² μ΄μŠ€ 쿼리 처리
    • 짧은 쿼리λ₯Ό λ¨Όμ € μ²˜λ¦¬ν•˜λ©΄ 전체적인 처리 속도 κ°œμ„ 

πŸ’‘ μ˜ˆμ‹œ:

  • μΈν„°λž™ν‹°λΈŒ μ‹œμŠ€ν…œ (Interactive System): μ‚¬μš©μž μš”μ²­μ— λΉ λ₯΄κ²Œ 응닡해야 ν•˜λŠ” μ‹œμŠ€ν…œ (예: 검색 엔진)
  • CPU μž‘μ—… μŠ€μΌ€μ€„λ§: 짧은 μž‘μ—…μ„ λ¨Όμ € μ‹€ν–‰ν•˜μ—¬ 평균 λŒ€κΈ° μ‹œκ°„ 단좕

⚠️ 주의점:

  • μ‹€ν–‰ μ‹œκ°„μ΄ κΈ΄ μž‘μ—…μ€ 계속 밀릴 수 있음 (κΈ°μ•„ μƒνƒœ, Starvation 문제 λ°œμƒ κ°€λŠ₯)

 

 

3. SRTF (Shortest Remaining Time First, μ΅œλ‹¨ μž”μ—¬ μ‹œκ°„ μš°μ„ )

 

πŸ“Œ νŠΉμ§•:

  • μ‹€ν–‰ μ‹œκ°„μ΄ κ°€μž₯ 짧게 남은 ν”„λ‘œμ„ΈμŠ€λ₯Ό μš°μ„  μ‹€ν–‰ (선점 κ°€λŠ₯)
  • μƒˆλ‘œμš΄ μž‘μ—…μ΄ 도착할 λ•Œλ§ˆλ‹€ μ‹€ν–‰ μ‹œκ°„μ΄ 더 짧으면 선점

βœ… μ ν•©ν•œ 경우

  • 응닡 μ‹œκ°„μ΄ μ€‘μš”ν•œ μ‹œμŠ€ν…œ
    • 예: μ‹€μ‹œκ°„ 처리 μ‹œμŠ€ν…œμ—μ„œ λΉ λ₯΄κ²Œ λλ‚˜λŠ” μž‘μ—…μ„ λ¨Όμ € 처리
  • CPU μž‘μ—… μŠ€μΌ€μ€„λ§
    • μ‹œμŠ€ν…œ λΆ€ν•˜λ₯Ό μ΅œμ ν™”ν•˜κ³  평균 λŒ€κΈ° μ‹œκ°„μ„ μ€„μ΄λŠ” 데 효과적

πŸ’‘ μ˜ˆμ‹œ:

  • μ‹€μ‹œκ°„ 데이터 처리 μ‹œμŠ€ν…œ: 주식 μ‹œμž₯μ—μ„œ 짧은 연산을 μš°μ„  μ²˜λ¦¬ν•˜μ—¬ λΉ λ₯Έ ν”Όλ“œλ°± 제곡
  • OS ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§: μ‚¬μš©μž μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ μ‹œ μž‘μ€ μž‘μ—…μ„ λ¨Όμ € μ™„λ£Œ

⚠️ 주의점:

  • λ¬Έλ§₯ μ „ν™˜(Context Switching)이 λ§Žμ•„μ§ˆ 수 있음
  • κΈ΄ μž‘μ—…μ΄ 계속 밀릴 μœ„ν—˜ 쑴재 (Starvation)

 

 

4. RR (Round Robin, λΌμš΄λ“œ 둜빈)

πŸ“Œ νŠΉμ§•:

  • λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€κ°€ μΌμ •ν•œ μ‹œκ°„ ν• λ‹ΉλŸ‰(time quantum)을 가짐
  • 선점 κ°€λŠ₯ (일정 μ‹œκ°„μ΄ μ§€λ‚˜λ©΄ κ°•μ œλ‘œ CPUλ₯Ό λ„˜κΉ€)
  • μ‹œλΆ„ν•  μ‹œμŠ€ν…œμ—μ„œ 곡정성 보μž₯

βœ… μ ν•©ν•œ 경우

  • μ‹œλΆ„ν•  μ‹œμŠ€ν…œ (Time-Sharing System)
    • λ‹€μˆ˜μ˜ μ‚¬μš©μžκ°€ λ™μ‹œμ— μž‘μ—…ν•˜λŠ” ν™˜κ²½μ—μ„œ 응닡성을 보μž₯ν•΄μ•Ό ν•  λ•Œ
  • λ©€ν‹°νƒœμŠ€ν‚Ή OS
    • μ—¬λŸ¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ™μ‹œμ— 싀행될 λ•Œ κ³΅μ •ν•œ CPU ν• λ‹Ή ν•„μš”

πŸ’‘ μ˜ˆμ‹œ:

  • 운영체제 ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§: μ—¬λŸ¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ κ³΅μ •ν•˜κ²Œ CPUλ₯Ό μ‚¬μš©ν•˜λ„λ‘ 함
  • 온라인 κ²Œμž„ μ„œλ²„: μ—¬λŸ¬ ν”Œλ ˆμ΄μ–΄μ˜ μš”μ²­μ„ κ³΅μ •ν•˜κ²Œ 처리
  • μ›Ή μ„œλ²„ μš”μ²­ 처리: 각 μš”μ²­μ΄ νŠΉμ • μ‹œκ°„ λ™μ•ˆ μ²˜λ¦¬λ˜λ„λ‘ 보μž₯

⚠️ 주의점:

  • λ¬Έλ§₯ μ „ν™˜μ΄ 자주 λ°œμƒν•˜λ©΄ μ˜€λ²„ν—€λ“œ 증가
  • μ‹œκ°„ ν• λ‹ΉλŸ‰μ΄ λ„ˆλ¬΄ κΈΈλ©΄ FCFS처럼 μž‘λ™
  • μ‹œκ°„ ν• λ‹ΉλŸ‰μ΄ λ„ˆλ¬΄ 짧으면 λ¬Έλ§₯ μ „ν™˜μ΄ κ³Όλ‹€ν•˜κ²Œ λ°œμƒν•˜μ—¬ μ„±λŠ₯ μ €ν•˜