포슀트

πŸŒ‘ Process, Processor, Thread

2024-04-27. 20:19
β€˜2023-11-10-Process-Processor: πŸŒ‘ Process, Processor’ κΈ€ κ³„μŠΉ

πŸ’« Q


  • ν”„λ‘œμ„ΈμŠ€, ν”„λ‘œμ„Έμ„œ, μŠ€λ ˆλ“œμ— λŒ€ν•΄ μ„€λͺ…ν•΄ μ£Όμ„Έμš”.
  • ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œμ˜ 차이점은 λ¬΄μ—‡μΈκ°€μš”?

πŸ’« Processor ν”„λ‘œμ„Έμ„œ


일반적으둜 μ€‘μ•™μ²˜λ¦¬μž₯치 (Central Processing Unit)
μ£ΌκΈ°μ–΅μž₯μΉ˜μ— μ €μž₯된 ν”„λ‘œκ·Έλž¨ - 기계 λͺ…λ Ήμ–΄λ₯Ό 해석/μ²˜λ¦¬ν•˜λŠ” μ»΄ν“¨ν„°μ˜ ν•œ λΆ€λΆ„

처리기둜 λΆˆλ¦¬κΈ°λ„ ν•œλ‹€.
κ·Έλž˜ν”½μ²˜λ¦¬μž₯치(GPU) 도 μ»΄ν“¨ν„°μ˜ μΌλΆ€μ΄μ§€λ§Œ 단지 β€˜ν”„λ‘œμ„Έμ„œβ€™ λΌλŠ” μš©μ–΄λ§Œ μ‚¬μš©ν•˜μ˜€μ„ λ•Œ κ·Έλž˜ν”½ 처리 μž₯치λ₯Ό λœ»ν•˜λŠ” κ²½μš°λŠ” 아직 λ§Žμ§€ μ•Šλ‹€.
기타 DMA와 같이 μ œν•œλœ κΈ°λŠ₯λ§Œμ„ μˆ˜ν–‰ν•˜λŠ” ν”„λ‘œμ„Έμ„œλ„ μžˆλ‹€.

πŸ’« Process ν”„λ‘œμ„ΈμŠ€


  • 버퍼 Buffer
    • μž„μ‹œ 보관 μž₯μ†Œ
    • ~= Cache μ’€ 볡사가 λΉ λ₯Έ 곳에 λ‘λŠ” μž„μ‹œ 보관 μž₯μ†Œ
  • ν”„λ‘œμ„ΈμŠ€ 및 μŠ€λ ˆλ“œ 관리

  • ν”„λ‘œμ„ΈμŠ€
    • ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ΄, λͺ©μ  μ½”λ“œλ‘œ (기계어 μ½”λ“œ)둜 λ²ˆμ—­λ˜μ–΄ λ””μŠ€ν¬μ— μ €μž₯된 ν›„ 운영체제의 λ„μ›€μœΌλ‘œ μ£ΌκΈ°μ–΅μž₯μΉ˜μ— μ μž¬λ˜μ–΄ μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨
    • ν•œ λ§ˆλ””λ‘œ λ©”λͺ¨λ¦¬μ— μ μž¬λ˜μ–΄ μ‹€ν–‰ 쀑에 μžˆλŠ” ν”„λ‘œκ·Έλž¨
  • ν”„λ‘œμ„ΈμŠ€ 속성
    • 고유 번호 PID Process Identification Number
    • λ©”λͺ¨λ¦¬ 정보
    • μƒνƒœ Status
    • 진행지점 Counter
    • λ¬Έλ§₯ Context
    • μš°μ„ μˆœμœ„ Priority
    • μžμ›λͺ©λ‘ Process Resource
    • νšŒκ³„μ •λ³΄ Accounting Information
    • 기타
  • LDA x
  • ADD y
  • STA z
  • β†’ z = x + y;

  • 쀑간이 νƒ€μž„μ•„μ›ƒμ΄ 되면 κ·Έ μ‹œμ μ˜ μŠ€λƒ…μƒ·μ„ μ €μž₯ν•˜κ³ 
  • λ‹€μ‹œ λŒμ•„μ™”μ„ λ•Œ λΆˆλŸ¬μ™€ μ‹€ν–‰, 연속성
  • μ €μž₯ν•˜λŠ” CPU의 λ‚΄μš© = λ¬Έλ§₯ Context

  • ν”„λ‘œμ„ΈμŠ€ 관리 블둝 PCB
    • ν”„λ‘œμ„ΈμŠ€λŠ” OS의 관리 λŒ€μƒ
      • ν”„λ‘œμ„ΈμŠ€κ°€ ν•˜λ‚˜μ˜ 개체둜 등둝됨
      • ν”„λ‘œμ„ΈμŠ€μ— κ΄€ν•œ λͺ¨λ“  정보가 PCb에 κΈ°λ‘λ˜μ–΄ 관리됨
      • PCB의 총 κ°œμˆ˜κ°€ 곧 관리 κ°€λŠ₯ν•œ μ΅œλŒ€ ν”„λ‘œμ„ΈμŠ€μ˜ 수λ₯Ό μ˜λ―Έν•¨
  • ν”„λ‘œμ„ΈμŠ€ 관리 (μƒνƒœ 천이)
    • μš΄μ˜μ œμ²΄λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μ²˜λ¦¬κ³Όμ •μ—μ„œ ν”„λ‘œμ„ΈμŠ€μ˜ ν™œλ™μ— 따라 ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€λ₯Ό μ μ ˆν•œ μƒνƒœλ‘œ 천이 μ‹œν‚¨λ‹€
    • @ μ‹€ν–‰ μƒνƒœκ°€ μ•„λ‹Œ λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€λŠ” ν•΄λ‹Ή μƒνƒœμ˜ λŒ€κΈ°μ—΄μ— κ΄€λ¦¬λœλ‹€
  • ν”„λ‘œμ„ΈμŠ€ μƒνƒœ
    • μ€€λΉ„ Ready μƒνƒœ
    • μ‹€ν–‰ Running μƒνƒœ
    • λŒ€κΈ° Blocked μƒνƒœ
    • 보λ₯˜ Suspended μƒνƒœ
    • λŒ€κΈ°-보λ₯˜ Block-Suspended μƒνƒœ
    • μ’…λ£Œ Terminated μƒνƒœ (Dispatch λ°°κΈ‰ν•˜λ‹€)
  • μŠ€λ ˆλ“œ Thread (μ‹€)
    • ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λŠ” 흐름 쀄기
    • 보톡 ν”„λ‘œμ„ΈμŠ€λŠ” ν•˜λ‚˜μ˜ μ‹€ν–‰ 쀄기 즉, ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œλ₯Ό 가짐 (단일 μŠ€λ ˆλ“œ ν”„λ‘œμ„ΈμŠ€)
    • I.E. C ν”„λ‘œκ·Έλž¨μ˜ main() ν•¨μˆ˜μ—μ„œλΆ€ν„° μ‹œμž‘ν•˜λŠ” 싀행쀄기
  • 닀쀑 μŠ€λ ˆλ“œ ν”„λ‘œμ„ΈμŠ€ Multi Thread Process
    • 닀쀑 μŠ€λ ˆλ“œ ν”„λ‘œμ„ΈμŠ€ κ°œλ…
      • ν”„λ‘œμ„ΈμŠ€λŠ” ν•˜λ‚˜μ΄μ§€λ§Œ, μ—¬λŸ¬ 개의 μ‹€ν–‰ 쀄기(μŠ€λ ˆλ“œ)λ₯Ό 가짐
      • OSλŠ” μŠ€λ ˆλ“œ λ³„λ‘œ 독립적인 μƒνƒœ 천이λ₯Ό 관리함
      • 즉, μŠ€λ ˆλ“œ λ³„λ‘œ ~

