Home > CS > 2024 > ๐Ÿ’พ [CS] ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปดํ“จํ„ฐ ๊ณผํ•™์„ ์ดํ•ดํ•ด์•ผ ํ• ๊นŒ์š”?

๐Ÿ’พ [CS] ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปดํ“จํ„ฐ ๊ณผํ•™์„ ์ดํ•ดํ•ด์•ผ ํ• ๊นŒ์š”?
CS

๐Ÿ’พ [CS] ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปดํ“จํ„ฐ ๊ณผํ•™(Computer Science)์„ ์ดํ•ดํ•ด์•ผ ํ• ๊นŒ์š”?

  • ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์›๋ฆฌ๋ฅผ ์ž์„ธํžˆ ์ดํ•ดํ•˜๋ ค๋ฉด ์ปดํ“จํ„ฐ ๊ณผํ•™(Computer Science)์˜ ์—ฌ๋Ÿฌ ๊ฐœ๋…๋“ค์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปดํ“จํ„ฐ ๊ณผํ•™(Computer Science)์€ ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ป๊ฒŒ ์ž‘์„ฑ๋˜๊ณ , ์ปดํŒŒ์ผ๋˜๋ฉฐ, ์‹คํ–‰๋˜๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์›๋ฆฌ์™€ ๊ธฐ์ˆ ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ปดํ“จํ„ฐ ๊ณผํ•™(Computer Science)์˜ ๊ฐœ๋…๋“ค์€ ์ปดํ“จํ„ฐ ์•„ํ‚คํ…์ณ(Computer Architecture), ์šด์˜ ์ฒด์ œ(Operating System, OS), ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ(Data Structure), ์•Œ๊ณ ๋ฆฌ์ฆ˜(Algorithm) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

1๏ธโƒฃ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์›๋ฆฌ.

  • ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๊ณผ์ •์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋‹จ๊ณ„์—์„œ๋ถ€ํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ์‹ค์ œ๋กœ CPU์—์„œ ์‹คํ–‰๋˜๋Š” ๋‹จ๊ณ„๊นŒ์ง€๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1๏ธโƒฃ ์ฝ”๋“œ ์ž‘์„ฑ(Programming)

  • ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์†Œ์Šค ์ฝ”๋“œ๋Š” ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ €์žฅ๋˜๋ฉฐ, ์‚ฌ๋žŒ์ด ์ฝ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

2๏ธโƒฃ ์ปดํŒŒ์ผ ๋˜๋Š” ์ธํ„ฐํ”„๋ฆฌํŠธ(Compilation or Interpretation)

  • ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘์„ฑ๋œ ํ›„, ์ปดํŒŒ์ผ๋Ÿฌ(Compiler) ๋˜๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ(Interpreter)๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ(Source Code)๋ฅผ ๋จธ์‹  ์ฝ”๋“œ(Machine Code)๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ๋Ÿฌ(Compiler)๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ์— ์ „์ฒด์ ์œผ๋กœ ๋ฒˆ์—ญํ•˜์—ฌ ์‹คํ–‰ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ˜๋ฉด, ์ธํ„ฐํ”„๋ฆฌํ„ฐ(Interpreter)๋Š” ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์ฝ๊ณ  ๋ฒˆ์—ญํ•˜๋ฉด์„œ ์ฆ‰์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๊ณผ์ •์—์„œ๋Š” ์–ดํœ˜ ๋ถ„์„, ๊ตฌ๋ฌธ ๋ถ„์„, ์ฝ”๋“œ ์ตœ์ ํ™” ๋“ฑ์˜ ๊ณผ์ •์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ์–ดํœ˜ ๋ถ„์„(Lexical Analysis)

