[🍎CS] λ©€ν‹°μŠ€λ ˆλ“œμ™€ μ‹±κΈ€μŠ€λ ˆλ“œ

h-a-n-aΒ·2023λ…„ 1μ›” 26일
1

🍎CS

λͺ©λ‘ 보기
6/15

κ·Έλ™μ•ˆ μŠ€λ ˆλ“œλ₯Ό κ³΅λΆ€ν•˜λ©° λŠλ‚€ 건, 크둬 ν•˜λ‚˜ λ„μ›Œλ†“κ³  κ·Έ μ•ˆμ—μ„œ νŒŒμΌλ„ λ‹€μš΄λ‘œλ“œ λ°›κ³ , μŒμ•…λ„ 감상할 수 μžˆλŠ” λ©€ν‹° μŠ€λ ˆλ“œκ°€ λ‹Ήμ—°νžˆ μ‹±κΈ€ μŠ€λ ˆλ“œλ³΄λ‹€ 쒋을 κ±°λΌλŠ” μƒκ°μ΄μ—ˆλ‹€. 그런데 μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό 처음 κ³΅λΆ€ν•˜λ©΄ μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ 기반의 μ–Έμ–΄λΌλŠ” κ±Έ μ•Œκ²Œ λœλ‹€. λˆ„κ°€ 봐도 λ©€ν‹° μŠ€λ ˆλ“œκ°€ μš°μœ„λΌκ³  μƒκ°ν–ˆλŠ”λ°, μ™œ μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œλ₯Ό νƒν–ˆμ„κΉŒ?

λ©€ν‹° μŠ€λ ˆλ“œμ˜ μ–΄λ–€ 단점을 ν”Όν•˜κ³ μž, ν˜Ήμ€ μ‹±κΈ€ μŠ€λ ˆλ“œμ˜ μ–΄λ– ν•œ μž₯점을 νƒν•˜κ³ μž μ‹±κΈ€ μŠ€λ ˆλ“œλ₯Ό νƒν–ˆλŠ”μ§€ κΆκΈˆν•΄μ‘Œλ‹€.

μ˜€λŠ˜μ€ λ©€ν‹° μŠ€λ ˆλ“œμ˜ μž₯/단점과 μ‹±κΈ€ μŠ€λ ˆλ“œμ˜ μž₯/단점에 λŒ€ν•΄ μ‚΄νŽ΄λ³΄κ² λ‹€!!

μ‹±κΈ€ μŠ€λ ˆλ“œ

ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ ν•˜λ‚˜μ˜ main thread만 가지고 ν•˜λ‚˜μ˜ 일만 μˆ˜ν–‰ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것

(cf. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œμ΄μ§€λ§Œ, μžλ°”μŠ€ν¬λ¦½νŠΈ λŸ°νƒ€μž„μ€ μ‹±κΈ€ μŠ€λ ˆλ“œκ°€ μ•„λ‹ˆλ‹€!)

μ‹±κΈ€ μŠ€λ ˆλ“œμ˜ μž₯점

동기화 μ‹ κ²½X

μžμ›μ ‘κ·Όμ— λŒ€ν•œ 동기화λ₯Ό 신경쓰지 μ•Šμ•„λ„ λœλ‹€.

context switching

context switching이 μΌμ–΄λ‚˜μ§€ μ•ŠμœΌλ―€λ‘œ λ‹¨μˆœν•œ μž‘μ—…μ΄λΌλ©΄ λ©€ν‹° μŠ€λ ˆλ“œμ— λΉ„ν•΄ μž‘μ—…μ‹œκ°„μ΄ λΉ λ₯Ό 수 μžˆλ‹€.

μ‹±κΈ€ μŠ€λ ˆλ“œμ˜ 단점

μ—¬λŸ¬ 개의 CPUκ°€ μžˆλŠ” 경우 이λ₯Ό ν™œμš©ν•˜μ§€ λͺ»ν•œλ‹€.

