[FE-Interview][CS] Process VS Thread

TeasanΒ·2022λ…„ 7μ›” 6일
0

FE

λͺ©λ‘ 보기
3/3
post-thumbnail

Process VS Thread


πŸ“Œ 이 μ§ˆλ¬Έμ€ μš΄μ˜μ²΄μ œκ°€ μ‹œμŠ€ν…œμ˜ μžμ›μ„ μ–΄λ–€ λ‹¨μœ„λ‘œ ν• λ‹Ήν•˜κ³ , ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œλŠ” 이 μžμ›μ„ μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠλƒλ₯Ό μ•Œκ³  μžˆλŠλƒλ₯Ό μ²΄ν¬ν•˜κΈ° μœ„ν•œ μ˜λ„λ‘œ ν•˜λŠ” 것이라 보면 λœλ‹€.

λ¨Όμ € 두 κ°€μ§€μ˜ 이둠적 μ„€λͺ…을 ν•˜κΈ° 전에, μš©μ–΄μ˜ λŠͺ에 빠지지 말아야 ν•  것을 μΆ©κ³ ν•œλ‹€. Process VS Thread λ₯Ό 이야기할 λ•Œ, λ™μΌν•œ λœ»μ„ 가진 λ“―ν•œ μš©μ–΄λ“€μ΄ 반볡적으둜 자주 λ“±μž₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

  1. μ‹€ν–‰ λ‹¨μœ„
    CPU Core μ—μ„œ μ‹€ν–‰ν•˜λŠ” ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œλ₯Ό ν¬κ΄„ν•˜λŠ” κ°œλ…μ„ λ§ν•œλ‹€.
  2. (λΆ€μ—° μ„€λͺ…이 μ—†λŠ”) ν”„λ‘œμ„ΈμŠ€
    ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œλ§Œ 가지고 μžˆλŠ” 단일 μŠ€λ ˆλ“œ ν”„λ‘œμ„ΈμŠ€.
    (ν”„λ‘œμ„ΈμŠ€μ™€ μ“°λ ˆλ“œλŠ” μ™„μ „νžˆ λ‹€λ₯Έ 무언가가 μ•„λ‹ˆλΌλŠ” 이야기.)
  3. λ™μ‹œμ„±
    ν•œ μˆœκ°„μ— μ—¬λŸ¬κ°€μ§€ 일이 μ•„λ‹ˆλΌ, 짧은 μ „ν™˜μœΌλ‘œ μ—¬λŸ¬κ°€μ§€ 일을 λ™μ‹œμ— μ²˜λ¦¬ν•˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” 것을 μ˜λ―Έν•œλ‹€.
    (μ΄λŠ” ν•œ μˆœκ°„μ— μ—¬λŸ¬κ°€μ§€ 일이 μ²˜λ¦¬λœλ‹€λŠ” μ˜λ―Έκ°€ μ•„λ‹ˆλΌ μ—¬λŸ¬κ°€μ§€κ°€ λΉ λ₯΄κ²Œ μ „ν™˜μ΄ λ˜λŠ” κ²ƒμ²˜λŸΌ λ™μ‹œμ— μΌμ–΄λ‚˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” 것이닀.)

ν”„λ‘œμ„ΈμŠ€ vs μŠ€λ ˆλ“œ

ν”„λ‘œμ„ΈμŠ€λŠ” μ»΄ν“¨ν„°μ—μ„œ μ‹€ν–‰λ˜κ³  μžˆλŠ” ν”„λ‘œκ·Έλž¨μ„ λ§ν•˜λ©°, CPU μŠ€μΌ€μ€„λ§μ˜ λŒ€μƒμ΄ λ˜λŠ” μž‘μ—…(task)λΌλŠ” μš©μ–΄μ™€ 거의 같은 의미둜 쓰인닀.
μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€ λ‚΄ μž‘μ—…μ˜ 흐름을 μ§€μΉ­ν•œλ‹€.

