MVC

Model
View
Controller

 

 

๊ฐœ๋ฐœํ•  ๋•Œ 3๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ์—ญํ• ์„ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์„ MVC ํŒจํ„ด์ด๋ผ ํ•œ๋‹ค.

 

 

 

๋ชจ๋ธ Model

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ •๋ณด, ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. 

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฌด์—‡์„ ํ• ๊ฒƒ์ธ์ง€๋ฅผ ์ •์˜ํ•˜๋ฉฐ ๋‚ด๋ถ€ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

๋ชจ๋ธ์˜ ๊ทœ์น™
1. ์‚ฌ์šฉ์ž๊ฐ€ ํŽธ์žกํ•˜๊ธธ ์›ํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
2. view๋‚˜ controller์— ๋Œ€ํ•ด์„œ ์–ด๋–ค ์ •๋ณด๋„ ์•Œ์ง€ ๋ชปํ•œ๋‹ค.
3. ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด, ๋ณ€๊ฒฝ ํ†ต์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค. 
๋”๋ณด๊ธฐ

1 -> ํ™”๋ฉด์•ˆ์˜ ๋„ค๋ชจ๋ฐ•์Šค์— ๊ธ€์ž๊ฐ€ ํ‘œํ˜„๋œ๋‹ค๋ฉด, ๋„ค๋ชจ๋ฐ•์Šค์˜ ํ™”๋ฉด ์œ„์น˜ ์ •๋ณด, ๋„ค๋ชจ๋ฐ•์Šค์˜ ํฌ๊ธฐ์ •๋ณด, ๊ธ€์ž๋‚ด์šฉ, ๊ธ€์ž์˜ ์œ„์น˜, ๊ธ€์ž์˜ ํฌ๋งท ์ •๋ณด ๋“ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ

 

2 -> ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ ๋ชจ๋ธ์—์„œ ํ™”๋ฉด UI๋ฅผ ์ง์ ‘ ์กฐ์ •ํ•ด์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ทฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‚ด๋ถ€ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ง€๋ฉด ์•ˆ ๋œ๋‹ค๋Š” ๋ง

 

3 ->๋ชจ๋ธ์˜ ์†์„ฑ ์ค‘ ํ…์ŠคํŠธ ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ์ด ๋œ๋‹ค๋ฉด, ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋ฉฐ, ๋ˆ„๊ตฐ๊ฐ€ ๋ชจ๋ธ์„ ๋ณ€๊ฒฝํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋ƒˆ์„ ๋•Œ ์ด๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ๋ชจ๋ธ์€ ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋„ ๋ณ€ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

 

 

 

๋ทฐ View

ํ™”๋ฉด์— ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ์—ญํ• 

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

๋ทฐ์˜ ๊ทœ์น™
1. ๋ชจ๋ธ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
2. ๋ชจ๋ธ์ด๋‚˜ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๊ฐ™์ด ๋‹ค๋ฅธ ๊ตฌ์„ฑ์š”์†Œ๋“ค์„ ๋ชฐ๋ผ์•ผ ๋œ๋‹ค.
3. ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด ๋ณ€๊ฒฝํ†ต์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ๋งŒ ํ•œ๋‹ค.
๋”๋ณด๊ธฐ

1 -> ํ™”๋ฉด์— ๊ธ€์ž๋ฅผ ํ‘œ์‹œ ํ•˜๊ธฐ ์œ„ํ•ด, ๋ชจ๋ธ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ „๋‹ฌ๋ฐ›๊ฒŒ ๋ ํ…๋ฐ, ๊ทธ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž„์˜์˜ ๋ทฐ ๋‚ด๋ทฐ์— ์ €์žฅํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ๋‹จ์ˆœํžˆ ๋„ค๋ชจ ๋ฐ•์Šค๋ฅผ ๊ทธ๋ฆฌ๋ผ๋Š” ๋ช…๋ น์„ ๋ฐ›์œผ๋ฉด, ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ธฐ๋งŒ ํ•˜๊ณ  ๊ทธ ํ™”๋ฉด์„ ๊ทธ๋ฆด ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋“ค์€ ์ €์žฅํ•˜์ง€ ์•Š์•„์•ผ ํ•จ!

 

2 -> ๋ชจ๋ธ๊ณผ ๊ฐ™์€ ์ž๊ธฐ ์ž์‹ ์˜ ๋นผ๊ณ ๋Š” ๋‹ค๋ฅธ ์š”์†Œ๋Š” ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„์„œ๋Š” ์•ˆ๋œ๋‹ค. ๊ทธ๋ƒฅ ๋ทฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์œผ๋ฉด ํ™”๋ฉด์— ํ‘œ์‹œํ•ด์ฃผ๋Š” ์—ญํ• ๋งŒ ๊ฐ€์ง„๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

3 -> ๋ชจ๋ธ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ ์ด๋ฅธ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ณ€๊ฒฝ์„ ์•Œ๋ ค์ค˜์•ผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ๋ทฐ์—์„œ๋Š” ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋œ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด ์ด๋ฅผ ๋ชจ๋ธ์—๊ฒŒ ์ „๋‹ฌํ•ด์„œ ๋ชจ๋ธ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝ ํ†ต์ง€๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ์„ค๊ณ„๋ฅผ ํ•ด์•ผ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ์ •๋ณด๋“ค์„ ํ‘œํ˜„ํ•  ๋•Œ ์‰ฝ๊ฒŒ ์„ค๊ณ„๋ฅผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

์ปจํŠธ๋กค๋Ÿฌ Controller

๋ชจ๋ธ์ด “์–ด๋–ป๊ฒŒ” ์ฒ˜๋ฆฌํ•  ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ณ , ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ํ™”๋ฉด์˜ ๋กœ์ง์ฒ˜๋ฆฌ ๋ถ€๋ถ„์ด๋‹ค.

ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ถ€๋ถ„์„ ๊ตฌํ˜„๋˜๊ฒŒ ๋˜๋ฉฐ, ์š”์ฒญ ๋‚ด์šฉ์„ ๋ถ„์„ํ•ด์„œ Model๊ณผ View์— ์—…๋ฐ์ดํŠธ ์š”์ฒญ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. (๋ชจ๋ธ๊ณผ ๋ทฐ์˜ ์ค‘๊ฐœ ์—ญํ• )

์ปจํŠธ๋กค๋Ÿฌ์˜ ๊ทœ์น™
1. ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
2. ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ์˜ ๋ณ€๊ฒฝ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ด์•ผ ํ•œ๋‹ค.
๋”๋ณด๊ธฐ

1 -> ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ๋Š” ์„œ๋กœ์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฅด๊ณ , ๋ณ€๊ฒฝ์„ ์™ธ๋ถ€๋กœ ์•Œ๋ฆฌ๊ณ , ์ˆ˜์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ์ด๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ค‘์žฌํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋ธ๊ณผ ๊ทธ์— ๊ด€๋ จ๋œ ๋ทฐ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

2 -> ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ์˜ ๋ณ€๊ฒฝ ํ†ต์ง€๋ฅผ ๋ฐ›์œผ๋ฉด ์ด๋ฅผ ํ•ด์„ํ•ด์„œ ๊ฐ๊ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ์—๊ฒŒ ํ†ต์ง€๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.

๋˜ํ•œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”์ธ ๋กœ์ง์€ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋‹ด๋‹นํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

MVC๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์™€ ์˜์˜

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

๊ณต์žฅ์—์„œ๋„ ํ•˜๋‚˜์˜ ์—ญํ• ๋“ค๋งŒ ๋‹ด๋‹น์„ ํ•ด์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์„œ ํšจ์œจ์ ์ด๋“ฏ...

โ€‹

์„œ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ๊ฐ์ž์˜ ์—ญํ• ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋”ํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ๊ทธ๋ ‡๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ ๋‹ค๋ฉด, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™•์žฅ์„ฑ, ๊ทธ๋ฆฌ๊ณ  ์œ ์—ฐ์„ฑ์ด ์ฆ๊ฐ€ํ•˜๊ณ , ์ค‘๋ณต์ฝ”๋”ฉ์ด๋ผ๋Š” ๋ฌธ์ œ์  ๋˜ํ•œ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. 

 

MVCํŒจํ„ด์€ ๊ฒฐ๊ตญ "์–ด๋–ป๊ฒŒ ๋‚˜๋ˆŒ ๊ฒƒ์ธ๊ฐ€"์— ๋Œ€ํ•œ ํ•ด๋‹ต ์ค‘ ํ•˜๋‚˜๋‹ค. ์–ด๋–ค ํŠน์ •ํ•œ ์—ญํ• ๋“ค์— ๋Œ€ํ•ด ์—ญํ• ๋ถ„๋‹ด์„ ํ•  ๋•Œ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ MVCํŒจํ„ด!!!!!

 

 

 

 

MVCํŒจํ„ด์˜ ํ•œ๊ณ„

MVC์—์„œ View๋Š” Controller์— ์—ฐ๊ฒฐ๋˜์–ด ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๋‹จ์œ„์š”์†Œ์ด๋ฏ€๋กœ ๋‹ค์ˆ˜์˜ View๋“ค์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Model์€ Controller๋ฅผ ํ†ตํ•ด์„œ View์™€ ์—ฐ๊ฒฐ๋˜์–ด์ง€์ง€๋งŒ, ์ด๋ ‡๊ฒŒ Controller๋ฅผ ํ†ตํ•ด์„œ ํ•˜๋‚˜์˜ View์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š” Model๋„ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

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

 

๊ทธ๋ž˜์„œ ์œ„์˜ ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•œ ์—ฌ๋Ÿฌ ๋‹ค์–‘ํ•œ!! ํŒจํ„ด์„ ํŒŒ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

MVP, MVVM, Viper, Clean Architecture, Flux, Redux, RxMVVM….

 


Reference.

๋งํฌ1 ๋งํฌ2

'๐Ÿ”ฅ > ๊ธฐํƒ€ ๋“ฑ๋“ฑ ๐ŸŽธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[git] git flow : ๋‹ค์–‘ํ•œ ๋ธŒ๋žœ์น˜ ์ „๋žต  (0) 2021.08.31

์ •๊ทœํ™”์˜ ํƒ„์ƒ ๋ฐฐ๊ฒฝ

ํ•œ relation์—์„œ ์—ฌ๋Ÿฌ entity์˜ attribute๋“ค์„ ํ˜ผํ•ฉํ•˜๊ฒŒ ๋˜๋ฉด ์ •๋ณด๊ฐ€ ์ค‘๋ณต ์ €์žฅ๋˜๋ฉฐ ์ €์žฅ๊ณต๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋œ๋‹ค.

๋˜ํ•œ ์ด๋Ÿฐ ์ค‘๋ณต๋œ ์ •๋ณด๋กœ ์ธํ•ด ๊ฐฑ์‹  ์ด์ƒ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

๋™์ผํ•œ ์ •๋ณด๋ฅผ ํ•œ relation์—๋Š” ๋ณ€๊ฒฝํ•˜๊ณ  ๋‚˜๋จธ์ง€ relation์—์„œ๋Š” ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์–ด๋Š ๊ฒƒ์ด ์ •ํ™•ํ•œ์ง€ ์•Œ ์ˆ˜ ์—†๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ •๊ทœํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค.

 

๊ฐฑ์‹  ์ด์ƒ์ด๋ž€...?

1. ์‚ฝ์ž… ์ด์ƒ Insertion anomalies
์›ํ•˜์ง€ ์•Š๋Š” ์ž๋ฃŒ๊ฐ€ ์‚ฝ์ž…๋œ๋‹ค๋“ ์ง€, ์‚ฝ์ž…ํ•˜๋Š”๋ฐ ์ž๋ฃŒ๊ฐ€ ๋ถ€์กฑํ•ด ์‚ฝ์ž…์ด ๋˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ 

