Process VS Thread

guswns3371ยท2021๋…„ 6์›” 28์ผ
0
post-thumbnail

โœ…Process VS Thread

๐Ÿ‘Process

Program ๐Ÿ‘‰ ํ”ผ์ž๋ฅผ ๋งŒ๋“œ๋Š” ๋ ˆ์‹œํ”ผ = ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋Š” ์‹คํ–‰ํŒŒ์ผ(์ฝ”๋“œ๊ฐ€ ๊ตฌํ˜„๋˜์–ด์žˆ๋Š” ํŒŒ์ผ)
Process ๐Ÿ‘‰ ๋ ˆ์‹œํ”ผ๋กœ ๋งŒ๋“  ํ”ผ์ž = ํ”„๋กœ์„ธ์Šค๋ž€ ๋‹จ์ˆœํžˆ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ(ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ ๊ฒƒ)

๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜์–ด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ์ผ์–ด๋‚˜๋Š” 2๊ฐ€์ง€ ์ผ

1. ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”๋กœํ•˜๋Š” ์žฌ๋ฃŒ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ„๋‹ค.

  • ๊ทธ ๋ฉ”๋ชจ๋ฆฌ๋Š” 4๊ฐ€์ง€ ์˜์—ญ์œผ๋กœ ๋‚˜๋‰˜์–ด ์žˆ๋‹ค
    • Code ๐Ÿ‘‰ ์‹คํ–‰ ๋ช…๋ น์œผ๋กœ ํฌํ•จํ•˜๋Š” ์ฝ”๋“œ๋“ค
    • Data ๐Ÿ‘‰ Static ๋ณ€์ˆ˜ ํ˜น์€ Global ๋ณ€์ˆ˜
    • Heap ๐Ÿ‘‰ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ
    • Stack ๐Ÿ‘‰ ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฐ˜ํ™˜ ๊ฐ’ ๋“ฑ์˜ ์ผ์‹œ์ ์ธ ๋ฐ์ดํ„ฐ

2. ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” PCB ๋ธ”๋ก์ด ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ์‹œ ํ•จ๊ป˜ ๋งŒ๋“ค์–ด์ง„๋‹ค.

  • ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(Process Control Block) = CPU์— ์˜ํ•ด ์‹คํ–‰ ์ค‘์ธ ํŠน์ •ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ์šด์˜ ์ฒด์ œ ์ปค๋„์˜ ์ž๋ฃŒ ๊ตฌ์กฐ
    • pointer ๐Ÿ‘‰ ์ข€๋น„์ƒํƒœ, ๋Œ€๊ธฐ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค์˜ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ์œ„ํ•ด ํ•„์š”ํ•œ ํฌ์ธํ„ฐ
    • process state ๐Ÿ‘‰ ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ
    • pid ๐Ÿ‘‰ ํ”„๋กœ์„ธ์Šค ๊ณ ์œ  ๋ฒˆํ˜ธ
    • program counter ๐Ÿ‘‰ ๋‹ค์Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๊ฐ’

๐Ÿ“Œ Context Switching

ํ˜„์žฌ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” Task(Process, Thread)์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ์ง„ํ–‰ํ•  Task์˜ ์ƒํƒœ ๊ฐ’์„ ์ฝ์–ด ์ ์šฉํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

  • CPU๊ฐ€ ๋น ๋ฅธ ์†๋„๋กœ Task๋ฅผ ๋ฐ”๊ฟ” ๊ฐ€๋ฉฐ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Context Switching์ด ํ•„์š”ํ•˜๋‹ค.
    • Context Switiching์œผ๋กœ ์‚ฌ๋žŒ์˜ ๋ˆˆ์œผ๋ก  ์—ฌ๋Ÿฌ Task๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋œ๋‹ค.
  • Context Switching์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด ๋งŽ์€ Cost๊ฐ€ ์†Œ์š”๋œ๋‹ค.
    • Cache, Memory Mapping ์ดˆ๊ธฐํ™” ํ•ด์•ผํ•˜๊ณ , Kernel์€ ํ•ญ์ƒ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • Context Switching ๋น„์šฉ์€ Process๊ฐ€ Thread๋ณด๋‹ค ๋งŽ์ด๋“ ๋‹ค.
    • Thread๋Š” Stack ์˜์—ญ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ Stack ์˜์—ญ๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค.
      ๐Ÿ‘‰ ๊ต‰์žฅํžˆ ํ”ผ๊ณคํ•˜๊ณ  ํž˜๋“  ์ž‘์—…์ด๋‹ค
      ๐Ÿ‘‰ ๊ทธ๋ž˜์„œ ๊ฒฝ๋Ÿ‰ํ™”๋œ ํ”„๋กœ์„ธ์Šค ๋ฒ„์ „์ธ Thread๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

