๊ด€๋ฆฌ ๋ฉ”๋‰ด

Daily Front_Minhhk

์ปดํ“จํ„ฐ ๊ณตํ•™ - ๊ตฌ์กฐ, ์šด์˜์ฒด์ œ ๋ณธ๋ฌธ

Code๊ฐœ๋ฐœ์ผ์ง€

์ปดํ“จํ„ฐ ๊ณตํ•™ - ๊ตฌ์กฐ, ์šด์˜์ฒด์ œ

Minhhk 2023. 1. 27. 20:21
๐Ÿ–ฅ๏ธ ์ปดํ“จํ„ฐ ๊ตฌ์กฐ

์ž…๋ ฅ ์žฅ์น˜

์ž…๋ ฅ์žฅ์น˜๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ์™€ ๋ช…๋ น์„ ๋ฐ›์•„๋“ค์ด๋Š” ๋ฌผ๋ฆฌ์ ์ธ ์žฅ์น˜์ž…๋‹ˆ๋‹ค.

์ถœ๋ ฅ ์žฅ์น˜

์ถœ๋ ฅ์žฅ์น˜๋Š” ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋ฌผ๋ฆฌ์ ์ธ ์žฅ์น˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜

CPU์˜ ๋‚ด๋ถ€ ๊ตฌ์„ฑ์€ ํฌ๊ฒŒ ์‚ฐ์ˆ /๋…ผ๋ฆฌ ์—ฐ์‚ฐ ์žฅ์น˜(ALU)์™€ ์ œ์–ด ์žฅ์น˜, ๋ ˆ์ง€์Šคํ„ฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์žฅ ์žฅ์น˜

์ €์žฅ์žฅ์น˜๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณด๊ด€ํ•˜๊ธฐ ์œ„ํ•œ ์ผ์ฐจ ๊ธฐ์–ต ์žฅ์น˜์ธ ์ฃผ ๊ธฐ์–ต ์žฅ์น˜(Memory)์™€

์ฃผ ๊ธฐ์–ต ์žฅ์น˜๋ฅผ ๋ณด์กฐํ•˜๊ธฐ ์œ„ํ•œ ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜๊ฐ€ ์กด์žฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

CPU

CPU์˜ ๊ตฌ์กฐ

CPU ์˜ ๋‚ด๋ถ€ ๊ตฌ์„ฑ์€ ํฌ๊ฒŒ ์‚ฐ์ˆ /๋…ผ๋ฆฌ ์—ฐ์‚ฐ ์žฅ์น˜(ALU), ์ œ์–ด ์žฅ์น˜์™€ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ๊ตฌ์„ฑ

 

์‚ฐ์ˆ /๋…ผ๋ฆฌ ์—ฐ์‚ฐ์žฅ์น˜ : ๊ฐ€์‚ฐ๊ธฐ, ๋ณด์ˆ˜๊ธฐ, ๋ˆ„์‚ฐ๊ธฐ, ๊ธฐ์–ต ๋ ˆ์ง€์Šคํ„ฐ, ๋ฐ์ดํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ

์ œ์–ด ์žฅ์น˜ : ์‹œ๊ทธ๋„์„ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ํ†ต์ œํ•˜๋Š” ๊ฒƒ (ํ”„๋กœ๊ทธ๋žจ ๊ณ„์ˆ˜๊ธฐ, ๋ช…๋ น ๋ ˆ์ง€์Šคํ„ฐ, ๋ช…๋ นํ•ด๋…๊ธฐ ๋“ฑ)

๋ ˆ์ง€์Šคํ„ฐ : ๋ ˆ์ง€์Šคํ„ฐ(Register)๋Š” ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜(CPU) ๋‚ด๋ถ€์— ์žˆ๋Š” ๊ธฐ์–ต์žฅ์น˜

 

CPU์˜ ๊ธฐ๋Šฅ

๋ช…๋ น์–ด ์ธ์ถœ ๋ฐ ํ•ด๋…์€ ๋ชจ๋“  ๋ช…๋ น์–ด๋“ค์— ๋Œ€ํ•˜์—ฌ ๊ณตํ†ต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๊ธฐ์–ต ์žฅ์น˜๋กœ๋ถ€ํ„ฐ ๋ช…๋ น์–ด๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ์ธ์ถœ ๋ฐ ์ฒ˜๋ฆฌ, ์“ฐ๊ธฐ์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์€ ๋ช…๋ น์–ด์— ๋”ฐ๋ผ ํ•„์š”ํ•  ๋•Œ๋งŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

