๐Ÿ‘จโ€๐Ÿซ ์ง€์„ ์ƒ๋‹˜๊ณผ CS๊ธฐ์ดˆ ๋ถ€์ˆ˜๊ธฐ 1ํƒ„ - [ ์ปดํ“จํ„ฐ ๊ตฌ์กฐ ]

hoheesuยท2025๋…„ 7์›” 3์ผ

์ง€์„ ์ƒ๊ณผ cs

๋ชฉ๋ก ๋ณด๊ธฐ
1/3
post-thumbnail

์ง€๋‚œ๋ฒˆ์— ๊ฐ•์˜๋ฅผ ํ†ตํ•ด CS๋ฅผ ๋ฐฐ์›Œ๋ณด๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ,,, ๋‚ด๊ฐ€ ๋“ฃ๊ธฐ์—๋Š” ๊ฐ•์˜๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ค์šด ๋А๋‚Œ์ด ์žˆ์—ˆ๋‹ค.
๊ฐ•์˜๋ฅผ ๋“ฃ๋‹ค๋ณด๋ฉด ๋ชจ๋ฅด๋Š” ์šฉ์–ด๋“ค์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋‚˜์™”๊ณ , ํ•ด๋‹น ์šฉ์–ด๋ฅผ ๋”ฐ๋กœ ์ฐพ๋Š”์‹œ๊ฐ„์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜๋Š” ๋А๋‚Œ์ด ๋“ค์–ด์„œ, ์ด์ œ๋Š” ์ง€์„ ์ƒ๋‹˜(gpt) ์™€ ํ•จ๊ป˜ ์ •๋ง ๋‚˜ํ•œํ…Œ ํ•„์š”ํ•œ CS๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ ์ง€์„ ์ƒ๋‹˜๊ณผ ํ•จ๊ป˜ ๋งŒ๋“  CS์ง€์‹์ด ๋ถ€์กฑํ•œ ์›น๊ฐœ๋ฐœ์ž๋ฅผ์œ„ํ•œ ์ปค๋ฆฌํ˜๋Ÿผ์„ ๋งŒ๋“ค์–ด๋ดค๋‹ค.

  1. ์ปดํ“จํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ• ๊นŒ? ๐Ÿ’ป (์ปดํ“จํ„ฐ ๊ตฌ์กฐ)
  2. ์šด์˜์ฒด์ œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ๐Ÿง  (ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ, ๋ฉ”๋ชจ๋ฆฌ)
  3. ๋„คํŠธ์›Œํฌ์˜ ์„ธ๊ณ„ ๐ŸŒ (๋ธŒ๋ผ์šฐ์ €, TCP/IP, HTTP)
  4. ์ž๋ฃŒ๊ตฌ์กฐ ๊ธฐ์ดˆ ๐Ÿ“ฆ (๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, ์Šคํƒ, ํ ๋“ฑ)
  5. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ๊ณ  ํ›ˆ๋ จ ๐Ÿงฎ (์ •๋ ฌ, ํƒ์ƒ‰, ์žฌ๊ท€ ๋“ฑ)
  6. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ œ๋Œ€๋กœ ์•Œ๊ธฐ ๐Ÿ’พ (SQL, ํŠธ๋žœ์žญ์…˜, ์ธ๋ฑ์Šค)
  7. ์‹œ์Šคํ…œ ์„ค๊ณ„์™€ ํ™•์žฅ์„ฑ ๐Ÿ—๏ธ (์บ์‹œ, ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค)
  8. ๊ฐœ๋ฐœ์ž ํ•„์ˆ˜ ๋ณด์•ˆ์ง€์‹ ๐Ÿ” (XSS, CSRF, HTTPS)
  9. ๋ธŒ๋ผ์šฐ์ € ๋‚ด๋ถ€ ์‚ดํŽด๋ณด๊ธฐ ๐Ÿงฌ (๋ Œ๋”๋ง, ์ด๋ฒคํŠธ ๋ฃจํ”„)

์•„์ฃผ ๋งˆ์Œ์— ๋“œ๋Š” ์ปค๋ฆฌํ˜๋Ÿผ์ด๋‹ค. ์ •๋ง ๋‚˜ํ•œํ…Œ ํ•„์š”ํ•˜๊ณ , ๋ถ€์กฑํ•œ ๋ถ€๋ถ„๋“ค๋งŒ ์ง€์„ ์ƒ๋‹˜๊ณผ 1:1 ๊ณผ์™ธ๋ฅผ ๋ฐ›์œผ๋ฉด์„œ ๋”ฐ๋กœ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค.


๐Ÿง‘โ€๐Ÿซ ์ปดํ“จํ„ฐ๋Š” ์–ด๋–ค ๋ถ€ํ’ˆ๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์„๊นŒ?