이λ₯Ό 쑰금 ν’€μ–΄μ„œ μ΄μ•ΌκΈ°ν•΄λ³΄μžλ©΄, ν”„λ‘œμ„ΈμŠ€λŠ” μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° μžμ›μ„ ν• λ‹Ήλ°›λŠ” μžμ›μ˜ λ‹¨μœ„ 이고, μŠ€λ ˆλ“œλŠ” 할당받은 μžμ›μ„ μ΄μš©ν•˜λŠ” μ‹€ν–‰μ˜ λ‹¨μœ„ 라고 ν•  수 μžˆλ‹€. 그리고 μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€ 내에 μ—¬λŸ¬ κ°œκ°€ 생길 수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄, μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ ν•˜λ‚˜κ°€ ν”„λ‘œμ„ΈμŠ€μ΄κ³ , κ·Έ μ•ˆμ—μ„œ λΆ„κΈ° μ²˜λ¦¬κ°€ μŠ€λ ˆλ“œκ°€ λ˜λŠ” μ…ˆμ΄λΌκ³  λ³Ό 수 μžˆλ‹€.

ν”„λ‘œμ„ΈμŠ€λŠ” 싀행될 λ•Œ μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° ν”„λ‘œμ„Έμ„œ, ν•„μš”ν•œ μ£Όμ†Œ 곡간, λ©”λͺ¨λ¦¬ λ“± μžμ›μ„ ν• λ‹Ήλ°›λŠ”λ‹€. μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ λ™μž‘ν•˜λŠ” μ—¬λŸ¬ μ‹€ν–‰μ˜ 흐름(ν”Œλ‘œμš°)으둜 ν”„λ‘œμ„ΈμŠ€ λ‚΄μ˜ μ£Όμ†Œ κ³΅κ°„μ΄λ‚˜ μžμ›λ“€μ„ 같은 ν”„λ‘œμ„ΈμŠ€ 내에 μŠ€λ ˆλ“œλΌλ¦¬ κ³΅μœ ν•˜λ©΄μ„œ μ‹€ν–‰ λœλ‹€.


μ™œ ν”„λ‘œμ„ΈμŠ€(λ©€ν‹° ν”„λ‘œμ„ΈμŠ€)둜 ν•  수 μžˆλŠ” μž‘μ—…λ“€μ„ ꡳ이 ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ—μ„œ μŠ€λ ˆλ“œλ‘œ λ‚˜λˆ κ°€λ©΄μ„œ ν•΄μ•Όν•˜λŠ” 걸까?

μš΄μ˜μ²΄μ œλŠ” μ‹œμŠ€ν…œ μžμ›μ„ 효율적으둜 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄μ„œ μŠ€λ ˆλ“œλ₯Ό μ‚¬μš© ν•œλ‹€. λ©€ν‹° ν”„λ‘œμ„ΈμŠ€(multi process)둜 μ‹€ν–‰λ˜λŠ” μž‘μ—…μ„ λ©€ν‹° μŠ€λ ˆλ“œλ‘œ μ‹€ν–‰ν•  경우, ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•˜μ—¬ μžμ›μ„ ν• λ‹Ήν•˜λŠ” μ‹œμŠ€ν…œ 콜이 쀄어듀기 λ•Œλ¬Έμ— μžμ›μ„ 효율적으둜 관리 ν•  수 있게 λœλ‹€. 뿐만 μ•„λ‹ˆλΌ, ν”„λ‘œμ„ΈμŠ€ κ°„μ˜ 톡신 보닀 μŠ€λ ˆλ“œ κ°„μ˜ 톡신 λΉ„μš©μ΄ 훨씬 μ μœΌλ―€λ‘œ μž‘μ—…λ“€ κ°„μ˜ ν†΅μ‹ μ˜ 뢀담이 μ€„μ–΄λ“€κ²Œ λœλ‹€.


λ©€ν‹° ν”„λ‘œμ„ΈμŠ€ vs λ©€ν‹° μŠ€λ ˆλ“œ

λ©€ν‹° ν”„λ‘œμ„ΈμŠ€(multi process) λŠ” ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ„ μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€λ‘œ κ΅¬μ„±ν•˜μ—¬ 각 ν”„λ‘œμ„ΈμŠ€κ°€ ν•˜λ‚˜μ˜ μž‘μ—…(task)λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

  • μž₯점 : ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ 잘λͺ» λ˜μ–΄λ„ ν”„λ‘œκ·Έλž¨μ€ λ™μž‘ν•œλ‹€.
  • 단점 : context switching λΉ„μš©μ΄ λ°œμƒν•œλ‹€.