๐Ÿ‘Thread

Thread ๐Ÿ‘‰ ํ”„๋กœ์„ธ์Šค(process) ๋‚ด์—์„œ ์‹ค์ œ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ์ฒด๋ฅผ ์˜๋ฏธ

  • ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์—๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์กด์žฌํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ๋‘ ๊ฐœ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค(multi-threaded process)๋ผ๊ณ  ํ•œ๋‹ค.
  • Thread๋Š” LWP(๊ฒฝ๋Ÿ‰ ํ”„๋กœ์„ธ์Šค)๋ผ๊ณ ๋„ ํ•œ๋‹ค.

๐Ÿ“Œ Thread๋Š” ์™œ LWP(๊ฒฝ๋Ÿ‰ ํ”„๋กœ์„ธ์Šค)์ธ๊ฐ€

๐Ÿ‘‰ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์•ˆ์— ๋‹ค์ˆ˜์˜ Thread๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, ๊ณต์œ ๋˜๋Š” ์ž์›์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
Thread๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ค‘ Stack ์˜์—ญ์„ ์ œ์™ธํ•œ Code, Data, Heap ์˜์—ญ์„ ๊ณต์œ ํ•˜๋ฏ€๋กœ Context Switching ๋น„์šฉ์ด ์ ๋‹ค.

โœ…Multi-process VS Multi-thread

๐Ÿ‘‰ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋Š” '๋™์‹œ์— ๋‘ ๊ฐ€์ง€ ์ด์ƒ์˜ ๋ฃจํ‹ด์„ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋Š” ์—ญํ• '์„ ํ•˜๋Š” ๊ฒƒ์€ ๋™์ผํ•˜๋‹ค.

๐Ÿ“Œ Multi-process

  • fork๋ฅผ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณต์‚ฌํ•˜๋ฉด ๋ถ€๋ชจํ”„๋กœ์„ธ์Šค-์ž์‹ํ”„๋กœ์„ธ์Šค ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ๋œ๋‹ค. ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ผ๊ณ  ํ•ด๋„ ์ž์‹ ๋งŒ์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ํ•˜๋ ค๋ฉด IPC(Inter Process Communication; ์„ธ๋งˆํฌ์–ด, ํ, ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ)๋ฅผ ํ†ตํ•ด์•ผ ํ•œ๋‹ค.
  • ํŠน์ง•
    • ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ด๋‹ค.
    • IPC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ํ•œ๋‹ค.
    • ์ž์› ์†Œ๋ชจ์ ์ด๋ฉฐ ๊ฐœ๋ณ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค.
    • Context Switching ๋น„์šฉ์ด ํฌ๋‹ค.
    • ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ด๋ฏ€๋กœ ๋™๊ธฐํ™” ์ž‘์—…์ด ๋ถˆํ•„์š”ํ•˜๋‹ค.
  • ์˜ˆ์‹œ
    • ๊ฐ™์€ ์ž‘์—…์„ ๋‘ ์‚ฌ๋žŒ์ด ๋‹ค๋ฅธ ํšŒ์˜์‹ค์—์„œ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ๋…ผ์˜ํ•  ๋•Œ๋งŒ ๋ฐ–์œผ๋กœ ๋‚˜์˜ค๊ณ  ๋‹ค์‹œ ๊ฐ์ž์˜ ํšŒ์˜์‹ค๋กœ ๋“ค์–ด๊ฐ€ ์ž‘์—…ํ•œ๋‹ค.