2. ์‚ญ์ œ ์ด์ƒ Deletion anomalies
ํ•˜๋‚˜์˜ ์ž๋ฃŒ๋งŒ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์ง€๋งŒ, ๊ทธ ์ž๋ฃŒ๊ฐ€ ํฌํ•จ๋œ ํŠœํ”Œ ์ „์ฒด๊ฐ€ ์‚ญ์ œ๋จ์œผ๋กœ ์›ํ•˜์ง€ ์•Š๋Š” ์ •๋ณด ์†์‹ค์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ 

3. ์ˆ˜์ • ์ด์ƒ Modification anomalies
์ •ํ™•ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ผ๋ถ€์˜ ํŠœํ”Œ๋งŒ ๊ฐฑ์‹ ๋˜์–ด ์ •๋ณด๊ฐ€ ๋ชจํ˜ธํ•ด์ง€๊ฑฐ๋‚˜ ์ผ๊ด€์„ฑ์ด ์—†์–ด์ ธ ์ •ํ™•ํ•œ ์ •๋ณด ํŒŒ์•…์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ์ 

 

 

 

์ •๊ทœํ™”๋ž€

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ค‘๋ณต์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๋Š” ์ž‘์—…์ด๋‹ค. ์ข€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ๋ถˆ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๋‚˜์œ relation์˜ attribute๋“ค์„ ๋‚˜๋ˆ„์–ด์„œ ์ข‹์€ ์ž‘์€ relation์œผ๋กœ ๋ถ„ํ•ดํ•˜๋Š” ์ž‘์—…์„ ๋งํ•œ๋‹ค.

๋‚˜์œ relation ?
์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋Š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ ๊ฐ„์— ํ•จ์ˆ˜์  ์ข…์†์„ฑ(Functional Dependency)์„ ํŒ๋‹จํ•˜๋Š”๋ฐ, ๊ฐ๊ฐ์˜ ์ •๊ทœํ˜•๋งˆ๋‹ค ์–ด๋– ํ•œ ํ•จ์ˆ˜์  ์ข…์†์„ฑ์„ ๋งŒ์กฑํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ์ •๊ทœํ˜•์ด ์ •์˜๋˜๊ณ , ๊ทธ ์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋Š” ์ •๊ทœํ˜•์„ ๋‚˜์œ ๋ฆด๋ ˆ์ด์…˜์œผ๋กœ ํŒŒ์•…ํ•œ๋‹ค.

ํ•จ์ˆ˜์  ์ข…์†์„ฑ์€..?
์• ํŠธ๋ฆฌ๋ทฐํŠธ ๋ฐ์ดํ„ฐ๋“ค์˜ ์˜๋ฏธ์™€ ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋“ค ๊ฐ„์˜ ์ƒํ˜ธ ๊ด€๊ณ„๋กœ๋ถ€ํ„ฐ ์œ ๋„๋˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์˜ ์ผ์ข…์ด๋‹ค. 

 

์ •๊ทœํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋˜๋ฉด ์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๊ฒŒ ๋œ๋‹ค. ์ •๊ทœํ˜•์ด๋ž€ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์˜ ์Šคํ‚ค๋งˆ์˜ ํ˜•ํƒœ๋ฅผ ๋งํ•˜๋ฉฐ ์ œ 1 ์ •๊ทœํ˜•, ์ œ 2 ์ •๊ทœํ˜•, ์ œ 3 ์ •๊ทœํ˜•, … ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค.

 

์ œ 1 ์ •๊ทœํ˜•

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

์ œ 2 ์ •๊ทœํ˜•

๋ชจ๋“  ๋น„์ฃผ์š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋“ค์ด ์ฃผ์š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ์— ๋Œ€ํ•ด์„œ ์™„์ „ ํ•จ์ˆ˜์  ์ข…์†์ด๋ฉด ์ œ 2 ์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์™„์ „ ํ•จ์ˆ˜์  ์ข…์†์ด๋ž€ X -> Y ๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, X ์˜ ์–ด๋– ํ•œ ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋ผ๋„ ์ œ๊ฑฐํ•˜๋ฉด ๋” ์ด์ƒ ํ•จ์ˆ˜์  ์ข…์†์„ฑ์ด ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. ์ฆ‰, ํ‚ค๊ฐ€ ์•„๋‹Œ ์—ด๋“ค์ด ๊ฐ๊ฐ ํ›„๋ณดํ‚ค์— ๋Œ€ํ•ด ๊ฒฐ์ •๋˜๋Š” ๋ฆด๋ ˆ์ด์…˜ ํ˜•ํƒœ๋ฅผ ๋งํ•œ๋‹ค.

์ œ 3 ์ •๊ทœํ˜•

์–ด๋– ํ•œ ๋น„์ฃผ์š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋„ ๊ธฐ๋ณธํ‚ค์— ๋Œ€ํ•ด์„œ ์ดํ–‰์ ์œผ๋กœ ์ข…์†๋˜์ง€ ์•Š์œผ๋ฉด ์ œ 3 ์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ดํ–‰ ํ•จ์ˆ˜์  ์ข…์†์ด๋ž€ X - >Y, Y -> Z์˜ ๊ฒฝ์šฐ์— ์˜ํ•ด์„œ ์ถ”๋ก ๋  ์ˆ˜ ์žˆ๋Š” X -> Z์˜ ์ข…์†๊ด€๊ณ„๋ฅผ ๋งํ•œ๋‹ค. ์ฆ‰, ๋น„์ฃผ์š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ๊ฐ€ ๋น„์ฃผ์š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ์— ์˜ํ•ด ์ข…์†๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†๋Š” ๋ฆด๋ ˆ์ด์…˜ ํ˜•ํƒœ๋ฅผ ๋งํ•œ๋‹ค.

BCNF(Boyce-Codd) ์ •๊ทœํ˜•

์—ฌ๋Ÿฌ ํ›„๋ณด ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์— ํ•ด๋‹นํ•˜๋Š” ์ •๊ทœํ™” ๋‚ด์šฉ์ด๋‹ค. ๋ณต์žกํ•œ ์‹๋ณ„์ž ๊ด€๊ณ„์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ œ 3 ์ •๊ทœํ˜•์„ ๋ณด์™„ํ•˜๋Š”๋ฐ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค. ๋น„์ฃผ์š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ๊ฐ€ ํ›„๋ณดํ‚ค์˜ ์ผ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค.

๊ฐ ์ •๊ทœํ˜•์€ ๊ทธ์˜ ์„ ํ–‰ ์ •๊ทœํ˜•๋ณด๋‹ค ๋” ์—„๊ฒฉํ•œ ์กฐ๊ฑด์„ ๊ฐ–๋Š”๋‹ค.

  • ๋ชจ๋“  ์ œ 2 ์ •๊ทœํ˜• ๋ฆด๋ ˆ์ด์…˜์€ ์ œ 1 ์ •๊ทœํ˜•์„ ๊ฐ–๋Š”๋‹ค.
  • ๋ชจ๋“  ์ œ 3 ์ •๊ทœํ˜• ๋ฆด๋ ˆ์ด์…˜์€ ์ œ 2 ์ •๊ทœํ˜•์„ ๊ฐ–๋Š”๋‹ค.
  • ๋ชจ๋“  BCNF ์ •๊ทœํ˜• ๋ฆด๋ ˆ์ด์…˜์€ ์ œ 3 ์ •๊ทœํ˜•์„ ๊ฐ–๋Š”๋‹ค.

์ˆ˜๋งŽ์€ ์ •๊ทœํ˜•์ด ์žˆ์ง€๋งŒ ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์˜ ๋ชฉํ‘œ๋Š” ๊ฐ ๋ฆด๋ ˆ์ด์…˜์ด 3NF(or BCNF)๋ฅผ ๊ฐ–๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 

 

์ •๊ทœํ™”์˜ ์žฅ์ 

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

 

 

์ •๊ทœํ™”์˜ ๋‹จ์ 

๋ฆด๋ ˆ์ด์…˜์˜ ๋ถ„ํ•ด๋กœ ์ธํ•ด ๋ฆด๋ ˆ์ด์…˜ ๊ฐ„์˜ ์—ฐ์‚ฐ(JOIN ์—ฐ์‚ฐ)์ด ๋งŽ์•„์ง„๋‹ค.

์ด๋กœ ์ธํ•ด ์งˆ์˜์— ๋Œ€ํ•œ ์‘๋‹ต ์‹œ๊ฐ„์ด ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

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

 

๋”ฐ๋ผ์„œ ์ •๊ทœํ™”๋œ ํ…Œ์ด๋ธ”์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์†๋„๊ฐ€ ๋นจ๋ผ์งˆ ์ˆ˜๋„ ์žˆ๊ณ  ๋Š๋ ค์งˆ ์ˆ˜๋„ ์žˆ๋Š” ํŠน์„ฑ์ด ์žˆ๋‹ค.

 

์ด์™€ ๊ฐ™์€ ๋‹จ์ ์ด ์žˆ๋‹ค๋ฉด, ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์ •๊ทœํ™”๋ฅผ ์ง„ํ–‰ํ•ด์•ผํ•˜๋Š”๊ฐ€?

๋ฐ˜์ •๊ทœํ™”(De-normalization, ๋น„์ •๊ทœํ™”)
๋ฐ˜์ •๊ทœํ™”๋Š” ์ •๊ทœํ™”๋œ ์—”ํ‹ฐํ‹ฐ, ์†์„ฑ, ๊ด€๊ณ„๋ฅผ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๋ฐ ๊ฐœ๋ฐœ๊ณผ ์šด์˜์˜ ๋‹จ์ˆœํ™”๋ฅผ ์œ„ํ•ด ์ค‘๋ณต ํ†ตํ•ฉ, ๋ถ„๋ฆฌ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๋””์Šคํฌ I/O ๋Ÿ‰์ด ๋งŽ์•„์„œ ์กฐํšŒ ์‹œ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๊ฑฐ๋‚˜, ํ…Œ์ด๋ธ”๋ผ๋ฆฌ์˜ ๊ฒฝ๋กœ๊ฐ€ ๋„ˆ๋ฌด ๋ฉ€์–ด ์กฐ์ธ์œผ๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์˜ˆ์ƒ๋˜๊ฑฐ๋‚˜, ์นผ๋Ÿผ์„ ๊ณ„์‚ฐํ•˜์—ฌ ์กฐํšŒํ•  ๋•Œ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ๊ฒƒ์ด ์˜ˆ์ƒ๋˜๋Š” ๊ฒฝ์šฐ ๋ฐ˜์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์กฐํšŒ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋  ๋•Œ ๋ถ€๋ถ„์ ์œผ๋กœ ๋ฐ˜์ •๊ทœํ™”๋ฅผ ๊ณ ๋ คํ•˜๊ฒŒ ๋œ๋‹ค.

* ๋ฐ˜์ •๊ทœํ™”์˜ ๋Œ€์ƒ
1. ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํ…Œ์ด๋ธ”์— ์•ก์„ธ์Šคํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ๊ณ , ํ•ญ์ƒ ์ผ์ •ํ•œ ๋ฒ”์œ„๋งŒ์„ ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ
2. ํ…Œ์ด๋ธ”์— ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๊ณ  ๋Œ€๋Ÿ‰์˜ ๋ฒ”์œ„๋ฅผ ์ž์ฃผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ
3. ์„ฑ๋Šฅ ์ƒ ์ด์Šˆ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ
4. ํ…Œ์ด๋ธ”์— ์ง€๋‚˜์น˜๊ฒŒ ์กฐ์ธ์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ์ˆ ์ ์œผ๋กœ ์–ด๋ ค์šธ ๊ฒฝ์šฐ


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

Reference.

๋งํฌ1

Program : ์–ด๋–ค ์ž‘์—…์„ ์œ„ํ•ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ
Process : ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์ž์›์„ ํ• ๋‹น๋ฐ›์€ ์ž‘์—…์˜ ๋‹จ์œ„
Thread : ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜๋Š” ์‹คํ–‰ ํ๋ฆ„์˜ ๋‹จ์œ„

 