๋ช…๋ น์–ด๋Š” ์‹œ์Šคํ…œ์ด ํŠน์ • ๋™์ž‘์„ ์ˆ˜ํ–‰์‹œํ‚ค๋Š” ์ž‘์€ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.

๋ช…๋ น์–ด๋Š” ์ฝ”๋“œ๋กœ ๋˜์–ด ์žˆ๋Š”๋ฐ,

 

 

๋™์ž‘์ฝ”๋“œ(Op-code : Operational Code)์™€ ์˜คํผ๋žœ๋“œ(Operand)๋กœ ๊ตฌ์„ฑ
  • ๋™์ž‘ ์ฝ”๋“œ(Op-code): ๊ฐ ๋ช…๋ น์–ด์˜ ์‹คํ–‰ ๋™์ž‘์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ‘œํ˜„
  • ์˜คํผ๋žœ๋“œ(Operand): ๋ช…๋ น์–ด์˜ ์‹คํ–‰์— ํ•„์š”ํ•œ ์ž๋ฃŒ๋‚˜ ์‹ค์ œ ์ž๋ฃŒ์˜ ์ €์žฅ ์œ„์น˜๋ฅผ ์˜๋ฏธ

 

๋ช…๋ น์–ด ์ˆ˜ํ–‰ ๊ณผ์ •์œผ๋กœ๋Š”

  1. ์ฝ๊ธฐ(Fetch Instruction, FI): ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ช…๋ น์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  2. ํ•ด์„(Decode Instruction, DI): ๋ช…๋ น์„ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.
  3. ์‹คํ–‰(Execute Instruction, EI): ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ธฐ๋ก(Write Back, WB): ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

 

๋ช…๋ น์–ด ์ฒ˜๋ฆฌ ๋ฐฉ์‹์œผ๋กœ๋Š”,

RISC : ๋ช…๋ น์–ด ์„ธํŠธ๋ฅผ ๋‹จ์ˆœํ™” ์‹œ์ผœ์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ํ˜•ํƒœ์˜ ๊ตฌ์กฐ,, ๋‹จ์ˆœํ•œ ๋ช…๋ น์„ ์กฐํ•ฉํ•ด์„œ ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰
 
CISC : ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์— ํ•ด๋‹นํ•˜๋Š” ํ•˜๋‚˜์˜ ๋ช…๋ น์ด ์žˆ๋Š” ๊ฐœ๋…

 

CISC

  • ์—ฌ๋Ÿฌ ์‚ฌ์ดํด๋กœ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋งŽ์€ ๋ช…๋ น์–ด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • ํŒŒ์ดํ”„๋ผ์ด๋‹์˜ ์‚ฌ์šฉ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • ๋ณต์žกํ•œ ๋งˆ์ดํฌ๋กœ ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

RISC

  • ํ•˜๋‚˜์˜ ์‚ฌ์ดํด๋กœ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ Load / Store ๋ช…๋ น๋งŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • ํŒŒ์ดํ”„๋ผ์ด๋‹, ์Šˆํผ์Šค์นผ๋ผ์˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณต์žกํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๐Ÿ’พ Memory

 

CPU ์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์ด ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ ๋ฉ”๋ชจ๋ฆฌ, ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ, ์ฃผ๊ธฐ์–ต ์žฅ์น˜, ๋ณด์กฐ๊ธฐ์–ต ์žฅ์น˜๋Š” ๊ฐ๊ฐ ๊ทธ ํŠน์„ฑ

 

  • ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜์™€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฐจ์ด๋Š” 'ํœ˜๋ฐœ์„ฑ' ์ด๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ๋Š” ์‹œ์Šคํ…œ์ด ํ™œ์„ฑํ™” ๋œ ์ƒํƒœ์—์„œ ๊ฐ’์ด ์žˆ์ง€๋งŒ ์‹œ์Šคํ…œ์ด ๊บผ์ง€๊ฒŒ ๋˜๋ฉด ์ง€์›Œ์ง„๋‹ค.

 