๐Ÿ“Œ Multi-thread

  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์ˆ˜ ๊ฐœ์˜ ์ž‘์—…์„ ๊ฐ๊ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์‹œ์— ์ž‘๋™ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹จ์ผ Thread ํ•˜๋‚˜๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ, ์ด๋•Œ์˜ ์‹คํ–‰๋‹จ์œ„๋Š” ํ”„๋กœ์„ธ์Šค ๊ทธ ์ž์ฒด๊ฐ€ ๋œ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ Thread๋กœ ๋‚˜๋‰˜์–ด์„œ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ, ์‹คํ–‰๋‹จ์œ„๊ฐ€ ๋‚˜๋‰˜์–ด์ง€๋ฉฐ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๊ฐ€ ๋œ๋‹ค.
  • ํŠน์ง•
    • Thread๋ผ๋ฆฌ ๊ธด๋ฐ€ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.
    • ์ž์›์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ†ต์‹  ๋น„์šฉ์ด ์ ˆ๊ฐ๋˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ ์ธก๋ฉด์—์„œ ํšจ์œจ์ ์ด๋‹ค.
    • Context Switching ๋น„์šฉ์ด ์ ๋‹ค.
    • ๊ณต์œ  ์ž์› ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • ์˜ˆ์‹œ
    • ๋‘ ์‚ฌ๋žŒ์ด ๊ฐ™์€ ํšŒ์˜์‹ค์—์„œ ๊ฐ™์€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๐Ÿ“Œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ€์ง€๋Š” ์ด์ 

  1. Context Switching ์‹œ์— ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋งŒํผ์˜ ์‹œ๊ฐ„(์ž์›) ์†์‹ค์ด ์ค„์–ด๋“ ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๊ฐ„ Context Switching์€ CPU ๋ ˆ์ง€์Šคํ„ฐ ๊ต์ฒด ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ RAM๊ณผ CPU์‚ฌ์ด์˜ ์บ์‰ฌ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ๊นŒ์ง€ ์ดˆ๊ธฐํ™” ๋˜๋ฏ€๋กœ ์ƒ๋‹นํ•œ ๋ถ€๋‹ด์ด ๋ฐœ์ƒํ•œ๋‹ค.
  1. Stack์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— global(์ „์—ญ), static(์ •์ ) ๋ณ€์ˆ˜ ๊ทธ๋ฆฌ๊ณ  new, malloc์— ์˜ํ•œ ๋ชจ๋“  ์ž๋ฃŒ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ (ex.pipe)๊ณผ ๊ฐ™์ด ๋ณต์žกํ•œ ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ณด๋‹ค ํšจ์œจ์ ์ธ ์ผ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค

๐Ÿ“Œ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค๋ฅผ ์™œ ์‚ฌ์šฉํ• ๊นŒ โ“

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์ข‹์•„ ๋ณด์ด๋Š”๋ฐ ์™œ ๊ตณ์ด ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ• ๊นŒ โ“
๐Ÿ‘‰ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์˜ ํšจ์œจ์„ฑ๊ณผ ์•ˆ์ •์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์˜ ๋ฐฉ์‹์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ
    ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์„ ๋ง๊ฐ€๋œจ๋ฆฐ๋‹ค๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋งŒ ์ค‘๋‹จ๋œ๋‹ค.
  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๋ฐฉ์‹์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ
    ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์‹ ์ด ์‚ฌ์šฉํ•˜๋˜ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์„ ๋ง๊ฐ€๋œจ๋ฆฐ๋‹ค๋ฉด ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๋Š” ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ž‘์„ ๋ฉˆ์ถœ ๊ฒƒ์ด๋‹ค. (Critical Section ๊ธฐ๋ฒ•์œผ๋กœ ์ด ๋ฌธ์ œ์ ์„ ๊ฐœ์„ )
  • ์˜ˆ์‹œ
    • ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
      ๊ฐ ํƒญ์ด ๊ธด๋ฐ€ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํ•˜๋‚˜์˜ Thread ์ฆ‰, ํ•˜๋‚˜์˜ ํƒญ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ „์ฒด ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์ด ๋ฏธ์ณ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋น„์ •์ƒ ์ข…๋ฃŒํ•˜๊ฒŒ ๋œ๋‹ค.
    • ๊ตฌ๊ธ€ ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ํƒญ ๊ฐ„์˜ ์˜ํ–ฅ์ด ์ ๋‹ค. ํ•˜๋‚˜์˜ ํƒญ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์ „์ฒด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