ํ”„๋กœ๊ทธ๋žจ์ด๋ž€ ํŒŒ์ผ์ด ์ €์žฅ์žฅ์น˜์— ์ €์žฅ๋˜์–ด ์žˆ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์˜ฌ๋ผ๊ฐ€ ์žˆ์ง€ ์•Š์€ ์ •์ ์ธ ์ƒํƒœ

 

 

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

  • ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค ( ๋…๋ฆฝ์ ์ธ ๊ฐœ์ฒด )
  • ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹น๋ฐ›๋Š” ์ž‘์—…์˜ ๋‹จ์œ„
  • ์ฆ‰, ๋™์ ์ธ ๊ฐœ๋…์œผ๋กœ๋Š” ์‹คํ–‰๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•œ๋‹ค

 

 

  • ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ๊ฐ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(Code, Data, Stack, Heap์˜ ๊ตฌ์กฐ)์„ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋‹น ์ตœ์†Œ 1๊ฐœ์˜ ์Šค๋ ˆ๋“œ(๋ฉ”์ธ ์Šค๋ ˆ๋“œ)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋ณ„๋„์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ณ€์ˆ˜๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
  • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ (IPC, inter-process communication)์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ( Ex. ํŒŒ์ดํ”„, ํŒŒ์ผ, ์†Œ์ผ“ ๋“ฑ์„ ์ด์šฉํ•œ ํ†ต์‹  ๋ฐฉ๋ฒ• ์ด์šฉ )

 

 

 

์Šค๋ ˆ๋“œ Thread

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

 

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

 


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

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐˆ ๋•Œ ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹น๋ฐ›๋Š”๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์—ˆ๋‹ค. ์ด ๋•Œ ์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๊ฐ๊ฐ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„, Code/Data/Stack/Heap์˜ ํ˜•์‹์œผ๋กœ ํ• ๋‹นํ•ด ์ค€๋‹ค. ๊ฐ๊ฐ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ• ๋‹นํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ณ€์ˆ˜๋‚˜ ์ž๋ฃŒ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.

 

 

 

์ด์™€ ๋‹ค๋ฅด๊ฒŒ ์Šค๋ ˆ๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์„œ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์—ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด, ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๋‚ด์—์„œ Stack ํ˜•์‹์œผ๋กœ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ๋”ฐ๋กœ ํ• ๋‹น๋ฐ›๊ณ , ๋‚˜๋จธ์ง€ Code/Data/Heap ํ˜•์‹์œผ๋กœ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ๊ฐ์˜ ์Šค๋ ˆ๋“œ๋Š” ๋ณ„๋„์˜ ์Šคํƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ํž™ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์„œ๋กœ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

 

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

 

๊ทธ๋Ÿฐ๋ฐ ์Šค๋ ˆ๋“œ์˜ ๊ฒฝ์šฐ๋Š” ๋‹ค๋ฅด๋‹ค. ์Šค๋ ˆ๋“œ๋Š” Code/Data/Heap ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ๋‚ด์šฉ์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์Šค๋ ˆ๋“œ ํ•˜๋‚˜์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ ๋ชจ๋‘๊ฐ€ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ๋œ๋‹ค.

 

 

์™œ ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ• ๊นŒ?

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

 


Reference.

์ฐธ๊ณ 

์ฐธ๊ณ 2

HTTP๋ž€

Hyper Text Transfer Protocol
www์ƒ์—์„œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ํ”„๋กœํ† ์ฝœ

 

ํด๋ผ์ด์–ธํŠธ์ธ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— HTTP๋ฅผ ํ†ตํ•ด ์›นํŽ˜์ด์ง€๋‚˜ ์ด๋ฏธ์ง€ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ์ด ์š”์ฒญ์— ์‘๋‹ตํ•˜์—ฌ ์š”๊ตฌํ•˜๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ฒŒ ๋œ๋‹ค.

HTTP๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €Client์™€ ์„œ๋ฒ„Server๊ฐ„์˜ ์›นํŽ˜์ด์ง€ ๊ฐ™์€ ์ž์›์„ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์“ฐ๋Š” ํ†ต์‹  ๊ทœ์•ฝ์ด๋‹ค.

HTTP๋Š” ํ…์ŠคํŠธ ๊ตํ™˜์ด๋ผ (htmlํŽ˜์ด์ง€๋„ ํ…์ŠคํŠธ!) ๋ˆ„๊ตฐ๊ฐ€ ๋„คํŠธ์›Œํฌ์—์„œ ์‹ ํ˜ธ๋ฅผ ๊ฐ€๋กœ์ฑ„ ๋ณธ๋‹ค๋ฉด ๋‚ด์šฉ์ด ๋…ธ์ถœ๋  ๊ฒƒ์ด๋‹ค.

์ด์™€๊ฐ™์€ ๋ณด์•ˆ์ƒ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ํ”„๋กœํ† ์ฝœ์ด HTTPS์ด๋‹ค.

 

 

 

" HTTP์˜ ๋ฌธ์ œ์  "

  • HTTP ๋Š” ํ‰๋ฌธ ํ†ต์‹ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋„์ฒญ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํ†ต์‹  ์ƒ๋Œ€๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์œ„์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์™„์ „์„ฑ์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

* ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ์ ์€ ์•”ํ˜ธํ™”ํ•˜์ง€ ์•Š์€ ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์—๋„ ๊ณตํ†ต๋˜๋Š” ๋ฌธ์ œ์ ์ด๋‹ค.

 

 

1. TCP/IP ๋Š” ๋„์ฒญ ๊ฐ€๋Šฅํ•œ ๋„คํŠธ์›Œํฌ...

 TCP/IP ๊ตฌ์กฐ์˜ ํ†ต์‹ ์€ ์ „๋ถ€ ํ†ต์‹  ๊ฒฝ๋กœ ์ƒ์—์„œ ์—ฟ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํŒจํ‚ท์„ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ๋„ ๋„์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•”ํ˜ธํ™”ํ•˜์—ฌ ํ†ต์‹ ํ•ด์•ผํ•œ๋‹ค.

๋ณด์•ˆ ๋ฐฉ๋ฒ•

1. ํ†ต์‹  ์ž์ฒด๋ฅผ ์•”ํ˜ธํ™”
SSL ๋˜๋Š” TLS๋ผ๋Š” ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์„ ์กฐํ•ฉํ•จ์œผ๋กœ์จ  HTTP์˜ ํ†ต์‹  ๋‚ด์šฉ์„ ์•”ํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.  SSL์„ ์กฐํ•ฉํ•œ HTTP๋ฅผ ๋ฐ”๋กœ HTTPS(HTTP over SSL)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

2. ์ฝ˜ํ…์ธ ๋ฅผ ์•”ํ˜ธํ™”
๋ง ๊ทธ๋Œ€๋กœ HTTP๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์šด๋ฐ˜ํ•˜๋Š” ๋‚ด์šฉ์ธ HTTP ๋ฉ”์„ธ์ง€์— ํฌํ•จ๋˜๋Š” ์ฝ˜ํ…์ธ ๋งŒ ์•”ํ˜ธํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์•”ํ˜ธํ™”ํ•ด์„œ ์ „์†กํ•˜๋ฉด ๋ฐ›์€ ์ธก์—์„œ๋Š” ๊ทธ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.  

 

 

 

2. ํ†ต์‹  ์ƒ๋Œ€๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์œ„์žฅ์ด ๊ฐ€๋Šฅ...

HTTP ์— ์˜ํ•œ ํ†ต์‹ ์—๋Š” ์ƒ๋Œ€๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ์ฒ˜๋ฆฌ๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ˆ„๊ตฌ๋“ ์ง€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. IP ์ฃผ์†Œ๋‚˜ ํฌํŠธ ๋“ฑ์—์„œ ๊ทธ ์›น ์„œ๋ฒ„์— ์•ก์„ธ์Šค ์ œํ•œ์ด ์—†๋Š” ๊ฒฝ์šฐ ๋ฆฌํ€˜์ŠคํŠธ๊ฐ€ ์˜ค๋ฉด ์ƒ๋Œ€๊ฐ€ ๋ˆ„๊ตฌ๋“ ์ง€ ๋ฌด์–ธ๊ฐ€์˜ ๋ฆฌ์Šคํฐ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง•์€ ์—ฌ๋Ÿฌ ๋ฌธ์ œ์ ์„ ์œ ๋ฐœํ•œ๋‹ค.

 

1. ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋‚ธ ๊ณณ์˜ ์›น ์„œ๋ฒ„๊ฐ€ ์›๋ž˜ ์˜๋„ํ•œ ๋ฆฌ์Šคํฐ์Šค๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ์›น ์„œ๋ฒ„์ธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.
2. ๋ฆฌ์Šคํฐ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ ๊ณณ์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›๋ž˜ ์˜๋„ํ•œ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋‚ธ ํด๋ผ์ด์–ธํŠธ์ธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.
3. ํ†ต์‹ ํ•˜๊ณ  ์žˆ๋Š” ์ƒ๋Œ€๊ฐ€ ์ ‘๊ทผ์ด ํ—ˆ๊ฐ€๋œ ์ƒ๋Œ€์ธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.
4. ์–ด๋””์—์„œ ๋ˆ„๊ฐ€ ๋ฆฌํ€˜์ŠคํŠธ ํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.
5. ์˜๋ฏธ์—†๋Š” ๋ฆฌํ€˜์ŠคํŠธ๋„ ์ˆ˜์‹ ํ•œ๋‹ค. —> DoS ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์—†๋‹ค.

 

๋ณด์™„ ๋ฐฉ๋ฒ•

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

 

 

 

3. ์™„์ „์„ฑ์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค

์—ฌ๊ธฐ์„œ ์™„์ „์„ฑ์ด๋ž€ ์ •๋ณด์˜ ์ •ํ™•์„ฑ ์„ ์˜๋ฏธํ•œ๋‹ค. ์„œ๋ฒ„ ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์ˆ˜์‹ ํ•œ ๋‚ด์šฉ์ด ์†ก์‹ ์ธก์—์„œ ๋ณด๋‚ธ ๋‚ด์šฉ๊ณผ ์ผ์น˜ํ•œ๋‹ค๋ผ๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋‹ค. ๋ฆฌํ€˜์ŠคํŠธ๋‚˜ ๋ฆฌ์Šคํฐ์Šค๊ฐ€ ๋ฐœ์‹ ๋œ ํ›„์— ์ƒ๋Œ€๊ฐ€ ์ˆ˜์‹ ํ•˜๋Š” ์‚ฌ์ด์— ๋ˆ„๊ตฐ๊ฐ€์— ์˜ํ•ด ๋ณ€์กฐ๋˜๋”๋ผ๋„ ์ด ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์—†๋‹ค. ์ด์™€ ๊ฐ™์ด ๊ณต๊ฒฉ์ž๊ฐ€ ๋„์ค‘์— ๋ฆฌํ€˜์ŠคํŠธ๋‚˜ ๋ฆฌ์Šคํฐ์Šค๋ฅผ ๋นผ์•—์•„ ๋ณ€์กฐํ•˜๋Š” ๊ณต๊ฒฉ์„ ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ(Man-in-the-Middle)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

๋ณด์™„ ๋ฐฉ๋ฒ•

MD5, SHA-1 ๋“ฑ์˜ ํ•ด์‹œ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ํŒŒ์ผ์˜ ๋””์ง€ํ„ธ ์„œ๋ช…์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•˜์ง€๋งŒ ํ™•์‹คํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ๋ฐฉ์ง€ํ•˜๊ธฐ์—๋Š” HTTPS๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. SSL ์—๋Š” ์ธ์ฆ์ด๋‚˜ ์•”ํ˜ธํ™”, ๊ทธ๋ฆฌ๊ณ  ๋‹ค์ด์ œ์ŠคํŠธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

 