๐Ÿ”ฅ ์ปดํ“จํ„ฐ์˜ 5๋Œ€ ๊ตฌ์„ฑ์š”์†Œ (von Neumann ๊ตฌ์กฐ)

  • ์ž…๋ ฅ์žฅ์น˜ : ๋ฐ์ดํ„ฐ๋ฅผ ์ปดํ“จํ„ฐ์— ๋„ฃ๋Š” ๋„๊ตฌ (ํ‚ค๋ณด๋“œ, ๋งˆ์šฐ์Šค ๋“ฑ)
  • ์ถœ๋ ฅ์žฅ์น˜ ์ฒ˜๋ฆฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ˆˆ์— ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๋„๊ตฌ (๋ชจ๋‹ˆํ„ฐ, ํ”„๋ฆฐํ„ฐ ๋“ฑ)
  • ์ œ์–ด์žฅ์น˜ ๋ชจ๋“  ์žฅ์น˜๋ฅผ ์ง€ํœ˜ํ•˜๋Š” ์‚ฌ๋ น๊ด€
  • ์—ฐ์‚ฐ์žฅ์น˜ ์‹ค์ œ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‡Œ
  • ๊ธฐ์–ต์žฅ์น˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„ (RAM, SSD ๋“ฑ)

๐Ÿ’ก ์ œ์–ด์žฅ์น˜ (Control Unit, CU)

ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค์Œ์— ๋ญ˜ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ์‚ฌ๋ น๊ด€
๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ช…๋ น์–ด๋ฅผ ๊ฐ€์ ธ์™€์„œ ์–ด๋–ค ์—ฐ์‚ฐ์„ ํ• ์ง€, ์–ด๋–ค ์žฅ์น˜๋ฅผ ์“ธ์ง€๋ฅผ ์—ฐ์‚ฐ์žฅ์น˜์™€ ๊ธฐ์–ต์žฅ์น˜์— ์ง€์‹œํ•œ๋‹ค.

๐Ÿ’ก ์—ฐ์‚ฐ์žฅ์น˜ (ALU: Arithmetic Logic Unit)

+ - ร— รท ์ด๋Ÿฐ ๊ณ„์‚ฐ์„ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‡Œ
๋ง์…ˆ, ๋บ„์…ˆ ๊ฐ™์€ ์‚ฐ์ˆ  ์—ฐ์‚ฐ
์ฐธ/๊ฑฐ์ง“ ๋น„๊ต ๊ฐ™์€ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ

๐Ÿ’ก ๊ธฐ์–ต์žฅ์น˜

๋ฐ์ดํ„ฐ์™€ ๋ช…๋ น์–ด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„
RAM: ๋‹น์žฅ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ
ROM: ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ์ •๋ณด ์ €์žฅ (ex: ๋ถ€ํŒ…์šฉ ํŽŒ์›จ์–ด)
๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜ (SSD, HDD): ํŒŒ์ผ์„ ์ €์žฅ


๐Ÿง‘โ€๐Ÿซ CPU๋Š” ๋ช…๋ น์–ด๋ฅผ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ• ๊นŒ?

CPU ์•ˆ์—์„œ ๋ฒŒ์–ด์ง€๋Š” ์ผ

์šฐ๋ฆฌ๊ฐ€ C, JS, Python ๊ฐ™์€ ์ฝ”๋“œ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๋ฉด โ†’ ์ด๊ฑด ์ปดํ“จํ„ฐ ์ž…์žฅ์—์„œ ๋ณด๋ฉด ๊ทธ๋ƒฅ ์ผ๋ จ์˜ ๋ช…๋ น์–ด๋“ค์ž…๋‹ˆ๋‹ค.
(์˜ˆ: ADD, MOV, JUMP ๊ฐ™์€ ์•„์ฃผ ๋‹จ์ˆœํ•œ ๊ธฐ๊ณ„์–ด ๋ช…๋ น)

๋ช…๋ น์–ด ์‹คํ–‰ ๊ณผ์ • (๋ช…๋ น์–ด ์‚ฌ์ดํด)

์ด๊ฒƒ์ด ๋ฐ”๋กœ CPU์˜ ์ง„์งœ ๋ณธ์—… โ†’ ๋ช…๋ น์–ด ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์‚ฌ์ดํด
Fetch โ†’ Decode โ†’ Execute

๐Ÿ’ก Fetch (๊ฐ€์ ธ์˜ค๊ธฐ)

