Skip to content

Latest commit

ย 

History

History
818 lines (602 loc) ยท 33.7 KB

Interview List.md

File metadata and controls

818 lines (602 loc) ยท 33.7 KB

Interview List

๊ฐ„๋‹จํžˆ ๊ฐœ๋…๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ฉฐ ๋จธ๋ฆฌ ์†์— ๋„ฃ์ž~




์–ธ์–ด(C++ ๋“ฑ)


Vector์™€ ArrayList์˜ ์ฐจ์ด๋Š”?

Vector : ๋™๊ธฐ์‹. ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฒกํ„ฐ ์ž‘์—… ์ค‘์ด๋ฉด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฒกํ„ฐ ๋ณด์œ  ๋ถˆ๊ฐ€๋Šฅ

ArrayList : ๋น„๋™๊ธฐ์‹. ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ arraylist์—์„œ ๋™์‹œ ์ž‘์—…์ด ๊ฐ€๋Šฅ


Serialization์ด๋ž€?

์ง๋ ฌํ™”. ๊ฐ์ฒด์˜ ์ƒํƒœ ํ˜น์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๋งท์œผ๋กœ ๋ณ€ํ™˜ํ•ด์คŒ

๋‚˜์ค‘์— ์žฌ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๊ฑฐ๋‚˜ JSON์„ ์ž๋ฐ” ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ


Hash๋ž€?

๋ฐ์ดํ„ฐ ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ์‹œ, ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ€์–ด๋‚ด๊ฑฐ๋‚˜ ์ฑ„์šฐ์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ์™€ ์—ฐ๊ด€๋œ ๊ณ ์œ ํ•œ ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•ด ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋‹ค


Call by Value vs Call by Reference

๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ : ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋กœ ๋„˜๊ธฐ๋Š” ํ˜ธ์ถœ ๋ฐฉ์‹. ์›๋ณธ ๊ฐ’ ๋ณ€๊ฒฝX

์ฐธ์กฐ์— ์˜ํ•œ ํ˜ธ์ถœ : ์ฃผ์†Œ ๊ฐ’์„ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋Š” ํ˜ธ์ถœ ๋ฐฉ์‹. ์›๋ณธ ๊ฐ’ ๋ณ€๊ฒฝO


๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ์ฐจ์ด๋Š”?

๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง. ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ฒˆ์— ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๊ทผ ์†๋„ ๋น ๋ฆ„.

ํฌ๊ธฐ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ์‹œ ๊ทธ ์œ„์น˜์˜ ๋‹ค์Œ ์œ„์น˜๋ถ€ํ„ฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ๋˜๋Š” ๋‹จ์  ์กด์žฌ

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” ์ธ๋ฑ์Šค ๋Œ€์‹ ์— ํ˜„์žฌ ์œ„์น˜์˜ ์ด์ „/๋‹ค์Œ ์œ„์น˜๋ฅผ ๊ธฐ์–ตํ•จ.

ํฌ๊ธฐ๋Š” ๊ฐ€๋ณ€์ . ์ธ๋ฑ์Šค ์ ‘๊ทผ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋งํฌ๋ฅผ ์ญ‰ ๋”ฐ๋ผ๊ฐ€์•ผ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•จ. (๋”ฐ๋ผ์„œ ๋ฐฐ์—ด๋ณด๋‹ค ์†๋„ ๋Š๋ฆผ)

๋ฐ์ดํ„ฐ ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ๋Š” ๋…ผ๋ฆฌ์  ์ฃผ์†Œ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ์šฉ์ดํ•จ

  • ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ๊ณ  ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ์—†์Œ. ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์„ ๋งŽ์ด ํ•ด์•ผํ•  ๋•Œ โ†’ Array
  • ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ ๊ณ  ์‚ฝ์ž…/์‚ญ์ œ ๋นˆ๋ฒˆํ•จ โ†’ LinkedList

์Šค๋ ˆ๋“œ๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑํ•˜๋‚˜์š”? ์žฅ๋‹จ์ ๋„ ๋งํ•ด์ฃผ์„ธ์š”

์ƒ์„ฑ๋ฐฉ๋ฒ• : Runnable(์ธํ„ฐํŽ˜์ด์Šค)๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ํด๋ž˜์Šค or Thread ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ run() ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ๋ฉด ๋จ

์žฅ์  : ๋น ๋ฅธ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ, ์ •๋ณด ๊ณต์œ ๊ฐ€ ์‰ฌ์›€

๋‹จ์  : ๋ฐ๋“œ๋ฝ์— ๋น ์งˆ ์œ„ํ—˜์ด ์กด์žฌ


C++ ์‹คํ–‰ ๊ณผ์ •

์ „์ฒ˜๋ฆฌ : #define, #include ์ง€์‹œ์ž ํ•ด์„

์ปดํŒŒ์ผ : ๊ณ ๊ธ‰ ์–ธ์–ด ์†Œ์Šค ํ”„๋กœ๊ทธ๋žจ ์ž…๋ ฅ ๋ฐ›๊ณ , ์–ด์…ˆ๋ธ”๋ฆฌ ํŒŒ์ผ ๋งŒ๋“ฌ

์–ด์…ˆ๋ธ” : ์–ด์…ˆ๋ธ”๋ฆฌ ํŒŒ์ผ์„ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๋กœ ๋งŒ๋“ฌ

๋งํฌ : ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์„ ์—ฎ์–ด ์‹คํ–‰ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜ ์—ฐ๊ฒฐ

์‹คํ–‰


๋ฉ”๋ชจ๋ฆฌ, ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๊ฐ๋‚˜๋Š” ๋ฐฉ๋ฒ•์€?

static์„ ์‚ฌ์šฉํ•ด ์„ ์–ธํ•œ๋‹ค.

์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ผ์ด ์—†์œผ๋ฉด, static ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธํ•˜์—ฌ ํ˜ธ์ถœํ•˜์ž

๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์„œ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ ˆ์•ฝ๋˜๊ณ  ์—ฐ์†์ ์œผ๋กœ ๊ทธ ๊ฐ’์˜ ํ๋ฆ„์„ ์ด์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์กด์žฌ


ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์˜ ์ฐจ์ด๋Š”?

๊ตฌ์กฐ์ฒด๋Š” ํ•˜๋‚˜์˜ ๊ตฌ์กฐ๋กœ ๋ฌถ์ผ ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค.

ํด๋ž˜์Šค๋Š” ๋ณ€์ˆ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ฉ”์†Œ๋“œ๋„ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

(๋ฌผ๋ก  ํ•จ์ˆ˜ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•ด ๊ตฌ์กฐ์ฒด๋„ ํด๋ž˜์Šค์ฒ˜๋Ÿผ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค.)


ํฌ์ธํ„ฐ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

ํฌ์ธํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜์ž„

์ฃผ์†Œ๋ฅผ ์ง€์นญํ•˜๊ณ  ์žˆ๋Š” ๊ณณ์ธ๋ฐ, ์˜ˆ๋ฅผ ๋“ค๋ฉด ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ์—์„œ ํฌ์ธํ„ฐ๋Š” ํ•ด๋‹น ์ธต์„ ํ‘œ์‹œํ•˜๋Š” ๋ฒ„ํŠผ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ. 10์ธต์„ ๋ˆ„๋ฅด๋ฉด 10์ธต์œผ๋กœ ์ด๋™ํ•˜๋“ฏ, ํ•ด๋‹น ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜!

ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•  ์ ์€, ์–ด๋–ค ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์–ด์•ผ๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•จ




์šด์˜์ฒด์ œ


ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ์ฐจ์ด

ํ”„๋กœ์„ธ์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•˜๋ฉฐ, ์Šค๋ ˆ๋“œ๋Š” ์ด ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„ ๋‹จ์œ„๋ฅผ ๋งํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ตœ์†Œ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ ๋ณ„๋„์˜ ์ฃผ์†Œ๊ณต๊ฐ„์„ ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹น๋ฐ›๋Š”๋‹ค. (code, data, heap, stack)