์ฃผ๊ธฐ์–ต์žฅ์น˜

 

RAM(Random Access Memory)
  • ์ปดํ“จํ„ฐ์˜ ์ „์›์ด ๋Š์–ด์ง€๋ฉด ๋‚ด์šฉ์ด ํœ˜๋ฐœ๋˜์–ด ๋ณด์กฐ ์ €์žฅ ์žฅ์น˜๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”
  • RAM์˜ ํฌ๊ธฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜ํ–‰ ์†๋„์— ์˜ํ–ฅ
  • RAM์˜ ์ข…๋ฅ˜์—๋Š” SRAM(๋ฆฌํ”„๋ ˆ์‰ฌ๊ฐ€ ํ•„์š” ์—†๊ณ  ์ „๋ ฅ ์†Œ๋ชจ๊ฐ€ ์ ์œผ๋‚˜ ๋น„์Œˆ)๊ณผ DRAM(๋ฆฌํ”„๋ ˆ์‰ฌ๊ฐ€ ํ•„์š”ํ•˜๊ณ  SRAM๋ณด๋‹ค ์ €๊ฐ€์ด๋ฉฐ ๋งŽ์ด ์‚ฌ์šฉ)

 

ROM(Read Only Memory)
  • ๋Œ€๋ถ€๋ถ„ ์ฝ์„ ์ˆ˜๋งŒ ์žˆ๋Š” ์žฅ์น˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ „์›์ด ๋Š๊ฒจ๋„ ๋‚ด์šฉ์ด ๋ณด์กด์ด ๋ฉ๋‹ˆ๋‹ค.

 

๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜

 

์ž๊ธฐ ๋””์Šคํฌ
  • ์›ํŒ ํ‘œ๋ฉด์˜ ์ฒ  ์ž…์ž์˜ ๋ฐฉํ–ฅ(N/S๊ทน)์œผ๋กœ 0๊ณผ 1์„ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ๋””์Šคํฌ ๋“œ๋ผ์ด๋ธŒ๋Š” ์ž๊ธฐ ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์ฃผ๋ณ€ ์žฅ์น˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๊ธฐ ๋””์Šคํฌ์—๋Š” ํ”Œ๋กœํ”ผ ๋””์Šคํฌ(FDD)์™€ ํ•˜๋“œ ๋””์Šคํฌ(HDD)๊ฐ€ ์žˆ๋‹ค.

 

๊ด‘ ๋””์Šคํฌ
  • ๊ด‘ ๋””์Šคํฌ(optical disc, OD)๋Š” ๋น›์˜ ๋ฐ˜์‚ฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž๋ฃŒ๋ฅผ ์ฝ์–ด๋‚ด๋Š” ์ €์žฅ ๋งค์ฒด
  • 1์„ธ๋Œ€์ธ CD๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด 2์„ธ๋Œ€ DVD๋ฅผ ๊ฑฐ์ณ 3์„ธ๋Œ€์ธ ๋ธ”๋ฃจ๋ ˆ์ด ๋””์Šคํฌ๊นŒ์ง€ ์กด์žฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฐจ์„ธ๋Œ€ ๋””์Šคํฌ๋กœ๋Š” ํ…Œ๋ผ ๋””์Šคํฌ๋‚˜ HVD๋“ฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ
  • ์ „์ž์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ๋น„ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ถฉ๊ฒฉ์— ๊ฐ•ํ•˜์—ฌ ํœด๋Œ€์šฉ ๊ธฐ๊ธฐ์— ๋„๋ฆฌ ์ด์šฉ,
  • ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” USB์™€ SSD๊ฐ€ ์กด์žฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ,
  • SSD๋Š” HDD์™€ ๋‹ฌ๋ฆฌ ๋””์Šคํฌ, ํ—ค๋”์™€ ๊ฐ™์€ ๊ธฐ๊ณ„์  ์žฅ์น˜๋Š” ๋น ์กŒ์ง€๋งŒ ์ €์ „๋ ฅ, ์ €์†Œ์Œ, ์ €์ค‘๋Ÿ‰์ด๋ผ๋Š” ํŠน์ง•

 

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ(Cache Memory)