Program Counter (PC)๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋กœ ๊ฐ€์„œ ๊ฑฐ๊ธฐ ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ฝ์–ด์„œ Instruction Register (IR)์— ์ €์žฅํ•œ๋‹ค.

  • PC: ํ˜„์žฌ ์ค„๋ฒˆํ˜ธ ๊ธฐ์–ต
  • IR: ํ˜„์žฌ ์ค„์˜ ๋‚ด์šฉ ๊ธฐ์–ต

๐Ÿ’ฌ ์ฑ… ์ฝ๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด โ€œ๋‹ค์Œ์— ์ฝ์„ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ(PC)๋ฅผ ๋ณด๊ณ  ๊ทธ ํŽ˜์ด์ง€ ๋‚ด์šฉ(IR)์„ ์ฝ๋Š” ๊ฒƒโ€

๐Ÿ’ก Decode (ํ•ด์„ํ•˜๊ธฐ)

IR์— ๋“ค์–ด ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ํ•ด์„
๋ฌด์Šจ ์—ฐ์‚ฐ์„ ํ•ด์•ผ ํ•˜๋Š”์ง€, ์–ด๋–ค ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์จ์•ผ ํ•˜๋Š”์ง€ ๊ฒฐ์ •
์ด ๋‹จ๊ณ„์—์„œ "๋ฌด์Šจ ํ–‰๋™์„ ํ• ์ง€" CPU ๋‚ด๋ถ€ ํšŒ๋กœ๋“ค์ด ์ค€๋น„ํ•จ

๐Ÿ’ก Execute (์‹คํ–‰ํ•˜๊ธฐ)

์‹ค์ œ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ (์˜ˆ: ๋”ํ•˜๊ธฐ, ์ €์žฅํ•˜๊ธฐ, ์ด๋™ํ•˜๊ธฐ ๋“ฑ)
๊ฒฐ๊ณผ๋Š” ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜, ๋ฉ”๋ชจ๋ฆฌ์— ๊ธฐ๋กํ•˜๊ฑฐ๋‚˜
์ด๊ฒŒ ๋๋‚˜๋ฉด โ†’ PC๋ฅผ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์ด๋™ โ†’ ๋‹ค์Œ ์‚ฌ์ดํด๋กœ ๋ฐ˜๋ณต

PC -> Fetch -> IR -> Decode -> Execute -> PC++

์ฆ‰, CPU๋Š” ์ด ๊ณผ์ •์„ ์ดˆ๋‹น ์ˆ˜์‹ญ์–ต ๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ์„ ํ•œ ์ค„์”ฉ ํ•œ ์ค„์”ฉ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿง‘โ€๐Ÿซ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ: ์Šคํƒ, ํž™, ๋ฐ์ดํ„ฐ ์˜์—ญ, ์ฝ”๋“œ์˜์—ญ

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

๐Ÿ† ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ 4๊ฐ€์ง€ (์‚ฌ๊ฐ€์ง€ ์•„๋‹˜)

์˜์—ญ์—ญํ• ๋น„์œ 
์ฝ”๋“œ(Code) ์˜์—ญํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๋ช…๋ น์–ด(๊ธฐ๊ณ„์–ด) ์ €์žฅ์‚ฌ์ „์— ๋ฏธ๋ฆฌ ์ •๋ฆฌ๋œ ๊ทœ์น™ ๋…ธํŠธ
๋ฐ์ดํ„ฐ(Data) ์˜์—ญ์ „์—ญ๋ณ€์ˆ˜, ์ •์ ๋ณ€์ˆ˜ ์ €์žฅ์ฑ…์ƒ ํ•œ์ชฝ์— ํ•ญ์ƒ ๊บผ๋‚ด ๋†“์€ ์ฐธ๊ณ ์„œ
ํž™(Heap) ์˜์—ญ๋™์ ์œผ๋กœ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ (new, malloc ๋“ฑ)์ž‘์—…ํ•˜๋‹ค๊ฐ€ ์ถ”๊ฐ€๋กœ ๊บผ๋‚ด ์“ฐ๋Š” ๊ณต์ฑ… (๋ถˆ๊ทœ์น™์ , ํฌ๊ธฐ ๊ฐ€๋ณ€)
์Šคํƒ(Stack) ์˜์—ญํ•จ์ˆ˜ ํ˜ธ์ถœ, ์ง€์—ญ๋ณ€์ˆ˜ ์ €์žฅ์˜ค๋Š˜ ์“ธ ์ž๋ฃŒ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์Œ“์•„ ๋†“๋Š” ์„œ๋ฅ˜ ๋”๋ฏธ (์ˆœ์„œ ์ค‘์š”)