์ปดํŒŒ์ผ ๊ณผ์ •์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ, ์†Œ์Šค ์ฝ”๋“œ์—์„œ ๋ฌธ์ž(character)๋“ค์˜ ์—ฐ์†์„ ์˜๋ฏธ ์žˆ๋Š” ๋‹จ์œ„์ธ ํ† ํฐ(Token)์œผ๋กœ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.
์ด ๊ณผ์ •์—์„œ ์–ดํœ˜ ๋ถ„์„๊ธฐ(Lexer) ๋˜๋Š” ์Šค์บ๋„ˆ(Scanner)๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉฐ, ์†Œ์Šค ์ฝ”๋“œ์˜ ํ…์ŠคํŠธ๋ฅผ ์ฝ์–ด๋“ค์—ฌ ํ‚ค์›Œ๋“œ, ์‹๋ณ„์ž, ์—ฐ์‚ฐ์ž, ๋ฆฌํ„ฐ๋Ÿด ๋“ฑ์˜ ํ† ํฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ๊ตฌ๋ฌธ ๋ถ„์„(Syntax Analysis)

์ปดํŒŒ์ผ ๊ณผ์ •์˜ ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ, ์–ดํœ˜ ๋ถ„์„(Lexical Analysis)์—์„œ ์ƒ์„ฑ๋œ ํ† ํฐ(Token)๋“ค์„ ๋ฐ›์•„์„œ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋ฌธ๋ฒ•์ ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•˜๊ณ , ์ด๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ ๋ถ„์„๊ธฐ๋Š” ํŒŒ์„œ(Parser)๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(Syntax Tree) ๋˜๋Š” ํŒŒ์‹ฑ ํŠธ๋ฆฌ(Parsing Tree)๋ผ๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ํ”„๋กœ๊ทธ๋žจ ๋กœ๋“œ(Program Loading)

  • ์ปดํŒŒ์ผ๋œ ์‹คํ–‰ ํŒŒ์ผ์ด ์šด์˜์ฒด์ œ(Operating System, OS)์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.
  • ์šด์˜์ฒด์ œ(Operating System, OS)๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๊ณ , ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library) ๋ฐ ๋ชจ๋“ˆ(Module)์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ™‹โ€โ™‚๏ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)์™€ ํ”„๋ ˆ์ž„์›Œํฌ(Framework)์˜ ์ฐจ์ด์ .
๐Ÿ™‹โ€โ™‚๏ธ ๋ชจ๋“ˆ๊ณผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ ˆ๊ณ  ๋ธ”๋ก์— ๋น„์œ ํ•ด๋ณด๋ฉด?!
๐Ÿ™‹โ€โ™‚๏ธ ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์—์„œ์˜ ๋ชจ๋“ˆ.

4๏ธโƒฃ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰(Program Execution)

  • ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋œ ํ›„, CPU๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ์ฝ๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • CPU๋Š” ๋ช…๋ น์–ด ์‚ฌ์ดํด(Fetch-Decode-Execute)์„ ๋ฐ˜๋ณตํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ๋ช…๋ น์–ด ์‚ฌ์ดํด(Fetch-Decode-Execute Cycle)

๋ช…๋ น์–ด ์‚ฌ์ดํด(Fetch-Decode-Execute Cycle)์€ ์ปดํ“จํ„ฐ์˜ CPU๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ์ž‘๋™ ๊ณผ์ •์„ ์„ค๋ช…ํ•˜๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
์ด๋Š” CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๋ช…๋ น์–ด๋ฅผ ๊ฐ€์ ธ์™€(Fetch), ํ•ด์„ํ•˜๊ณ (Decode), ์‹คํ–‰(Execute)ํ•˜๋Š” ์ผ๋ จ์˜ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ์ด ๋ช…๋ น์–ด ์‚ฌ์ดํด(Fetch-Decode-Excute Cycle)์„ ํ†ตํ•ด ์‹คํ–‰๋˜๋ฉฐ, ๊ฐ ๋‹จ๊ณ„์—์„œ CPU๋Š” ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์€ ์šด์˜์ฒด์ œ(Operating System, OS)์— ์˜ํ•ด ํ”„๋กœ์„ธ์Šค(Process)๋กœ ๊ด€๋ฆฌ๋˜๋ฉฐ, ์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง(Process Scheduling)์„ ํ†ตํ•ด CPU ์‹œ๊ฐ„์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง(Process Scheduling)