HTTPS

HTTP์— ์•”ํ˜ธํ™”์™€ ์ธ์ฆ๊ณผ ์™„์ „์„ฑ ๋ณดํ˜ธ๋ฅผ ๋”ํ•œ HTTPS

HTTPS๋Š” SSL ์˜ ๊ป์งˆ์„ ๋ฎ์–ด์“ด HTTP ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, HTTPS ๋Š” ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์˜ ํ”„๋กœํ† ์ฝœ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. HTTP ํ†ต์‹ ํ•˜๋Š” ์†Œ์ผ“ ๋ถ€๋ถ„์„ SSL(Secure Socket Layer) or TLS(Transport Layer Security)๋ผ๋Š” ํ”„๋กœํ† ์ฝœ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ ๋ฟ์ด๋‹ค. HTTP ๋Š” ์›๋ž˜ TCP ์™€ ์ง์ ‘ ํ†ต์‹ ํ–ˆ์ง€๋งŒ, HTTPS ์—์„œ HTTP ๋Š” SSL ๊ณผ ํ†ต์‹ ํ•˜๊ณ  SSL ์ด TCP ์™€ ํ†ต์‹  ํ•˜๊ฒŒ ๋œ๋‹ค. SSL ์„ ์‚ฌ์šฉํ•œ HTTPS ๋Š” ์•”ํ˜ธํ™”์™€ ์ฆ๋ช…์„œ, ์•ˆ์ „์„ฑ ๋ณดํ˜ธ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

HTTPS ์˜ SSL ์—์„œ๋Š” ๊ณตํ†ตํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹๊ณผ ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ํ˜ผํ•ฉํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•”ํ˜ธ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ณตํ†ตํ‚ค๋ฅผ ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์œผ๋กœ ๊ตํ™˜ํ•œ ๋‹ค์Œ์— ๋‹ค์Œ๋ถ€ํ„ฐ์˜ ํ†ต์‹ ์€ ๊ณตํ†ตํ‚ค ์•”ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

 

๋ชจ๋“  ์›น ํŽ˜์ด์ง€์—์„œ HTTPS๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ ๊นŒ?

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

 


Reference.

์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ = ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

 

OOP
Object Oriented Programming
๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

 

 

 

๊ฐ์ฒด๋ž€ ๋ง ๊ทธ๋Œ€๋กœ ๋Œ€์ƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹จ์–ด

์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ๋žŒ ๊ฐœ์ธ ํ•œ ๋ช… ํ•œ ๋ช…์„ ๋ชจ๋‘ ๊ฐ์ฒด๋ผ ํ•  ์ˆ˜ ์žˆ๊ณ , ์ฑ… ํ•œ ๊ถŒ ํ•œ ๊ถŒ์„ ๊ฐ์ฒด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํด๋ž˜์Šค

์‚ฌ๋žŒ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ™์€ ์†์„ฑ๋“ค์„ ๊ฐ–๊ณ  ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ์†์„ฑ์ด๋ž€ ๋ˆˆ, ์ฝ”, ์ž…, ์†, ๋ฐœ, ๋“ฑ์˜ ์‹ ์ฒด๋“ค์„ ์˜๋ฏธํ•œ๋‹ค.

์‚ฌ๋žŒ๊ฐ™์€ ๊ฐ์ฒด๋“ค์ด ๊ณตํ†ต์ ์œผ๋กœ ๊ฐ–๋Š” ์†์„ฑ๋“ค์„ ๋ชจ์•„์„œ ์ •์˜๋‚ด๋ฆฐ ๊ฒƒ์„ ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ค.

 

 

 

๊ฐ์ฒด = ๋ถ•์–ด๋นต

ํด๋ž˜์Šค = ๋ถ•์–ด๋นต ํ‹€

 

 

 


 

oopํ•˜๋ฉด ์ž๋™์œผ๋กœ 4๊ฐ€์ง€ ์†์„ฑ์ด ๋– ์˜ฌ๋ผ์•ผ ํ•œ๋‹ค.

 

OOP ์†์„ฑ

1. ์บก์Šํ™” Encapsulation

์บก์Šํ™”๋ž€ ํ•˜๋‚˜์˜ ๊ฐ์ฒด์— ๋Œ€ํ•ด ๊ทธ ๊ฐ์ฒด๊ฐ€ ํŠน์ •ํ•œ ๋ชฉ์ ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

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

 

์˜ˆ๋ฅผ ๋“ค์ž๋ฉด, ์€ํ–‰์ด๋ผ๋Š” ํด๋ž˜์Šค๋Š” ์ž”๊ณ ๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์žˆ๊ณ  ๊ทธ ์ž”๊ณ ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜, ์ž”๊ณ ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋“ฑ์ด ์žˆ๋‹ค๊ณ  ์น˜๋Š” ๊ฒƒ์ด๋‹ค. 

๊ทผ๋ฐ ์บก์Šํ™”๋ฅผ ํ•˜๋Š” ์ค‘์š”ํ•œ ๋ชฉ์ ์€ ๋ฐ”๋กœ ์ •๋ณด์˜ ์€๋‹‰ํ™”์ด๋‹ค.  ์ž”๊ณ ๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ๋งŒ์•ฝ public ์œผ๋กœ ์„ ์–ธ๋˜์–ด์žˆ๋‹ค๊ณ  ์น˜์ž. 200๋งŒ์›์ธ ๋‚˜์˜ ์ž”๊ณ ๊ฐ€ ๋ˆ„๊ตฐ๊ฐ€ ์ ‘๊ทผ์— ์˜ํ•ด 0์›์ด ๋ ์ˆ˜๋„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ž”๊ณ ๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก private๋กœ ์„ ์–ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋ณดํ˜ธ๋œ ๋ณ€์ˆ˜๋Š” getter๋‚˜ setter๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๊ฐ„์ ‘์ ์œผ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์บก์Šํ™”์˜ ์ค‘์š”ํ•œ ๋ชฉ์ ์ด๋‹ค.

 

 

 

2. ์ถ”์ƒํ™” Abstraction

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

 

์ด ๊ณผ์ •์—์„œ ๊ณตํ†ต์ ์ธ ์š”์†Œ๋‚˜ ํŠน์ง•์„ ์ถ”์ถœํ•˜๋Š” ๊ณผ์ •์ด ์ถ”์ƒํ™” ์ธ๊ฒƒ ๊ฐ™๋‹ค. 

 

 

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

 

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

 

์ฐจ๋ฌธ์€ ์—ด๋ ค์•ผํ•œ๋‹ค๋Š” ๊ณตํ†ต์ ์ธ ํ–‰๋“ฑ ์ฆ‰ ์–ด๋–ค ์ฐจ๋“  ํ•„์ˆ˜์ ์œผ๋กœ ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ์ถ”์ถœ๋œ๋‹ค. 

 

 

 

3. ๋‹คํ˜•์„ฑ Polymorphism

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

 

์‰ฝ๊ฒŒ ๊ฐ™์€ ๋™์ž‘์ด์ง€๋งŒ ๋‹ค๋ฅธ๊ฒฐ๊ณผ๋ฌผ์„ ๋‚˜์˜ฌ๋•Œ ์ด๋ฅผ ๋‹คํ˜•์„ฑ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

ํฌ๊ฒŒ ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ์ฒด์ง€ํ–ฅ์—์„œ ๋‹คํ˜•์„ฑ์˜ ๊ฐœ๋…์„ ๋…น์—ฌ๋‚ด๋Š” ๋ฐฉ๋ฒ•์€ ๋‘๊ฐ€์ง€์ธ๋ฐ, ๋ฐ”๋กœ

์˜ค๋ฒ„๋ผ์ด๋”ฉ(Overriding) ๊ณผ ์˜ค๋ฒ„๋กœ๋”ฉ(Overloading) ์ด๋‹ค.

์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ๋ถ€๋ชจํด๋ž˜์Šค์—์„œ ์ƒ์†๋ฐ›์€ ์„œ๋ธŒํด๋ž˜์Šค ์ฆ‰ ์ž์‹ํด๋ž˜์Šค์—์„œ ๋ถ€๋ชจํด๋ž˜์Šค,์ฆ‰ ์ƒ์œ„ํด๋ž˜์Šค์—์„œ ๋งŒ๋“ค์–ด์ง„ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ์˜ ์ž…๋ง›๋Œ€๋กœ ๋‹ค์‹œ ์žฌ์ฐฝ์กฐํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

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

 

 

 

4. ์ƒ์†์„ฑ, ์žฌ์‚ฌ์šฉ Inheritance

์ƒ์†์€ ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๊ฝƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒ์†์ด๋ž€ ๊ธฐ์กด ์ƒ์œ„ํด๋ž˜์Šค์— ๊ทผ๊ฑฐํ•˜์—ฌ ์ƒˆ๋กญ๊ฒŒ ํด๋ž˜์Šค์™€ ํ–‰์œ„๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๊ฐœ๋…์ด๋‹ค.

 

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

 

* ์ž๋ฐ”์—์„  ์ƒ์†์€ ๋‹จ์ผ์ƒ์†๋ฐ–์— ์ง€์›์ด ์•ˆ๋œ๋‹ค.

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

JVM
Java Virtual Machine
์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ 


* ๊ฐ€์ƒ ๋จธ์‹  : ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌผ๋ฆฌ์  ๋จธ์‹ ๊ณผ ์œ ์‚ฌํ•œ ๋จธ์‹ ์„ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ

 

  • JVM์€ JAVA์™€ OS ์‚ฌ์ด์—์„œ ์ค‘๊ฐœ์ž ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ JAVA๊ฐ€ OS์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ณ  ์žฌ์‚ฌ์šฉ์„ ๊ฐ€๋Šฅ์ผ€ ํ•ด์ค€๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ, Garbage collection์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • JVM์€ ์Šคํƒ๊ธฐ๋ฐ˜์˜ ๊ฐ€์ƒ๋จธ์‹ ์ด๋ฏ€๋กœ ์Šคํƒ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

 

์™œ ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹ ์„ ์•Œ์•„์•ผํ• ๊นŒ?

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

 

 

 


 

์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๊ณผ์ •

1. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์‹œ JVM์€ OS๋กœ๋ถ€ํ„ฐ ์ด ํ”„๋กœ๊ทธ๋žจ์ด ํ•„์š”๋กœ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š”๋‹ค. 
                         JVM์€ ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์šฉ๋„์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•œ๋‹ค.
2. ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋ฐ” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ฝ์–ด๋“ค์—ฌ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์‹œํ‚จ๋‹ค. ( .java -> .class )
3. Class Loader๋ฅผ ํ†ตํ•ด class ํŒŒ์ผ๋“ค์„ JVM์œผ๋กœ ๋กœ๋”ฉํ•œ๋‹ค.
4. ๋กœ๋”ฉ๋œ class ํŒŒ์ผ๋“ค์€ Execution engine์„ ํ†ตํ•ด ํ•ด์„๋œ๋‹ค.
5. ํ•ด์„๋œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” runtime data areas์— ๋ฐฐ์น˜๋˜์–ด ์‹ค์งˆ์ ์ธ ์ˆ˜ํ–‰์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
             ์ด๋Ÿฌํ•œ ์‹คํ–‰๊ณผ์ • ์†์—์„œ JVM์€ ํ•„์š”์— ๋”ฐ๋ผ Thread Synchronization๊ณผ GC ๊ฐ™์€ ๊ด€๋ฆฌ์ž‘์—… ์ˆ˜ํ–‰

 

 

JVM

 

 

JVM ๊ตฌ์„ฑ

Class Loader

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

 

 

Execution Engine 

