π™Žπ™˜π™π™šπ™™π™ͺπ™‘π™žπ™£π™œ

uuuouuoΒ·2022λ…„ 7μ›” 20일
0
post-thumbnail

πŸ“– μŠ€μΌ€μ€„λ§


  • μŠ€μΌ€μ€„λ§μ€ ν”„λ‘œμ„Έμ„œμ—κ²Œ ν•„μš”ν•œ μžμ›μ„ μ–΄λ–»κ²Œ ν• λ‹Ήν•  것인지 μ„ νƒν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜
  • λ‹¨μœ„ μ‹œκ°„λ‹Ή μ²˜λ¦¬λŸ‰μ„ μ΅œλŒ€ν™”ν•˜κ³  효율적으둜 μžμ›μ„ ν• λ‹Ήν•˜κΈ° μœ„ν•œ λͺ©μ 
  • ν”„λ‘œμ„ΈμŠ€λ₯Ό μŠ€μΌ€μ€„λ§ν•˜κΈ° μœ„ν•œ Queue μ—λŠ” μ„Έ 가지 μ’…λ₯˜κ°€ 쑴재
    • Job Queue : ν˜„μž¬ μ‹œμŠ€ν…œ 내에 μžˆλŠ” λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€μ˜ 집합
    • Ready Queue : ν˜„μž¬ λ©”λͺ¨λ¦¬ 내에 μžˆμœΌλ©΄μ„œ CPUλ₯Ό μž‘μ•„μ„œ μ‹€ν–‰λ˜κΈ°λ₯Ό κΈ°λ‹€λ¦¬λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ 집합
    • Device Queue : Device I/O μž‘μ—…μ„ λŒ€κΈ°ν•˜κ³  μžˆλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ 집합

πŸ’¬ μŠ€μΌ€μ€„λŸ¬


  • μŠ€μΌ€μ€„λŸ¬λž€ μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ μžμ›μ„ 할당할지 κ²°μ •ν•˜λŠ” 운영체제의 컀널 λͺ¨λ“ˆ
  • 각각의 Queue 에 ν”„λ‘œμ„ΈμŠ€λ“€μ„ λ„£κ³  λΉΌμ£ΌλŠ” μŠ€μΌ€μ€„λŸ¬μ—λ„ 크게 μ„Έ 가지 μ’…λ₯˜κ°€ 쑴재

β—Ύ μž₯κΈ°μŠ€μΌ€μ€„λŸ¬(Long-term scheduler or job scheduler)

  • λ©”λͺ¨λ¦¬λŠ” ν•œμ •λ˜μ–΄ μžˆλŠ”λ° λ§Žμ€ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ ν•œκΊΌλ²ˆμ— λ©”λͺ¨λ¦¬μ— 올라올 경우, λŒ€μš©λŸ‰ λ©”λͺ¨λ¦¬(일반적으둜 λ””μŠ€ν¬)에 μž„μ‹œλ‘œ μ €μž₯λœλ‹€. 이 pool에 μ €μž₯λ˜μ–΄ μžˆλŠ” ν”„λ‘œμ„ΈμŠ€ 쀑 μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€μ— λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•˜μ—¬ ready queue둜 보낼지 κ²°μ •ν•˜λŠ” μ—­ν• 
    • ready queueλž€ ν˜„μž¬ λ©”λͺ¨λ¦¬ 내에 μžˆμœΌλ©΄μ„œ CPU에 μ˜ν•΄ μ‹€ν–‰λ˜κΈ°λ₯Ό κΈ°λ‹€λ¦¬λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ 집합
      • λ©”λͺ¨λ¦¬μ™€ λ””μŠ€ν¬ μ‚¬μ΄μ˜ μŠ€μΌ€μ€„λ§μ„ λ‹΄λ‹Ή.
      • ν”„λ‘œμ„ΈμŠ€μ— memory(및 각쒅 λ¦¬μ†ŒμŠ€)λ₯Ό ν• λ‹Ή(admit)
      • degree of Multiprogramming μ œμ–΄ (싀행쀑인 ν”„λ‘œμ„ΈμŠ€μ˜ 수 μ œμ–΄)
      • ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ : new -> ready(in memory)
      • cf) λ©”λͺ¨λ¦¬μ— ν”„λ‘œκ·Έλž¨μ΄ λ„ˆλ¬΄ 많이 μ˜¬λΌκ°€λ„, λ„ˆλ¬΄ 적게 μ˜¬λΌκ°€λ„ μ„±λŠ₯이 쒋지 μ•ŠλŠ”λ‹€. 참고둜 time sharing system μ—μ„œλŠ” μž₯κΈ° μŠ€μΌ€μ€„λŸ¬κ°€ μ—†λ‹€. κ·Έλƒ₯ κ³§λ°”λ‘œ λ©”λͺ¨λ¦¬μ— μ˜¬λΌκ°€ ready μƒνƒœκ°€ λœλ‹€.