์šด์˜์ฒด์ œ(Operating System, OS)๊ฐ€ ํ”„๋กœ์„ธ์Šค(Process)๋ฅผ CPU์— ํ• ๋‹นํ•˜์—ฌ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ž‘์—…์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ๋™์‹œ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰์„ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ์„ ๋•Œ, ํ•œ์ •๋œ CPU ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์Šค์ผ€์ค„๋ง(Scheduling)ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์Šค์ผ€์ค„๋Ÿฌ(Scheduler)๋Š” ์–ด๋–ค ํ”„๋กœ์„ธ์Šค(Process)๊ฐ€ ์–ธ์ œ, ์–ผ๋งˆ๋‚˜ ์˜ค๋žซ๋™์•ˆ CPU๋ฅผ ์‚ฌ์šฉํ• ์ง€ ๊ฒฐ์ •ํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น(Multitasking)

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

์‹ค์ œ๋กœ๋Š” CPU๊ฐ€ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋น ๋ฅด๊ฒŒ ์ „ํ™˜ํ•˜๋ฉด์„œ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.
๊ฐ ์ž‘์—…์€ ์•„์ฃผ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ดํ›„ ๋‹ค๋ฅธ ์ž‘์—…์œผ๋กœ ์ „ํ™˜๋˜๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค
์ด๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๊ฐ–๊ฒ…๋น„ ๋™์‹œ์— ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

5๏ธโƒฃ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์ž์› ๊ด€๋ฆฌ(Resource Management)

  • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ, ํŒŒ์ผ, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋“ฑ ๋‹ค์–‘ํ•œ ์ž์›๋“ค์ด ์šด์˜์ฒด์ œ(Operating System, OS)์— ์˜ํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • ์šด์˜์ฒด์ œ(Operating System, OS)๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•˜๋Š” ์ž์›์„ ์ถ”์ ํ•˜๊ณ , ์ถฉ๋Œ์ด๋‚˜ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ๊ณผ์ •์—์„œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋“ฑ์˜ ์ž‘์—…๋„ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ ์ปดํ“จํ„ฐ ๊ณผํ•™์˜ ๊ฐœ๋…์ด ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ.

  • ์œ„์˜ ๋‹จ๊ณ„๋“ค์„ ์ž์„ธํžˆ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปดํ“จํ„ฐ ๊ณผํ•™(Computer Science)์˜ ์—ฌ๋Ÿฌ ๋ถ„์•ผ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ ์ปดํ“จํ„ฐ ์•„ํ‚คํ…์ณ(Computer Architecture)

  • ์ปดํ“จํ„ฐ ์•„ํ‚คํ…์ฒ˜(Computer Architecture)๋Š” CPU, ๋ฉ”๋ชจ๋ฆฌ, I/O ์žฅ์น˜์™€ ๊ฐ™์€ ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด์˜ ๊ตฌ์กฐ์™€ ์ž‘๋™ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ CPU๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€, ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ €์žฅ๋˜๊ณ  ์ ‘๊ทผ๋˜๋Š”์ง€๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ์ปดํ“จํ„ฐ ์•„ํ‚คํ…์ณ(Computer Architecture) ์ง€์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ, ํŒŒ์ดํ”„๋ผ์ธ, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

CPU์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ(Random Access Memory, RAM) ์‚ฌ์ด์— ์œ„์น˜ํ•œ ๊ณ ์†์˜ ์ž‘์€ ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๋กœ, ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ๋ช…๋ น์–ด๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋‚˜ ๋ช…๋ น์–ด๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ•˜์—ฌ CPU๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ(Cache Memory)๋Š” ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ(Random Access Memory, RAM)๋ณด๋‹ค ์ ‘๊ทผ ์†๋„๊ฐ€ ํ›จ์”ฌ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์™€ ๋ช…๋ น์–ด๋ฅผ ๋” ๋นจ๋ฆฌ ์ฝ์–ด ๋“ค์ผ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

๐Ÿ“ ํŒŒ์ดํ”„๋ผ์ธ(Pipline)

