etc/μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬

[μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬ μ‹€κΈ°] ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œ

minzhen 2022. 7. 21. 18:09

ν”„λ‘œμ„ΈμŠ€(Process)

싀행쀑에 μžˆλŠ” ν”„λ‘œκ·Έλž¨
  • 일반적으둜 ν”„λ‘œμ„Έμ„œμ— μ˜ν•΄ μ²˜λ¦¬λ˜λŠ” μ‚¬μš©μž ν”„λ‘œκ·Έλž¨, μ‹œμŠ€ν…œ ν”„λ‘œκ·Έλž¨

μ •μ˜

  • PCBλ₯Ό κ°€μ§„ ν”„λ‘œκ·Έλž¨
  • μ‹€κΈ°μ–΅μž₯μΉ˜μ— μ €μž₯된 ν”„λ‘œκ·Έλž¨
  • ν”„λ‘œμ„Έμ„œκ°€ ν• λ‹Ήλ˜λŠ” μ‹€μ²΄λ‘œμ„œ, λ””μŠ€νŒ¨μΉ˜κ°€ κ°€λŠ₯ν•œ λ‹¨μœ„
  • ν”„λ‘œμ‹œμ €κ°€ ν™œλ™μ€‘μΈ 것
  • 비동기적 ν–‰μœ„λ₯Ό μΌμœΌν‚€λŠ” 주체
  • μ§€μ •λœ κ²°κ³Όλ₯Ό μ–»κΈ° μœ„ν•œ 일련의 계톡적 λ™μž‘
  • λͺ©μ  λ˜λŠ” 결과에 따라 λ°œμƒλ˜λŠ” μ‚¬κ±΄λ“€μ˜ κ³Όμ •
  • μš΄μ˜μ²΄μ œκ°€ κ΄€λ¦¬ν•˜λŠ” μ‹€ν–‰ λ‹¨μœ„

 

PCB (Process Control Block)

μš΄μ˜μ²΄μ œκ°€ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ μ€‘μš”ν•œ 정보λ₯Ό μ €μž₯ν•΄ λ†“λŠ” κ³³
  • 각 ν”„λ‘œμ„ΈμŠ€κ°€ 생성될 λ•Œλ§ˆλ‹€ 고유의 PCBκ°€ 생성됨 → ν”„λ‘œμ„ΈμŠ€κ°€ μ™„λ£Œλ˜λ©΄ PCBλŠ” 제거됨

PCB에 μ €μž₯λ˜μ–΄ μžˆλŠ” 정보

  • ν”„λ‘œμ„ΈμŠ€μ˜ ν˜„μž¬ μƒνƒœ
  • 포인터
  • ν”„λ‘œμ„ΈμŠ€ 고유 μ‹λ³„μž
  • μŠ€μΌ€μ€„λ§ 및 ν”„λ‘œμ„ΈμŠ€μ˜ μš°μ„ μˆœμœ„
  • CPU λ ˆμ§€μŠ€ν„° 정보
  • μ£ΌκΈ°μ–΅μž₯치 관리 정보
  • μž…μΆœλ ₯ μƒνƒœ 정보
  • 계정 정보

 

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

ν”„λ‘œμ„ΈμŠ€κ°€ μ‹œμŠ€ν…œ 내에 μ‘΄μž¬ν•˜λŠ” λ™μ•ˆ ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœκ°€ λ³€ν•˜λŠ” 것

좜처 :  https://velog.io/@mainxcharacter/운영체제-ν”„λ‘œμ„ΈμŠ€μ˜-κ°œμš”

  • 제좜 (Submit) : μž‘μ—…μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©μžκ°€ μž‘μ—…μ„ μ‹œμŠ€ν…œμ— μ œμΆœν•œ μƒνƒœ
  • μ ‘μˆ˜ (Hold) : 제좜된 μž‘μ—…μ΄ μŠ€ν’€ 곡간인 λ””μŠ€ν¬μ˜ ν• λ‹Ή μœ„μΉ˜μ— μ €μž₯된 μƒνƒœ (*μŠ€ν’€(spool) : CPU의 λͺ…령을 μžκΈ°λ””μŠ€ν¬μž₯μΉ˜μ— μ €μž₯ν•˜κ³ , κ·Έ λͺ…령을 μ£Όλ³€μž₯치둜 μ „λ‹¬ν•˜μ—¬ μ²˜λ¦¬ν•˜λŠ” 방식. μ€‘μ•™μ²˜λ¦¬μž₯μΉ˜μ™€ μž…μΆœλ ₯μž₯μΉ˜κ°€ λ…λ¦½μ μœΌλ‘œ λ™μž‘ν•˜λ„λ‘ ν•˜κΈ° μœ„ν•¨)
  • μ€€λΉ„ (Ready) : ν”„λ‘œμ„ΈμŠ€κ°€ ν”„λ‘œμ„Έμ„œλ₯Ό ν• λ‹Ήλ°›κΈ° μœ„ν•΄ 기닀리고 μžˆλŠ” μƒνƒœ
  • μ‹€ν–‰ (Run) : μ€€λΉ„ μƒνƒœ 큐에 μžˆλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ ν”„λ‘œμ„Έμ„œλ₯Ό ν• λ‹Ήλ°›μ•„ μ‹€ν–‰λ˜λŠ” 상채
  • λŒ€κΈ° (Wait) / 블둝 (Block) : ν”„λ‘œμ„ΈμŠ€μ— μž…μΆœλ ₯ μ²˜λ¦¬κ°€ ν•„μš”ν•˜λ©΄ ν˜„μž¬ μ‹€ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€κ°€ μ€‘λ‹¨λ˜κ³ , μ™„λ£Œλ  λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦¬λŠ” μƒνƒœ
  • μ’…λ£Œ (Terminated, Exit) : ν”„λ‘œμ„ΈμŠ€μ˜ 싀행이 λλ‚˜κ³  ν”„λ‘œμ„ΈμŠ€ 할당이 ν•΄μ œλœ μƒνƒœ

 