์Šค๋ ˆ๋“œ๋Š” ์ด์ค‘์— stack๋งŒ ๋”ฐ๋กœ ํ• ๋‹น๋ฐ›๊ณ  ๋‚˜๋จธ์ง€ ์˜์—ญ์€ ์Šค๋ ˆ๋“œ๋ผ๋ฆฌ ์„œ๋กœ ๊ณต์œ ํ•œ๋‹ค.

์š”์•ฝ

ํ”„๋กœ์„ธ์Šค : ์ž์‹ ๋งŒ์˜ ๊ณ ์œ  ๊ณต๊ฐ„๊ณผ ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์‚ฌ์šฉ

์Šค๋ ˆ๋“œ : ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์™€ ๊ณต๊ฐ„๊ณผ ์ž์›์„ ๊ณต์œ ํ•˜๋ฉด์„œ ์‚ฌ์šฉ


๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๊ฑธ ๊ตณ์ด ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋กœ ํ•˜๋Š” ์ด์œ ๋Š”?

ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ž์›์„ ํ• ๋‹นํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์ด ๊ฐ์†Œํ•จ์œผ๋กœ์จ ์ž์›์˜ ํšจ์œจ์  ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•จ

ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ (IPC)๋ณด๋‹ค ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ํ†ต์‹  ๋น„์šฉ์ด ์ ์–ด ์ž‘์—…๋“ค ๊ฐ„ ๋ถ€๋‹ด์ด ๊ฐ์†Œํ•จ

๋Œ€์‹ , ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๊ณต์œ  ์ž์›์œผ๋กœ ์ธํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด '๋™๊ธฐํ™”'์— ์‹ ๊ฒฝ์จ์•ผ ํ•œ๋‹ค.


๊ต์ฐฉ์ƒํƒœ(DeadLock)๊ฐ€ ๋ฌด์—‡์ด๋ฉฐ, 4๊ฐ€์ง€ ์กฐ๊ฑด์€?

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์–ป์ง€ ๋ชปํ•ด ๋‹ค์Œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค.

์‹œ์Šคํ…œ์ ์œผ๋กœ ํ•œ์ •๋œ ์ž์›์„ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ž„

๊ต์ฐฉ์ƒํƒœ์˜ 4๊ฐ€์ง€ ์กฐ๊ฑด์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

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

์ด 4๊ฐ€์ง€ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ๊ต์ฐฉ์ƒํƒœ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ

(์ˆœํ™˜๋Œ€๊ธฐ๋Š” ์ ์œ ๋Œ€๊ธฐ์™€ ๋น„์„ ์ ์„ ๋ชจ๋‘ ๋งŒ์กฑํ•ด์•ผ๋งŒ ์„ฑ๋ฆฝํ•ฉ. ๋”ฐ๋ผ์„œ 4๊ฐ€์ง€๊ฐ€ ์„œ๋กœ ๋…๋ฆฝ์ ์ด์ง„ ์•Š์Œ)


๊ต์ฐฉ์ƒํƒœ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 4๊ฐ€์ง€

  • ์˜ˆ๋ฐฉ
  • ํšŒํ”ผ
  • ๋ฌด์‹œ
  • ๋ฐœ๊ฒฌ

๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต (์ƒ-ํ•˜์ธต ์ˆœ)

๋ ˆ์ง€์Šคํ„ฐ
์บ์‹œ
๋ฉ”๋ชจ๋ฆฌ
ํ•˜๋“œ๋””์Šคํฌ

๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜ First fit, Next fit, Best fit ๊ฒฐ๊ณผ

  • First fit : ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฒ€์‚ฌํ•ด์„œ ํฌ๊ธฐ๊ฐ€ ์ถฉ๋ถ„ํ•œ ์ฒซ๋ฒˆ์งธ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น
  • Next fit : ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฐธ์กฐํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ๋ถ€ํ„ฐ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•ด ๊ณต๊ฐ„์„ ์ฐพ์Œ
  • Best fit : ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฒ€์‚ฌํ•ด์„œ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ณต๊ฐ„์— ํ• ๋‹น

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ฅธ ํŽ˜์ด์ง€ ํดํŠธ ๋ฐฉ์‹

OPT : ์ตœ์  ๊ต์ฒด. ์•ž์œผ๋กœ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ํŽ˜์ด์ง€ ๊ต์ฒด (์‹คํ˜„ ๊ฐ€๋Šฅ์„ฑ ํฌ๋ฐ•)

FIFO : ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋œ ์ˆœ์„œ๋Œ€๋กœ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด

LRU : ์ตœ๊ทผ์— ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด

LFU : ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด

NUR : ์ตœ๊ทผ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด


์™ธ๋ถ€ ๋‹จํŽธํ™”์™€ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋ž€?

์™ธ๋ถ€ ๋‹จํŽธํ™” : ์ž‘์—…๋ณด๋‹ค ๋งŽ์€ ๊ณต๊ฐ„์ด ์žˆ๋”๋ผ๋„ ์‹ค์ œ๋กœ ๊ทธ ์ž‘์—…์„ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ (๋ฉ”๋ชจ๋ฆฌ ๋ฐฐ์น˜์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ)

๋‚ด๋ถ€ ๋‹จํŽธํ™” : ์ž‘์—…์— ํ•„์š”ํ•œ ๊ณต๊ฐ„๋ณด๋‹ค ๋งŽ์€ ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›์Œ์œผ๋กœ์จ ๋ฐœ์ƒํ•˜๋Š” ๋‚ด๋ถ€์˜ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„


๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ž€?

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


ํŽ˜์ด์ง•๊ณผ ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์ด๋ž€?

ํŽ˜์ด์ง•

ํŽ˜์ด์ง€ ๋‹จ์œ„์˜ ๋…ผ๋ฆฌ-๋ฌผ๋ฆฌ ์ฃผ์†Œ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•. ๋…ผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์ด ํ•˜๋‚˜์˜ ์—ฐ์†์ ์ธ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š” ์ œ์•ฝ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ• ๋…ผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„๊ณผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๋ถ„๋ฆฌํ•ด์•ผํ•จ(์ฃผ์†Œ์˜ ๋™์  ์žฌ๋ฐฐ์น˜ ํ—ˆ์šฉ), ๋ณ€ํ™˜์„ ์œ„ํ•œ MMU ํ•„์š”

ํŠน์ง• : ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ฅผ ์—†์•จ ์ˆ˜ ์žˆ์Œ. ํŽ˜์ด์ง€๊ฐ€ ํด์ˆ˜๋ก ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋„ ์ปค์ง

์„ธ๊ทธ๋จผํ…Œ์ด์…˜

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


๋ฎคํ…์Šค, ์„ธ๋งˆํฌ์–ด๊ฐ€ ๋ญ”์ง€, ์ฐจ์ด์ ์€?

์„ธ๋งˆํฌ์–ด

์šด์˜์ฒด์ œ์—์„œ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘์†์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์‹ ํ˜ธ ๊ณต์œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํ—ˆ์šฉ์น˜๋งŒํผ๋งŒ ๋™์‹œ์— ์‚ฌ์šฉ์ž ์ ‘๊ทผ ๊ฐ€๋Šฅ ์Šค๋ ˆ๋“œ๋“ค์€ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ๊ณ , ์„ธ๋งˆํฌ์–ด๋Š” ์นด์šดํŠธ๊ฐ€ ํ•˜๋‚˜์”ฉ ์ค„์–ด๋“ค๊ฒŒ ๋˜๋ฉฐ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉ์ค‘์ธ ๊ฒฝ์šฐ(์นด์šดํŠธ=0) ๋‹ค์Œ ์ž‘์—…์€ ๋Œ€๊ธฐ๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค

๋ฎคํ…์Šค