ํด๋ž˜์Šค๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ์—ญํ• ์ด๋‹ค. ํด๋ž˜์Šค๋กœ๋”๊ฐ€ JVM ๋‚ด์˜ ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ์— ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๋ฐฐ์น˜์‹œํ‚ค๊ณ , ์ด๊ฒƒ์€ ์‹คํ–‰ ์—”์ง„์— ์˜ํ•ด ์‹คํ–‰๋œ๋‹ค. ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ๋Š” ๊ธฐ๊ณ„๊ฐ€ ๋ฐ”๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋ณด๋‹ค๋Š” ๋น„๊ต์  ์ธ๊ฐ„์ด ๋ณด๊ธฐ ํŽธํ•œ ํ˜•ํƒœ๋กœ ๊ธฐ์ˆ ๋œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์‹คํ–‰ ์—”์ง„์€ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹ค์ œ JVM ๋‚ด๋ถ€์—์„œ ๊ธฐ๊ณ„๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. 

์ด๋•Œ ๋‘๊ฐ€์ง€ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

Interpreter 
์‹คํ–‰ ์—”์ง„์€ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๋ช…๋ น์–ด ๋‹จ์œ„๋กœ ์ฝ์–ด์„œ ์‹คํ–‰ํ•œ๋‹ค.
ํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด์˜ ๋‹จ์ ์„ ๊ทธ๋Œ€๋กœ ๊ฐ–๊ณ  ์žˆ๋‹ค. 
ํ•œ ์ค„ ์”ฉ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Š๋ฆฌ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

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

 

Garbage collector

GC๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“ˆ(thread)์ด ์žˆ๋‹ค.

 

 

 

 


Runtime Data Area

:ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด OS์—์„œ ํ• ๋‹น๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„

Runtime Data Area

 

1. PC ๋ ˆ์ง€์Šคํ„ฐ

Thread๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์ƒ์„ฑ๋œ๋‹ค.

์Šค๋ ˆ๋“œ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์กด์žฌํ•˜๊ณ  thread๊ฐ€ ์–ด๋–ค ๋ถ€๋ถ„์„ ์–ด๋–ค ๋ช…๋ น์œผ๋กœ ์‹คํ–‰ํ•ด์•ผํ• ์ง€์— ๋Œ€ํ•œ ๊ธฐ๋ก์„ ํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ ํ˜„์žฌ ์ˆ˜ํ–‰ ์ค‘์ธ JVM ๋ช…๋ น์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

 

 

2. JVM ์Šคํƒ ์˜์—ญ

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๊ณผ์ •์—์„œ ์ž„์˜๋กœ ํ• ๋‹น๋˜์—ˆ๋‹ค๊ฐ€ ๋ฉ”์†Œ๋“œ๋ฅผ ๋น ์ ธ๋‚˜๊ฐ€๋ฉด ๋ฐ”๋กœ ์†Œ๋ฉธ๋˜๋Š” ํŠน์„ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์˜์—ญ์ด๋‹ค. ๊ฐ์ข… ํ˜•ํƒœ์˜ ๋ณ€์ˆ˜๋‚˜ ์ž„์„ธ ๋ฐ์ดํ„ฐ, ์Šค๋ ˆ๋“œ๋‚˜ ๋ฉ”์†Œ๋“œ์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ์‹œ๋งˆ๋‹ค ๊ฐ๊ฐ์˜ ์Šคํƒ ํ”„๋ ˆ์ž„(๊ทธ ๋ฉ”์†Œ๋“œ๋งŒ์„ ์œ„ํ•œ ๊ณต๊ฐ„)์ด ์ƒ์„ฑ๋œ๋‹ค.

๋ฉ”์†Œ๋“œ ์ˆ˜ํ–‰์ด ๋๋‚˜๋ฉด ํ”„๋ ˆ์ž„ ๋ณ„๋กœ ์‚ญ์ œ๋ฅผ ํ•œ๋‹ค.

๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’๋“ค(local variable)์„ ์ €์žฅํ•œ๋‹ค.

๋˜ ํ˜ธ์ถœ๋œ ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜, ์ง€์—ญ๋ณ€์ˆ˜, ๋ฆฌํ„ด ๊ฐ’ ๋ฐ ์—ฐ์‚ฐ ์‹œ ์ผ์–ด๋‚˜๋Š” ๊ฐ’๋“ค์„ ์ž„์‹œ๋กœ ์ €์žฅํ•œ๋‹ค.

 

 

3. Native method stack

์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ด ์ปดํŒŒ์ผ๋˜์–ด ์ƒ์„ฑ๋˜๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ, ์‹ค์ œ ์‹คํ–‰๊ฐ€๋Šฅํ•œ ๊ธฐ๊ณ„์–ด๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋Š” ์˜์—ญ์ด๋‹ค. (JAVA๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„)

JAVA Native Interface๋ฅผ ํ†ตํ•ด ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ์ „ํ™˜ํ•˜์—ฌ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. 

์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ์ฒ˜๋Ÿผ ์ปค๋„์ด ์Šคํƒ์„ ์žก์•„ ๋…์ž์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋Š” ์˜์—ญ์ด๋‹ค.

์ด ๋ถ€๋ถ„์„ ํ†ตํ•ด C code๋ฅผ ์‹คํ–‰์‹œ์ผœ ์ปค๋„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

4. Metod Area = class area = static area

ํด๋ž˜์Šค ์ •๋ณด๋ฅผ ์ฒ˜์Œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์˜ฌ๋ฆด ๋•Œ ์ดˆ๊ธฐํ™” ๋˜๋Š” ๋Œ€์ƒ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด๋‹ค.

์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋˜๋Š” ๋ฉ”์†Œ๋“œ์˜ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ์ด๋‹ค. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์€ main ๋ฉ”์†Œ๋“œ์˜ ํ˜ธ์ถœ์—์„œ๋ถ€ํ„ฐ ๊ณ„์†๋œ ๋ฉ”์†Œ๋“œ์˜ ํ˜ธ์ถœ๋กœ ํ๋ฆ„์„ ์ด์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

๋Œ€๋ถ€๋ถ„ ์ธ์Šคํ„ด์Šค์˜ ์ƒ์„ฑ๋„ ๋ฉ”์†Œ๋“œ ๋‚ด์—์„œ ๋ช…๋ นํ•˜๊ณ  ํ˜ธ์ถœํ•œ๋‹ค. 

์‚ฌ์‹ค์ƒ ์ปดํŒŒ์ผ ๋œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ์˜  ๋Œ€๋ถ€๋ถ„์ด ๋ฉ”์†Œ๋“œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ์˜ ๋ชจ๋“  ๋ฐ”์ดํŠธ์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ผ๊ฐ„๋‹ค๊ณ  ๋ด๋„ ์ƒ๊ด€ ์—†๋‹ค. 

์ด ๊ณต๊ฐ„์—๋Š” Runtime Constant Pool์ด๋ผ๋Š” ๋ณ„๋„์˜ ๊ด€๋ฆฌ์˜์—ญ์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์ด๋Š” ์ƒ์ˆ˜ ์ž๋ฃŒํ˜•์„ ์ €์žฅํ•˜์—ฌ ์ฐธ์กฐํ•˜๊ณ  ์ค‘๋ณต์„ ๋ง‰๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์˜ฌ๋ผ๊ฐ€๋Š” ์ •๋ณด์˜ ์ข…๋ฅ˜

- field information : ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„, ๋ฐ์ดํ„ฐ ํƒ€์ž…, ์ ‘๊ทผ ์ œ์–ด์ž์— ๋Œ€ํ•œ ์ •๋ณด
- method information : ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„, ๋ฆฌํ„ด ํƒ€์ž…, ๋งค๊ฐœ๋ณ€์ˆ˜, ์ ‘๊ทผ ์ œ์–ด์ž์— ๋Œ€ํ•œ ์ •๋ณด
- type information : class์ธ์ง€ interface์ธ์ง€์˜ ์—ฌ๋ถ€ ์ €์žฅ, type์ด ์†์„ฑ, ์ „์ฒด ์ด๋ฆ„, super class์˜ ์ „์ฒด ์ด๋ฆ„

* method area = ํด๋ž˜์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„   |   heap ์˜์—ญ = ๊ฐ์ฒด๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„

  heap๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ GC์˜ ๊ด€๋ฆฌ ๋Œ€์ƒ์— ํฌํ•จ๋œ๋‹ค.

 

 

5. Heap

๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด๋‹ค. new ์—ฐ์‚ฐ์ž๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์„ ์ €์žฅํ•œ๋‹ค.

๋ฌผ๋ก  class area ์˜์—ญ์— ์˜ฌ๋ผ์˜จ ํด๋ž˜์Šค๋“ค๋งŒ ๊ฐ์ฒด๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

ํž™์€ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

  • New/Young Generation

Eden : ๊ฐ์ฒด๋“ค์ด ์ตœ์ดˆ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ณต๊ฐ„

Survivor 0/1 : Eden์—์„œ ์ฐธ์กฐ๋˜๋Š” ๊ฐ์ฒด๋“ค์ด ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

 

 

  • Old ์˜์—ญ

new area์—์„œ ์ผ์ • ์‹œ๊ฐ„ ์ฐธ์กฐ๋˜๊ณ  ์žˆ๋Š”, ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋“ค์ด ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„์ธ Eden ์˜์—ญ์— ๊ฐ์ฒด๊ฐ€ ๊ฐ€๋“์ฐจ๊ฒŒ๋˜๋ฉด ์ฒซ๋ฒˆ์งธ GC๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. eden ์˜์—ญ์— ์žˆ๋Š” ๊ฐ’๋“ค์„ survivor 1 ์˜์—ญ์— ๋ณต์‚ฌํ•˜๊ณ  ์ด ์˜์—ญ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์˜์—ญ์˜ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

 

* ์ธ์Šคํ„ด์Šค๋Š” ์†Œ๋ฉธ ๋ฐฉ๋ฒ•๊ณผ ์†Œ๋ฉธ ์‹œ์ ์ด ์ง€์—ญ ๋ณ€์ˆ˜์™€๋Š” ๋‹ค๋ฅด๊ธฐ์— ํž™์ด๋ผ๋Š” ๋ณ„๋„์˜ ์˜์—ญ์— ํ• ๋‹น ๋œ๋‹ค. JVM์€ ๋งค์šฐ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์†Œ๋ฉธ์‹œํ‚จ๋‹ค. ( ๋”์ด์ƒ ์ธ์Šคํ„ด์Šค์˜ ์กด์žฌ ์ด์œ ๊ฐ€ ์—†์„ ๋•Œ ์†Œ๋ฉธ์‹œํ‚จ๋‹ค )

 

 

  • Permanent Generation

์ƒ์„ฑ๋œ ๊ฐ์ฒด๋“ค์˜ ์ •๋ณด์˜ ์ฃผ์†Œ๊ฐ’์ด ์ €์žฅ๋œ ๊ณต๊ฐ„์ด๋‹ค.

class loader์— ์˜ํ•ด ๋กœ๋“œ๋˜๋Š” class, method ๋“ฑ์— ๋Œ€ํ•œ meta ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ์ด๊ณ  JVM์— ์˜ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. 

reflection์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๊ฐ€ ๋กœ๋”ฉ๋˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.

๋‚ด๋ถ€์ ์œผ๋กœ reflection ๊ธฐ๋Šฅ์„ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” spring framework๋ฅผ ์ด์šฉํ•  ๊ฒฝ์šฐ ์ด ์˜์—ญ์— ๋Œ€ํ•œ ๊ณ ๋ ค๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

Array

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ
๋…ผ๋ฆฌ์  ์ €์žฅ ์ˆœ์„œ = ๋ฌผ๋ฆฌ์  ์ €์žฅ ์ˆœ์„œ

 

 