β—Ύ λ‹¨κΈ°μŠ€μΌ€μ€„λŸ¬(Short-term scheduler or CPU scheduler)

  • CPU와 λ©”λͺ¨λ¦¬ μ‚¬μ΄μ˜ μŠ€μΌ€μ€„λ§μ„ λ‹΄
  • ready queue에 μ‘΄μž¬ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€ 쀑 μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ₯Ό running μ‹œν‚¬μ§€ κ²°μ •
  • μŠ€μΌ€μ€„λ§ μ•Œκ³ λ¦¬μ¦˜μ— 따라 CPUλ₯Ό ν• λ‹Ή ν•  ν”„λ‘œμ„ΈμŠ€ 선택 (scheduler dispatch)
  • ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ : ready -> running -> waiting -> ready
    • μ„ νƒλœ ν”„λ‘œμ„ΈμŠ€λŠ” Running μƒνƒœκ°€ 되고 μž‘μ—…μ΄ λλ‚˜λ©΄ Terminated μƒνƒœκ°€ 됨

β—Ύ μ€‘κΈ°μŠ€μΌ€μ€„λŸ¬(Medium-term scheduler or Swapper)

  • μ—¬μœ  곡간 λ§ˆλ ¨μ„ μœ„ν•΄ ν”„λ‘œμ„ΈμŠ€λ₯Ό ν†΅μ§Έλ‘œ λ©”λͺ¨λ¦¬μ—μ„œ λ””μŠ€ν¬λ‘œ 쫓아냄 (swapping)
  • ν”„λ‘œμ„ΈμŠ€μ—κ²Œμ„œ memory λ₯Ό deallocate
  • degree of Multiprogramming μ œμ–΄
  • ν˜„ μ‹œμŠ€ν…œμ—μ„œ λ©”λͺ¨λ¦¬μ— λ„ˆλ¬΄ λ§Žμ€ ν”„λ‘œκ·Έλž¨μ΄ λ™μ‹œμ— μ˜¬λΌκ°€λŠ” 것을 μ‘°μ ˆν•˜λŠ” μŠ€μΌ€μ€„λŸ¬
  • ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ : ready -> suspended
    • Process state - suspended
      Suspended(stopped) : 외뢀적인 이유둜 ν”„λ‘œμ„ΈμŠ€μ˜ μˆ˜ν–‰μ΄ μ •μ§€λœ μƒνƒœλ‘œ λ©”λͺ¨λ¦¬μ—μ„œ λ‚΄λ €κ°„ μƒνƒœλ₯Ό μ˜λ―Έν•œλ‹€. ν”„λ‘œμ„ΈμŠ€ μ „λΆ€ λ””μŠ€ν¬λ‘œ swap out λœλ‹€. blocked μƒνƒœλŠ” λ‹€λ₯Έ I/O μž‘μ—…μ„ κΈ°λ‹€λ¦¬λŠ” μƒνƒœμ΄κΈ° λ•Œλ¬Έμ— 슀슀둜 ready state 둜 λŒμ•„κ°ˆ 수 μžˆμ§€λ§Œ 이 μƒνƒœλŠ” 외뢀적인 이유둜 suspending λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 슀슀둜 λŒμ•„κ°ˆ 수 μ—†λ‹€.

0개의 λŒ“κΈ€