์ƒํ˜ธ๋ฐฐ์ œ, ์ œ์–ด๋˜๋Š” ์„น์…˜์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น ์„น์…˜์— ์ ‘๊ทผํ•˜๋ ค๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋“ค์„ ๊ฐ•์ œ์ ์œผ๋กœ ๋ง‰์Œ์œผ๋กœ์จ ์ฒซ ๋ฒˆ์งธ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•ด๋‹น ์„น์…˜์„ ๋น ์ ธ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ (๋Œ€๊ธฐ์—ด(ํ) ๊ตฌ์กฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ)

์ฐจ์ด์ 
  • ์„ธ๋งˆํฌ์–ด๋Š” ๋ฎคํ…์Šค๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฎคํ…์Šค๋Š” ์„ธ๋งˆํฌ์–ด๊ฐ€ ๋  ์ˆ˜ ์—†์Œ
  • ์„ธ๋งˆํฌ์–ด๋Š” ์†Œ์œ  ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ฎคํƒ์Šค๋Š” ์†Œ์œ ๊ฐ€ ๊ฐ€๋Šฅํ•จ
  • ๋™๊ธฐํ™”์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ค๋ฆ„

Context Switching์ด๋ž€?

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

ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ์€ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ PCB์— ๊ธฐ๋ก๋จ


์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ vs ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ ์ฐจ์ด๋Š”?

์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ

์žฅ์  : context switching์ด ์—†์–ด์„œ ์ปค๋„ ์Šค๋ ˆ๋“œ๋ณด๋‹ค ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์Œ (์Šค๋ ˆ๋“œ ์ „ํ™˜ ์‹œ ์ปค๋„ ์Šค์ผ€์ค„๋Ÿฌ ํ˜ธ์ถœํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ)

๋‹จ์  : ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์ปค๋„๋กœ ์ง„์ž…ํ•˜๋Š” ์ˆœ๊ฐ„, ๋‚˜๋จธ์ง€ ์Šค๋ ˆ๋“œ๋“ค๋„ ์ „๋ถ€ ์ •์ง€๋จ (์ปค๋„์ด ์Šค๋ ˆ๋“œ์˜ ์กด์žฌ๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์—)

์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ

์žฅ์  : ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ณด๋‹ค ํšจ์œจ์ ์ž„. ์ปค๋„ ์Šค๋ ˆ๋“œ๋ฅผ ์“ฐ๋ฉด ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋Š” CPU๊ฐ€ ์•„๋ฌด๋ฆฌ ๋งŽ์•„๋„ ์ปค๋„ ๋ชจ๋“œ์˜ ์Šค์ผ€์ค„์ด ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ๊ฐ CPU์— ํšจ์œจ์ ์œผ๋กœ ์Šค๋ ˆ๋“œ ๋ฐฐ๋‹นํ•  ์ˆ˜๊ฐ€ ์—†์Œ

๋‹จ์  : context switching์ด ๋ฐœ์ƒํ•จ. ์ด ๊ณผ์ •์—์„œ ํ”„๋กœ์„ธ์„œ ๋ชจ๋“œ๊ฐ€ ์‚ฌ์šฉ์ž ๋ชจ๋“œ์™€ ์ปค๋„ ๋ชจ๋“œ ์‚ฌ์ด๋ฅผ ์›€์ง์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์ด ๋Œ์•„๋‹ค๋‹ ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค.


๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋ž€?

ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์™€ ์‹ค์ œ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ

๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ = ์‹ค์ œ + ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์•ˆ๋จ

๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์„œ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ๋งž์ง€๋งŒ, ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์“ด๋‹ค๊ณ  ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜

์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์— ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋ฉด, ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋นผ๋‚ด์–ด ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด๋‘๊ณ , ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์—์„  ์ฒ˜๋ฆฌ๋งŒ ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ญํ• ์ด๋‹ค.

์ฆ‰, ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ๋†€๊ณ  ์žˆ๋Š” ๊ณต๊ฐ„์ด ์—†๊ฒŒ ๊ณ„์† ์ผ์„ ์‹œํ‚ค๋Š” ๊ฒƒ. ์ด๋ฅผ ๋„์™€์ฃผ๋Š” ๊ฒƒ์ด '๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ'


fork()์™€ vfork()์˜ ์ฐจ์ด์ ์€?

fork()๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ์‚ฌ์šฉ

vfork()๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•จ. ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— fork()๋ณด๋‹ค ์ƒ์„ฑ ์†๋„ ๋น ๋ฆ„. ํ•˜์ง€๋งŒ ์ž์›์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์›์— ๋Œ€ํ•œ race condition์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ exitํ•˜๊ฑฐ๋‚˜ execute๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ „๊นŒ์ง€ block๋œ๋‹ค


Race Condition์ด๋ž€?

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

Race Condition์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด, ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Œ. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์€ ํ”ผํ•ด์•ผ ํ•˜๋ฉฐ ์ƒํ˜ธ๋ฐฐ์ œ๋‚˜ ์ž„๊ณ„๊ตฌ์—ญ์œผ๋กœ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.


๋ฆฌ๋ˆ…์Šค์—์„œ ์‹œ์Šคํ…œ ์ฝœ๊ณผ ์„œ๋ธŒ๋ฃจํ‹ด์˜ ์ฐจ์ด๋Š”?

์šฐ์„  ์ปค๋„์„ ํ™•์ธํ•˜์ž

์ปค๋„์€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋‘˜๋Ÿฌ์‹ธ๊ณ  ์žˆ์Œ

์ฆ‰, ์ปค๋„์€ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ API์™€ ๊ฐ™์Œ

์„œ๋ธŒ๋ฃจํ‹ด(SubRoutine)์€ ์šฐ๋ฆฌ๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ API๋ฅผ ์–˜๊ธฐํ•˜๋Š” ๊ฒƒ

stdio.h์— ์žˆ๋Š” printf๋‚˜ scanf
string.h์— ์žˆ๋Š” strcmp๋‚˜ strcpy
์„œ๋ธŒ๋ฃจํ‹ด๊ณผ ์‹œ์Šคํ…œ ์ฝœ์˜ ์ฐจ์ด๋Š”?

์„œ๋ธŒ๋ฃจํ‹ด์ด ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜๊ณ , ์‹œ์Šคํ…œ ์ฝœ์ด ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์„œ๋ธŒ๋ฃจํ‹ด์— ๋ณด๋ƒ„

์‹œ์Šคํ…œ ์ฝœ ํ˜ธ์ถœ ์‹œ, ์ปค๋„์ด ํ˜ธ์ถœ๋˜๊ณ  ์ปค๋„์ด ์ˆ˜ํ–‰ํ•œ ์ž„์˜์˜ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์‹œ์Šคํ…œ ์ฝœ๋กœ ๋ณด๋ƒ„

์ฆ‰, ์ง„ํ–‰ ๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์„œ๋ธŒ๋ฃจํ‹ด์ด ์‹œ์Šคํ…œ ์ฝœ ํ˜ธ์ถœ โ†’ ์‹œ์Šคํ…œ ์ฝœ์€ ์ปค๋„ ํ˜ธ์ถœ โ†’ ์ปค๋„์€ ์ž์‹ ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  (ํ•˜๋“œ์›จ์–ด๋ฅผ ์ œ์–ดํ•จ) ๋‚˜์˜จ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ์Šคํ…œ ์ฝœ์—๊ฒŒ ๋ณด๋ƒ„ โ†’ ์‹œ์Šคํ…œ ์ฝœ์ด ๋‹ค์‹œ ์„œ๋ธŒ๋ฃจํ‹ด์—๊ฒŒ ๋ณด๋ƒ„

์‹ค๋ฌด๋กœ ์‚ฌ์šฉํ•  ๋•Œ ๋‘˜์˜ ํฐ ์ฐจ์ด๋Š” ์—†์Œ(api๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋™์ผ)




๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค


์˜ค๋ผํด ์‹œํ€€์Šค(Oracle Sequence)

UNIQUEํ•œ ๊ฐ’์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์˜ค๋ผํด ๊ฐ์ฒด