์ธ๋ฑ์Šค(index)๋กœ ํ•ด๋‹น ์›์†Œ(element)์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ฐพ๊ณ ์ž ํ•˜๋Š” ์›์†Œ์˜ ์ธ๋ฑ์Šค ๊ฐ’์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉด Big-O(1)์— ํ•ด๋‹น ์›์†Œ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ random access ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ์‚ญ์ œ ๋˜๋Š” ์‚ฝ์ž…์˜ ๊ณผ์ •์—์„œ๋Š” ํ•ด๋‹น ์›์†Œ์— ์ ‘๊ทผํ•˜์—ฌ ์ž‘์—…์„ ์™„๋ฃŒํ•œ ๋’ค(O(1)), ๋˜ ํ•œ ๊ฐ€์ง€์˜ ์ž‘์—…์„ ์ถ”๊ฐ€์ ์œผ๋กœ ํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‹œ๊ฐ„์ด ๋” ๊ฑธ๋ฆฐ๋‹ค. ๋งŒ์•ฝ ๋ฐฐ์—ด์˜ ์›์†Œ ์ค‘ ์–ด๋Š ์›์†Œ๋ฅผ ์‚ญ์ œํ–ˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ๋ฐฐ์—ด์˜ ์—ฐ์†์ ์ธ ํŠน์ง•์ด ๊นจ์ง€๊ฒŒ ๋œ๋‹ค. ์ฆ‰ ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์‚ญ์ œํ•œ ์›์†Œ๋ณด๋‹ค ํฐ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ–๋Š” ์›์†Œ๋“ค์„ shiftํ•ด์ค˜์•ผ ํ•˜๋Š” ๋น„์šฉ(cost)์ด ๋ฐœ์ƒํ•˜๊ณ  ์ด ๊ฒฝ์šฐ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n)๊ฐ€ ๋œ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Array ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ์‚ญ์ œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ time complexity ์˜ worst case ๋Š” O(n)์ด ๋œ๋‹ค.

 

์‚ฝ์ž…์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ๋งŒ์•ฝ ์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ์— ์ƒˆ๋กœ์šด ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ๋ชจ๋“  ์›์†Œ๋“ค์˜ ์ธ๋ฑ์Šค๋ฅผ 1 ์”ฉ shift ํ•ด์ค˜์•ผ ํ•˜๋ฏ€๋กœ ์ด ๊ฒฝ์šฐ๋„ O(n)์˜ ์‹œ๊ฐ„์„ ์š”๊ตฌํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

 


 

Linked List

๊ฐ๊ฐ์˜ ์›์†Œ๋“ค์€ ์ž๊ธฐ ์ž์‹  ๋‹ค์Œ์— ์–ด๋–ค ์›์†Œ์ธ์ง€๋งŒ์„ ๊ธฐ์–ต

 

 

์ž๊ธฐ ๋‹ค์Œ์— ์–ด๋–ค ์›์†Œ์ธ์ง€ ๊ธฐ์–ตํ•ด๋‘๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋ถ€๋ถ„๋งŒ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ์‚ญ์ œ์™€ ์‚ฝ์ž…์„ O(1) ๋งŒ์— ํ•ด๊ฒฐ๊ฐ€๋Šฅ!

 

ํ•˜์ง€๋งŒ ์›ํ•˜๋Š” ์œ„์น˜์— ์‚ฝ์ž…์„ ํ•˜๊ณ ์ž ํ•˜๋ฉด ์›ํ•˜๋Š” ์œ„์น˜๋ฅผ Search ๊ณผ์ •์— ์žˆ์–ด์„œ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ๋‹ค ํ™•์ธํ•ด๋ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. Array ์™€๋Š” ๋‹ฌ๋ฆฌ ๋…ผ๋ฆฌ์  ์ €์žฅ ์ˆœ์„œ์™€ ๋ฌผ๋ฆฌ์  ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๊ฒƒ์€ ์ผ๋‹จ ์‚ฝ์ž…ํ•˜๊ณ  ์ •๋ ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ์ด ๊ณผ์ • ๋•Œ๋ฌธ์—, ์–ด๋– ํ•œ ์›์†Œ๋ฅผ ์‚ญ์ œ ๋˜๋Š” ์ถ”๊ฐ€ํ•˜๊ณ ์ž ํ–ˆ์„ ๋•Œ, ๊ทธ ์›์†Œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ O(n)์˜ ์‹œ๊ฐ„์ด ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

๊ฒฐ๊ตญ linked list ์ž๋ฃŒ๊ตฌ์กฐ๋Š” search ์—๋„ O(n)์˜ time complexity ๋ฅผ ๊ฐ–๊ณ , ์‚ฝ์ž…, ์‚ญ์ œ์— ๋Œ€ํ•ด์„œ๋„ O(n)์˜ time complexity ๋ฅผ ๊ฐ–๋Š”๋‹ค. 

 

๊ทธ๋ ‡์ง€๋งŒ Linked List ๋Š” Tree ๊ตฌ์กฐ์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ, Tree ์—์„œ ์‚ฌ์šฉ๋˜์—ˆ์„ ๋•Œ ๊ทธ ์œ ์šฉ์„ฑ์ด ๋“œ๋Ÿฌ๋‚œ๋‹ค.

 

 


 

1. ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ ์†๋„ Array๊ฐ€ ์ข‹๋‹ค.

* ๋ฐฐ์—ด์€ index๋งŒ ์žˆ๋‹ค๋ฉด O(1)์— ์ ‘๊ทผ๊ฐ€๋Šฅ
์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” ์ตœ์†Œ ํ•œ ๋ฒˆ์€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜์—ฌ์•ผ ํ•˜๋ฏ€๋กœ O(n)
2. ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ์†๋„ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ์ „๋ฐ˜์ ์œผ๋กœ Linked List๊ฐ€ ๋‚ซ๋‹ค.

* linked list๋Š” ์–ด๋Š ๊ณณ์— ์‚ฝ์ž…ํ•˜๋˜์ง€ O(n)

array๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ฐ„์ด๋‚˜ ๋งจ ์•ž์— ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ํ•œ์นธ์”ฉ ๋ฏธ๋ค„์•ผ ํ•˜๊ณ  ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋ฉด realloc() ๋˜๋Š” ์ƒˆ๋กœ์ด ํ• ๋‹นํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํ™•์žฅ ํ•„์š”

๋งŒ์•ฝ array์— ๊ณต๊ฐ„์ด ๋งŽ์ด ๋‚จ์•„์žˆ๊ณ  ๋งจ ๋์— ์‚ฝ์ž…ํ•œ๋‹ค๋ฉด, array ์‚ฝ์ž… ์†๋„ ์—ญ์‹œ O(1) ๊ฐ€๋Šฅ
3. ๋ฐ์ดํ„ฐ ์‚ญ์ œ ์†๋„ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ์ „๋ฐ˜์ ์œผ๋กœ Linked List๊ฐ€ ๋‚ซ๋‹ค.
๊ฒฐ๋ก  ์‚ฝ์ž… ์‚ญ์ œ๊ฐ€ ๋ฒˆ๋ฒˆํžˆ ์ด๋ฃจ์–ด์ง„๋‹ค๋ฉด, Linked List ์‚ฌ์šฉ์ด ์ข‹์Œ.
์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ๊ตฌ์กฐ์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ๋งŒ ํ•„์š”ํ•˜๋ฉด Array์ด ์ข‹์Œ.

 

 

์ „๋ฐ˜์ ์œผ๋กœ ๋ฆฌ์ŠคํŠธ์˜ ์‚ฌ์šฉ์ด ํ›จ์”ฌ ์ข‹์•„๋ณด์ธ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•  ๋• ๋ฆฌ์ŠคํŠธ๋ณด๋‹ค ๋ฐฐ์—ด์ด ํ›จ์”ฌ ๋น ๋ฅด๊ณ  ์ข‹๋‹ค.

์™œ๋ƒํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—ฐ์Šต๋ฌธ์ œ๋“ค์€ ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ๋ฒ”์œ„๋ฅผ ์ฃผ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด ์„ ์–ธ์„ ๊ทธ MAX์น˜๋กœ ์žก์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ํ›จ์”ฌ ๋” ํŽธ๋ฆฌํ•˜๊ณ  ๋ฆฌ์ŠคํŠธ์™€๋Š” ์ „ํ˜€ ๋‹ค๋ฅธ ์†๋„๋ฅผ ๋ณด์ธ๋‹ค.

๋ฆฌ์ŠคํŠธ์˜ ์ž…๋ ฅ์€ ์ถ”๊ฐ€ ๊ณผ์ •๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์˜ ํ• ๋‹น์ด ์ผ์–ด๋‚˜๊ณ  ์‚ญ์ œ์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•ด์ œ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์˜ ํ• ๋‹น๊ณผ ํ•ด์ œ๋Š” O() ์‹œ๊ฐ„์œผ๋กœ ๋”ฐ์ง€์ง€ ์•Š์ง€๋งŒ, ์ด๋Ÿฐ ์‹œ์Šคํ…œ ์ฝœ(System Call)์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ๊ตฌ๋Š” ์‹œ๊ฐ„์†Œ์š”๊ฐ€ ๊ฝค ๊ฑธ๋ฆฐ๋‹ค.

 

 

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

 

Index

์นผ๋Ÿผ์˜ ๊ฐ’๊ณผ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค์–ด๋‘”๋‹ค.

 

* DBMS์˜ ์ธ๋ฑ์Šค๋Š” ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

์›ํ•˜๋Š” ๊ฐ’์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์€ ๋น ๋ฅด์ง€๋งŒ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ, ์ˆ˜์ •ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” query๋ฌธ ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค.

DBMS์—์„œ ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ์„ฑ๋Šฅ์„ ํฌ์ƒํ•˜๋Š” ๋Œ€์‹  ๋ฐ์ดํ„ฐ์˜ ์ฝ๊ธฐ ์†๋„๋ฅผ ๋†’์ด๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

 

 

 

Index ์ž๋ฃŒ๊ตฌ์กฐ - DBMS์˜ ์ธ๋ฑ์Šค ๊ด€๋ฆฌ

B+- Tree Index ์•Œ๊ณ ๋ฆฌ์ฆ˜
์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
B +- ์ธ๋ฑ์Šค๋Š” ์นผ๋Ÿผ์˜ ๊ฐ’์„ ๋ณ€ํ˜•ํ•˜์ง€ ์•Š๊ณ (์‚ฌ์‹ค์€๊ฐ’์˜ ์•ž๋ถ€๋ถ„๋งŒ ์ž˜๋ผ์„œ ๊ด€๋ฆฌํ•œ๋‹ค๊ณ  ํ•œ๋‹ค),
์›๋ž˜์˜ ๊ฐ’์„ ์ด์šฉํ•ด ์ธ๋ฑ์‹ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

Hash ์ธ๋ฑ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜

์นผ๋Ÿผ์˜ ๊ฐ’์œผ๋กœ ํ•ด์‹œ ๊ฐ’์„ ๊ณ„์‚ฐํ•ด์„œ ์ธ๋ฑ์‹ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋งค์šฐ ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐ’์„ ๋ณ€ํ˜•ํ•ด์„œ ์ธ๋ฑ์‹ฑํ•˜๋ฏ€๋กœ, ํŠน์ • ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๊ฒ€์ƒ‰์„ ํ•˜๋Š” ์ „๋ฐฉ ์ผ์น˜์™€ ๊ฐ™์ด ๊ฐ’์˜ ์ผ๋ถ€๋งŒ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ ์ž ํ•  ๋•Œ๋Š” ํ•ด์‹œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

์ฃผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

์™œ index ๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ b-tree ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?
๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1)์ธ hash table ์ด ๋” ํšจ์œจ์ ์ผ ๊ฒƒ ๊ฐ™์€๋ฐ?
SELECT ์งˆ์˜์˜ ์กฐ๊ฑด์—๋Š” ๋ถ€๋“ฑํ˜ธ(<>) ์—ฐ์‚ฐ๋„ ํฌํ•จ์ด ๋œ๋‹ค.
hash table ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋“ฑํ˜ธ(=) ์—ฐ์‚ฐ์ด ์•„๋‹Œ ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ์˜ ๊ฒฝ์šฐ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
๋™๋“ฑ ์—ฐ์‚ฐ(=)์— ํŠนํ™”๋œ hashtable์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

 

 

 