λ©€ν‹° μŠ€λ ˆλ“œ

ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μ—¬λŸ¬ 개의 threadλ₯Ό 가지고 λ™μ‹œμ— μ—¬λŸ¬ 개의 일을 μˆ˜ν–‰ν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” 것(사싀은 λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” 것)
ex. μ›Œλ“œ ν”„λ‘œμ„Έμ„œμ—μ„œ 그림을 ν‘œμ‹œν•˜κ³ , ν‚€ μž…λ ₯에 μ‘λ‹΅ν•˜λ©° 철사 및 문법 검사λ₯Ό 계속 함

λ©€ν‹°μŠ€λ ˆλ“œλŠ” μžμ›μ„ κ³΅μœ ν•˜κΈ° λ•Œλ¬Έμ— ν”„λ‘œμ„ΈμŠ€ 생성에 λΉ„ν•΄ 적은 λ©”λͺ¨λ¦¬μ™€ μžμ›μ„ μ†Œλͺ¨ν•˜κ³  μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­λ„ λ©€ν‹° ν”„λ‘œμ„ΈμŠ€μ— λΉ„ν•΄ λΉ λ₯΄λ‹€λŠ” μž₯점이 μžˆλ‹€. ν•˜μ§€λ§Œ μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œκ°€ μž„κ³„μ˜μ—­(Critical Section)의 κ³΅μœ μžμ›μ— μ ‘κ·Όν•  수 있기 λ•Œλ¬Έμ— λ°μ΄ν„°μ˜ 일관성과 정확성을 μœ„ν•΄ 동기화 기법을 μ‚¬μš©ν•˜μ—¬μ•Ό ν•œλ‹€.

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

응닡성

ν”„λ‘œκ·Έλž¨μ˜ 일뢀뢄(μŠ€λ ˆλ“œ)이 μ€‘λ‹¨λ˜κ±°λ‚˜ κΈ΄ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ”λΌλ„ ν”„λ‘œκ·Έλž¨μ˜ μˆ˜ν–‰μ΄ 계속 λ˜μ–΄ μ‚¬μš©μžμ— λŒ€ν•œ 응닡성이 μ¦κ°€ν•œλ‹€.
ex. λ©€ν‹° μŠ€λ ˆλ“œκ°€ 적용된 μ›Ή λΈŒλΌμš°μ € ν”„λ‘œκ·Έλž¨μ—μ„œ ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œκ°€ 이미지 νŒŒμΌμ„ λ‘œλ“œν•˜κ³  μžˆλŠ”λ™μ•ˆ, λ‹€λ₯Έ μŠ€λ ˆλ“œμ—μ„œ μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš© κ°€λŠ₯

κ²½μ œμ„±

ν”„λ‘œμ„ΈμŠ€ λ‚΄ μžμ›λ“€κ³Ό λ©”λͺ¨λ¦¬λ₯Ό κ³΅μœ ν•˜κΈ° λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬ 곡간과 μ‹œμŠ€ν…œ μžμ›μ†Œλͺ¨κ°€ 쀄어든닀. μŠ€λ ˆλ“œκ°„ 톡신이 ν•„μš”ν•œ κ²½μš°μ—λ„ μ‰½κ²Œ 데이터λ₯Ό 주고받을 수 있으며 ν”„λ‘œμ„ΈμŠ€μ˜ context switchingκ³Ό 달리 μŠ€λ ˆλ“œκ°„μ˜ context switching은 μΊμ‹œ λ©”λͺ¨λ¦¬λ₯Ό λΉ„μšΈ ν•„μš”κ°€ μ—†κΈ° λ•Œλ¬Έμ— 더 λΉ λ₯΄λ‹€.

λ©€ν‹° μŠ€λ ˆλ“œμ˜ 단점

μŠ€λ ˆλ“œ μŠ€μΌ€μ€„λ§

μžμ›κ°„μ˜ 동기화


μ°Έκ³ μ‚¬μ΄νŠΈ
μ½”λ”©ν•˜λŠ” κ²½μ œν•™λ„λ‹˜
dkimλ‹˜

profile
ν•˜λ£¨ν•˜λ£¨κ°€ μ—°μŠ΅μ΄λ‹ˆ 내일은 더 κ°•ν•΄μ§ˆ κ²λ‹ˆλ‹€

0개의 λŒ“κΈ€