ν”„λ‘œμ„ΈμŠ€ μƒνƒœ 전이 κ΄€λ ¨ μš©μ–΄

  • Dispatch : μ€€λΉ„ μƒνƒœμ—μ„œ λŒ€κΈ°ν•˜κ³  μžˆλŠ” ν”„λ‘œμ„ΈμŠ€ 쀑 ν•˜λ‚˜κ°€ ν”„λ‘œμ„Έμ„œλ₯Ό ν• λ‹Ήλ°›μ•„ μ‹€ν–‰ μƒνƒœλ‘œ μ „μ΄λ˜λŠ” κ³Όμ • (dispatch : v. νŒŒκ²¬ν•˜λ‹€)
  • Wake Up : μž…/좜λ ₯ μž‘μ—…μ΄ μ™„λ£Œλ˜μ–΄ ν”„λ‘œμ„ΈμŠ€κ°€ λŒ€κΈ° μƒνƒœμ—μ„œ μ€€λΉ„ μƒνƒœλ‘œ μ „μ΄λ˜λŠ” κ³Όμ •
  • Spooling : μž…·μΆœλ ₯ν•  데이터λ₯Ό 직접 μž…·μΆœλ ₯ μž₯μΉ˜μ— 보내지 μ•Šκ³  λ‚˜μ€‘μ— ν•œκΊΌλ²ˆμ— μž…·μΆœλ ₯ν•˜κΈ° μœ„ν•΄ λ””μŠ€ν¬μ— μ €μž₯ν•˜λŠ” κ³Όμ •. β‘ μž…·μΆœλ ₯μž₯치의 곡유 및 μƒλŒ€μ μœΌλ‘œ 느린 μž…·μΆœλ ₯μž₯치의 처리 속도λ₯Ό λ³΄μ™„ν•˜κ³ , ⑑닀쀑 ν”„λ‘œκ·Έλž˜λ° μ‹œμŠ€ν…œμ˜ μ„±λŠ₯을 ν–₯μƒμ‹œν‚€κΈ° μœ„ν•¨.
  • Traffic Controller(κ΅ν†΅λŸ‰ μ œμ–΄κΈ°) : ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœμ— λŒ€ν•œ 쑰사와 톡보 λ‹΄λ‹Ή

 

Thread(μŠ€λ ˆλ“œ)

μ‹œμŠ€ν…œμ˜ μ—¬λŸ¬ μžμ›μ„ ν• λ‹Ήλ°›μ•„ μ‹€ν–‰ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ˜ λ‹¨μœ„
λ˜λŠ” ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œμ˜ μž‘μ—… λ‹¨μœ„
  • 단일 μŠ€λ ˆλ“œ : ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ— ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œκ°€ μ‘΄μž¬ν•˜λŠ” 경우
  • 닀쀑 μŠ€λ ˆλ“œ : ν•˜λ‚˜ μ΄μƒμ˜ μŠ€λ ˆλ“œκ°€ μ‘΄μž¬ν•˜λŠ” 경우
  • ν”„λ‘œμ„ΈμŠ€μ˜ 일뢀 νŠΉμ„±μ„ κ°–κ³  있기 λ•Œλ¬Έμ— κ²½λŸ‰ ν”„λ‘œμ„ΈμŠ€λΌκ³ λ„ 함
  • μŠ€λ ˆλ“œ 기반 μ‹œμŠ€ν…œμ—μ„œ μŠ€λ ˆλ“œλŠ” 독립적인 μŠ€μΌ€μ€„λ§μ˜ μ΅œμ†Œ λ‹¨μœ„λ‘œμ„œ ν”„λ‘œμ„ΈμŠ€μ˜ 역할을 담당함