Primary Index vs Secondary Index

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


Composite Index

์ธ๋ฑ์Šค๋กœ ์„ค์ •ํ•˜๋Š” ํ•„๋“œ์˜ ์†์„ฑ์ด ์ค‘์š”ํ•˜๋‹ค. title, author ์ด ์ˆœ์„œ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•œ๋‹ค๋ฉด title ์„ search ํ•˜๋Š” ๊ฒฝ์šฐ, index ๋ฅผ ์ƒ์„ฑํ•œ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ, author ๋งŒ์œผ๋กœ search ํ•˜๋Š” ๊ฒฝ์šฐ, index ๋ฅผ ์ƒ์„ฑํ•œ ๊ฒƒ์ด ์†Œ์šฉ์ด ์—†์–ด์ง„๋‹ค. ๋”ฐ๋ผ์„œ SELECT ์งˆ์˜๋ฅผ ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€๊ฐ€ ์ธ๋ฑ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•  ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•ด ๋งŽ์€ ์˜ํ–ฅ์„ ๋ผ์น˜๊ฒŒ ๋œ๋‹ค.

 

 


Index์˜ ์„ฑ๋Šฅ๊ณผ ๊ณ ๋ คํ•ด์•ผํ•  ์‚ฌํ•ญ

SELECT ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ์›”๋“ฑํžˆ ํ–ฅ์ƒ์‹œํ‚ค๋Š” INDEX ํ•ญ์ƒ ์ข‹์„๊นŒ?  ์•„๋‹ˆ๋‹ค.

 

- INDEX ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด INSERT, DELETE, UPDATE ์ฟผ๋ฆฌ๋ฌธ์„ ์‹คํ–‰ํ•  ๋•Œ ๋ณ„๋„์˜ ๊ณผ์ •์ด ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐœ์ƒ

INSERT ์˜ ๊ฒฝ์šฐ INDEX ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ทธ๋งŒํผ ์„ฑ๋Šฅ์— ์†์‹ค์ด ๋”ฐ๋ฅธ๋‹ค.

DELETE ์˜ ๊ฒฝ์šฐ INDEX ์— ์กด์žฌํ•˜๋Š” ๊ฐ’์€ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ ์•ˆํ•œ๋‹ค๋Š” ํ‘œ์‹œ๋กœ ๋‚จ๊ฒŒ ๋œ๋‹ค.

์ฆ‰ row ์˜ ์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ์ธ ๊ฒƒ์ด๋‹ค. ์ด ์ž‘์—…์ด ๋ฐ˜๋ณต๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” 10 ๋งŒ๊ฑด์ธ๋ฐ ๋ฐ์ดํ„ฐ๊ฐ€ 100 ๋งŒ๊ฑด ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚ณ์„ ์ˆ˜๋„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์ธ๋ฑ์Šค๋Š” ๋” ์ด์ƒ ์ œ ์—ญํ• ์„ ๋ชปํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

UPDATE ์˜ ๊ฒฝ์šฐ๋Š” INSERT ์˜ ๊ฒฝ์šฐ, DELETE ์˜ ๊ฒฝ์šฐ์˜ ๋ฌธ์ œ์ ์„ ๋™์‹œ์— ์ˆ˜๋ฐ˜ํ•œ๋‹ค.

์ด์ „ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜๊ณ  ๊ทธ ์ž๋ฆฌ์— ์ƒˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฆ‰ ๋ณ€๊ฒฝ ์ „ ๋ฐ์ดํ„ฐ๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š๊ณ  insert ๋กœ ์ธํ•œ split ๋„ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

- ์ปฌ๋Ÿผ์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์— ๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค์˜ ์„ฑ๋Šฅ์ด ์•…์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์— ๋”ฐ๋ผ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ํšจ์œจ์ ์ด๊ณ  ๋งŒ๋“ค๋ฉด ๋น„ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์ด ์กด์žฌํ•œ๋‹ค.

 

์ด๋ฆ„, ๋‚˜์ด, ์„ฑ๋ณ„ ์„ธ ๊ฐ€์ง€์˜ ํ•„๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ์ƒ๊ฐํ•ด๋ณด์ž.

์ด๋ฆ„์€ ์˜จ๊ฐ– ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์กด์žฌํ•  ๊ฒƒ์ด๋ฉฐ ๋‚˜์ด๋Š” INT ํƒ€์ž…์„ ๊ฐ–์„ ๊ฒƒ์ด๊ณ , ์„ฑ๋ณ„์€ ๋‚จ, ๋…€ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•  ๊ฒƒ์ž„์„ ์‰ฝ๊ฒŒ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๊ฒฝ์šฐ ์–ด๋–ค ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด์„œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ผ๊นŒ? ์ด๋ฆ„์— ๋Œ€ํ•ด์„œ๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํšจ์œจ์ ์ด๋‹ค.

 

*์™œ ์„ฑ๋ณ„์ด๋‚˜ ๋‚˜์ด๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋น„ํšจ์œจ์ ์ผ๊นŒ? 

10000 ๋ ˆ์ฝ”๋“œ์— ํ•ด๋‹นํ•˜๋Š” ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ 2000 ๋‹จ์œ„๋กœ ์„ฑ๋ณ„์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๊ฐ’์˜ range ๊ฐ€ ์ ์€ ์„ฑ๋ณ„์€ ์ธ๋ฑ์Šค๋ฅผ ์ฝ๊ณ  ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋””์Šคํฌ I/O ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋งŒํผ ๋น„ํšจ์œจ์ ์ธ ๊ฒƒ์ด๋‹ค.

 

 

 

 


< ์ฐธ๊ณ  >

https://mungto.tistory.com/312

CPU ์Šค์ผ€์ค„๋ง

๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ• ์ง€ ์ˆœ์„œ๋ฅผ ์ •ํ•˜๋Š” ๊ฒƒ
Ready Queue์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘์— ๋ˆ„๊ตฌ์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•ด ์ค„ ๊ฒƒ์ธ์ง€ ์ •ํ•˜๋Š” ๊ฒƒ

 

 

์™œ ํ•„์š”ํ•œ๊ฐ€?

CPU๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. --> ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ I/O ์š”์ฒญ์œผ๋กœ ๋Œ€๊ธฐํ•  ๊ฒฝ์šฐ, CPU๋Š” ๋†€๊ฒŒ๋จ

์‹œ๊ฐ„์„ ์ƒ์‚ฐ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ณ ์ž CPU๋ฅผ ๊ทธ ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ ํšŒ์ˆ˜ํ•ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•œ๋‹ค.

CPU ์ด์šฉ๋ฅ  ๊ทน๋Œ€ํ™”

 

 

 

 


์„ ์  ๋ฐ ๋น„์„ ์  ์Šค์ผ€์ค„๋ง

CPU ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์ž‘๋™๋˜๋Š” 4๊ฐ€์ง€ ์ƒํ™ฉ

์ƒํ™ฉ 1 : ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰์ƒํƒœ์—์„œ ๋Œ€๊ธฐ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ
ex. I/O ์š”์ฒญ์— ์˜ํ•œ ๋Œ€๊ธฐ
์ƒํ™ฉ 2 : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰์ƒํƒœ์—์„œ ์ค€๋น„์™„๋ฃŒ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ
ex. ํ• ๋‹น๋œ ์‹œ๊ฐ„์ด ๋‹ค ๋๋‚ฌ์„ ๋•Œ ( timer interrupt๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ)
์ƒํ™ฉ 3 : ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ์ƒํƒœ์—์„œ ์ค€๋น„์™„๋ฃŒ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ
ex. I/O ์ข…๋ฃŒ ์‹œ
์ƒํ™ฉ 4 : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ

 

๋น„์„ ์  nonpreemptive

: ์ƒํ™ฉ 1,4์™€ ๊ฐ™์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๋ฐœ์ ์œผ๋กœ CPU๋ฅผ ๋ฐ˜๋‚ฉํ•˜๋Š” ๊ฒฝ์šฐ

CPU๊ฐ€ ํ•œ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋“ ์ง€, ๋˜๋Š” ๋Œ€๊ธฐ์ƒํƒœ๋กœ ์ „ํ™˜ํ•ด CPU๋ฅผ ๋ฐฉ์ถœํ•  ๋•Œ๊นŒ์ง€ ์ ์œ ํ•œ๋‹ค.

 

 

์„ ์  preemptive

: ์ƒํ™ฉ 2,3๊ณผ ๊ฐ™์ด ๊ฐ•์ œ์ ์œผ๋กœ CPU๋ฅผ ๋นผ์•—๊ธฐ๋Š” ๊ฒฝ์šฐ

Windows, macOS, Linux๋ฅผ ํฌํ•จํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ์ตœ์‹  ์šด์˜์ฒด์ œ๋“ค์€ ์„ ์  ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

 


 

์Šค์ผ€์ค„๋ง ๊ธฐ์ค€

CPU ์ด์šฉ๋ฅ 

์ „์ฒด ์‹œ์Šคํ…œ ์‚ฌ์šฉ ์‹œ๊ฐ„ ์ค‘ CPU๊ฐ€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์˜ ๋น„์œจ 

 

์ฒ˜๋ฆฌ๋Ÿ‰

๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์™„๋ฃŒ๋œ ํ”„๋กœ์…‹์˜ ๊ฐœ์ˆ˜

 

์ด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘ํ•ด์„œ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ ( ์ค€๋น„ ํ์—์„œ ๋Œ€๊ธฐ ์‹œ๊ฐ„ + CPU ์‹คํ–‰ ์‹œ๊ฐ„ + I/O ์‹œ๊ฐ„ )

 

๋Œ€๊ธฐ ์‹œ๊ฐ„

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ํ์—์„œ ๋Œ€๊ธฐํ•˜๋ฉฐ ๋ณด๋‚ธ ์‹œ๊ฐ„์˜ ํ•ฉ

 

์‘๋‹ต ์‹œ๊ฐ„

ํ•˜๋‚˜์˜ ์š”๊ตฌ๋ฅผ ์ œ์ถœํ•œ ํ›„ ์ฒซ๋ฒˆ์งธ ์‘๋‹ต์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€์˜ ์‹œ๊ฐ„ ( ์‘๋‹ต์ด ์ถœ๋ ฅ๋˜๋Š” ์‹œ๊ฐ„์€ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค )

 

CPU ์ด์šฉ๋ฅ ๊ณผ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ตœ๋Œ€ํ™”ํ•˜๊ณ  ์ด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„, ๋Œ€๊ธฐ ์‹œ๊ฐ„, ์‘๋‹ต ์‹œ๊ฐ„์„ ์ตœ์†Œํ™” ํ•˜๋Š” ๊ฒƒ์œผ๋กœ~!

 

 

 


 

์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

์„ ์ž… ์„ ์ฒ˜๋ฆฌ FCFS (First Come First Served)

ํŠน์ง•

  • ๋จผ์ € ์˜จ ๊ณ ๊ฐ์„ ๋จผ์ € ์„œ๋น„์Šคํ•ด์ฃผ๋Š” ๋ฐฉ์‹, ์ฆ‰ ๋จผ์ € ์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ.
  • ๋น„์„ ์ ํ˜•(Non-Preemptive) ์Šค์ผ€์ค„๋ง
    ์ผ๋‹จ CPU ๋ฅผ ์žก์œผ๋ฉด CPU burst ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ CPU ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ• ๋‹น๋˜์—ˆ๋˜ CPU ๊ฐ€ ๋ฐ˜ํ™˜๋  ๋•Œ๋งŒ ์Šค์ผ€์ค„๋ง์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

๋ฌธ์ œ์ 

  • convoy effect
    ์†Œ์š”์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ๋„๋‹ฌํ•˜์—ฌ ํšจ์œจ์„ฑ์„ ๋‚ฎ์ถ”๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