‘Cache’๋ผ๋Š” ์˜๋ฏธ๋Š” ๋ณด๊ด€์ด๋‚˜ ์ €์žฅ์˜ ์˜๋ฏธ

 

CPU์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์— ์กด์žฌํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,

CPU ๋‚ด์— ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์—ญํ• ์ด๋‚˜ ์„ฑ๋Šฅ์— ๋”ฐ๋ผ์„œ๋Š” CPU ๋ฐ–์— ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

CPU๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ Cache Memory ๋‚ด์— ๋“ค์–ด์™€ ์žˆ์œผ๋ฉด ‘Cache Hit’๋ผ ํ•˜๊ณ 

์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ๋ฅผ ‘Cache Miss’

 

์ด๋Ÿฌํ•œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  ์—†์„ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, ์ด๋•Œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ Cache์— ์žˆ์„ ํ™•๋ฅ ์„ ‘Hit Ratio’๋ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

โš™๏ธ ์šด์˜์ฒด์ œ์˜ ๋ชฉ์  ๋ฐ ๊ธฐ๋Šฅ

 

๋ชฉ์  : ์ฒ˜๋ฆฌ๋Šฅ๋ ฅ ํ–ฅ์ƒ, ์‚ฌ์šฉ๊ฐ€๋Šฅ๋„ ํ–ฅ์ƒ, ์‹ ๋ขฐ๋„ ํ–ฅ์ƒ, ๋ฐ˜ํ™˜์‹œ๊ฐ„ ๋‹จ์ถ•
๊ธฐ๋Šฅ : ์ž์›๊ด€๋ฆฌ, ์Šค์ผ€์ค„๋ง, ์ธํ„ฐํŽ˜์ด์Šค, ํ•˜๋“œ์›จ์–ด ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ œ์–ด

 

 

์šด์˜ ์ฒด์ œ์˜ ์‹œ์Šคํ…œ ์ž์› ๊ด€๋ฆฌ

์šด์˜์ฒด์ œ๊ฐ€ ์—†๋‹ค๋ฉด, ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ์ˆ˜ ์—†์œผ๋ฉฐ,

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์ปดํ“จํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๊ณ ,

์šด์˜์ฒด์ œ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜๋“œ์›จ์–ด์—๊ฒŒ ์ผ์„ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

 

 

์‹œ์Šคํ…œ ์ž์›์„ ๊ด€๋ฆฌํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ๋ฐ”๋กœ ์šด์˜์ฒด์ œ์ž…๋‹ˆ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ(CPU)
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
  • I/O(์ž…์ถœ๋ ฅ) ๊ด€๋ฆฌ (๋””์Šคํฌ, ๋„คํŠธ์›Œํฌ ๋“ฑ)

 

ํ”„๋กœ์„ธ์Šค ๊ตฌ์„ฑ์š”์†Œ

  1. ์œ ์ € ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๊ด€๋ฆฌ VAD
    ํ”„๋กœ์„ธ์Šค ๋ณ„๋กœ ๋…๋ฆฝ๋œ ์˜์—ญ์„ ๊ฐ€์ง€๊ฒŒ ๋จ. ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ๋…๋ฆฝ๋œ ์˜์—ญ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด VAD๋ผ๋Š” ๊ด€๋ฆฌ ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•จ
  2. ํ•ธ๋“ค ํ…Œ์ด๋ธ”
    ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํ•ธ๋“ค์— ๋Œ€ํ•œ ์ปค๋„ ๊ฐ์ฒด ํฌ์ธํ„ฐ ์ •๋ณด๋ฅผ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณต๊ฐ„. ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ• ๋•Œ ์ด ํ…Œ์ด๋ธ”์˜ ์ •๋ณด๋ฅผ ์ฐธ๊ณ ํ•ด ์ด ํ”„๋กœ์„ธ์„œ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์ปค๋„ ๊ฐ์ฒด ์ž๋™๋ฐ˜ํ™˜
  3. ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„
    ํ”„๋กœ์„ธ์Šค ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ๋˜๋Š” ์ž์› ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค.
    ํŽ˜์ด์ง•๊ธฐ๋ฒ•์„ ์ด์šฉํ•ด ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๋ณ„๋„์˜ ๊ณ ์œ ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค ํŠน์ง•

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

 

