Skip to content

Latest commit

Β 

History

History
25 lines (25 loc) Β· 1.99 KB

File metadata and controls

25 lines (25 loc) Β· 1.99 KB

Thread

  • Lightweight Process (LWP)
  • CPU 이용(utilization)의 κΈ°λ³Έ λ‹¨μœ„

MultiThreaded process

  • ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ— μ—¬λŸ¬ 개의 μ“°λ ˆλ“œκ°€ 올라감
  • 데이터 μ˜μ—­, μ½”λ“œ μ˜μ—­, 파일 μ˜μ—­μ€ κ³΅μœ ν•˜μ§€λ§Œ κ°œλ³„μ μœΌλ‘œ λ ˆμ§€μŠ€ν„°μ™€ μŠ€νƒμ˜μ—­μ΄ 쑴재

λ©€ν‹° μ“°λ ˆλ“œμ˜ μž₯점

  • ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ λ©€ν‹° ν”„λ‘œμ„Έμ„œμ˜ 이득을 μ·¨ν•  수 있음. μ—¬λŸ¬ 개의 μ“°λ ˆλ“œλ“€μ„ 각각 ν”„λ‘œμ„Έμ„œμ— 올렀 돌릴 수 μžˆλ‹€.
    -> throughput 증가, parallelism
  • ν”„λ‘œμ„ΈμŠ€μ˜ ν•œ νŒŒνŠΈκ°€ μ€‘λ‹¨λ˜μ–΄λ„ λ‹€λ₯Έ 파트 μ“°λ ˆλ“œλ“€μ΄ μ‹€ν–‰λ˜λ―€λ‘œ Responsivenessν•˜λ‹€. Β  -> response time κ°μ†Œ, concurrency
  • IPC와 λΉ„κ΅ν•˜μ˜€μ„ λ•Œ λ¦¬μ†ŒμŠ€ κ³΅μœ ν•˜κΈ°κ°€ 더 쉽닀.

ex) thread μ›Œλ“œλ¬Έμ„œμž‘μ„±μ‹œ μ˜€νƒˆμžλŠ” μžλ™μœΌλ‘œ μˆ˜μ •μ΄ λœλ‹€.

Thread vs. Process

  • fork()λ₯Ό μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ process μƒμ„±μ‹œ μ‹œκ°„κ³Ό λ©”λͺ¨λ¦¬κ°€ 많이 μš”κ΅¬λœλ‹€.
  • ν•˜μ§€λ§Œ pthread_create()λ₯Ό μ΄μš©ν•˜μ—¬ thread μƒμ„±μ—λŠ” μ‹œμž‘ μ‹œκ°„κ³Ό λ©”λͺ¨λ¦¬κ°€ 덜 μ†Œμš”λœλ‹€. Β 

컀널 μ“°λ ˆλ“œμ™€ μœ μ € μŠ€λ ˆλ“œ

  • μœ μ € μ“°λ ˆλ“œ N : 컀널 μŠ€λ ˆλ“œ 1 -> μœ μ € μ“°λ ˆλ“œλŠ” μœ μ € μŠ€νŽ˜μ΄μŠ€μ—μ„œ library둜 λŒμ•„κ°€κΈ° λ•Œλ¬Έμ— 컀널 λ‹¨μ—μ„œλŠ” ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œλ‘œ 인식. κ·ΈλŸ¬λ―€λ‘œ μ–΄λ–€ ν•œ μœ μ € μ“°λ ˆλ“œκ°€ 블락에 걸리면 λ‹€λ₯Έ μœ μ € μ“°λ ˆλ“œλ“€μ€ 컀널 μŠ€λ ˆλ“œλ‘œ μ ‘κ·Ό ν•  수 μ—†μœΌλ―€λ‘œ λ©€ν‹°μ“°λ ˆλ“œμ˜ μž₯점인 병렬성을 살릴 수 μ—†λ‹€.
  • μœ μ € μ“°λ ˆλ“œ 1 : 컀널 μŠ€λ ˆλ“œ 1 -> μœ μ € μ“°λ ˆλ“œλ‹Ή μ»€λ„μ“°λ ˆλ“œ ν•˜λ‚˜μ΄λ―€λ‘œ 병렬성과 λ©€ν‹° ν”„λ‘œμ„Έμ‹±μ— 적합, ν•˜μ§€λ§Œ λͺ¨λ“  μ“°λ ˆλ“œ 연산이 컀널과 κ΄€λ ¨: μ“°λ ˆλ“œμ΄μ§€λ§Œ ν—€λΉ„ν•˜κ²Œλ¨

But μ“°λ ˆλ“œμ˜ 동기화λ₯Ό λ§žμΆ”μ§€ μ•ŠμœΌλ©΄ μ—°μ‚° κ²°κ³Όκ°€ λ‹€λ₯΄κ²Œ λ‚˜μ˜¬ 수 있음

Ex) 데이터 κΈ€λ‘œλ²Œ λ³€μˆ˜λŠ” 1, λ‘κ°œμ˜ μ“°λ ˆλ“œμ—μ„œ +1 연산을 μ‹€ν–‰ν•œλ‹€κ³  κ°€μ •

  1. κ·Έλƒ₯ 순차적으둜 2 3
  2. ν”„λ¦°νŠΈμ—ν”„μ—μ„œ μΈν„°λŸ½νŠΈ -> 3 3
  3. storewordμ—μ„œ μΈν„°λŸ½νŠΈ -> 2 2