ํŒŒ์ดํ”„๋ผ์ธ(Pipline)์€ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์—ฐ์†์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„๊ณ , ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•œ ๊ธฐ์ˆ ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
ํŒŒ์ดํ”„๋ผ์ธ(Pipline)์€ ์ปดํ“จํ„ฐ์˜ CPU ์„ค๊ณ„์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ช…๋ น์–ด๋ฅผ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ ๋‹จ๊ณ„๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ์œผ๋กœ์จ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

2๏ธโƒฃ ์šด์˜์ฒด์ œ(Operating System)

  • ์šด์˜์ฒด์ œ(Operating System)๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ๋“ฑ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ์šด์˜์ฒด์ œ(Operating System, OS)๊ฐ€ ์–ด๋–ป๊ฒŒ ํ”„๋กœ์„ธ์Šค๋ฅผ ์Šค์ผ€์ฅด๋งํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์ž…์ถœ๋ ฅ(I/O) ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ง€์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ๊ทธ๋žจ์ด ๋™์‹œ์— ์‹คํ–‰๋  ๋•Œ ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น๊ณผ ์Šค๋ ˆ๋“œ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ์ปดํŒŒ์ผ๋Ÿฌ ์ด๋ก (Compiler Theory)

  • ์ปดํŒŒ์ผ๋Ÿฌ(Compiler)๋Š” ์†Œ์Šค ์ฝ”๋“œ(Source Code)๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ, ์ปดํŒŒ์ผ๋Ÿฌ ์ด๋ก ์€ ์ด ๊ณผ์ •์˜ ์–ดํœ˜ ๋ถ„์„, ๊ตฌ๋ฌธ ๋ถ„์„, ์ตœ์ ํ™” ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฐ„๊ณ„๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ป๊ฒŒ ์ตœ์ ํ™”๋˜์–ด ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š”์ง€, ์–ด๋–ค ์ฝ”๋“œ๊ฐ€ ๋” ํšจ์œจ์ ์ธ์ง€๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ(Compiler) ์ด๋ก ์˜ ์ง€์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ์ปดํŒŒ์ผ๋Ÿฌ(Compiler)

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•˜์—ฌ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋งŒ๋“œ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.
์‚ฌ๋žŒ์ด ์ฝ๊ณ  ์ž‘์„ฑํ•œ ๊ณ ์ˆ˜์ค€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด(์˜ˆ: C, C++, Java, Python)๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ €์ˆ˜์ค€ ์–ธ์–ด(๊ธฐ๊ณ„์–ด, ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ)๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ํ•œ ๋ฒˆ์— ์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ฒˆ์—ญํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์‹คํ–‰ ํŒŒ์ผ(Executable File)๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
์ด ํŒŒ์ผ์€ ์šด์˜์ฒด์ œ(Operating System, OS)์—์„œ ์ง์ ‘ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ดํ›„์—๋Š” ๋ณ„๋„์˜ ๊ณผ์ • ์—†์ด ๋ฐ”๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4๏ธโƒฃ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ(Data Structures)

  • ํ”„๋กœ๊ทธ๋žจ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด(Array), ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List), ์Šคํƒ(Stack), ํ(Queue), ํŠธ๋ฆฌ(Tree), ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table) ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์†๋„์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์ ํ™”ํ•˜๋ ค๋ฉด ์–ด๋–ค ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ์ ํ•ฉํ•œ์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

5๏ธโƒฃ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Algorithms)

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

6๏ธโƒฃ ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํ‚น(Computer Networking)

  • ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ(์˜ˆ: ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๋“ฑ)์€ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ๊ณผ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ „์†กํ•˜๊ณ  ์ˆ˜์‹ ํ•˜๋Š”์ง€, ๋„คํŠธ์›Œํฌ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์— ์–ด๋–ป๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์ง€์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์›๋ฆฌ์™€ ์ปดํ“จํ„ฐ ๊ณผํ•™์˜ ๊ด€๊ณ„.

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

4๏ธโƒฃ ์š”์•ฝ.

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