๐Ÿ“š ์Šคํƒ ์˜์—ญ (Stack)

ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ž๋™์œผ๋กœ ์Œ“์ด๋Š” ๊ณต๊ฐ„
LIFO ๊ตฌ์กฐ (Last In First Out)
๋งˆ์ง€๋ง‰์— ๋“ค์–ด๊ฐ„ ํ•จ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋น ์ ธ๋‚˜์˜ด

  • ํ•จ์ˆ˜ ํ˜ธ์ถœ โ†’ ์ง€์—ญ๋ณ€์ˆ˜ ์ €์žฅ โ†’ ํ•จ์ˆ˜ ์ข…๋ฃŒ ์‹œ ์ž๋™ ์†Œ๋ฉธ
  • ํ•จ์ˆ˜๊ฐ€ ๊นŠ์–ด์ง€๋ฉด ์Šคํƒ์ด ์Œ“์ž„ (์žฌ๊ท€์—์„œ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์œ„ํ—˜!)

๐Ÿ“• ํž™ ์˜์—ญ (Heap)

ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์š”์ฒญํ•ด์„œ ์“ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ
ํฌ๊ธฐ ์ž์œ ๋กœ์›€, ์œ„์น˜ ๋ถˆ๊ทœ์น™

  • ๋™์  ํ• ๋‹น (C: malloc, JS: ๊ฐ์ฒด ์ƒ์„ฑ)
  • ์ง์ ‘ ํ•ด์ œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ (JS๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋Œ€์‹  ์ฒ˜๋ฆฌ)
  • ๋„ˆ๋ฌด ๋งŽ์ด ์“ฐ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ํ˜„์ƒ ๋ฐœ์ƒ

๐Ÿ“’ ๋ฐ์ดํ„ฐ ์˜์—ญ (Data)

์ „์—ญ ๋ณ€์ˆ˜๋‚˜ ํ•œ๋ฒˆ ํ• ๋‹น๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ๊นŒ์ง€ ์œ ์ง€๋˜๋Š” ๋ณ€์ˆ˜๋“ค์ด ์ €์žฅ๋จ

  • ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ ํ• ๋‹น โ†’ ์ข…๋ฃŒ ์‹œ ํ•ด์ œ

๐Ÿ“‘ ์ฝ”๋“œ ์˜์—ญ (Code)

์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์‹คํ–‰ ๋ช…๋ น์–ด(๊ธฐ๊ณ„์–ด) ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ

  • ์ฝ๊ธฐ ์ „์šฉ
  • ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€

โœ… ํ•ต์‹ฌ ์ •๋ฆฌ

  • ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋”ฑ 4๊ตฌ์—ญ์œผ๋กœ ๋‚˜๋‰œ๋‹ค (์Šคํƒ/ํž™/๋ฐ์ดํ„ฐ/์ฝ”๋“œ)
  • ํ•จ์ˆ˜ ํ˜ธ์ถœ โ†’ ์Šคํƒ
  • ๊ฐ์ฒด ์ƒ์„ฑ(new/malloc) โ†’ ํž™
  • ์ „์—ญ๋ณ€์ˆ˜ โ†’ ๋ฐ์ดํ„ฐ
  • ๋ช…๋ น์–ด โ†’ ์ฝ”๋“œ
  • ์‹คํ–‰ ์ค‘์—๋Š” ์ฃผ๋กœ ์Šคํƒ๊ณผ ํž™์ด ์—ด์ผํ•œ๋‹ค.

๐Ÿง‘โ€๐Ÿซ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ ˆ์ง€์Šคํ„ฐ: CPU๋Š” ์™œ ์บ์‹œ๋ฅผ ์“ฐ๋Š”๊ฐ€?

CPU๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ, ์™œ ๋ฐ”๋กœ RAM(๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ)์—์„œ ์ฝ๊ณ  ์“ฐ์ง€ ์•Š๊ณ , ๊ตณ์ด ์บ์‹œ(Cache)๋‚˜ ๋ ˆ์ง€์Šคํ„ฐ(Register)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์†๋„๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿ ์ปดํ“จํ„ฐ ์†๋„ ์ฐจ์ด

๋ฉ”๋ชจ๋ฆฌ ์ข…๋ฅ˜์ ‘๊ทผ ์†๋„ (๋Œ€๋žต์ )
๋ ˆ์ง€์Šคํ„ฐ (Register)1 ์‚ฌ์ดํด (๋ช‡ ๋‚˜๋…ธ์ดˆ ์ˆ˜์ค€, ๊ฑฐ์˜ ์ฆ‰์‹œ)
์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ (Cache)์ˆ˜~์ˆ˜์‹ญ ์‚ฌ์ดํด (L1 < L2 < L3 ์ˆœ์œผ๋กœ ๋А๋ ค์ง)
๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ (RAM)์ˆ˜๋ฐฑ ์‚ฌ์ดํด (ํ›จ์”ฌ ๋А๋ฆผ)
SSD/HDD์ˆ˜์ฒœ๋งŒ ์‚ฌ์ดํด ์ด์ƒ (๋น„๊ต ๋ถˆ๊ฐ€)

