[CSπŸ“–] ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§(선점, 비선점)

κΉ€λ‹€μŠ¬Β·2021λ…„ 8μ›” 15일
0
post-thumbnail

πŸ“Œ ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§μ΄λž€ λ¬΄μ—‡μΌκΉŒ?

  • 우리의 λ‡ŒλŠ” λ™μ‹œμ— 두 가지 생각을 λͺ»ν•œλ‹€
  • CPU μ—­μ‹œ λ™μ‹œμ— ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΄€λ¦¬ν•˜μ§€ λͺ»ν•œλ‹€

  • λͺ¨λ‹ˆν„° ν™”λ©΄ μ•ˆμ—μ„œλŠ” μ—¬λŸ¬κ°œμ˜ ν”„λ‘œκ·Έλž¨μ΄ ν•¨κ»˜ λ™μž‘ν•˜μ—¬ μž‘μ—…μ΄ κ°€λŠ₯ν•˜λ‹€
  • μŠ€μΌ€μ€„λ§μ΄λΌλŠ” 과정을 톡해 닀쀑 ν”„λ‘œκ·Έλž¨μ— λŒ€ν•œ μž‘μ—…μ΄ κ°€λŠ₯ν•œ 것

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

  • μ‹œμŠ€ν…œμ˜ μžμ›μ„ 효율적으둜 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ¨Όμ € μ²˜λ¦¬ν• μ§€ μˆœμ„œλ₯Ό μ •ν•˜λŠ” 것
  • CPU 이용λ₯  κ·ΉλŒ€ν™”κ°€ λͺ©μ 

πŸ”Ž ν”„λ‘œμ„ΈμŠ€ μƒνƒœμ™€ μƒνƒœ 전이

ν”„λ‘œμ„ΈμŠ€ μƒνƒœ

1. 생성
- μ‚¬μš©μžμ— μ˜ν•΄ ν”„λ‘œμ„ΈμŠ€κ°€ μƒμ„±λœ μƒνƒœ
2. μ€€λΉ„
- CPUλ₯Ό 할당받을 수 μžˆλŠ” μƒνƒœ
- κ°€μž₯ 높은 μš°μ„ μˆœμœ„λ₯Ό κ°–λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€μŒ μˆœμ„œμ— CPUλ₯Ό ν• λ‹Ή λ°›μŒ
3. μ‹€ν–‰
- CPUλ₯Ό ν• λ‹Ήλ°›μ•„ λ™μž‘(점유)쀑인 μƒνƒœ
4. λŒ€κΈ°
- ν”„λ‘œμ„ΈμŠ€ μ‹€ν–‰ 쀑 μž…μΆœλ ₯(I/O)처리 λ“±μœΌλ‘œ CPUλ₯Ό μ–‘λ„ν•˜κ³  처리 μ™„λ£ŒκΉŒμ§€ κΈ°λ‹€λ¦¬λŠ” μƒνƒœ
- λŒ€κΈ° λ¦¬μŠ€νŠΈλŠ” μš°μ„  μˆœμœ„κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ
5. μ’…λ£Œ
- ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό ν• λ‹Ή λ°›μ•„ 주어진 μ‹œκ°„ 내에 μ™„μ „νžˆ μˆ˜ν–‰μ„ μ’…λ£Œν•œ μƒνƒœ


ν”„λ‘œμ„ΈμŠ€ μƒνƒœ 전이

  • λ””μŠ€νŒ¨μΉ˜(Dispatch)
    • μ€€λΉ„ μƒνƒœ β†’ μ‹€ν–‰ μƒνƒœ
    • μ€€λΉ„ λ¦¬μŠ€νŠΈμ— μžˆλŠ” μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€ 쀑 싀행될 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ„ μ •ν•˜μ—¬ CPUλ₯Ό ν• λ‹Ή
  • 타이머 런 아웃(Timer Run Out)
    • μ‹€ν–‰ μƒνƒœ β†’ μ€€λΉ„ μƒνƒœ
    • μ§€μ •λœ μ‹œκ°„μ΄ 초과되면 CPU λ°˜λ‚© ν›„ λ‹€μ‹œ μ€€λΉ„ μƒνƒœλ‘œ 전이
  • 블둝(Block)
    • μ‹€ν–‰ μƒνƒœ β†’ λŒ€κΈ° μƒνƒœ
    • μ§€μ •λœ ν• λ‹Ή μ‹œκ°„μ„ μ΄ˆκ³Όν•˜κΈ° μ „ μž…μΆœλ ₯ λ˜λŠ” 기타 사건이 λ°œμƒν•˜λ©΄ μž…μΆœλ ₯이 μ™„λ£Œλ  λ•ŒκΉŒμ§€ λŒ€κΈ° μƒνƒœλ‘œ 전이
  • 웨이크 μ—…(Wake-up)
    • λŒ€κΈ° μƒνƒœ β†’ μ€€λΉ„ μƒνƒœ
    • μ–΄λŠ μˆœκ°„ μž…μΆœλ ₯이 μ’…λ£Œλ˜λ©΄ λŒ€κΈ° μƒνƒœμ˜ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ μž…μΆœλ ₯ μ’…λ£Œ 사싀을 μ•Œλ €μ£Όκ³  μ€€λΉ„ μƒνƒœλ‘œ 전이