✍🏻 context switching μ΄λž€ ?
CPU μ—μ„œ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό λŒμ•„κ°€λ©΄μ„œ μž‘μ—…μ„ μ²˜λ¦¬ν•˜κ²Œ λ˜λŠ”λ°, 이 μž‘μ—…μ„ Context Switching 이라고 ν•œλ‹€. λ™μž‘ 쀑인 ν”„λ‘œμ„ΈμŠ€κ°€ λŒ€κΈ°λ₯Ό ν•˜κ²Œ λ˜λ©΄μ„œ ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ(Context)λ₯Ό λ³΄κ΄€ν•˜μ—¬ λŒ€κΈ°ν•˜κ³  μžˆλ‹€κ°€ λ‹€μ‹œ μ‹€ν–‰μ‹œμ— λ³΅κ΅¬ν•˜λŠ” λΉ„μš©(μ‹œκ°„)을 μ˜λ―Έν•œλ‹€.

λ©€ν‹° μŠ€λ ˆλ“œ(multi thread) λŠ” ν”„λ‘œκ·Έλž¨μ„ μ—¬λŸ¬κ°œμ˜ μ“°λ ˆλ“œλ‘œ κ΅¬μ„±ν•˜κ³  각 μ“°λ ˆλ“œκ°€ μž‘μ—…(task)λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

  • μž₯점 : μ‹œμŠ€ν…œ μžμ› μ†Œλͺ¨μ™€ 처리 λΉ„μš©μ΄ κ°μ†Œλ˜λ©°, μ‹€ν–‰ 속도가 ν–₯상 λœλ‹€. λ˜ν•œ, μ“°λ ˆλ“œ κ°„μ˜ μžμ› 곡유(stack을 μ œμ™Έν•œ μ˜μ—­)κ°€ κ°€λŠ₯ν•˜λ‹€.
  • 단점 : 디버깅이 μ–΄λ €μ›Œμ§€κ³ , 동기화 μ΄μŠˆκ°€ λ°œμƒν•œλ‹€. ν•˜λ‚˜μ˜ μ“°λ ˆλ“œμ— 였λ₯˜κ°€ λ°œμƒν•˜λ©΄, 전체 ν”„λ‘œμ„ΈμŠ€μ— λ¬Έμ œκ°€ λ°œμƒλœλ‹€.

Thread Safeλž€ 무엇인가?

thread safe λž€, μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ λ™μ‹œμ— μ‚¬μš©λ˜μ–΄λ„ μ•ˆμ „ν•˜λ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. νŠΉμ • ν•¨μˆ˜ A와 λ³€μˆ˜ AAκ°€ μ—¬λŸ¬ μŠ€λ ˆλ“œμ—μ„œ 호좜이 λ˜λ”λΌλ„ ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œμ—μ„œ ν˜ΈμΆœν–ˆμ„ λ•Œμ™€ 같은 κ²°κ³Όκ°€ 보μž₯λ˜μ–΄μ•Ό ν•œλ‹€ λŠ” 것이닀. λ§Œμ•½ νŠΉμ • ν•¨μˆ˜κ°€ μ „μ—­ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•˜κ²Œ λœλ‹€λ©΄ ν•΄λ‹Ή ν•¨μˆ˜λŠ” thread safe ν•˜μ§€ μ•Šμ€ κ²°κ³Όκ°€ λ‚˜μ˜¬ 수 μžˆλ‹€.


βœ… 좜처


Process와 Thread의 차이
ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œμ˜ 차이-운영체제
Process, Thread 차이가 λ­μ˜ˆμš”?
면접을 μœ„ν•œ CS 전곡지식 λ…ΈνŠΈ


profile
일단 곡뢀가 '적성'에 λ§žλŠ” 개발자. κ·Όμ„±μžˆμŠ΅λ‹ˆλ‹€.

0개의 λŒ“κΈ€