โ˜๏ธ CPU๋Š” ์—„์ฒญ ๋น ๋ฅด๊ฒŒ ์—ฐ์‚ฐ์„ ํ•˜๋Š”๋ฐ, RAM์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ฑธ๋ฆฌ๋ฉด, CPU๊ฐ€ ํ•˜๋Š”์ผ์ด ์ง€์—ฐ๋œ๋‹ค. (โ†’ ์„ฑ๋Šฅ ์ €ํ•˜) ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ›จ์”ฌ ๋น ๋ฅธ ๊ณต๊ฐ„์ธ:๋ ˆ์ง€์Šคํ„ฐ(register)๋‚˜ ์บ์‹œ๋ฉ”๋ชจ๋ฆฌ(cache)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

๐ŸŽ๏ธ ๋ ˆ์ง€์Šคํ„ฐ (Register)

CPU ์•ˆ์— ์žˆ๋Š” ์ดˆ์ดˆ์ดˆ๊ณ ์† ๋ฉ”๋ชจ๋ฆฌ โ†’ "CPU์˜ ์†๋ฐ”๋‹ฅ ์œ„"

  • CPU๊ฐ€ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
  • ์šฉ๋Ÿ‰: ๋งค์šฐ ์ž‘์Œ (์ˆ˜์‹ญ ๊ฐœ, ์ˆ˜๋ฐฑ ๋ฐ”์ดํŠธ ์ˆ˜์ค€)
  • ์†๋„: CPU ๋‚ด๋ถ€์ด๋ฏ€๋กœ ์‚ฌ์‹ค์ƒ ์ฆ‰์‹œ ์ ‘๊ทผ ๊ฐ€๋Šฅ

โ˜๏ธ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์ฃผ๋กœ ์—ฐ์‚ฐ ์ค‘๊ฐ„๊ฐ’ ์ €์žฅ, ๋ช…๋ น์–ด ์ฃผ์†Œ, ์—ฐ์‚ฐ ๋Œ€์ƒ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

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

CPU์™€ RAM ์‚ฌ์ด์˜ ์ค‘๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ
โ†’ "CPU์˜ ์ฑ…์ƒ ์œ„"

  • RAM๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ„
  • CPU๊ฐ€ ์ž์ฃผ ์“ฐ๋Š” ๋ฐ์ดํ„ฐ/๋ช…๋ น์–ด ์ €์žฅ
  • ์šฉ๋Ÿ‰: ๋ ˆ๋ฒจ๋งˆ๋‹ค ๋‹ค๋ฆ„
    - L1 ์บ์‹œ: ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ์ž‘์Œ (๋ณดํ†ต ์ˆ˜์‹ญ KB)
    - L2 ์บ์‹œ: ์ค‘๊ฐ„ ์†๋„, ๋” ํผ (์ˆ˜๋ฐฑ KB~์ˆ˜ MB)
    - L3 ์บ์‹œ: ๊ฐ€์žฅ ํฌ๊ณ  ๋А๋ฆผ (์ˆ˜ MB ์ด์ƒ)

โ˜๏ธ RAM ์ ‘๊ทผ์„ ์ตœ์†Œํ™”ํ•ด์„œ CPU๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ผํ•˜๊ฒŒ ํ•จ, ์ตœ๊ทผ ์ ‘๊ทผํ•œ ๋ฐ์ดํ„ฐ, ๋ช…๋ น์–ด๋ฅผ ๋ณด๊ด€

๐Ÿง‘โ€๐Ÿซ ์ธํ„ฐ๋ŸฝํŠธ์™€ ์ž…์ถœ๋ ฅ ์ œ์–ด (Interrupt & I/O Control)

์ธํ„ฐ๋ŸฝํŠธ๋ž€?

์ธํ„ฐ๋ŸฝํŠธ (Interrupt) = โ€œCPU์•ผ, ์ž ๊น๋งŒ! ๊ธ‰ํ•œ ์ผ์ด ์ƒ๊ฒผ์–ด!โ€๋ผ๋Š” ์‹ ํ˜ธ

CPU๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ๋ช…๋ น์–ด์˜ ํ๋ฆ„์„ ์™ธ๋ถ€ ์žฅ์น˜๋‚˜ ๋‚ด๋ถ€ ์‹ ํ˜ธ์— ์˜ํ•ด ๊ฐ•์ œ๋กœ ์ค‘๋‹จ์‹œํ‚ค๊ณ ,
ํŠน์ • ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ์‹œ์Šคํ…œ ๋ฉ”์ปค๋‹ˆ์ฆ˜.