์‹œํ€€์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด PK์™€ ๊ฐ™์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ปฌ๋Ÿผ์„ ์ž๋™ ์ƒ์„ฑํ• ์ˆ˜ ์žˆ๋‹ค.

CREATE SEQUENCE ์‹œํ€€์Šค์ด๋ฆ„
	START WITH n
	INCREMENT BY n ...

DBMS๋ž€?

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์‹œ์Šคํ…œ


DBMS์˜ ๊ธฐ๋Šฅ์€?

  • ์ •์˜ ๊ธฐ๋Šฅ(DDL: Data Definition Language) >
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์–ด๋–ค ์šฉ๋„์ด๋ฉฐ ์–ด๋–ค ์‹์œผ๋กœ ์ด์šฉ๋ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ •์˜๊ฐ€ ํ•„์š”ํ•จ
- CREATE, ALTER, DROP, RENAME
  • ์กฐ์ž‘ ๊ธฐ๋Šฅ(DML: Data Manipulation Language) >
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์„ ๋•Œ ๊ทธ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ ์ถ”๊ฐ€ ๊ฒ€์ƒ‰ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•จ
- SELECT, INSERT, UPDATE, DELETE
  • ์ œ์–ด ๊ธฐ๋Šฅ(DCL: Data Control Language) >
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ณ  ๊ฐ์ฒด๋“ค์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒํ•œ์„ ์ฃผ๊ณ  ํšŒ์ˆ˜ํ•˜๋Š” ๋ช…๋ น
- GRANT REVOKE

UML์ด๋ž€?

ํ”„๋กœ๊ทธ๋žจ ์„ค๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ทธ๋ฆผ์œผ๋กœ ๋œ ํ‘œ๊ธฐ๋ฒ•

์ดํ•ดํ•˜๊ธฐ ํž˜๋“  ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ์˜์‚ฌ์†Œํ†ตํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ฌ


DB์—์„œ View๋Š” ๋ฌด์—‡์ธ๊ฐ€? ๊ฐ€์ƒ ํ…Œ์ด๋ธ”์ด๋ž€?

ํ—ˆ์šฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œํ•œ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ๊ฒƒ

ํ•˜๋‚˜ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์—์„œ ์œ ๋„๋œ ๊ฐ€์ƒ ํ…Œ์ด๋ธ”์ด๋‹ค.

  • ์‚ฌ์šฉ์ž๊ฐ€ view์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์›๋ณธ์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค.

view์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ„ํŽธํžˆ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์  ์กด์žฌ


์ •๊ทœํ™”๋ž€?

์ค‘๋ณต์„ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ , ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ

์ด์ƒํ˜„์ƒ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก ์ •๊ทœํ™” ์‹œํ‚จ๋‹ค!


์ด์ƒํ˜„์ƒ์ด๋ž€?

๋ฆด๋ ˆ์ด์…˜์—์„œ ์ผ๋ถ€ ์†์„ฑ๋“ค์˜ ์ข…์†์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ (insert, update, delete)


๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋‚˜์š”?

๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ ๋ฐฉ๋ฒ•์€?

๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ ์‹œ ๋ฌด๊ฒฐ์„ฑ ์กฐ๊ฑด์„ ๊ฒ€์ฆํ•œ๋‹ค.

ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฒคํŠธ ์‹œ ์ €์žฅ SQL์„ ์‹คํ–‰ํ•˜๊ณ  ๋ฌด๊ฒฐ์„ฑ ์กฐ๊ฑด์„ ์‹คํ–‰ํ•œ๋‹ค.

DB์ œ์•ฝ์กฐ๊ฑด ๊ธฐ๋Šฅ์„ ์„ ์–ธํ•œ๋‹ค.


๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฌด๊ฒฐ์„ฑ์ด๋ž€?

ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ชจ๋“  ํ–‰๋“ค์ด ์œ ์ผํ•œ ์‹๋ณ„์ž๋ฅผ ๊ฐ€์งˆ ๊ฒƒ์„ ์š”๊ตฌํ•จ (๊ฐ™์€ ๊ฐ’ X)

์™ธ๋ž˜ํ‚ค ๊ฐ’์€ NULL์ด๊ฑฐ๋‚˜ ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ PK๊ฐ’์ด์–ด์•ผ ํ•จ

ํ•œ ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด NULL ํ—ˆ์šฉ ์—ฌ๋ถ€์™€ ์ž๋ฃŒํ˜•, ๊ทœ์น™์œผ๋กœ ํƒ€๋‹นํ•œ ๋ฐ์ดํ„ฐ ๊ฐ’ ์ง€์ •


ํŠธ๋ฆฌ๊ฑฐ๋ž€?

์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ์ •์˜๋œ ์ €์žฅ ํ”„๋กœ์‹œ์ €

(insert, update, delete๋ฌธ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•œ๋‹ค.)

์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š”?

์—…๋ฌด ๊ทœ์น™ ๋ณด์žฅ, ์—…๋ฌด ์ฒ˜๋ฆฌ ์ž๋™ํ™”, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๊ฐ•ํ™”


์˜ค๋ผํด๊ณผ MySQL์˜ ์ฐจ์ด๋Š”?

์ผ๋‹จ Oracle์ด MySQL๋ณด๋‹ค ํ›จ~์”ฌ ์ข‹์Œ

์˜ค๋ผํด : ๋Œ€๊ทœ๋ชจ ํŠธ๋žœ์žญ์…˜ ๋กœ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋Œ€์šฉ๋Ÿ‰ DB๋ฅผ ๋ถ„์‚ฐํ•จ

MySQL : ๋‹จ์ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ œํ•œ๋˜์–ด์žˆ๊ณ , ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋Š” ๋ถ€์ ํ•ฉ. ์ž‘์€ ํ”„๋กœ์ ํŠธ์—์„œ ์ ์šฉ์‹œํ‚ค๊ธฐ ์šฉ์ดํ•˜๋ฉฐ ์ด์ „ ์ƒํƒœ๋ฅผ ๋ณต์›ํ•˜๋Š”๋ฐ commit๊ณผ rollback๋งŒ ์กด์žฌ


Commit๊ณผ Rollback์ด๋ž€?

Commit : ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„(ํŠธ๋žœ์žญ์…˜)์— ๋Œ€ํ•œ ์ž‘์—…์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋๋‚ฌ์„ ๋•Œ, ์ด ํŠธ๋žœ์žญ์…˜์ด ํ–‰ํ•œ ๊ฐฑ์‹  ์—ฐ์‚ฐ์ด ์™„๋ฃŒ๋œ ๊ฒƒ์„ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ์—ฐ์‚ฐ

Rollback : ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด DB์˜ ์ผ๊ด€์„ฑ์„ ๊นจ๋œจ๋ ธ์„ ๋•Œ, ๋ชจ๋“  ์—ฐ์‚ฐ์„ ์ทจ์†Œ์‹œํ‚ค๋Š” ์—ฐ์‚ฐ


JDBC์™€ ODBC์˜ ์ฐจ์ด๋Š”?

  • JDBC > ์ž๋ฐ”์—์„œ DB์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ, ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ ๊ฐ€๋Šฅ > DBMS ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋งž๋Š” jdbc๋ฅผ ์„ค์น˜ํ•ด์•ผํ•จ
  • ODBC > ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ DB ์ ‘๊ทผ์„ ์œ„ํ•œ ํ‘œ์ค€ ๊ฐœ๋ฐฉํ˜• ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ธํ„ฐํŽ˜์ด์Šค > MS์‚ฌ์—์„œ ๋งŒ๋“ค์—ˆ์œผ๋ฉฐ, Excel/Text ๋“ฑ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์—์„œ ์ธ๋ฑ์Šค(์ƒ‰์ธ)์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”

  • ์ฑ…์œผ๋กœ ๋น„์œ ํ•˜์ž๋ฉด ๋ชฉ์ฐจ๋กœ ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • DBMS์—์„œ ์ €์žฅ ์„ฑ๋Šฅ์„ ํฌ์ƒํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ์†๋„๋ฅผ ๋†’์ด๋Š” ๊ธฐ๋Šฅ
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ๋“ค์–ด๊ฐ„๋‹ค
  • ์–‘์ด ๋งŽ์€ ํ…Œ์ด๋ธ”์—์„œ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋งŒ ๋ถˆ๋Ÿฌ ์™”์„ ๋•Œ, ์ด๋ฅผ ํ’€ ์Šค์บ” ์‹œ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ ๋–จ์–ด์ง
  • ์ข…๋ฅ˜ >
  • B+-Tree ์ธ๋ฑ์Šค : ์›๋ž˜์˜ ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ์ธ๋ฑ์‹ฑ