ํ”„๋กœ์„ธ์Šค ์ƒํƒœ

 

์ƒ์„ฑ -> ์ค€๋น„ -> ์‹คํ–‰ -> ๋Œ€๊ธฐ -> ์™„๋ฃŒ

 

 

๐Ÿ”ง ํ”„๋กœ์„ธ์„œ VS ํ”„๋กœ์„ธ์Šค

 

ํ”„๋กœ์„ธ์„œ(Processor)

  • ํ•˜๋“œ์›จ์–ด์ ์ธ ์ธก๋ฉด : ์ปดํ“จํ„ฐ ๋‚ด์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ์œ ๋‹›์œผ๋กœ, ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜(CPU)๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ ์ ์–ด๋„ ํ•˜๋‚˜ ์ด์ƒ์˜ ALU์™€ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๋‚ด์žฅ
  • ์†Œํ”„ํŠธ์›จ์–ด์ ์ธ ์ธก๋ฉด : ๋ฐ์ดํ„ฐ ํฌ๋งท์„ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์›Œ๋“œํ”„๋กœ์„ธ์„œ๋‚˜ ์ปดํŒŒ์ผ๋Ÿฌ ๋“ฑ

 

ํ”„๋กœ์„ธ์Šค(Process)

ํ”„๋กœ์„ธ์Šค๋Š” ํŠน์ • ๋ชฉ์ ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์—ด๋œ ์ž‘์—…์˜ ๋ชฉ๋ก์„ ์˜๋ฏธ.

๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ ๋˜์–ด ํ”„๋กœ์„ธ์„œ์— ์˜ํ•ด ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ํ”„๋กœ์„ธ์Šค

 

 

 

์Šค๋ ˆ๋“œ๋ž€?

์Šค๋ ˆ๋“œ๋Š” ๋ช…๋ น์–ด๊ฐ€ CPU ๋ฅผ ํ†ตํ•ด์„œ ์ˆ˜ํ–‰๋˜๋Š” ๊ฐ์ฒด์˜ ๋‹จ์œ„

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—๋Š” ๋ฐ˜๋“œ์‹œ 1๊ฐœ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์กด์žฌ

 

์Šค๋ ˆ๋“œ๋Š” ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์— ์žˆ๋Š” ์ž์›๊ณผ ์ƒํƒœ๋ฅผ ๊ณต์œ 

๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด์— ์žˆ๋Š” ์Šค๋ ˆ๋“œ๋Š” ๊ฐ™์€ ์ฃผ์†Œ ๊ณต๊ฐ„์— ์กด์žฌํ•˜๊ฒŒ ๋˜๋ฉฐ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ ,

ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ˆ˜์ •ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์Šค๋ ˆ๋“œ์— ์˜ํ–ฅ์„ ์ฃผ๋ฉฐ,

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๊ทธ ํ”„๋กœ์„ธ์Šค์— ์†ํ•ด์žˆ๋˜ ์Šค๋ ˆ๋“œ๋„ ํ•จ๊ป˜ ์ข…๋ฃŒ๋œ๋‹ค!

 

 

์Šค๋ ˆ๋“œ์˜ ํŠน์ง•

  • ์Šค๋ ˆ๋“œ๋Š” ์‹œ์ž‘ํ•ด์„œ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ํ•œ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๋ช…๋ น๋“ค์„ ์ˆ˜ํ–‰
  • ๊ฐ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค call stack์ด ์กด์žฌ (call stack: ์‹คํ–‰ ์ค‘์ธ ์„œ๋ธŒ๋ฃจํ‹ด์„ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ)
  • ๋‚˜๋จธ์ง€ Code, Data, Heap ์˜์—ญ์€ ์Šค๋ ˆ๋“œ ๋ผ๋ฆฌ ๊ณต์œ 
  • ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์Šค๋ ˆ๋“œ๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘

 

 

์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ(Single-Thread)

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹

 

์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์˜ ์žฅ์ 

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

 