๐Ÿ’ก CPU๊ฐ€ ์ž‘์—…์„ ํ•˜๋˜ ์ค‘์—๋„ ์™ธ๋ถ€์—์„œ ๊ฐ‘์ž๊ธฐ ์‹ ํ˜ธ๊ฐ€ ์˜ค๋ฉด โ†’ ํ˜„์žฌ ์ž‘์—…์„ ์ž ์‹œ ๋ฉˆ์ถ”๊ณ  โ†’ ์™ธ๋ถ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ ๋’ค โ†’ ๋‹ค์‹œ ์›๋ž˜ ์ž‘์—…์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.

โœ”๏ธ ๋Œ€ํ‘œ์  ์ธํ„ฐ๋ŸฝํŠธ ์‚ฌ๋ก€

  • ํ‚ค๋ณด๋“œ ์ž…๋ ฅ
  • ๋งˆ์šฐ์Šค ํด๋ฆญ
  • ๋””์Šคํฌ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์™„๋ฃŒ
  • ํƒ€์ด๋จธ ์•Œ๋žŒ
  • ์—๋Ÿฌ ๋ฐœ์ƒ (์˜ˆ: 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ ์˜ค๋ฅ˜)

์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๊ณผ์ •

CPU ๋™์ž‘ ํ๋ฆ„

1๏ธโƒฃ CPU๊ฐ€ ์›๋ž˜ ๋ช…๋ น์–ด ์‹คํ–‰ ์ค‘
2๏ธโƒฃ ์™ธ๋ถ€ ์žฅ์น˜๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ ๋ณด๋ƒ„
3๏ธโƒฃ CPU๋Š” ํ˜„์žฌ ์ž‘์—…์„ ์ €์žฅ (์ปจํ…์ŠคํŠธ ์ €์žฅ)
4๏ธโƒฃ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ(Interrupt Handler)๋กœ ์ด๋™
5๏ธโƒฃ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ์™„๋ฃŒ
6๏ธโƒฃ ์ €์žฅํ•ด๋‘” ์ž‘์—…์„ ๋ณต๊ตฌํ•˜๊ณ  ์ด์–ด์„œ ์‹คํ–‰
โญ๏ธ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ: ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‹คํ–‰๋˜๋Š” ํŠน๋ณ„ํ•œ ํ•จ์ˆ˜
โญ๏ธ ์ปจํ…์ŠคํŠธ ์ €์žฅ: ํ˜„์žฌ CPU ์ƒํƒœ(๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’, ๋ช…๋ น์–ด ์œ„์น˜ ๋“ฑ)๋ฅผ ์ž„์‹œ ์ €์žฅํ•˜๋Š” ๊ณผ์ •

์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์—†๋Š” ์‹œ์Šคํ…œ (Polling ๋ฐฉ์‹)

๐Ÿ’ก Polling (ํด๋ง): CPU๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ณ„์† ์ฒดํฌํ•˜๋Š” ๋ฐฉ์‹
cpu์ž…์žฅ์—์„œ ๋ณด๋ฉด โ†’ โ€œ๋ฐ์ดํ„ฐ ์™”๋‚˜?โ€ โ†’ โ€œ์•„์ง ์•ˆ ์™”๋„คโ€ โ†’ ๋˜ ์ฒดํฌ โ†’ ๊ณ„์† ๋ฐ˜๋ณต

Polling์˜ ๋ฌธ์ œ์ 

  • CPU๊ฐ€ ๊ณ„์† ์“ธ๋ฐ์—†๋Š” ์ฒดํฌ๋ฅผ ํ•ด์•ผ ํ•จ โ†’ ๋‚ญ๋น„ ์‹ฌํ•จ
  • ๋‹ค๋ฅธ ์ผ ๋ชป ํ•˜๊ณ  "๋Œ€๊ธฐ"๋งŒ ํ•˜๊ฒŒ ๋จ

์ธํ„ฐ๋ŸฝํŠธ ๋ฐฉ์‹์˜ ์žฅ์ 

  • CPU๋Š” ์›๋ž˜ ํ•  ์ผ ํ•˜๋‹ค๊ฐ€
  • ์‹ ํ˜ธ ์˜ค๋ฉด ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์ฒ˜๋ฆฌ
  • CPU ์‹œ๊ฐ„ ์ ˆ์•ฝ + ํšจ์œจ์„ฑ ๊ทน๋Œ€ํ™”

์‹ค์ œ ์šด์˜์ฒด์ œ์—์„œ์˜ ์ธํ„ฐ๋ŸฝํŠธ