- Hash ์ธ๋ฑ์Šค : ์นผ๋Ÿผ ๊ฐ’์œผ๋กœ ํ•ด์‹œ ๊ฐ’ ๊ฒŒ์‚ฐํ•˜์—ฌ ์ธ๋ฑ์‹ฑ, ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ DB์—์„œ ๋งŽ์ด ์‚ฌ์šฉ
- B>Hash
  • ์ƒ์„ฑ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์  >
  • ํ…Œ์ด๋ธ” ์ „์ฒด ๋กœ์šฐ ์ˆ˜ 15%์ดํ•˜ ๋ฐ์ดํ„ฐ ์กฐํšŒ์‹œ ์ƒ์„ฑ
- ํ…Œ์ด๋ธ” ๊ฑด์ˆ˜๊ฐ€ ์ ์œผ๋ฉด ์ธ๋ฑ์Šค ์ƒ์„ฑ ํ•˜์ง€ ์•Š์Œ, ํ’€ ์Šค์บ”์ด ๋น ๋ฆ„
- ์ž์ฃผ ์“ฐ๋Š” ์ปฌ๋Ÿผ์„ ์•ž์œผ๋กœ ์ง€์ •
- DML์‹œ ์ธ๋ฑ์Šค์—๋„ ์ˆ˜์ • ์ž‘์—…์ด ๋™์‹œ์— ๋ฐœ์ƒํ•˜๋ฏ€๋กœ DML์ด ๋งŽ์€ ํ…Œ์ด๋ธ”์€ ์ธ๋ฑ์Šค ์ƒ์„ฑ ํ•˜์ง€ ์•Š์Œ


๋„คํŠธ์›Œํฌ


OSI 7๊ณ„์ธต์„ ์„ค๋ช…ํ•˜์‹œ์˜ค

OSI 7๊ณ„์ธต์ด๋ž€, ํ†ต์‹  ์ ‘์†์—์„œ ์™„๋ฃŒ๊นŒ์ง€์˜ ๊ณผ์ •์„ 7๋‹จ๊ณ„๋กœ ์ •์˜ํ•œ ๊ตญ์ œ ํ†ต์‹  ํ‘œ์ค€ ๊ทœ์•ฝ

๋ฌผ๋ฆฌ : ์ „์†กํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณต ( ํ†ต์‹  ์ผ€์ด๋ธ”, ํ—ˆ๋ธŒ )

๋ฐ์ดํ„ฐ๋งํฌ : ์†ก/์ˆ˜์‹  ํ™•์ธ. MAC ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ํ†ต์‹ ํ•จ ( ๋ธŒ๋ฆฟ์ง€, ์Šค์œ„์น˜ )

๋„คํŠธ์›Œํฌ : ํŒจํ‚ท์„ ๋„คํŠธ์›Œํฌ ๊ฐ„์˜ IP๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ( ๋ผ์šฐํŒ… )

์ „์†ก : ๋‘ host ์‹œ์Šคํ…œ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์ œ๊ณต

์„ธ์…˜ : ํ†ต์‹  ์‹œ์Šคํ…œ ์‚ฌ์šฉ์ž๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์œ ์ง€ ๋ฐ ์„ค์ •ํ•จ

ํ‘œํ˜„ : ์„ธ์…˜ ๊ณ„์ธต ๊ฐ„์˜ ์ฃผ๊ณ ๋ฐ›๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ผ๊ด€์„ฑ์žˆ๊ฒŒ ์ œ๊ณต

์‘์šฉ : ์‚ฌ์šฉ์ž๊ฐ€ ๋„คํŠธ์›Œํฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋น„์Šค ์ œ๊ณต


TCP/IP ํ”„๋กœํ† ์ฝœ์„ ์Šคํƒ 4๊ณ„์ธต์œผ๋กœ ์ง“๊ณ  ์„ค๋ช…ํ•˜์‹œ์˜ค

  • LINK ๊ณ„์ธต
>
>   > ๋ฌผ๋ฆฌ์ ์ธ ์˜์—ญ์˜ ํ‘œ์ค€ํ™”์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ
>   >
>   > ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์˜์—ญ์œผ๋กœ LAN, WAN๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ํ‘œ์ค€๊ณผ ๊ด€๋ จ๋œ ํ”„๋กœํ† ์ฝœ์„ ์ •์˜ํ•˜๋Š” ์˜์—ญ์ด๋‹ค
  • IP ๊ณ„์ธต
>
>   > ๊ฒฝ๋กœ ๊ฒ€์ƒ‰์„ ํ•ด์ฃผ๋Š” ๊ณ„์ธต์ž„
>   >
>   > IP ์ž์ฒด๋Š” ๋น„์—ฐ๊ฒฐ์ง€ํ–ฅ์ ์ด๋ฉฐ, ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค
>   >
>   > ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ๋งˆ๋‹ค ๊ฑฐ์ณ์•ผํ•  ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•ด์ฃผ์ง€๋งŒ, ๊ฒฝ๋กœ๊ฐ€ ์ผ์ •ํ•˜์ง€ ์•Š์Œ. ๋˜ํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก ์ค‘์— ๊ฒฝ๋กœ์ƒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ. ๋”ฐ๋ผ์„œ IP ๊ณ„์ธต์€ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์— ๋Œ€ํ•œ ๋Œ€๋น„๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š์€ ํ”„๋กœํ† ์ฝœ์ž„
  • TCP/UDP (์ „์†ก) ๊ณ„์ธต
>
>   > ๋ฐ์ดํ„ฐ์˜ ์‹ค์ œ ์†ก์ˆ˜์‹ ์„ ๋‹ด๋‹นํ•จ
>   >
>   > UDP๋Š” TCP์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ณ , TCP๋Š” ์‹ ๋ขฐ์„ฑ์ž‡๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋‹ด๋‹นํ•จ
>   >
>   > TCP๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ, IP ํ”„๋กœํ† ์ฝœ์ด ๊ธฐ๋ฐ˜์ž„ (IP๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ TCP๊ฐ€ ์‹ ๋ขฐ๋ผ๊ณ ?)
>   >
>   > โ†’ IP์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ๊ฒƒ์ด TCP์ธ ๊ฒƒ. ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ „์†ก ๊ฐ”๋Š”์ง€ ํ™•์ธํ•ด์ฃผ๋ฉฐ ๋Œ€ํ™”๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐฉ์‹์ž„. ์ด์ฒ˜๋Ÿผ ํ™•์ธ ์ ˆ์ฐจ๋ฅผ ๊ฑธ์น˜๋ฉฐ ์‹ ๋ขฐ์„ฑ ์—†๋Š” IP์— ์‹ ๋ขฐ์„ฑ์„ ๋ถ€์—ฌํ•œ ํ”„๋กœํ† ์ฝœ์ด TCP์ด๋‹ค
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต
>
>   > ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์—์„œ ํ”„๋กœ๊ทธ๋žจ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ ์— ๋Œ€ํ•œ ์•ฝ์†๋“ค์ด ์ •ํ•ด์ง€๋Š”๋ฐ, ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์ด๋‹ค

TCP๋ž€?

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค

์„œ๋ฒ„ : socket() ์ƒ์„ฑ โ†’ bind() ์†Œ์ผ“ ์ฃผ์†Œํ• ๋‹น โ†’ listen() ์—ฐ๊ฒฐ์š”์ฒญ ๋Œ€๊ธฐ์ƒํƒœ โ†’ accept() ์—ฐ๊ฒฐํ—ˆ์šฉ โ†’ read/write() ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  โ†’ close() ์—ฐ๊ฒฐ์ข…๋ฃŒ

ํด๋ผ์ด์–ธํŠธ : socket() ์ƒ์„ฑ โ†’ connect() ์—ฐ๊ฒฐ์š”์ฒญ โ†’ read/write() ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  โ†’ close() ์—ฐ๊ฒฐ์ข…๋ฃŒ

๋‘˜์˜ ์ฐจ์ด๋Š”?

ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“์„ ์ƒ์„ฑํ•œ ํ›„, ์„œ๋ฒ„๋กœ ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•˜๋Š” ๊ณผ์ •์—์„œ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์„œ๋ฒ„๋Š” listen() ํ˜ธ์ถœ ์ดํ›„๋ถ€ํ„ฐ ์—ฐ๊ฒฐ์š”์ฒญ ๋Œ€๊ธฐ ํ๋ฅผ ๋งŒ๋“ค์–ด ๋†“๊ณ , ๊ทธ ์ดํ›„์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ์„œ๋ฒ„๊ฐ€ ๋ฐ”๋กœ accept()๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์—ฐ๊ฒฐ๋˜๊ธฐ ์ „๊นŒ์ง€ ํ˜ธ์ถœ๋œ ์œ„์น˜์—์„œ ๋ธ”๋กœํ‚น ์ƒํƒœ์— ๋†“์ด๊ฒŒ ๋œ๋‹ค.

์ด์ฒ˜๋Ÿผ ์—ฐ๊ฒฐ์ง€ํ–ฅ์ ์ธ TCP๋Š” ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๊ฐ€๋Šฅํ•จ (3-way handshaking)

ํ๋ฆ„์ œ์–ด์™€ ํ˜ผ์žก์ œ์–ด๋ฅผ ์ง€์›ํ•ด์„œ ๋ฐ์ดํ„ฐ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•ด์คŒ

  • ํ๋ฆ„์ œ์–ด : ์†ก์‹  ์ธก๊ณผ ์ˆ˜์‹  ์ธก์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„ ์ฐจ์ด๋ฅผ ์กฐ์ ˆํ•ด์ฃผ๋Š” ๊ฒƒ

  • ํ˜ผ์žก ์ œ์–ด : ๋„คํŠธ์›Œํฌ ๋‚ด์˜ ํŒจํ‚ท ์ˆ˜๊ฐ€ ๋„˜์น˜๊ฒŒ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ

์ •ํ™•์„ฑ ๋†’์€ ์ „์†ก์„ ํ•˜๊ธฐ ์œ„ํ•ด ์†๋„๊ฐ€ ๋Š๋ฆฐ ๋‹จ์ ์ด ์žˆ๊ณ , ์ฃผ๋กœ ์›น HTTP ํ†ต์‹ , ์ด๋ฉ”์ผ, ํŒŒ์ผ ์ „์†ก์— ์‚ฌ์šฉ๋จ


3-way handshaking์ด๋ž€?

TCP ์†Œ์ผ“์€ ์—ฐ๊ฒฐ ์„ค์ •๊ณผ์ • ์ค‘์— ์ด 3๋ฒˆ์˜ ๋Œ€ํ™”๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค.

(SYN : ์—ฐ๊ฒฐ ์š”์ฒญ ํ”Œ๋ž˜๊ทธ / ACK : ์‘๋‹ต)

  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์ ‘์† ์š”์ฒญํ•˜๋Š” SYN(M) ํŒจํ‚ท์„ ๋ณด๋ƒ„
  • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ธ SYN(M)์„ ๋ฐ›๊ณ , ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•œ๋‹ค๋Š” ACK(M+1)์™€ SYN(N)์ด ์„ค์ •๋œ ํŒจํ‚ท์„ ๋ฐœ์†กํ•จ
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์ˆ˜๋ฝ ์‘๋‹ต์ธ ACK(M+1)์™€ SYN(N) ํŒจํ‚ท์„ ๋ฐ›๊ณ , ACK(N+1)๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋ฉด ์—ฐ๊ฒฐ์ด ์„ฑ๋ฆฝ๋จ
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ ์ข…๋ฃŒํ•˜๊ฒ ๋‹ค๋Š” FIN ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „์†กํ•จ
  • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ(FIN)์„ ๋ฐ›๊ณ , ์•Œ๊ฒ ๋‹ค๋Š” ํ™•์ธ ๋ฉ”์‹œ์ง€๋กœ ACK๋ฅผ ๋ณด๋ƒ„. ๊ทธ ์ดํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋ณด๋‚ผ ๋•Œ๊นŒ์ง€ ์ž ๊น TIME_OUT์ด ๋จ
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋ณด๋‚ด๊ณ  ํ†ต์‹ ์ด ๋๋‚ฌ์œผ๋ฉด ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๊ณ  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ FINํ”Œ๋ž˜๊ทธ๋ฅผ ์ „์†กํ•จ
  • ํด๋ผ์ด์–ธํŠธ๋Š” FIN ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ–ˆ๋‹ค๋Š” ACK๋ฅผ ๋ณด๋ƒ„
  • ํด๋ผ์ด์–ธํŠธ์˜ ACK ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์€ ์„œ๋ฒ„๋Š” ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ closeํ•จ
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์•„์ง ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์ง€ ๋ชปํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์„ ๋Œ€๋น„ํ•ด์„œ, ์ผ์ • ์‹œ๊ฐ„๋™์•ˆ ์„ธ์…˜์„ ๋‚จ๊ฒจ๋†“๊ณ  ์ž‰์—ฌ ํŒจํ‚ท์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ณผ์ •์„ ๊ฑฐ์นจ ( TIME_WAIT )

UDP๋ž€?

TCP์˜ ๋Œ€์•ˆ์œผ๋กœ, IP์™€ ๊ฐ™์ด ์“ฐ์ผ ๋• UDP/IP๋ผ๊ณ ๋„ ๋ถ€๋ฆ„

TCP์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์‹ค์ œ ๋ฐ์ดํ„ฐ ๋‹จ์œ„๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด IP๋ฅผ ์‚ฌ์šฉํ•จ. ๊ทธ๋Ÿฌ๋‚˜ TCP์™€๋Š” ๋‹ฌ๋ฆฌ ๋ฉ”์‹œ์ง€๋ฅผ ํŒจํ‚ท์œผ๋กœ ๋‚˜๋ˆ„๊ณ , ๋ฐ˜๋Œ€ํŽธ์—์„œ ์žฌ์กฐ๋ฆฝํ•˜๋Š” ๋“ฑ์˜ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ ์ฆ‰, ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ปดํ“จํ„ฐ๋ผ๋ฆฌ ์ง์ ‘ ์—ฐ๊ฒฐํ•  ๋•Œ UDP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

UDP๋ฅผ ์‚ฌ์šฉํ•ด ๋ชฉ์ ์ง€(IP)๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ปดํ“จํ„ฐ๋ฅผ ๊ฑฐ์ณ ๋ชฉ์ ์ง€๊นŒ์ง€ ๋„๋‹ฌํ•  ์ˆ˜๋„ ์žˆ์Œ (๋„์ฐฉํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ๋„ ์กด์žฌํ•จ)