~

  • CPUκ°€ λ°˜λ“œμ‹œ μ—¬λŸ¬ 개일 ν•„μš”λŠ” μ—†μŒ
  • CPUκ°€ μ—¬λŸ¬ 개일 κ²½μš°λŠ” μŠ€λ ˆλ“œλ“€μ΄ λ³‘λ ¬μ²˜λ¦¬λ¨
  • CPUκ°€ ν•˜λ‚˜μΌ κ²½μ›…λŠ” μŠ€λ ˆλ“œλ“€μ΄ λ³‘ν–‰μ²˜λ¦¬λ¨

  • LDA100
  • μ£Όμ†Œ 100

  • LDA_S100
  • μ£Όμ†Œ 100 + Stack Pointer
  • μƒλŒ€μ£Όμ†ŒκΈ°λ²•

  • μŠ€λ ˆλ“œ 생성 및 제거

  • ν”„λ‘œμ„ΈμŠ€ 생성 및 제거
    • ν”„λ‘œμ„ΈμŠ€ 생성
      • μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€λŠ” 이미 μ‹€ν–‰ 쀑인 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ OS에 μ˜€μ²­ν•¨μœΌλ‘œμ¨ 탄생
      • 이듀은 λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€ Parent Process의 μžμ‹ ν”„λ‘œμ„ΈμŠ€ Child Process 관계가 됨
      • 단말기 (ν‚€λ³΄λ“œ) μ‚¬μš©μžλ“€μ€ μ‹€ν–‰ν•˜κ³ μž ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ˜ 이름을 μ‰˜ (λͺ…λ Ήμ–΄ 해석기)에 μ „λ‹¬ν•˜μ—¬ μ‰˜λ‘œ ν•˜μ—¬κΈˆ ν”„λ‘œκ·Έλž¨ 생성을 OSμ—κ²Œ μš”μ²­ν•˜λ„λ‘ 함
      • λ””μŠ€ν¬ ν”„λ‘œκ·Έλž˜λ―• λ©”λͺ¨λ¦¬λ‘œ μ μž¬ν•˜μ—¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•˜λŠ” OS뢀뢄을 λ‘œλ” Loader 라함
  • ν”„λ‘œμ„ΈμŠ€ 제거
    • 정상적인 ν”„λ‘œμ„ΈμŠ€ μ œκ±°λŠ” ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€ μŠ€μŠ€λ‘œκ°€ μš΄μ˜μ²΄μ œμ—κ²Œ μš”μ²­ν•¨μœΌλ‘œμ¨ 이루어짐
  • ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신 IPC InterProcess Communication
    • 일반적인 ν”„λ‘œμ„ΈμŠ€λ“€μ€ μ™„μ „νžˆ λ…λ¦½λ˜μ–΄ λ‹€λ₯Έ ν”„λ‘œμ„Έμ„œλ“€κ³Ό κ²©λ¦¬λ˜μ–΄ 정보λ₯Ό κ΅ν™˜ν•  수 있음
    • κ±°λŒ€ν•œ ν”„λ‘œκ·Έλž¨μ„ μž‘κ²Œ λΆ„λ¦¬ν•œ 경우, 이λ₯Ό ν”„λ‘œμ„ΈμŠ€ κ°„μ˜ 톡신 μˆ˜λ‹¨μ΄ μš”κ΅¬λ¨
      • ν΄λΌμ΄μ–ΈνŠΈ Client β†’ μ„œλ²„ λͺ¨λΈ
    • λŒ€ν‘œμ μΈ 톡신 μˆ˜λ‹¨μ„ νŒŒμ΄ν”„, λ©”μ‹œμ§€, 큐, 곡유 λ©”λͺ¨λ¦¬, μ„Έλ§ˆν¬, μ†ŒμΌ“(인터넷)을 λ“€ 수 있음
    • 톡신 κ²½λ‘œλŠ” μš΄μ˜μ²΄μ œμ— μ˜ν•΄ 제곡되기 λ•Œλ¬Έμ— 각각의 톡신 μˆ˜λ‹¨λ§ˆλ‹€ 고유의 μ…‹μ—… 절차λ₯Ό 따라야 함
  • ν”„λ‘œμ„ΈμŠ€ ν†΅μ œ
    • 싀행쀑인 ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ μ–΄λ–€ 쑰치λ₯Ό μ·¨ν•˜λŠ”μΌ
  • ν”„λ‘œμ„ΈμŠ€ ν†΅μ œμˆ˜λ‹¨
    • OSκ°€ μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€ (μ”¨μŠ€ν…œ 콜)을 이용
    • μœ λ‹‰μŠ€/λ¦¬λˆ…μŠ€μ˜ 경우 kill() μ‹œμŠ€ν…œ 콜
  • ν”„λ‘œμ„ΈμŠ€ ν†΅μ œ μœ ν˜•
    • κ°•μ œ μ’…λ£Œ :
      • 싀행쀑인 ν”„λ‘œκ·Έλž¨μ΄ 슀슀둜 μ’…λ£Œν•˜κΈ° 전에 무쑰건 κ°•μ œλ‘œ μ’…λ£Œν•˜λ„λ‘ ν•œλ‹€
    • μΌμ‹œ 정지 :
      • μ™„μ „νžˆ μ’…λ£Œν•˜λ„λ‘ ν•˜λŠ 것은 μ•„λ‹ˆκ³ , μž„μ‹œλ‘œ CPU의 할당을 받지 λͺ»ν•˜μ—¬ 더 μ΄μƒμ˜ 싀행이 이루어지지 μ•Šλ„λ‘ ν•œλ‹€
    • μ‹€ν–‰ 제개 :
      • μΌμ‹œ 쀑지 μƒνƒœμ— μžˆλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό ν• λ‹Ή λ°›μ•„μ„œ 계쏙 μˆ˜ν–‰ν•  수 μžˆλ„λ‘ ν•œλ‹€.
      • μš°μ„  μˆœμœ„μ— 따라 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ™€ κ³΅ν‰ν•˜κ²Œ CPUλ₯Ό ν• λ‹Ήλ°›λŠ”λ‹€
    • 약속 처리 :
      • ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•  λ•Œ μ•½μ†ν–ˆλ˜ 처리 뢀뢄듀을 μ‹€μ‹œκ°„μœΌλ‘œ μ§€μ‹œν•œλ‹€
    • μš°μ„  μˆœμœ„ λ³€κ²½ :
      • 싀행쀑인 ν”„λ‘œκ·Έλž¨μ˜ μš°μ„ μˆœμœ„λ₯Ό μ˜¬λ¦¬κ±°λ‚˜ λ‚΄λ¦°λ‹€.
      • 일반 μ‚¬μš©μžλŠ” λ‚΄λ¦¬κΈ°λ§Œ κ°€λŠ₯ν•˜κ³ ,κ΄€λ¦¬μžλŠ” μ–‘μͺ½ λͺ¨λ‘ κ°€λŠ₯ν•˜λ‹€.
이 κΈ°μ‚¬λŠ” μ €μž‘κΆŒμžμ˜ CC BY 4.0 λΌμ΄μ„ΌμŠ€λ₯Ό λ”°λ¦…λ‹ˆλ‹€.