SJF(Shortest - Job - First)

ํŠน์ง•

  • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ๋„์ฐฉํ–ˆ์–ด๋„ CPU burst time ์ด ์งง์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์„  ํ• ๋‹น
  • ๋น„์„ ์ ํ˜•(Non-Preemptive) ์Šค์ผ€์ค„๋ง

๋ฌธ์ œ์ 

  • starvation
    ํšจ์œจ์„ฑ์„ ์ถ”๊ตฌํ•˜๋Š”๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•˜์ง€๋งŒ ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ์ฐจ๋ณ„๋ฐ›์œผ๋ฉด ์•ˆ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ์Šค์ผ€์ค„๋ง์€ ๊ทน๋‹จ์ ์œผ๋กœ CPU ์‚ฌ์šฉ์ด ์งง์€ job ์„ ์„ ํ˜ธํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์‚ฌ์šฉ ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๋Š” ๊ฑฐ์˜ ์˜์›ํžˆ CPU ๋ฅผ ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.

 

SRTF(Shortest Remaining Time First)

ํŠน์ง•

  • ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์Šค์ผ€์ค„๋ง์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
  • ์„ ์ ํ˜• (Preemptive) ์Šค์ผ€์ค„๋ง
    ํ˜„์žฌ ์ˆ˜ํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ burst time ๋ณด๋‹ค ๋” ์งง์€ CPU burst time ์„ ๊ฐ€์ง€๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด CPU ๋ฅผ ๋บ๊ธด๋‹ค.

๋ฌธ์ œ์ 

  • starvation
  • ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„๋‹ฌํ•  ๋•Œ๋งˆ๋‹ค ์Šค์ผ€์ค„๋ง์„ ๋‹ค์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— CPU burst time(CPU ์‚ฌ์šฉ์‹œ๊ฐ„)์„ ์ธก์ •ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

 

Priority Scheduling

ํŠน์ง•

  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU ๋ฅผ ํ• ๋‹นํ•˜๋Š” ์Šค์ผ€์ค„๋ง์ด๋‹ค. ์šฐ์„ ์ˆœ์œ„๋ž€ ์ •์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๊ฒŒ ๋˜๊ณ  ์ž‘์€ ์ˆซ์ž๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.
  • ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง(Preemptive) ๋ฐฉ์‹
    ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉˆ์ถ”๊ณ  CPU ๋ฅผ ์„ ์ ํ•œ๋‹ค.
  • ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง(Non-Preemptive) ๋ฐฉ์‹
    ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด Ready Queue ์˜ Head ์— ๋„ฃ๋Š”๋‹ค.

๋ฌธ์ œ์ 

  • starvation
  • ๋ฌด๊ธฐํ•œ ๋ด‰์‡„(Indefinite blocking)
    ์‹คํ–‰ ์ค€๋น„๋Š” ๋˜์–ด์žˆ์œผ๋‚˜ CPU ๋ฅผ ์‚ฌ์šฉ๋ชปํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ CPU ๊ฐ€ ๋ฌด๊ธฐํ•œ ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ

ํ•ด๊ฒฐ์ฑ…

  • aging
    ์•„๋ฌด๋ฆฌ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋ผ๋„ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์ฃผ์ž.

 

Round Robin

ํŠน์ง•

  • ํ˜„๋Œ€์ ์ธ CPU ์Šค์ผ€์ค„๋ง
  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ํฌ๊ธฐ์˜ ํ• ๋‹น ์‹œ๊ฐ„(time quantum)์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.
  • ํ• ๋‹น ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ์„ ์ ๋‹นํ•˜๊ณ  ready queue ์˜ ์ œ์ผ ๋’ค์— ๊ฐ€์„œ ๋‹ค์‹œ ์ค„์„ ์„ ๋‹ค.
  • RR์€ CPU ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๋žœ๋คํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์„ž์—ฌ์žˆ์„ ๊ฒฝ์šฐ์— ํšจ์œจ์ 
  • RR์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ํ”„๋กœ์„ธ์Šค์˜ context ๋ฅผ save ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์žฅ์ 

  • Response time์ด ๋นจ๋ผ์ง„๋‹ค.
    n ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ready queue ์— ์žˆ๊ณ  ํ• ๋‹น์‹œ๊ฐ„์ด q(time quantum)์ธ ๊ฒฝ์šฐ ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” q ๋‹จ์œ„๋กœ CPU ์‹œ๊ฐ„์˜ 1/n ์„ ์–ป๋Š”๋‹ค. ์ฆ‰, ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ (n-1)q time unit ์ด์ƒ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด CPU ๋ฅผ ์‚ฌ์šฉํ•  ๋งŒํผ ์ฆ๊ฐ€ํ•œ๋‹ค.
    ๊ณต์ •ํ•œ ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์˜ํ•  ์ 

์„ค์ •ํ•œ time quantum์ด ๋„ˆ๋ฌด ์ปค์ง€๋ฉด FCFS์™€ ๊ฐ™์•„์ง„๋‹ค. ๋˜ ๋„ˆ๋ฌด ์ž‘์•„์ง€๋ฉด ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ชฉ์ ์—๋Š” ์ด์ƒ์ ์ด์ง€๋งŒ ์žฆ์€ context switch ๋กœ overhead ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ ๋‹นํ•œ time quantum์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

 

 

 

 


< ์ฐธ๊ณ  >

https://velog.io/@mu1616/CPU-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81

TCP์™€ UDP๋Š” TCP/IP์˜ ์ „์†ก๊ณ„์ธต(OSI 7๊ณ„์ธต ์ค‘ 4๊ณ„์ธต, transport)์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ

OSI 7๊ณ„์ธต

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

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

 

 


TCP์™€ UDP์˜ ์ฐจ์ด

TCP์™€ UDP

TCP

โ€‹

ํŠธ๋žœ์ŠคํฌํŠธ ๊ณ„์ธต์˜ TCP ํ”„๋กœํ† ์ฝœ์€ ์ˆ˜์‹ ์ง€์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌ๋˜๋„๋ก ์ „์†ก ์†๋„๋ฅผ ์กฐ์ ˆํ•˜๊ฑฐ๋‚˜ ๋„๋‹ฌํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ „์†กํ•œ๋‹ค. ํ•œ๋งˆ๋””๋กœ, ์†๋„๋ณด๋‹ค๋Š” ์ •ํ™•ํ•œ ์ „๋‹ฌ์„ ์ค‘์‹œ

โ€‹

UDP

โ€‹

VoIP(์ธํ„ฐ๋„ท ์ „ํ™”)๋‚˜ ๋™์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค์™€ ๊ฐ™์ด ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์ „์†ก ์†๋„๋ฅผ ์ค‘์‹œํ•˜๋Š” UDP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. TCP์™€ ๋‹ค๋ฅด๊ฒŒ ์ •ํ™•์„ฑ๋ณด๋‹ค๋Š” ์†๋„๋ฅผ ์ค‘์‹œ

 

 

 

  TCP
Transmission Control Protocol
UDP
User Datagram Protocol
์—ฐ๊ฒฐ ์ง€ํ–ฅ ์—ฐ๊ฒฐ ์ง€ํ–ฅ
TCP 3 way handshake
๋น„์—ฐ๊ฒฐ ์ง€ํ–ฅ
์ „์†ก ์†๋„ & ์“ฐ์ž„ UDP์— ๋Œ€ํ•ด ๋Š๋ฆผ ๋น ๋ฆ„
์—๋Ÿฌ ์ฒดํฌ & ์‹ ๋ขฐ์„ฑ ์—๋Ÿฌ ์ฒดํฌํ•จ ์—๋Ÿฌ ์ฒดํฌ ์•ˆ ํ•จ
ํ—ค๋” ์‚ฌ์ด์ฆˆ 20๋ฐ”์ดํŠธ 8๋ฐ”์ดํŠธ
์‚ฌ์šฉ๋˜๋Š” ํฌํŠธ HTTP, HTTPs, FTP, SMTP ๋“ฑ  DNS, TFTP, SNMP, RIP ๋“ฑ
ํ๋ฆ„ ์ œ์–ด ํ๋ฆ„ ์ œ์–ด ํ•จ ํ๋ฆ„ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์˜ต์…˜์ด ๋”ฐ๋กœ ์—†์Œ

 

 

 


TCP์˜ 3 way handshacking

TCP๋Š” ์—ฐ๊ฒฐ์ง€ํ–ฅ ํ”„๋กœํ† ์ฝœ๋กœ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  ์ „์— ์ปค๋„ฅ์…˜ ์—ฐ๊ฒฐ๋ถ€ํ„ฐ ํ•œ๋‹ค.

์ปค๋„ฅ์…˜์„ ๋งบ๋Š” ๊ณผ์ •์—์„œ 3๋‹จ๊ณ„๋กœ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ 3๋ฐฉํ–ฅ ํ•ธ๋“œ์…ฐ์ดํฌ(3-way handshake)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ปค๋„ฅ์…˜์ด ๋งบ์–ด์ง€๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋˜๊ณ , ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๋๋‚˜๋ฉด ์ปค๋„ฅ์…˜์„ ๋Š๋Š”๋‹ค.

 

 

TCP๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด

TCP๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์— ์‹ ๋ขฐ์„ฑ์„ ๋”ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์„ธ๊ทธ๋จผํŠธ(segment)๋ผ๋Š” ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜๊ณ , ์ „์†ก์†๋„๋ฅผ ์กฐ์ •ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ์žฌ์ „์†ก์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

UDP๊ฐ€ ์‹ ์†ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด

ํ†ต์‹  ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์ด ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์ผ๋ถ€ ์†์‹ค์ด ๋ฐœ์ƒํ•ด๋„ ๋ฌธ์ œ์—†๋Š” ์ธํ„ฐ๋„ท์ „ํ™”๋‚˜ ๋™์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

TCP์™€ ๋‹ค๋ฅด๊ฒŒ ์ ‘์†์ด ๋งบ์–ด์กŒ๋Š”์ง€ ํ™•์ธํ•˜์ง€ ์•Š๊ณ (=๋น„์—ฐ๊ฒฐ์„ฑ) ๋ฐ”๋กœ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์†ก์‹ ํ•˜๋ฉฐ ํŒจํ‚ท์ด ๋„์ค‘์— ์†์‹ค๋˜๋”๋ผ๋„ ์ƒ๊ด€ํ•˜์ง€ ์•Š๊ณ  ๊ณ„์† ๋ณด๋‚ธ๋‹ค. 

( UDP์˜ ํŒจํ‚ท์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ทธ๋žจ์€ TCP์˜ ์„ธ๊ทธ๋จผํŠธ๋ณด๋‹ค ํ—ค๋”์˜ ๋‚ด์šฉ์ด ํ›จ์”ฌ ๊ฐ€๋ณ๊ณ  ๊ฐ„๋‹จํ•˜๋‹ค)

 

 

UDP์— ์‹ ๋ขฐ์„ฑ ์ถ”๊ฐ€~! ( ๋ณต์žกํ•ด์ง.. )

์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ๋Š” ์ „์†ก ์†๋„๊ฐ€ ์šฐ์„ ์ธ UDP๋ฅผ ์‚ฌ์šฉํ•˜๊ธด ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์‹ ๋ขฐ์„ฑ ์—ญ์‹œ ์†๋„์— ๋ชป์ง€์•Š๊ฒŒ ์ค‘์š”ํ•˜๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์—์„œ ํ๋ฆ„ ์ œ์–ด(Flow Control)๋‚˜ ํ˜ผ์žก ์ œ์–ด(Congestion control)๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋ถ€์กฑํ•œ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์™„ํ•˜๊ฒŒ ๋œ๋‹ค.


<์ฐธ๊ณ >

https://m.blog.naver.com/good_ray/221984839492 https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4

+ Recent posts