J1Yun
ZU-TECHLOG
J1Yun
전체 방문자
였늘
μ–΄μ œ
  • πŸ“‘ Category (135)
    • Algorithm (61)
      • πŸ“š Concept (6)
      • πŸ“˜ Baekjoon Judge (53)
      • πŸ“— Programmers (2)
    • Computer Science (42)
      • πŸ”’ Operating System (14)
      • πŸ“‘ Network (15)
      • πŸ’Ύ Database (8)
      • 🧩 Design Pattern (4)
      • πŸ”‘ Security (1)
    • Activities (12)
      • 🦁 λ©‹μŸμ΄μ‚¬μžμ²˜λŸΌ 9κΈ° (6)
      • πŸ’» SWλ§ˆμ—μŠ€νŠΈλ‘œ 13κΈ° (6)
    • Infra (1)
      • ☁️ AWS (1)
    • Languages (1)
      • πŸ’™ Python (1)
    • Backend (7)
      • πŸ”΅ Django (4)
      • 🟒 Node.js (3)
    • Ect. (8)
      • πŸ’¬ Talk (0)
      • πŸ—‚οΈ 개발직ꡰ μ·¨μ—… μ€€λΉ„μžλ£Œ (8)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

250x250
hELLO Β· Designed By μ •μƒμš°.
J1Yun

ZU-TECHLOG

[운영체제] ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œ, λ©€ν‹° ν”„λ‘œμ„ΈμŠ€μ™€ λ©€ν‹° μŠ€λ ˆλ“œ
Computer Science/πŸ”’ Operating System

[운영체제] ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œ, λ©€ν‹° ν”„λ‘œμ„ΈμŠ€μ™€ λ©€ν‹° μŠ€λ ˆλ“œ

728x90

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

  • ν”„λ‘œκ·Έλž¨μ΄ λ©”λͺ¨λ¦¬λ‘œ μ˜¬λΌμ™€ μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° CPUλ₯Ό ν• λ‹Ήλ°›κ³  μ‹€ν–‰λ˜κ³  μžˆλŠ” μƒνƒœ
  • CPU μŠ€μΌ€μ€„λ§μ˜ λŒ€μƒμ΄ λ˜λŠ” μž‘μ—…μ˜ 흐름을 μ§€μΉ­
  • ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨(μ• ν”Œλ¦¬μΌ€μ΄μ…˜)은 ν•˜λ‚˜ μ΄μƒμ˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό 가짐
  • 각 ν”„λ‘œμ„ΈμŠ€λŠ” λ³„λ„μ˜ μ£Όμ†Œ κ³΅κ°„μ—μ„œ μ‹€ν–‰λ˜κ³  ν”„λ‘œμ„ΈμŠ€λΌλ¦¬ 지원을 κ³΅μœ ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ λ³€μˆ˜λ‚˜ μžλ£Œκ΅¬μ‘°μ— μ ‘κ·Όν•  수 μ—†μŒ
  • ν”„λ‘œμ„ΈμŠ€λŠ” 각각 λ…λ¦½λœ λ©”λͺ¨λ¦¬ μ˜μ—­(Code, Data, Stack, Heap)을 ν• λ‹Ή λ°›μŒ

 

 

μŠ€λ ˆλ“œ(Thread)

  • ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” νλ¦„μ˜ λ‹¨μœ„
  • ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λŠ” ν•˜λ‚˜ μ΄μƒμ˜ μŠ€λ ˆλ“œλ₯Ό 가짐
  • 각각의 μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ Stack μ˜μ—­λ§Œ λ”°λ‘œ ν• λ‹Ήλ°›κ³  Code, Data, Heap μ˜μ—­μ€ μ„œλ‘œ κ³΅μœ ν•¨

 

 

λ©€ν‹°ν”„λ‘œμ„ΈμŠ€(Multi-Process)

  • ν•˜λ‚˜μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€λ‘œ κ΅¬μ„±ν•˜μ—¬ 각 ν”„λ‘œμ„ΈμŠ€κ°€ ν•˜λ‚˜μ˜ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λ„λ‘ ν•˜λŠ” 것
  • 각각의 ν”„λ‘œμ„ΈμŠ€λŠ” μ„œλ‘œ κ³΅μœ ν•˜λŠ” μžμ›μ΄ μ—†μŒ