์šด์˜์ฒด์ œ๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ด€๋ฆฌํ•œ๋‹ค.

  • ์žฅ์น˜๋ณ„๋กœ ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ(Interrupt Vector) ๋“ฑ๋ก
  • ์‹ ํ˜ธ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด โ†’ ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ ํ˜ธ์ถœ
  • ์šฐ์„ ์ˆœ์œ„ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ (์ค‘์š”ํ•œ ์ธํ„ฐ๋ŸฝํŠธ ๋จผ์ € ์ฒ˜๋ฆฌ)

โœ… ํ•ต์‹ฌ ์ •๋ฆฌ

  • ์ธํ„ฐ๋ŸฝํŠธ = CPU๊ฐ€ ์™ธ๋ถ€ ์žฅ์น˜ ์š”์ฒญ์— ๋ฐ˜์‘ํ•˜๋Š” ์‹œ์Šคํ…œ
  • CPU๋Š” ํ˜„์žฌ ์ž‘์—…์„ ์ €์žฅํ•˜๊ณ , ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„ ๋‹ค์‹œ ์›๋ž˜ ์ž‘์—… ๋ณต๊ท€
  • Polling vs Interrupt ๊ตฌ๋ถ„ ํ•„์ˆ˜
  • ํ˜„๋Œ€ ์ปดํ“จํ„ฐ ๋Œ€๋ถ€๋ถ„ ์ธํ„ฐ๋ŸฝํŠธ ๋ฐฉ์‹ ์‚ฌ์šฉ

โ˜๏ธ ๋ถ€๋ก - ์šฉ์–ด ์ •๋ฆฌ