μ–΄λŠ μ‹œμ μ—μ„œ CPUλ₯Ό μ μœ ν•˜κ³  μžˆλŠ” ν”„λ‘œμ„ΈμŠ€λŠ” 단 ν•œ 개이고, μ—¬λŸ¬κ°œμ˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ²ˆκ°ˆμ•„ κ°€λ©΄μ„œ μ‹€ν–‰ν•œλ‹€.


πŸ“š ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§ μœ ν˜•

μ„ μ ν˜• μŠ€μΌ€μ€„λ§

  • ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό μ°¨μ§€ν•˜κ³  μžˆμ„ λ•Œ, μš°μ„  μˆœμœ„κ°€ 높은 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ ν˜„μž¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ€‘λ‹¨μ‹œν‚€κ³  CPUλ₯Ό μ μœ ν•˜λŠ” μŠ€μΌ€μ€„λ§ 방식
  • μš°μ„ μˆœμœ„κ°€ 높은 ν”„λ‘œμ„ΈμŠ€λ₯Ό λΉ λ₯΄κ²Œ μ²˜λ¦¬ν•  수 μžˆλ‹€
  • μš°μ„ μˆœμœ„κ°€ 높은 ν”„λ‘œμ„ΈμŠ€λ“€μ΄ 계속 λ“€μ–΄μ˜€λŠ” 경우 μ˜€λ²„ν—€λ“œ 초래
  • μ’…λ₯˜ : λΌμš΄λ“œ 둜빈, SRT, 닀단계 큐, 닀단계 ν”Όλ“œλ°± 큐

λΉ„μ„ μ ν˜• μŠ€μΌ€μ€„λ§

  • ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό ν• λ‹Ή λ°›μœΌλ©΄, μž‘μ—… μ’…λ£Œ ν›„ CPU λ°˜ν™˜ μ‹œκΉŒμ§€ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό μ μœ ν•  수 μ—†λŠ” μŠ€μΌ€μ€„λ§ 방식
  • λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ μš”κ΅¬λ₯Ό κ³΅μ •ν•˜κ²Œ 처리
  • 짧은 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ κΈ΄ μž‘μ—… μ’…λ£Œ μ‹œκΉŒμ§€ λŒ€κΈ°
  • μ’…λ₯˜ : μš°μ„ μˆœμœ„, κΈ°ν•œλΆ€, FCFS, SJF, HRN

πŸ”— ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§ μ•Œκ³ λ¦¬μ¦˜

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

λΌμš΄λ“œ 둜빈(Round Robin)

  • ν”„λ‘œμ„ΈμŠ€λŠ” 같은 크기의 CPU μ‹œκ°„μ„ ν• λ‹Ή (κ· λ“±ν•œ CPU 점유 μ‹œκ°„)
  • ν”„λ‘œμ„ΈμŠ€κ°€ ν• λ‹Ήλœ μ‹œκ°„ 내에 처리 μ™„λ£Œλ₯Ό λͺ»ν•œλ‹€λ©΄, μ€€λΉ„ 큐 리슀트의 κ°€μž₯ λ’€λ‘œ 보내지고 CPUλŠ” λŒ€κΈ° 쀑인 λ‹€μŒ ν”„λ‘œμ„ΈμŠ€λ‘œ λ„˜μ–΄κ°„λ‹€

SRT(Shortest Remaining Time First)

  • κ°€μž₯ 짧은 μ†Œμš” μ‹œκ°„μ΄ κ±Έλ¦¬λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό λ¨Όμ € μˆ˜ν–‰
  • 남은 처리 μ‹œκ°„μ΄ 더 짧닀고 νŒλ‹¨λ˜λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μ€€λΉ„ 큐에 생기면 μ–Έμ œλΌλ„ ν”„λ‘œμ„ΈμŠ€κ°€ 선점됨


λΉ„μ„ μ ν˜• μŠ€μΌ€μ€„λ§ μ•Œκ³ λ¦¬μ¦˜

FCFS(First Come First Service)

  • ν”„λ‘œμ„ΈμŠ€κ°€ λŒ€κΈ° 큐에 λ„μ°©ν•œ μˆœμ„œμ— 따라 CPU ν• λ‹Ή
  • Queue와 동일, FIFO μ•Œκ³ λ¦¬μ¦˜

SJF(Shortest Job First)

  • ν”„λ‘œμ„ΈμŠ€κ°€ λ„μ°©ν•˜λŠ” μ‹œμ μ— 따라 κ·Έ λ‹Ήμ‹œ κ°€μž₯ 짧은 μ†Œμš” μ‹œκ°„μ„ κ°–λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œ μ‹œκΉŒμ§€ CPU 점유
  • CPU μš”κ΅¬ μ‹œκ°„μ΄ κΈ΄ μž‘μ—…κ³Ό 짧은 μž‘μ—… κ°„μ˜ λΆˆν‰λ“±μ΄ 심해 κΈ°μ•„ ν˜„μƒ λ°œμƒ κ°€λŠ₯μ„±


μ°Έκ³  μ‚¬μ΄νŠΈ

profile
인생은 용기의 양에 따라 μ€„μ–΄λ“€κ±°λ‚˜, λŠ˜μ–΄λ‚œλ‹€

0개의 λŒ“κΈ€