μž₯점

  • μ—¬λŸ¬ 개의 μžμ‹ ν”„λ‘œμ„ΈμŠ€ 쀑 ν•˜λ‚˜μ— λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€λ§Œ μ£½λŠ” κ²ƒμœΌλ‘œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ 영ν–₯을 μ£Όμ§€ μ•ŠμŒ (독립적)

단점

  • Context Switching(λ¬Έλ§₯κ΅ν™˜) μ˜€λ²„ν—€λ“œ
    • 각각의 μžμ‹ ν”„λ‘œμ„ΈμŠ€λŠ” λ…λ¦½λœ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ ν• λ‹Ήλ°›μ•˜κΈ° λ•Œλ¬Έμ— λ¬Έλ§₯ κ΅ν™˜ μ‹œ μΊμ‹œμ— μžˆλŠ” λͺ¨λ“  데이터λ₯Ό λ¦¬μ…‹ν•˜κ³  λ‹€μ‹œ μΊμ‹œ 정보λ₯Ό λΆˆλŸ¬μ™€μ•Ό 함
    • μΊμ‹œ λ©”λͺ¨λ¦¬ μ΄ˆκΈ°ν™” λ“± 무거운 μž‘μ—…μ€ λ¬Έλ§₯ κ΅ν™˜ κ³Όμ •μ—μ„œ μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•˜λŠ” 원인이 됨
  • ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신 기법(IPC) ν•„μš”
    • ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ μžμ›μ— μ ‘κ·Όν•˜λ €λ©΄ ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신(IPC)을 μ‚¬μš©ν•΄μ•Όν•¨
    • 예) νŒŒμ΄ν”„, μ†ŒμΌ“ λ“±
πŸ’‘Context Switching(λ¬Έλ§₯κ΅ν™˜) λž€?
ν•œ λ²ˆμ— ν•œ κ°€μ§€ μž‘μ—…λ°–μ— μ²˜λ¦¬ν•˜μ§€ λͺ»ν•˜λŠ” CPU의 νŠΉμ„±μ—λ„ ν•œ λ²ˆμ— μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€λ‚˜ μŠ€λ ˆλ“œκ°€ μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ 보이기 μœ„ν•΄ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€/μŠ€λ ˆλ“œλ₯Ό 짧은 λ‹¨μœ„λ‘œ λ²ˆκ°ˆμ•„κ°€λ©° μ‹€ν–‰ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€. μ΄λ•Œ, μ‹€ν–‰ μ€‘μ΄λ˜ ν”„λ‘œμ„ΈμŠ€/μŠ€λ ˆλ“œλ₯Ό μ€‘λ‹¨ν•˜κ³  λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€/μŠ€λ ˆλ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” 것을 Context Switching(λ¬Έλ§₯ κ΅ν™˜)이라고 ν•œλ‹€.

 

 

λ©€ν‹°μŠ€λ ˆλ“œ(Multi-Thread)

  • ν•˜λ‚˜μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œλ‘œ κ΅¬μ„±ν•˜μ—¬ 각 μŠ€λ ˆλ“œκ°€ ν•˜λ‚˜μ˜ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λ„λ‘ ν•˜λŠ” 것
  • 각각의 μŠ€λ ˆλ“œλŠ” Stack을 μ œμ™Έν•œ λͺ¨λ“  μžμ›μ„ 곡유