์šฉ์–ด๋œป์„ค๋ช…
์ž…๋ ฅ ์žฅ์น˜ (Input Device)๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์žฅ์น˜ํ‚ค๋ณด๋“œ, ๋งˆ์šฐ์Šค ๋“ฑ
์ถœ๋ ฅ ์žฅ์น˜ (Output Device)๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์žฅ์น˜๋ชจ๋‹ˆํ„ฐ, ํ”„๋ฆฐํ„ฐ ๋“ฑ
์ œ์–ด์žฅ์น˜ (Control Unit, CU)๋ช…๋ น์–ด๋ฅผ ํ•ด์„ํ•˜๊ณ  ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ์žฅ์น˜CPU ๋‚ด๋ถ€, ์—ฐ์‚ฐ์žฅ์น˜์™€ ๋ฉ”๋ชจ๋ฆฌ ์ œ์–ด
์—ฐ์‚ฐ์žฅ์น˜ (Arithmetic Logic Unit, ALU)์‚ฐ์ˆ  ์—ฐ์‚ฐ ๋ฐ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ ์žฅ์น˜๋ง์…ˆ, ๊ณฑ์…ˆ, ๋น„๊ต ์—ฐ์‚ฐ ๋“ฑ์„ ๋‹ด๋‹น
๊ธฐ์–ต์žฅ์น˜ (Memory)๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์žฅ์น˜RAM, SSD ๋“ฑ ํฌํ•จ
CPU (Central Processing Unit)์ค‘์•™ ์ฒ˜๋ฆฌ ์žฅ์น˜, ์ปดํ“จํ„ฐ์˜ ๋‘๋‡Œ์ œ์–ด์žฅ์น˜์™€ ์—ฐ์‚ฐ์žฅ์น˜ ํฌํ•จ
๋ช…๋ น์–ด (Instruction)CPU๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ์ž‘์—… ์ง€์‹œ๋ฌธ๊ธฐ๊ณ„์–ด ๋ช…๋ น์–ด
ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ (Program Counter, PC)๋‹ค์Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ ์ €์žฅ๋ช…๋ น์–ด ์ˆœ์„œ ๊ด€๋ฆฌ
๋ช…๋ น์–ด ๋ ˆ์ง€์Šคํ„ฐ (Instruction Register, IR)ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ช…๋ น์–ด ์ €์žฅ๋ช…๋ น์–ด ์‹คํ–‰ ์ง์ „ ์ €์žฅ ์žฅ์†Œ
๋ช…๋ น์–ด ์‚ฌ์ดํด (Instruction Cycle)๋ช…๋ น์–ด ์ฒ˜๋ฆฌ ๊ณผ์ •Fetch โ†’ Decode โ†’ Execute ๋ฐ˜๋ณต
์ฝ”๋“œ ์˜์—ญ (Code Segment)์‹คํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…๋ น์–ด ์ €์žฅ ๊ณต๊ฐ„์ฝ๊ธฐ ์ „์šฉ
๋ฐ์ดํ„ฐ ์˜์—ญ (Data Segment)์ „์—ญ ๋ณ€์ˆ˜, ์ •์  ๋ณ€์ˆ˜ ์ €์žฅ ๊ณต๊ฐ„ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์‹œ๊นŒ์ง€ ์œ ์ง€
ํž™ (Heap)๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์˜์—ญmalloc, new ๋“ฑ์œผ๋กœ ํ• ๋‹น, ํฌ๊ธฐ ๊ฐ€๋ณ€
์Šคํƒ (Stack)ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๋˜๋Š” ์˜์—ญ์ง€์—ญ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ •๋ณด ์ €์žฅ (LIFO ๊ตฌ์กฐ)
์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ (Stack Overflow)์Šคํƒ์ด ํ• ๋‹น ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์„ ์ดˆ๊ณผํ•œ ์ƒํƒœ๋ฌดํ•œ ์žฌ๊ท€ ๋“ฑ์—์„œ ๋ฐœ์ƒ
ํž™ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ (Heap Overflow)ํž™ ์˜์—ญ์ด ํ• ๋‹น ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์„ ์ดˆ๊ณผํ•œ ์ƒํƒœ๋ฌดํ•œ ๋™์  ํ• ๋‹น ๋“ฑ์—์„œ ๋ฐœ์ƒ
๋ ˆ์ง€์Šคํ„ฐ (Register)CPU ๋‚ด๋ถ€ ์ดˆ๊ณ ์† ์ €์žฅ์†Œ์—ฐ์‚ฐ ์ค‘๊ฐ„๊ฐ’ ์ €์žฅ, ์†๋„ ์ตœ์ƒ, ์šฉ๋Ÿ‰ ๋งค์šฐ ์ž‘์Œ
์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ (Cache Memory)CPU์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ(RAM) ์‚ฌ์ด์˜ ์ค‘๊ฐ„ ์ €์žฅ์†Œ์†๋„ ๋น ๋ฅด๊ณ  ์šฉ๋Ÿ‰ ์ œํ•œ, L1/L2/L3๋กœ ๋‚˜๋‰จ
L1 ์บ์‹œ (Level 1 Cache)๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ๊ฐ€์žฅ ์ž‘์€ ์บ์‹œCPU์— ๋งค์šฐ ๊ฐ€๊นŒ์›€
L2 ์บ์‹œ (Level 2 Cache)L1๋ณด๋‹ค ๋А๋ฆฌ๊ณ  ํฐ ์บ์‹œ๋ณดํ†ต CPU ์นฉ ์•ˆ์— ์žˆ์Œ
L3 ์บ์‹œ (Level 3 Cache)๊ฐ€์žฅ ํฌ๊ณ  ๋А๋ฆฐ ์บ์‹œ์—ฌ๋Ÿฌ CPU ์ฝ”์–ด๊ฐ€ ๊ณต์œ  ๊ฐ€๋Šฅ
์บ์‹œ ํžˆํŠธ (Cache Hit)์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ์žˆ์„ ๋•Œ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
์บ์‹œ ๋ฏธ์Šค (Cache Miss)์บ์‹œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ๋А๋ฆฐ ๋ฉ”๋ชจ๋ฆฌ(RAM) ์ ‘๊ทผ ํ•„์š”
์ธํ„ฐ๋ŸฝํŠธ (Interrupt)์™ธ๋ถ€ ์‹ ํ˜ธ๋กœ CPU ์ž‘์—…์„ ์ค‘๋‹จ์‹œํ‚ค๊ณ  ์ฒ˜๋ฆฌCPU ์ž‘์—…์„ ์ž ์‹œ ๋ฉˆ์ถ”๊ณ  ์™ธ๋ถ€ ์š”์ฒญ ์ฒ˜๋ฆฌ
์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ์‹œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋‹ด๋‹น
์ปจํ…์ŠคํŠธ ์ €์žฅ (Context Saving)ํ˜„์žฌ CPU ์ƒํƒœ๋ฅผ ์ž„์‹œ ์ €์žฅ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ํ›„ ์›๋ž˜ ์ž‘์—… ๋ณต๊ท€๋ฅผ ์œ„ํ•ด ํ•„์š”
Polling (ํด๋ง)CPU๊ฐ€ ๊ณ„์† ์žฅ์น˜๋ฅผ ์ฒดํฌํ•˜๋Š” ๋ฐฉ์‹๋‹จ์ˆœํ•˜์ง€๋งŒ ๋น„ํšจ์œจ์ 
์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ (Interrupt Vector)์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ ์ฃผ์†Œ ๋ชฉ๋ก์–ด๋–ค ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ• ์ง€ ๊ฒฐ์ •
profile
๐Ÿค”๐Ÿ‘๐Ÿ’ก๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป๐Ÿคฏ๐Ÿ˜‡

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