์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์˜ ๋‹จ์ 

  • ์—ฌ๋Ÿฌ๊ฐœ์˜ CPU ํ™œ์šฉํ•˜์ง€ ๋ชปํ•จ
  • ์—ฐ์‚ฐ๋Ÿ‰์ด ๋งŽ์€ ์ž‘์—… ์‹œ ์„ ์ ๋œ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์–ด์•ผ ๋‹ค๋ฅธ ์ž‘์—… ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ
  • ์—๋Ÿฌ์ฒ˜๋ฆฌ๊ฐ€ ์•ˆ๋˜๋ฉด ๋ฉˆ์ถ˜๋‹ค.

 

 

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ(Multi-Thread)

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋‘˜ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ž‘์—…,
์—ฌ๋Ÿฌ ๊ฐœ์˜ CPU๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™์‹œ์— ์ˆ˜ํ–‰

 

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์˜ ์žฅ์ 

  • ์‹ค์‹œ๊ฐ„์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‘๋‹ต
  • ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์„œ์—์„œ ์ˆ˜ํ–‰(ํšจ์œจ์ )

 

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์˜ ๋‹จ์ 

  • ํž˜๋“ ์„ค๊ณ„์™€, ๋””๋ฒ„๊น…์ด ์–ด๋ ต๋‹ค
  • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์—†์Œ
  • ์ž์› ๊ณต์œ  ๋ฌธ์ œ > ํ•œ ์Šค๋ ˆ๋“œ์— ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ์ „์ฒด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ํ–ฅ
  • ๋ฌธ๋งฅ ๊ตํ™˜ ์ž‘์—… ํ•„์š” -> ๋‹ค๋ฅธ ํƒœ์Šคํฌ(ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ)๊ฐ€ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ํƒœ์Šคํฌ(ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ)๋ฅผ ๋ฉˆ์ถ”๋Š” ๊ฒƒ

 

๐Ÿ”ฉ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜

 

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์€ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ

 

๋ฉ”๋ชจ๋ฆฌ ์ƒ์กด์ฃผ๊ธฐ

๋ฉ”๋ชจ๋ฆฌ ์ƒ์กด ์ฃผ๊ธฐ๋Š” ๊ทธ ์–ด๋–ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๊ด€๊ณ„ ์—†์ด ๋น„์Šทํ•˜๋ฉฐ

  1. ํ•„์š”ํ•  ๋•Œ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ• ๋‹น
  2. ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉ (Read and Write)
  3. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋”์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉด ํ•ด์ œ

JavaScript๋Š” C์–ธ์–ด์™€๋Š” ๋ฐ˜๋Œ€๋กœ ๊ณ ์ˆ˜์ค€ ์–ธ์–ด๋กœ์„œ,

1,3 ๋ฒˆ์€ ์•”๋ฌต์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค!

 

๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์ž๋™์œผ๋กœ ํ•ด์ œํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ๋‚ด์žฅ

 

 

๋Œ€ํ‘œ์ ์ธ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋ฐฉ๋ฒ•

์ฐธ์กฐ(reference)

๋ช…์‹œ์ ์ด๋“ , ์•”๋ฌต์ ์ด๋“  ๊ด€๊ณ„์—†์ด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ด€์ ์—์„œ ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•œ๋‹ค๊ณ  ๋งํ•œ๋‹ค.

 

๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ•‘(lexical scoping)

๋ณ€์ˆ˜ ์ด๋ฆ„์ด ์ค‘์ฒฉ๋œ ํ•จ์ˆ˜์—์„œ ํ•ด์„๋˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ,

์ค‘์ฒฉ๋˜์–ด ์žˆ๋Š” ๋” ์•ˆ์ชฝ์˜ ํ•จ์ˆ˜๋Š” ๋ถ€๋ชจ ํ•จ์ˆ˜๊ฐ€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ ๋‹ค์Œ์—๋„ ๋ถ€๋ชจ ํ•จ์ˆ˜์˜ ์Šค์ฝ”ํ”„๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

'Code๊ฐœ๋ฐœ์ผ์ง€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

TDD(Test-driven Development)  (0) 2023.01.31
Graph QL  (0) 2023.01.31
React.lazy()์™€ Suspense  (0) 2023.01.26
Custom Hooks  (0) 2023.01.25
Hooks & useMemo, useCallback  (1) 2023.01.25