μž₯점

  • μ‹œμŠ€ν…œ μžμ›μ˜ μ†Œλͺ¨ κ°μ†Œ
    • ν”„λ‘œμ„ΈμŠ€ 생성을 톡해 μžμ›μ„ ν• λ‹Ήν•˜λŠ” μ‹œμŠ€ν…œ 콜이 쀄어 μžμ›μ„ 효율적으둜 μ‚¬μš© 및 관리할 수 있음
    • μŠ€λ ˆλ“œ κ°„ 데이터λ₯Ό μ£Όκ³ λ°›λŠ” 일이 간단해 μ‹œμŠ€ν…œ μžμ› μ†Œλͺ¨ 적음
  • μ‹œμŠ€ν…œ μ²˜λ¦¬λŸ‰ 증가, λΉ„μš© κ°μ†Œ (Context Switching μ˜€λ²„ν—€λ“œ κ°μ†Œ) 
    • Stack을 μ œμ™Έν•œ μžμ›μ„ κ³΅μœ ν•˜μ—¬ CPU μŠ€μΌ€μ€„λ§ κ³Όμ • Context Switching(λ¬Έλ§₯ κ΅ν™˜) μ‹œ λΉ„μš©κ³Ό 뢀담이 적음
  • κ°„λ‹¨ν•œ 톡신 λ°©λ²•μœΌλ‘œ ν”„λ‘œκ·Έλž¨ 응닡 μ‹œκ°„ 단좕
    • IPC와 같은 λ³΅μž‘ν•œ 톡신 기법을 μ‚¬μš©ν•˜μ§€ μ•Šμ•„ ν†΅μ‹ μ˜ 뢀담이 적음

단점

  • 동기화 문제
    • μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ λ™μ‹œμ— ν•˜λ‚˜μ˜ μžμ›μ— μ ‘κ·Όν•˜λŠ” κ²½μš°μ— λŒ€ν•œ 문제 λ°œμƒ
  • μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œ 쀑 ν•˜λ‚˜μ— λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ ν•΄λ‹Ή μŠ€λ ˆλ“œ 뿐만 μ•„λ‹ˆλΌ λ‹€λ₯Έ μŠ€λ ˆλ“œμ˜ μž‘μ—…μ—λ„ 영ν–₯을 쀌
    • ν”„λ‘œμ„ΈμŠ€ 자체λ₯Ό 쀑단해야 함
  • κ΅¬ν˜„, ν…ŒμŠ€νŠΈ, 디버깅이 어렀움

 

 

⭐️ 참고

  • https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
  • https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4
728x90
μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)

'Computer Science > πŸ”’ Operating System' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[운영체제] IPC(Inter Process Communication) - ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신  (0) 2023.02.27
[운영체제] PCB와 λ¬Έλ§₯ κ΅ν™˜(Context Switching)  (0) 2023.02.24
[운영체제] μœ μ €λͺ¨λ“œ(User-Mode)와 컀널λͺ¨λ“œ(Kernel-Mode), μΈν„°λŸ½νŠΈ(Interrupt)와 μ‹œμŠ€ν…œμ½œ(System Call)  (0) 2023.02.23
[운영체제] 동기/비동기(Sync/Async), λΈ”λ‘œν‚Ή/λ…ΌλΈ”λ‘œν‚Ή(Blocking/Non-Blocking)  (0) 2023.02.22
[운영체제] ν”„λ‘œμ„ΈμŠ€ λ©”λͺ¨λ¦¬ ꡬ쑰 - Code, Data, Heap, Stack  (0) 2023.02.21
    'Computer Science/πŸ”’ Operating System' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ 글이닀
    • [운영체제] PCB와 λ¬Έλ§₯ κ΅ν™˜(Context Switching)
    • [운영체제] μœ μ €λͺ¨λ“œ(User-Mode)와 컀널λͺ¨λ“œ(Kernel-Mode), μΈν„°λŸ½νŠΈ(Interrupt)와 μ‹œμŠ€ν…œμ½œ(System Call)
    • [운영체제] 동기/비동기(Sync/Async), λΈ”λ‘œν‚Ή/λ…ΌλΈ”λ‘œν‚Ή(Blocking/Non-Blocking)
    • [운영체제] ν”„λ‘œμ„ΈμŠ€ λ©”λͺ¨λ¦¬ ꡬ쑰 - Code, Data, Heap, Stack
    J1Yun
    J1Yun
    개발 κ΄€λ ¨ 기술 및 곡뢀 λ‚΄μš© 기둝μž₯

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”