โœ…Multi-core

๋ฉ€ํ‹ฐ ์ฝ”์–ด ๐Ÿ‘‰ ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋…๋ฆฝ ์ฝ”์–ด๋ฅผ ๋‹จ์ผ ์ง‘์  ํšŒ๋กœ๋กœ ์ด๋ฃจ์–ด์ง„ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋กœ ํ†ตํ•ฉํ•œ ๊ฒƒ์ด๋‹ค.

  • ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋Š” "์ฒ˜๋ฆฌ๋ฐฉ์‹"์˜ ์ผ์ข…์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด ์ธก๋ฉด์— ๊ฐ€๊น๋‹ค.
  • ๋ฉ€ํ‹ฐ ์ฝ”์–ด๋Š” ํ•˜๋“œ์›จ์–ด ์ธก๋ฉด์— ๊ฐ€๊น๋‹ค.

๐Ÿ“Œ Multi์˜ ๊ฐœ๋…
๐Ÿ‘‰ Concurrency์™€ Parallelism์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค.

1. โœConcurrency (๋™์‹œ์„ฑ)
Pseudo Parallelism์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” Concurrency๋Š” ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” '์ฒ™' ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. (๋‘˜ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ฒ˜๋ฆฌ๋˜์ง„ ์•Š๋Š”๋‹ค)

  • Single Processor ํ˜น์€ Single Core์—์„œ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ํŠน์ • ์Šค๋ ˆ๋“œ๋ฅผ ์„ ํƒํ•ด making progress๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

2. โœParallelism (๋ณ‘๋ ฌ์„ฑ)
๋‘˜ ์ด์ƒ์˜ ์ฝ”์–ด๊ฐ€ ์กด์žฌํ•˜๋Š” ๋ฉ€ํ‹ฐ ์ฝ”์–ด ์‹œ์Šคํ…œ์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ ํ˜น์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ํ–‰์œ„๋ฅผ ๋งํ•œ๋‹ค.

  • Parallelism์€ Data Parallelism๊ณผ Task Parallelism๊ฐ€ ์žˆ๋‹ค.
    • Data Parallelism ๐Ÿ‘‰ ์ž‘์—…๋Ÿ‰์˜ ๋ถ„๋ฐฐ (1 ~ 100์„ ๋”ํ•˜๋Š” ์—…๋ฌด์—์„œ, 1~50์€ CPU1์ด 51~100์€ CPU2๊ฐ€ ๊ณ„์‚ฐํ•œ๋‹ค)
    • Task Parallelism ๐Ÿ‘‰ ํ•˜๋Š” ์—…๋ฌด์˜ ๋ถ„๋ฐฐ (1 ~ 50์€ ๋”ํ•˜๊ณ , 51 ~ 100์€ ๊ณฑํ•ด ํ•ฉ์‚ฐํ•˜๋Š” ์—…๋ฌด์—์„œ, CPU1์€ ๋”ํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋งก๊ณ  CPU2๋Š” ๊ณฑํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋งก๋Š”๋‹ค)

๐Ÿ“Œ Single-core VS Multi-core

์‹ฑ๊ธ€์ฝ”์–ด

  • ๋™์‹œ์˜ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋น ๋ฅธ ํ…€์œผ๋กœ ์ „ํ™˜์ด ๋˜๋ฉด์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•œ๋‹ค
    ๐Ÿ‘‰ Concurrency (๋™์‹œ์„ฑ)

๋ฉ€ํ‹ฐ์ฝ”์–ด

  • ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์ˆ˜์˜ ์‹คํ–‰๋‹จ์œ„๋ฅผ ํ•œ์ˆœ๊ฐ„์— ๋™์‹œ์— ์ฒ˜๋ฆฌํ•œ๋‹ค
    ๐Ÿ‘‰ Parallelism (๋ณ‘๋ ฌ์„ฑ)

โœ…์š”์•ฝ

profile
NKLCBDT

0๊ฐœ์˜ ๋Œ“๊ธ€