์ •๋ณด๋ฅผ ๋ฐ›๋Š” ์ปดํ“จํ„ฐ๋Š” ํฌํŠธ๋ฅผ ์—ด์–ด๋‘๊ณ , ํŒจํ‚ท์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๋ฉด ๋ชจ๋‘ ๋‹ค ๋ฐ›์•„๋“ค์ธ๋‹ค. ํŒจํ‚ท์ด ๋„์ฐฉํ–ˆ์„ ๋•Œ ์ถœ๋ฐœ์ง€์— ๋Œ€ํ•œ ์ •๋ณด(IP์™€ PORT)๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ

UDP๋Š” ์ด๋Ÿฐ ํŠน์„ฑ ๋•Œ๋ฌธ์— ๋น„์‹ ๋ขฐ์ ์ด๊ณ , ์•ˆ์ •์ ์ด์ง€ ์•Š์€ ํ”„๋กœํ† ์ฝœ์ž„. ํ•˜์ง€๋งŒ TCP๋ณด๋‹ค ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๊ณ  ํŽธํ•ด์„œ ๋ฐ์ดํ„ฐ ์œ ์‹ค์ด ์ผ์–ด๋‚˜๋„ ํฐ ์ƒ๊ด€์ด ์—†๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ์ด๋‚˜ ํ™”๋ฉด ์ „์†ก์— ์‚ฌ์šฉ๋จ


HTTP์™€ HTTPS์˜ ์ฐจ์ด๋Š”?

HTTP ๋™์ž‘ ์ˆœ์„œ : TCP โ†’ HTTP

HTTPS ๋™์ž‘ ์ˆœ์„œ : TCP โ†’ SSL โ†’ HTTP

SSL(Secure Socket Layer)์„ ์“ฐ๋ƒ ์•ˆ์“ฐ๋ƒ์˜ ์ฐจ์ด๋‹ค. SSL ํ”„๋กœํ† ์ฝœ์€ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”์‹œํ‚ค๊ณ  ์ด๋•Œ ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค ๋‘๊ฐ€์ง€๋ฅผ ์ด์šฉํ•œ๋‹ค.

HTTPS๋Š” ์ธํ„ฐ๋„ท ์ƒ์—์„œ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ธฐ ์œ„ํ•ด SSL ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ฆ‰, ๋ฌธ์„œ ์ „์†ก์‹œ ์•”ํ˜ธํ™” ์ฒ˜๋ฆฌ ์œ ๋ฌด์— ๋”ฐ๋ผ HTTP์™€ HTTPS๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š” ๊ฒƒ

๋ชจ๋“  ์‚ฌ์ดํŠธ๊ฐ€ HTTPS๋กœ ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š”, ์•”ํ˜ธํ™” ๊ณผ์ •์œผ๋กœ ์ธํ•œ ์†๋„ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


GET๊ณผ POST์˜ ์ฐจ์ด๋Š”?

๋‘˜๋‹ค HTTP ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•ด ์„œ๋ฒ„์— ๋ฌด์–ธ๊ฐ€ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

GET ๋ฐฉ์‹์€, URL์„ ํ†ตํ•ด ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์†Œ์ฐฝ์— ์ „๋‹ฌ ๊ฐ’์ด ๋…ธ์ถœ๋จ. URL ๊ธธ์ด๊ฐ€ ์ œํ•œ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์†ก ๋ฐ์ดํ„ฐ ์–‘์ด ํ•œ์ •๋˜์–ด ์žˆ๊ณ , ํ˜•์‹์— ๋งž์ง€ ์•Š์œผ๋ฉด ์ธ์ฝ”๋”ฉํ•ด์„œ ์ „๋‹ฌํ•ด์•ผ ํ•จ

POST ๋ฐฉ์‹์€ HTTP BODY์— ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ด์„œ ์ „๋‹ฌํ•จ. ์›น ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์šฉ์ž์˜ ๋ˆˆ์—๋Š” ์ง์ ‘์ ์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ณ  ๊ธธ์ด ์ œํ•œ๋„ ์—†์Œ.

๋ณดํ†ต GET์€ ๊ฐ€์ ธ์˜ฌ ๋•Œ, POST๋Š” ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ์— ํ™œ์šฉํ•œ๋‹ค.

GET์€ SELECT ์„ฑํ–ฅ์ด ์žˆ์–ด์„œ ์„œ๋ฒ„์—์„œ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ณด์—ฌ์ฃผ๋Š” ์šฉ๋„๋กœ ํ™œ์šฉ

POST๋Š” ์„œ๋ฒ„์˜ ๊ฐ’์ด๋‚˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ํ™œ์šฉ


IOCP๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค

IOCP๋Š” ์–ด๋–ค I/O ํ•ธ๋“ค์— ๋Œ€ํ•ด, ๋ธ”๋ก ๋˜์ง€ ์•Š๊ฒŒ ๋น„๋™๊ธฐ ์ž‘์—…์„ ํ•˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋žจ ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

๋™๊ธฐํ™” Object ์„ธ๋งˆํฌ์–ด์˜ ํŠน์„ฑ๊ณผ, ํ๋ฅผ ๊ฐ€์ง„ ์ปค๋„ Object๋‹ค. ๋Œ€๋ถ€๋ถ„ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ์ƒ์—์„œ ์‚ฌ์šฉ๋˜๊ณ , ํ๋Š” ์ž์ฒด์ ์œผ๋กœ ์šด์˜ํ•˜๋Š” ํŠน์ง• ๋•Œ๋ฌธ์— ์Šค๋ ˆ๋“œ ํ’€๋ง์— ์ ํ•ฉํ•จ

๋™๊ธฐํ™”์™€ ๋™์‹œ์— ํ๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ IOCP๋Š”, ์Šค๋ ˆ๋“œ ํ’€๋ง์„ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ

POOLING์ด๋ž€?

์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋Œ€๊ธฐ์‹œํ‚ค๊ณ , ํ•„์š”ํ•  ๋•Œ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์‚ฌ์šฉํ•œ ๋’ค์— ๋‹ค์‹œ ๋ฐ˜๋‚ฉํ•˜๋Š” ๊ณผ์ • (์Šค๋ ˆ๋“œ์˜ ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด๋Š” ์ƒ๋‹นํžˆ ํฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ณผ์ •์„ ์ด์šฉํ•œ๋‹ค)

IOCP์˜ ์žฅ์ ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •ํ•œ ๋ฒ„ํผ๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ. (๊ธฐ์กด์—๋Š” OS๋ฒ„ํผ, ์‚ฌ์šฉ์ž ๋ฒ„ํผ๋กœ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์šด์˜ํ–ˆ์Œ)

์ปค๋„ ๋ ˆ๋ฒจ์—์„œ๋Š” ๋ชจ๋“  I/O๋ฅผ ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ธ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ


๋ผ์šฐํ„ฐ์™€ ์Šค์œ„์น˜์˜ ์ฐจ์ด๋Š”?

๋ผ์šฐํ„ฐ๋Š” 3๊ณ„์ธต ์žฅ๋น„๋กœ, ์ˆ˜์‹ ํ•œ ํŒจํ‚ท์˜ ์ •๋ณด๋ฅผ ๋ณด๊ณ  ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ด ํŒจํ‚ท์„ ์ „์†กํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์žฅ๋น„

์Šค์œ„์น˜๋Š” ์ฃผ๋กœ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์— ์œ„์น˜ํ•˜๋ฉฐ MAC ์ฃผ์†Œ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•ด ํ•ด๋‹น ํ”„๋ ˆ์ž„์„ ์ „์†กํ•˜๋Š” 2๊ณ„์ธต ์žฅ๋น„



์Šคํ”„๋ง


Dispatcher-Servlet

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์—์„œ HTTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ์ œ์ผ ์•ž์—์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งํ•จ

๋”ฐ๋ผ์„œ ์„œ๋ฒ„๊ฐ€ ๋ฐ›๊ธฐ ์ „์—, ๊ณตํ†ต์ฒ˜๋ฆฌ ์ž‘์—…์„ ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์ด ์ฒ˜๋ฆฌํ•ด์ฃผ๊ณ  ์ ์ ˆํ•œ ์„ธ๋ถ€ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ž‘์—…์„ ์œ„์ž„ํ•ด์ค๋‹ˆ๋‹ค.

๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์ด ์ฒ˜๋ฆฌํ•˜๋Š” url ํŒจํ„ด์„ ์ง€์ •ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ, ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” .mvc์™€ ๊ฐ™์€ ํŒจํ„ด์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ผ๊ณ  ๋ฏธ๋ฆฌ ์ง€์ •ํ•ด์ค๋‹ˆ๋‹ค.

๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ์ธํ•ด web.xml์ด ๊ฐ€์ง„ ์—ญํ• ์ด ์ƒ๋‹นํžˆ ์ถ•์†Œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์—๋Š” ๋ชจ๋“  ์„œ๋ธ”๋ฆฟ์„ url ๋งคํ•‘ ํ™œ์šฉ์„ ์œ„ํ•ด ๋ชจ๋‘ web.xml์— ๋“ฑ๋กํ•ด ์ฃผ์—ˆ์ง€๋งŒ, ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์€ ๊ทธ ์ „์— ๋ชจ๋“  ์š”์ฒญ์„ ํ•ธ๋“ค๋งํ•ด์ฃผ๋ฉด์„œ ์ž‘์—…์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์„œ๋ธ”๋ฆฟ์„ ํ†ตํ•ด MVC๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์›น ๊ฐœ๋ฐœ ์‹œ ํฐ ์žฅ์ ์„ ๊ฐ€์ ธ๋‹ค ์ค๋‹ˆ๋‹ค.


DI(Dependency Injection)

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ง€์›ํ•˜๋Š” ํ•ต์‹ฌ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋กœ, ์„ค์ • ํŒŒ์ผ์„ ํ†ตํ•ด ๊ฐ์ฒด๊ฐ„์˜ ์˜์กด๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

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

๊ฐ์ฒด๋Š” ์ง์ ‘ ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ฝ”๋“œ ๊ด€๋ฆฌ๊ฐ€ ์‰ฌ์›Œ์ง€๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


AOP(Aspect Oriented Programming)

๊ณตํ†ต์˜ ๊ด€์‹ฌ ์‚ฌํ•ญ์„ ์ ์šฉํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜์กด ๊ด€๊ณ„์˜ ๋ณต์žก์„ฑ๊ณผ ์ฝ”๋“œ ์ค‘๋ณต์„ ํ•ด์†Œํ•ด์ค๋‹ˆ๋‹ค.

๊ฐ ํด๋ž˜์Šค์—์„œ ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•œ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์˜์กด๊ด€๊ณ„๋ฅผ ๊ฐ–๊ธฐ ๋ณด๋‹จ, Aspect๋ฅผ ์ด์šฉํ•ด ํ•ต์‹ฌ ๋กœ์ง์„ ๊ตฌํ˜„ํ•œ ๊ฐ ํด๋ž˜์Šค์— ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

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


AOP ์šฉ์–ด

Advice : ์–ธ์ œ ๊ณตํ†ต ๊ด€์‹ฌ๊ธฐ๋Šฅ์„ ํ•ต์‹ฌ ๋กœ์ง์— ์ ์šฉํ• ์ง€ ์ •์˜

Joinpoint : Advice๋ฅผ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ง€์ ์„ ์˜๋ฏธ (before, after ๋“ฑ๋“ฑ)

Pointcut : Joinpoint์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์œผ๋กœ, ์‹ค์ œ๋กœ Advice๊ฐ€ ์ ์šฉ๋˜๋Š” Joinpoint๋ฅผ ๋‚˜ํƒ€๋ƒ„

Weaving : Advice๋ฅผ ํ•ต์‹ฌ ๋กœ์ง์ฝ”๋“œ์— ์ ์šฉํ•˜๋Š” ๊ฒƒ

Aspect : ์—ฌ๋Ÿฌ ๊ฐ์ฒด์— ๊ณตํ†ต์œผ๋กœ ์ ์šฉ๋˜๋Š” ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ์„ ๋งํ•จ. ํŠธ๋žœ์žญ์…˜์ด๋‚˜ ๋ณด์•ˆ ๋“ฑ์ด Aspect์˜ ์ข‹์€ ์˜ˆ


DAO(Data Access Object)

DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์ „๋‹ดํ•ฉ๋‹ˆ๋‹ค.

Mybatis๋ฅผ ์ด์šฉํ•  ๋•Œ๋Š”, mapper.xml์— ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ mapper ํด๋ž˜์Šค์—์„œ ๋ฐ›์•„์™€ DAO์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๋Š” ์‹์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.


Annotation

์†Œ์Šค์ฝ”๋“œ์— @์–ด๋…ธํ…Œ์ด์…˜์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ ํด๋ž˜์Šค, ํ•„๋“œ, ๋ฉ”์†Œ๋“œ์˜ ์„ ์–ธ๋ถ€์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ •๊ธฐ๋Šฅ์ด ๋ถ€์—ฌ๋œ ํ‘œํ˜„๋ฒ•์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

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

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

  • @Controller : dispatcher-servlet.xml์—์„œ bean ํƒœ๊ทธ๋กœ ์ •์˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Œ.
  • @RequestMapping : ํŠน์ • ๋ฉ”์†Œ๋“œ์—์„œ ์š”์ฒญ๋˜๋Š” URL๊ณผ ๋งค์นญ์‹œํ‚ค๋Š” ์–ด๋…ธํ…Œ์ด์…˜
  • @Autowired : ์ž๋™์œผ๋กœ ์˜์กด์„ฑ ์ฃผ์ž…ํ•˜๊ธฐ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜
  • @Service : ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค ํด๋ž˜์Šค์— ๋“ฑ๋ก
  • @Repository : DAO์— ๋“ฑ๋ก

Spring JDBC

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”๊ณผ, ์ž๋ฐ” ๊ฐ์ฒด ์‚ฌ์ด์˜ ๋‹จ์ˆœํ•œ ๋งคํ•‘์„ ๊ฐ„๋‹จํ•œ ์„ค์ •์„ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ

๊ธฐ์กด์˜ JDBC์—์„œ๋Š” ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€ ๋กœ์ง๋งˆ๋‹ค ํ•„์š”ํ•œ SQL๋ฌธ์ด ๋ชจ๋‘ ๋‹ฌ๋ž๊ณ , ์ด์— ํ•„์š”ํ•œ Connection, PrepareStatement, ResultSet ๋“ฑ์„ ์ƒ์„ฑํ•˜๊ณ  Exception ์ฒ˜๋ฆฌ๋„ ๋ชจ๋‘ ํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋Ÿฌ์›€์ด ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Spring์—์„œ๋Š” JDBC์™€ ORM ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง์ ‘ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ชจ๋‘ ๋‹ค ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


MyBatis

๊ฐ์ฒด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, Mapper ์ž์ฒด๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ , DTO์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„๊ณผ SQL ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ๋งคํ•‘ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•จ

๊ธฐ์กด์—๋Š” DAO์— ๋ชจ๋‘ SQL๋ฌธ์ด ์ž๋ฐ” ์†Œ์Šค์ƒ์— ์œ„์น˜ํ–ˆ์œผ๋‚˜, MyBatis๋ฅผ ํ†ตํ•ด SQL์€ XML ์„ค์ • ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด, ์ˆ˜์ •ํ•  ๋•Œ ์„ค์ •ํŒŒ์ผ๋งŒ ๊ฑด๋“œ๋ฆฌ๋ฉด ๋˜๋ฏ€๋กœ ์œ ์ง€๋ณด์ˆ˜์— ๋งค์šฐ ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋‚˜ ๋ฆฌํ„ด ํƒ€์ž…์œผ๋กœ ๋งคํ•‘๋˜๋Š” ๋ชจ๋“  DTO์— ๊ด€๋ จ๋œ ๋ถ€๋ถ„๋„ ๋ชจ๋‘ ์„ค์ •ํŒŒ์ผ์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.