CISC๋ž€?

CISC(Complex Instruction Set Computer)๋ž€ ๋งŽ์€ ์ˆ˜์˜ ๋‹ค์–‘ํ•˜๊ณ  ์ค‘๋ณต๋˜๋Š” ๋ช…๋ น์–ด ์ง‘ํ•ฉ์ด๋‹ค.

*๋ช…๋ น์–ด ์ง‘ํ•ฉ:CPU๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋“ค์˜ ๋ชจ์Œ

 

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

๋ช…๋ น์–ด ์ˆ˜๊ฐ€ ๋งŽ๊ณ  ์ƒ๋Œ€์ ์œผ๋กœ ์ ์€ ์ˆ˜์˜ ๋ช…๋ น์–ด๋กœ๋„ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ์ ๋‹ค.)

CISC์˜ ๋ช…๋ น์ด์˜ ๊ธธ์ด๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š์€ ์ด์œ ๋Š” ๊ฐ๊ฐ์˜ ๋ช…๋ น์–ด๊ฐ€ ํ”„๋กœ์„ธ์‹ฑ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋„ ๋ก ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ช…๋ น์–ด์˜ ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๊ณ  ํ•˜๋”๋ผ๊ณ  ์‹ค์ œ๋กœ๋Š” ์“ฐ์ด๋Š” ๋ช…๋ น์–ด๋“ค๋งŒ ์ฃผ๋กœ ์“ฐ์ด๊ณ  ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ํŒŒ์ดํ”„๋ผ์ด๋‹์ด ๋ถˆ๋ฆฌํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ๋˜ํ•œ ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์€ ์ „๋ ฅ์„ ์†Œ๋ชจํ•œ๋‹ค.

 

ํŠน์ง•

1. ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด๋“ค์ด ์žˆ๋‹ค.

2. ์ƒ๋Œ€์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒŒ ์†Œ๋น„ํ•œ๋‹ค.

4. ๊ฐ€๋ณ€ ๊ธธ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

5. ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ํด๋Ÿญ ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

6. ๋‹ค์–‘ํ•œ ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

7. ์ปดํŒŒ์ผ ๊ณผ์ •์ด ์‰ฝ๊ณ  ํ˜ธํ•œ์„ฑ์ด ์ข‹๋‹ค.

 

๋‹จ์ 

1. ๋ช…๋ น์–ด ์‹คํ–‰ ์‹œ๊ฐ„์ด ํŒŒ์ดํ”„๋ผ์ธ์„ ๋งŒ๋“ค๊ธฐ์— ๋ถˆ๋ฆฌํ•˜๋‹ค.

2. ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์€ ์ „๋ ฅ์„ ์†Œ๋น„ํ•œ๋‹ค.

 

RISC๋ž€?

RISC(Reduced Instruction Set Computer)๋ž€ ์ถ•์†Œ๋œ ๋ช…๋ น์–ด์˜ ์ง‘ํ•ฉ์ด๋‹ค.

CISC์™€๋Š” ์—ฌ๋Ÿฌ ์ฐจ์ด์ ์ด ์žˆ๋Š”๋ฐ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ช…๋ น์–ด์˜ ์ˆ˜๊ฐ€ 100๊ฐœ ๋ฏธ๋งŒ์œผ๋กœ ์ค„์–ด๋“ค์—ˆ๋‹ค. ์ธ์‹ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์–ด์˜ ์ˆ˜๋ฅผ ์ค„์ž„์œผ๋กœ์จ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ ์‹œํ‚ค๋Š”๋ฐ ๋” ๋งŽ์€ ๋ช…๋ น์–ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

RISC๋Š” ์‹ ์†ํ•œ ํ”„๋กœ์„ธ์‹ฑ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ์ดํ”„๋ผ์ธ ํ”„๋กœ์„ธ์‹ฑ์˜ ์ผํ™˜์œผ๋กœ์„œ ๊ณ ์ •๊ธธ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ,CISC์™€ ๋‹ฌ๋ฆฌ ํด๋Ÿญ ์ฃผ๊ธฐ๋‹น ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๋‹จ์ผ ์‚ฌ์ดํด์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•จ์œผ๋กœ์จ ๋ช…๋ น์–ด ์‹คํ–‰ ๊ณผ์ •์„ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

ํŠน์ง•

1. ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋Š” ๋ ˆ์ง€์Šคํ„ฐ์—์„œ ์ˆ˜ํ–‰๋˜๋ฉฐ load-store ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์ตœ์†Œํ™”ํ•˜์˜€๋‹ค.

2. ๋‹จ์ˆœํ•œ ๊ณ ์ • ๊ธธ์ด ๋ฐฉ์‹์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

3. ์ ์€ ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

๋‹จ์  

1. ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ตœ์ ํ™” ๊ณผ์ •์ด ๋ณต์žกํ•˜๋‹ค.

2. ๋ช…๋ น์–ด๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์–ด์„œ ์ฝ”๋“œ ํšจ์œจ์ด ๋‚ฎ๋‹ค.

3. ํŒŒ์ดํ”„๋ผ์ธ ํ•ด์ €๋“œ์— ๋Œ€ํ•œ ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

๊ฒฐ๋ก 

๋‘˜ ๋‹ค ์žฅ๋‹จ์ ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์–ด์„œ ์–ด๋Š ์ชฝ์ด ์„ฑ๋Šฅ ๋ฉด์—์„œ ์šฐ์„ธํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜๋Š” ์—†๋‹ค. 

๋˜ํ•œ ์˜ค๋Š˜๋‚ ์˜ ๋ช‡๋ช‡ CISC MCU๋Š” RISC์˜ ์žฅ์ ์„ ์ผ ๋ถ€ ๊ณต์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ช‡๋ช‡ RISC MCU๋Š” CISC์˜ ์žฅ์  ์„ ์ผ๋ถ€ ๊ณต์œ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ž์˜ ์ƒํ™ฉ์— ๋งž๋Š” ์„ ํƒ์ด ํ•„์š”ํ•˜๋‹ค.

์ปค๋„์ด๋ž€?

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

 

๋˜ํ•œ ์ปค๋„์€ ์ž์›์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๊ด€๋ฆฌ์ž๋“ค์ด ์žˆ๋‹ค.

  1. ํ…Œ์ŠคํŠธ ๊ด€๋ฆฌ์ž : ๋ฌผ๋ฆฌ์  ์ž์›์ธ CPU๋ฅผ ์ถ”์ƒ ์ž์›์ธ ํ…Œ์Šคํฌ๋กœ ์ œ๊ณตํ•œ๋‹ค.
  2. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์ž : ๋ฌผ๋ฆฌ์  ์ž์›์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ถ”์ƒ ์ž์›์ธ ํŽ˜์ด์ง€๋‚˜ ์„ธ๊ทธ๋จผํŠธ๋กœ ์ œ๊ณตํ•œ๋‹ค.
  3. ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž : ๋ฌผ๋ฆฌ์  ์ž์›์ธ ๋””์Šคํฌ๋ฅผ ์ถ”์ƒ ์ž์›์ธ ํŒŒ์ผ๋กœ ์ œ๊ณตํ•œ๋‹ค.
  4. ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž : ๋ฌผ๋ฆฌ์  ์ž์›์ธ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๋ฅผ ์ถ”์ƒ ์ž์›์ธ ์†Œ์ผ“์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค.
  5. ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„ ๊ด€๋ฆฌ์ž : ๊ฐ์ข… ์™ธ๋ถ€ ์žฅ์น˜(ํ”„๋ฆฐํ„ฐ, GPU ๋“ฑ)์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ๊ณตํ•œ๋‹ค.

 

์ปค๋„์˜ ๋™์ž‘ ๋ฐฉ์‹

์ปค๋„์€ Memory Resident ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ๋””์Šคํฌ์— ์ƒ์ฃผํ•ด์žˆ๋Š”๋ฐ, ์ปค๋„์€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์—ฌ๋Ÿฌ ๋ช…๋ น๋“ค์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. 

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

 

์‰˜์˜ ์—ญํ• 

ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ์–ธ์ œ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ๋˜๊ณ  ํ•ด์ œ๋˜๋Š”์ง€ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ๋“ค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๋ฉฐ ์ปค๋„์˜ ์ค‘๊ฐ„๋‹ค๋ฆฌ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

 

์ถœ์ฒ˜ : https://medium.com/pocs/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A4%EB%84%90-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B0%95%EC%9D%98%EB%85%B8%ED%8A%B8-1-d36d6c961566

 

์ผ๋ฐ˜์ ์œผ๋กœ ์šด์˜์ฒด์ œ๊ฐ€ ๋ถ€ํŒ…๋˜๋ฉด Memory Residentํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง€๋Š” ์ปค๋„์ด ๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ๋‹ค.

๊ทธ ํ›„ ์œ ์ €๊ฐ€ ํ„ฐ๋ฏธ๋„์„ ์‹คํ–‰ํ•˜๋ฉด ์‰˜์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค๊ณ  ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ์ปค๋งจ๋“œ์— ๋งž๋Š” ์žก(job)์„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค.

์ด๋Ÿฐ ๊ณผ์ •์œผ๋กœ ์œ ์ €๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋‚ด๋ถ€์ ์ธ ๊ตฌ์กฐ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์€ ์‹ ๊ฒฝ์จ์•ผ ํ•  ์ ์ด ํ•˜๋‚˜ ์žˆ๋‹ค. ๋ฐ”๋กœ ๋ฉ€ํ‹ฐ์œ ์ € ์‹œ์Šคํ…œ์ด๋ผ๋Š” ์ ์ด๋‹ค.

์œˆ๋„์šฐ๋Š” ๊ฐœ์ธpc์šฉ ์šด์˜์ฒด์ œ์—ฌ์„œ ๋ณด์•ˆ์— ๋Œ€ํ•œ ๋ถ€๋‹ด์ด ๋ฆฌ๋ˆ…์Šค์— ๋น„ํ•ด ์ ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ด์šฉํ•˜๋Š” ๋ฆฌ๋ˆ…์Šค๋Š” ๋ณด์•ˆ์„ ํŠน๋ณ„ํžˆ ๋” ์‹ ๊ฒฝ์จ์•ผํ•œ๋‹ค.

๋งŒ์•ฝ ์œ ์ €A๊ฐ€ ์œ ์ €B์˜ ํŒŒ์ผ์— ๋ง˜๋Œ€๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ด๋–จ๊นŒ? ์ด๋Š” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋”ฐ๋ผ์„œ ์šด์˜์ฒด์ œ๋Š” ์ปค๋„๋ชจ๋“œ์™€ ์œ ์ €๋ชจ๋“œ๋ฅผ ๋‚˜๋ˆ„์–ด์„œ ์ž…์ถœ๋ ฅ ์ž‘์—… ๊ฐ™์ด ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ์ผ๋“ค์€ ์ปค๋„์—์„œ ๋‹ด๋‹นํ•˜๋„๋ก ํ•˜์˜€๋‹ค.

์ด๋•Œ ์ปค๋„์—๊ฒŒ ํ•ด๋‹น ์ž‘์—…์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์„ ์‹œ์Šคํ…œ ์ฝœ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์œ ์ € ๋ชจ๋“œ์—์„œ ์‹œ์Šคํ…œ ์ฝœ์ด๋‚˜ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด ์ปค๋„ ๋ชจ๋“œ๋กœ ์ง„์ž…ํ•œ๋‹ค.

 

์‹œ์Šคํ…œ ์ฝœ์˜ ์ข…๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญํ• ๋“ค์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ ๊ด€๋ จ ์ฒ˜๋ฆฌ

ํŒŒ์ผ I/O ๊ด€๋ จ ์ฒ˜๋ฆฌ

์†Œ์ผ“ ๊ด€๋ จ ์ฒ˜๋ฆฌ

๋””๋ฐ”์ด์Šค ๊ด€๋ จ ์ฒ˜๋ฆฌ

ํ”„๋กœ์„ธ์Šค ํ†ต์‹  ๊ด€๋ จ ์ฒ˜๋ฆฌ

 

๋ฌผ๋ก  ๋ชจ๋“  ์ปค๋งจ๋“œ์— ๋Œ€ํ•ด์„œ ์‹œ์Šคํ…œ ์ฝœ์ด ์ปค๋„๋กœ ๋ช…๋ น์„ ์ „๋‹ฌํ•ด์ฃผ๋ฉด ์ด๋Š” ๋ฌด์šฉ์ง€๋ฌผ์ผ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ํ•ด๋‹น ๋ช…๋ น์ด ์ ํ•ฉํ•œ ๋ช…๋ น์ธ์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋น„ํŠธ๋ฅผ CPU์— ๋‘๋Š”๋ฐ, ์ด๋ฅผ mode bit๋ผ๊ณ  ํ•œ๋‹ค. 1์ด๋ฉด ์ปค๋„๋ชจ๋“œ 0์ด๋ฉด ์œ ์ €๋ชจ๋“œ๋ผ๊ณ  ์•Œ๋ ค์ ธ์žˆ๋‹ค.

์ปค๋„๋ชจ๋“œ์—์„œ๋Š” ๋ชจ๋“  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ๋ฐ ์ด๋•Œ I/O ๊ฐ™์€ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹œ์Šคํ…œ ์ฝœ์˜ ๋ฆฌํ„ด๊ฐ’์œผ๋กœ ํ•ด๋‹น ์ž‘์—…์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์ž‘์—…์ด ์ข…๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ ์œ ์ €๋ชจ๋“œ๋กœ ๋Œ์•„๊ฐ€์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ๋‹ค. ์ด ์ž‘์—…์ด ํ•œ๋ฒˆ๋งŒ ์ง„ํ–‰๋˜๋Š” ๊ฑด ์•„๋‹ˆ๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด์„œ ์ˆ˜์—†์ด ์ปค๋„๋ชจ๋“œ์™€ ์œ ์ €๋ชจ๋“œ๋ฅผ ์™”๋‹ค๊ฐ”๋‹คํ•œ๋‹ค.

 

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

์•ž์„œ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์„ ๋•Œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ง„์ž…ํ•œ๋‹ค๊ณ  ํ•˜์˜€๋‹ค. ์ด ๋•Œ ์ธํ„ฐ๋ŸฝํŠธ๋Š” ๋ฌด์—‡์ด๊ณ  ์™œ ๋ฐœ์ƒํ• ๊นŒ? 

์ธํ„ฐ๋ŸฝํŠธ๋Š” ์‹œ์Šคํ…œ์—์„œ ๋ฐœ์ƒํ•œ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์ด๋ฒคํŠธ ํ˜น์€ ๊ทธ๋Ÿฐ ์ด๋ฒคํŠธ๋“ค์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์•Œ๋ ค์ฃผ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.

์ธํ„ฐ๋ŸฝํŠธ๋“ค์ด ๋ฐœ์ƒํ•˜๋ฉด CPU์—์„œ๋Š” ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ปค๋„ ๋ชจ๋“œ๋กœ ์ง„์ž…ํ•œ๋‹ค.

ํ•˜๋“œ์›จ์–ด ํ˜น์€ ํ”„๋กœ๊ทธ๋žจ์ด ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ์— ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์„ธํŒ…ํ•˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋•Œ ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๋ฅผ ํ†ตํ•ด ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์„ ์‹คํ–‰ํ•ด์„œ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ

์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด(ํ•ธ๋“ค๋Ÿฌ)์˜ ์ฃผ์†Œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”

์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด

์‹ค์ œ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฃจํ‹ด

 

์ฐธ๊ณ ๋กœ ํ”„๋กœ๊ทธ๋žจ ๋ ˆ๋ฒจ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋Š” ํŠธ๋žฉ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ณด๋‹ค ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.

 

์™ธ๋ถ€ ์ธํ„ฐ๋ŸฝํŠธ

์ „์›์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ

I/O ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ

ํƒ€์ด๋จธ ์‹œ๊ฐ„์ด ๋๋‚ฌ์„ ๋•Œ

 

๋‚ด๋ถ€ ์ธํ„ฐ๋ŸฝํŠธ

0์œผ๋กœ ๋‚˜๋ˆด์„ ๋•Œ

์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ ‘๊ทผ์„ ์‹œ๋„ํ•  ๋•Œ

 

์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ

ํ”„๋กœ๊ทธ๋žจ ์ฒ˜๋ฆฌ ์ค‘ ๋ช…๋ น์˜ ์š”์ฒญ์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ SVC์— ์˜ํ•œ call์ด ์žˆ๋‹ค.

 

์ธํ„ฐ๋ŸฝํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.

  1. ์ „์› ์ด์ƒ(Power fail)
  2. ๊ธฐ๊ณ„ ์ฐฉ์˜ค(Machine Check)
  3. ์™ธ๋ถ€ ์‹ ํ˜ธ(External)
  4. ์ž…์ถœ๋ ฅ(I/O)
  5. ๋ช…๋ น์–ด ์ž˜๋ชป
  6. ํ”„๋กœ๊ทธ๋žจ ๊ฒ€์‚ฌ(Program Check)
  7. SVC(SuperVisor Call)

 

์‹œ์Šคํ…œ ์ฝœ & ์ธํ„ฐ๋ŸฝํŠธ์˜ ๋™์ž‘ ๊ณผ์ •(์˜ˆ์‹œ)

์‹ฑ๊ธ€ ์ฝ”์–ด ํ™˜๊ฒฝ์—์„œ ์“ฐ๋ ˆ๋“œ1(t1)๊ณผ ์“ฐ๋ ˆ๋“œ2(t2)๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

 

t1์—์„œ file read ์š”์ฒญ์ด ๋“ค์–ด์™”๋‹ค.

์ด๋•Œ file read์— ํ•ด๋‹นํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์ด ํ˜ธ์ถœ๋˜๋ฉฐ ๊ธฐ์กด t1์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ปค๋„ ๋ชจ๋“œ๋กœ ์ง„์ž…ํ•œ๋‹ค.

์ปค๋„๋ชจ๋“œ์— ์ง„์ž…ํ•œ t1์€ ํ•ด๋‹น file์ด read ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๊ฐ€ ๋ ๋•Œ๊นŒ์ง€ waiting ํ•˜๊ฒŒ ๋˜๋ฉฐ ๋‹ค์‹œ ์œ ์ € ๋ชจ๋“œ๋กœ ์ง„์ž… ํ›„ t2๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ๋œ๋‹ค.

 

t1์—์„œ ์š”์ฒญํ•œ file์ด read ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค.

์ด๋•Œ๋Š” ์•„๊นŒ์™€ ๋‹ค๋ฅด๊ฒŒ ์‹œ์Šคํ…œ ์ฝœ์ด ์•„๋‹Œ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค. ๋‹ค์‹œ CPU๋Š” t2์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  t1์„ waiting์—์„œ ready(runnable)๋กœ ์ƒํƒœ๋ฅผ ๋ฐ”๊พผ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์œ ์ €๋ชจ๋“œ๋กœ ์ง„์ž… ํ›„์— t2๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

 

๋ชจ์ข…์˜ ์ด์œ ๋กœ t2์˜ CPU ์ ์œ ๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ์ผ์ด ์ƒ๊ธธ ๊ฒƒ์ด๋‹ค.

CPU๋Š” ๋‹ค์‹œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ง„์ž… ํ›„์— t2๋ฅผ ready ์ƒํƒœ๋กœ ๋ฐ”๊พผ๋‹ค. ์ด์ œ๋Š” t1์„ ์‹คํ–‰ ์ƒํƒœ๋กœ ๋ฐ”๊พธ๊ณ  ์ž‘์—…๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๋Š” ์ง์ ‘์ ์œผ๋กœ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•  ์ผ์ด ์—†๋Š”๋ฐ ์ด๋Š” ํ•˜์ด(high) ๋ ˆ๋ฒจ ์–ธ์–ด๊ฐ€ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ž˜ํ•‘(wrapping)์„ ํ†ตํ•ด ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ start ํ•  ๋•Œ native ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด์„œ JNI(Java Native Interface)๊ฐ€ ํ•ด๋‹น ์šด์˜์ฒด์ œ์— ๋งž๋Š” ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•ด์ค€๋‹ค.

private native void start0();

 

 

0. ๋งŒ์•ฝ ์ธ๋ฑ์Šค๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด

 

์ธ๋ฑ์Šค ์—†์ด ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํƒ์ƒ‰์„ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

num์˜ ๊ฐ’์ด 27์ธ ํ–‰์„ ์ฐพ๋Š” ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ ์ธ๋ฑ์Šค๊ฐ€ ์—†๋‹ค๋ฉด , ์ •๋ ฌ ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐพ์•„์•ผํ•œ๋‹ค.

์ด๋Ÿด ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฐ’์„ ํƒ์ƒ‰ํ•˜๋Š” ํ’€ ์Šค์บ”์„ ํ•ด์•ผํ•  ์ˆ˜๋„์žˆ๋‹ค.

์ด๋Š” ๋งค์šฐ ๋น„ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์–ด๋–ค ํ˜„์ƒ์ด ์ผ์–ด๋‚˜๋Š” ์ง€ ์•Œ์•„๋ณด์•˜์œผ๋‹ˆ, ๊ทธ๋Ÿผ ์ด์ œ ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ ๋œ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด์ž

 

 

์ฒ˜์Œ ์˜ˆ์‹œ์™€์˜ ์ฐจ์ด์ ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๊ณ  ๋ฌด์ž‘์ • ์ฒ˜์Œ๋ถ€ํ„ฐ ์กฐํšŒํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ด ๊ฒฝ์šฐ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋“ค๋กœ๋ถ€ํ„ฐ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

์ด์ œ ์šฐ๋ฆฌ๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค.

๋ฐ”๋กœ ์ด ์ธ๋ฑ์Šค๊ฐ€ ์˜ค๋Š˜ ๋ฐฐ์›Œ๋ณผ ์ฃผ์ œ์ด๋‹ค.

์–ด๋–ป๊ฒŒ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํšจ์œจ์ ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ์ง€ ์•Œ์•„๋ณด์ž

 

1. ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

 

ํ…Œ์ด๋ธ”์˜ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ๋†’์—ฌ์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

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

 

์˜ˆ์‹œ๋ฅผ ํฌํ•จํ•ด์„œ ์ง€๊ธˆ๊นŒ์ง€์˜ ์„ค๋ช…์œผ๋กœ ์ธ๋ฑ์Šค์˜ ํŠน์ง•์„ ์ •๋ฆฌํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

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

์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ๋“ค์–ด๋„ ์ธ๋ฑ์Šค๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ค ์žฅ์ ์ด ์žˆ๋Š” ์ง€ ๋Œ€๋žต ํŒŒ์•…๋˜์—ˆ์„ ๊ฒƒ์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ชฝ์œผ๋กœ ์ข€ ๋” ๋“ค์–ด๊ฐ€์„œ ๊ตฌ์ฒด์ ์œผ๋กœ ์™œ ํ•„์š”ํ•œ ์ง€ ์•Œ์•„๋ณด์ž

 

2. ์ธ๋ฑ์Šค์˜ ๋™์ž‘ ๋ฐฉ์‹

mySQL์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์™€์žˆ๋‹ค.

Indexes are used to find rows with specific column values quickly. Without an index, MySQL must begin with the first row and then read through the entire table to find the relevant rows.

 

ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ์š”์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ—ค
  2. ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ฃนํ•‘ ํ•˜๊ธฐ ์œ„ํ•ด

์˜ˆ๋ฅผ ๋“ค์–ด,

SELECT * FROM team WHERE name = โ€˜sehanโ€™;

DELETE FROM logs WHERE datetime < โ€˜2023-06-16โ€™;

UPDATE employee SET salary = salary * 1.5 WHERE id = 100;

SELECT * FROM team T JOIN department D ON [T.id](<http://T.id>) = D.id;

 

๊ฐ๊ฐ์˜ ์ฟผ๋ฆฌ์—๋Š” ์กฐ๊ฑด๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•ด๋‹น ์ฟผ๋ฆฌ๋“ค์ด ์‹คํ–‰๋˜๋ฉด ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ฐพ์•„์•ผํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๊ฐ„์ด๋‚˜ ๋์— ์žˆ๋‹ค๋ฉด ํ’€์Šค์บ”์„ ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ๋œ๋‹ค.

 

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

์ฆ‰ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ, ์กฐ๊ฑด๋“ค์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒƒ์ด ์ธ๋ฑ์Šค์ด๋‹ค.

๋˜ํ•œ ์ธ๋ฑ์Šค๋Š” ์กฐ์ธ์„ ํ•  ๋•Œ ์กฐ์ธ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค.

๋ฌด์กฐ๊ฑด Select ์—์„œ๋งŒ ํ•„์š”ํ•œ ๊ฒƒ์ด ์•„๋‹Œ ์กฐ๊ฑด ํƒ์ƒ‰์„ ์œ„ํ•ด์„œ๋“  ๋‹จ์ˆœ ๋ฐ์ดํ„ฐ ํƒ์ƒ‰์„ ์œ„ํ•ด์„œ๋“  ์ธ๋ฑ์Šค๋Š” ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

 

3. ์ธ๋ฑ์Šค์˜ ์ข…๋ฅ˜

๊ทธ๋ ‡๋‹ค๋ฉด ์ธ๋ฑ์Šค๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ?

 

์ธ๋ฑ์Šค์˜ ์ž๋ฃŒ๊ตฌ์กฐ

์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ , ๋Œ€ํ‘œ์ ์œผ๋กœ B-tree ์™€ B+tree ๊ฐ€ ์žˆ๋‹ค.

๋งˆ์ง€๋ง‰์—” ์ถ”๊ฐ€๋กœ ํ•ด์‹œ์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

B-tree,B+tree ์—์„œ โ€˜Bโ€™์˜ ์˜๋ฏธ๋Š” ์ •ํ™•ํžˆ ๋ฐํ˜€์ง„ ๋ฐ”๋Š” ์—†์ง€๋งŒ ๊ท ํ˜•์„ ๋งž์ถ˜๋‹ค๋Š” ์˜๋ฏธ์—์„œ Balanced ๋ผ๋Š” ์˜๋ฏธ๋กœ ํ†ตํ•œ๋‹ค.

๊ท ํ˜•์„ ๋งž์ถค์œผ๋กœ์จ ์ข€ ๋” ๋น ๋ฅธ ์ธ๋ฑ์‹ฑ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

 

๋งŒ์•ฝ ์ž์‹๋…ธ๋“œ๋“ค์ด Balanced ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

ํŠธ๋ฆฌ๊ฐ€ ํŽธํ–ฅ๋˜์–ด ์žˆ๋Š” BST(์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ)๋ชจ์Šต์„ ์ƒ์ƒํ•ด๋ณด์ž

 

BST๋Š” ๊ท ํ˜•์„ ๋งž์ถ”์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์€ ๋ชจ์Šต์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. 

์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ B tree๋Š” ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ๋งž์ถค์œผ๋กœ์จ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์—ฌ์ค€๋‹ค.

 

์ด๋Š” BST๋Š” ์ตœ๋Œ€ 2๊ฐœ์˜ ์ž๋…€ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€์ง€๋งŒ B tree๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž๋…€๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋‹ค.

 

B-Tree

B-tree ๋Š” ํ•ญ์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

๋•Œ๋ฌธ์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋”๋ผ๋„ O(logN)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๋“ค์€ ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์žˆ์œผ๋ฉฐ ๋”ฐ๋ผ์„œ Balanced ๋˜์—ˆ๋‹ค ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

B-tree์˜ ๊ตฌ์„ฑ์„ ์‚ดํŽด๋ณด์ž, ๋…ธ๋“œ๋Š” ํ‚ค๊ฐ’๊ณผ ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

๊ฐ key๋“ค์˜ ์™ผ์ชฝ ์ž์‹๋“ค์€ key๋ณด๋‹ค ์ž‘์€ ๊ฐ’ ,์˜ค๋ฅธ์ชฝ ๊ฐ’์€ key๋ณด๋‹ค ํฐ ๊ฐ’์œผ๋กœ ๋˜์–ด์žˆ๋‹ค.

 

B-tree ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ ํƒ์ƒ‰ ๊ณผ์ •์„ ์•Œ์•„๋ณด์ž

ํ˜„์žฌ ๋ฐ์ดํ„ฐ์—์„œ ์ •์ˆ˜ 27 ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๋จผ์ € 27์€ 31๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ์™ผ์ชฝ ์ž์‹๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.

๊ทธ ๋‹ค์Œ 11, 29์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ์ค‘๊ฐ„๊ฐ’์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ€์šด๋ฐ์— ์žˆ๋Š” ์ž์‹ ๋…ธ๋“œ๋กœ ํƒ์ƒ‰์„ ํ•˜๊ฒŒ๋˜๊ณ  27์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜๋ฉด์„œ ํƒ์ƒ‰์ด ๋๋‚œ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ท ํ˜• ์žˆ๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ชจ๋“  ๊ฒฝ์šฐ์—์„œ ๋ฒ ์ŠคํŠธ์ธ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

์„ ํ˜• ํƒ์ƒ‰(Full scan)์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

์ด ๊ฒฝ์šฐ ๋’ค์—์„œ ์‚ดํŽด๋ณผ B+tree ๋ผ๋Š” ๊ฒƒ์„ ํ†ตํ•ด์„œ Full scan์‹œ ํšจ์œจ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์‚ฝ์ž…

์‚ฝ์ž…์˜ ๊ฒฝ์šฐ ์กฐํšŒ ๋ฐฉ์‹๊ณผ ํ†ต์ผํ•˜๊ฒŒ Leaf Node๋“ค์„ ํƒ์ƒ‰ํ•˜๊ณ  ๋…ธ๋“œ ์ž๋ฆฌ๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์ž๋ฆฌ์— ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž… , ๊ฝ‰ ์ฐจ ์žˆ๋‹ค๋ฉด ๋…ธ๋“œ๋ฅผ ๋ถ„ํ• ํ•ด์„œ ์‚ฝ์ž…ํ•œ๋‹ค.

์˜ˆ์ œ๋ฅผ ํ†ตํ•ด 13 ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

ํƒ์ƒ‰์˜ ๊ฒฐ๊ณผ, 12์™€ 14 ์‚ฌ์ด์˜ ๊ฐ’์— ๋ฐฐ์ •๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•ด๋‹น Leaf Node๋Š” ๋…ธ๋“œ๊ฐ€ ๊ฝ‰ ์ฐฌ ์ƒํƒœ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ๋ถ€๋ชจ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋ถ€๋ชจ ๋…ธ๋“œ๋„ ๊ฝ‰ ์ฐฌ ์ƒํƒœ๊ฐ€ ๋˜๋ฏ€๋กœ ์ค‘์•™๊ฐ’์ธ 11๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•ด์ค€๋‹ค.

 

๋ถ€๋ชจ ๋…ธ๋“œ์— 11์„ ๋„ฃ์œผ๋‹ˆ ๋˜ ๋…ธ๋“œ๊ฐ€ ๊ฝ‰ ์ฐฌ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‹ค์‹œ ์ค‘์•™๊ฐ’์ธ 11๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•ด์ค€๋‹ค.

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์‚ฝ์ž… ๊ณผ์ •์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค.

 

B-tree์˜ ํŠน์ง•

  1. ๋ชจ๋“  ์ž์‹ ๋“ค์„ ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์กด์žฌํ•œ๋‹ค.
  2. ๋…ธ๋“œ์˜ key์˜ ์ˆ˜๊ฐ€ k๊ฐœ๋ผ๋ฉด, ์ž์‹๋…ธ๋“œ๋Š” k+1 ์ด๋‹ค.
  3. Key๋“ค์€ ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ์ด๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ B- Tree ์— ๋Œ€ํ•œ ์ž‘๋™ ๊ณผ์ •์ด๋‹ค.

์ด์ œ B+ Tree์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

 

B + Tree

 

B- tree์™€์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ฆฌํ”„ ๋…ธ๋“œ๋“ค๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

์ด๋Š” Full scan ์‹œ์— ๊ฐ€์žฅ ๋ช…ํ™•ํ•œ ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค.

 

๋‹ค์‹œ B-tree ์˜ Full scan ๊ณผ์ •์„ ์ƒ๊ฐํ•ด๋ณด์ž

B-tree์—์„œ๋Š” Full scan์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ชจ๋“  ๋ธŒ๋žœ์น˜ ๋…ธ๋“œ ๋ฐ ์ž์‹ ๋…ธ๋“œ๋“ค์„ ํƒ์ƒ‰ํ–ˆ์–ด์•ผํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ B+tree์—์„œ์˜ Full scan ์€ ๋‹ค๋ฅด๋‹ค.

๊ทธ ์ด์œ ๋Š” Leaf Node ์—๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๊ณ  ์ด๋“ค์€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋•๋ถ„์— ํ•œ๋ฒˆ์˜ ์„ ํ˜• ํƒ์ƒ‰์œผ๋กœ๋„ Full scan์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

B+tree์˜ ํŠน์ง•

  1. ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋‘์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ํ™•๋ณดํ•จ์œผ๋กœ์จ ๋” ๋งŽ์€ key๋“ค์„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ํ’€ ์Šค์บ” ์‹œ, B+tree๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•ด์‹œ

 

 

ํ•ด์‹œ๊ฐ€ ์ธ๋ฑ์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์•Œ๊ธฐ์ „์— ํ•ด์‹œํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ์•Œ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ key๊ฐ’์„ ์ธ์ž๋กœ ํ•˜๋Š” ํ•ด์‹œ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ฆ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

์ด ๊ฒฝ์šฐ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ key๊ฐ’์„ ํ•ด์‹œํ•จ์ˆ˜ ํ•œ๋ฒˆ์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

 

ํ•˜์ง€๋งŒ ํ•ด์‹œ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ธ๋ฑ์Šค์—์„œ ๊ฑฐ์˜ ์“ฐ์ด์ง€ ์•Š๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ๋“ฑํ˜ธ ๋ฐฉ์‹์—๋งŒ ์ตœ์ ํ™” ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฆ‰ DB ํƒ์ƒ‰ ์‹œ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ”์œ„๊ฒ€์ƒ‰์ด๋‚˜ ์ •๋ ฌ์—๋Š” ์ทจ์•ฝํ•˜๋‹ค.

์ด๋Ÿฌํ•œ ๋‹จ์  ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค์—์„œ๋Š” ๋งŽ์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

์ธ๋ฑ์Šค์˜ ์ข…๋ฅ˜

 

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜์—ฌ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ํ…Œ์ด๋ธ”๋‹น ๋‹จ ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋งŒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์กฐํšŒ ๊ณผ์ •์—์„œ ๋งค์šฐ ๋น ๋ฅธ ์†๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ ์™ธ ์‚ฝ์ž… , ์‚ญ์ œ , ์ˆ˜์ • ๊ฐ™์€ ๊ฒฝ์šฐ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค์˜ ์‚ฌ์šฉ์ด ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

(DML์ด ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ๋งค๋ฒˆ ์ •๋ ฌ์„ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ)

 

๋”ฐ๋ผ์„œ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋Š” ํ…Œ์ด๋ธ”์˜ ์ˆ˜์ •์ด ๋นˆ๋ฒˆํ•˜์ง€ ์•Š๊ณ  ์กฐํšŒ ์œ„์ฃผ์˜ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ์ข‹์€ ํšจ์œจ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

์‹ค์ƒํ™œ์— ๋น„์œ ํ•ด๋ณด๋ฉด, ์˜์–ด ๋‹จ์–ด ์ฑ…์„ ์˜ˆ์‹œ๋กœ ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์˜์–ด ๋‹จ์–ด ์ฑ…์€ ํ•ญ์ƒ A~Z ๊นŒ์ง€ ์ •๋ ฌ๋˜์žˆ๋Š” ๋ฐ ์ฑ… ์ž์ฒด๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ์ด๊ฒƒ์„ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค !

 

๋…ผํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค

 

์‹ค์ œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ์ •๋ ฌํ•˜์ง€ ์•Š๊ณ  ๋ณ„๋„์˜ ๊ณต๊ฐ„์— ์ธ๋ฑ์Šค ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค ํŽ˜์ด์ง€๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค.

 

DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋‹จ์œ„์ด๋‹ค.

ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋Š” 16kb์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

MySQL :: MySQL 8.0 Reference Manual :: 15.11.2 File Space Management

 

MySQL :: MySQL 8.0 Reference Manual :: 15.11.2 File Space Management

15.11.2 File Space Management The data files that you define in the configuration file using the innodb_data_file_path configuration option form the InnoDB system tablespace. The files are logically concatenated to form the system tablespace. There is no

dev.mysql.com

 

๋…ผํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ์กฐํšŒ๋ณด๋‹ค ์ˆ˜์ •,์‚ญ์ œ,์‚ฝ์ž… ์‹œ์— ๋” ์ข‹์€ ํšจ์œจ์„ ๊ฐ€์ง„๋‹ค.

์‹ค์ƒํ™œ์— ๋น„์œ ํ•ด๋ณด๋ฉด ,

์ฑ… ์•ž์— ์ƒ‰์ธ(์ธ๋ฑ์Šค)๋ฅผ ๋ณด๊ณ  ํ•ด๋‹น ๋‚ด์šฉ์ด ์žˆ๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด๋‹ค !

๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ์˜ ์กฐํšŒ๋ณด๋‹จ ์ˆ˜์‹œ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋Š” ํ…Œ์ด๋ธ”์—์„œ์˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•˜๋‹ค.

4. ์ธ๋ฑ์Šค ๋งŒ๋“œ๋Š” ๋ฒ•

SQL ๋ฌธ์„ ํ†ตํ•ด ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

์ด ์ค‘์—์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์“ฐ๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ํ†ตํ•œ ์ธ๋ฑ์Šค ์ƒ์„ฑ๋„ ํฌํ•จ๋˜์–ด์žˆ๋‹ค.

์œ„์—์„œ ๋‘๊ฐ€์ง€์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐฐ์› ๋Š”๋ฐ ๊ฐ๊ฐ ์–ด๋–ป๊ฒŒ ๋งŒ๋“œ๋Š” ์ง€๋ฅผ ์•Œ์•„๋ณด์ž

 

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค

  1. ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ
  2. not null + ์œ ๋‹ˆํฌ ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ
ALTER TABLE member ADD CONSTRAINT id PRIMARY KEY(id); โ†’ ํด๋Ÿฌ์Šคํ„ฐ๋ง

ALTER TABLE member ADD CONSTRAINT id UNIQUE NOT NULL; โ†’ ํด๋Ÿฌ์Šคํ„ฐ๋ง

 

๋…ผ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค

  1. ์œ ๋‹ˆํฌ ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ
  2. ์ง์ ‘ (์œ ๋‹ˆํฌ)์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ
ALTER TABLE member ADD CONSTRAINT name UNIQUE(name); โ†’ ๋…ผํด๋Ÿฌ์Šคํ„ฐ๋ง

CREATE INDEX name ON member (name); โ†’ ๋…ผํด๋Ÿฌ์Šคํ„ฐ๋ง

์•„๋‹ˆ๋ฉด ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

CREATE TABLE member(
id INT PRIMARY KEY,
name varchar(20) not null,
INDEX name_idx (name)
)

 

์ด์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ DB ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

5. ์ ์ ˆํ•œ ์ธ๋ฑ์Šค ์‚ฌ์šฉ

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

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

6. ์–ธ์ œ ์“ฐ๋ฉด ์ข‹์„๊นŒ?

์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ๋ฑ์Šค๋กœ ํ•˜๋ฉด ํšจ๊ณผ์ ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ์นด๋””๋„ˆ๋ฆฌํ‹ฐ๋ž€ ์‚ฌ์ „์  ์˜๋ฏธ๋กœ ๊ทธ๋ฃน ๋‚ด ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋–ค ๊ฑธ ์˜๋ฏธํ• ๊นŒ?

์ •ํ•ด์ง„ ๋ฐ์ดํ„ฐ ๋‚ด์—์„œ ๊ทธ๋ฃน ๋‚ด ์š”์†Œ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ์€ ์ค‘๋ณต์ด ์ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ค‘๋ณต์ด ์ ๋‹ค๋Š” ๊ฒƒ์€ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ ์‹œ ๋งค์šฐ ์ข‹์€ ํšจ์œจ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์€ ์„ฑ๋ณ„ , ํ•™๋…„์€ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋‚ฎ์œผ๋ฏ€๋กœ(์ค‘๋ณต์ด ๋†’์Œ) ์ธ๋ฑ์Šค์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

๋ฐ˜๋Œ€๋กœ ํ•™๋ฒˆ , ๊ณ ์œ  ID ๋“ฑ์€ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์œผ๋ฏ€๋กœ(์ค‘๋ณต์ด ๋‚ฎ์Œ) ์ธ๋ฑ์Šค ์‚ฌ์šฉ์— ์ ํ•ฉํ•˜๋‹ค.

7. ๊ฒฐ๋ก 

์ธ๋ฑ์Šค์˜ ๋™์ž‘ ๋ฐฉ์‹๊ณผ ์ธ๋ฑ์Šค์˜ ์‚ฌ์šฉ ํšจ๊ณผ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.

์ธ๋ฑ์Šค๋Š” ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ํšจ์œจ์„ ๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒํ™ฉ์— ๋งž์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค ์‚ฌ์šฉ์€ ์˜คํžˆ๋ ค ์—ญํšจ๊ณผ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

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

 

์ฐธ๊ณ  ์ž๋ฃŒ

DB Index ๋™์ž‘์›๋ฆฌ๋ฅผ ์•Œ์•„๋ณด์ž

 

DB Index ๋™์ž‘์›๋ฆฌ๋ฅผ ์•Œ์•„๋ณด์ž

B-Tree๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด๋Š” Index ๋™์ž‘ ์›๋ฆฌ

kyungyeon.dev

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค vs ๋„Œํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค | zinirun

 

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค vs ๋„Œํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค | zinirun

ํ•™๊ณผ ๊ณต๋ถ€์™€ ์‹œํ—˜์„ ์ค€๋น„ํ•˜๋‹ค๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค์™€ ๋„Œํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋ฅผ ์ •๋ฆฌํ•ด ๋ณธ๋‹ค. ๊ฐœ๋… ์˜์–ด ์‚ฌ์ „์„ ์ƒ๊ฐํ•ด๋ณด์ž. ๊ธฐ๋ณธ์ ์œผ๋กœ A~Z ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ฑ… ์ž์ฒด๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค. ์ด๊ฑด ํด๋Ÿฌ์Šคํ„ฐ ์ธ

zinirun.github.io

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ฆผ์œผ๋กœ ์•Œ์•„๋ณด๋Š” B-Tree

 

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ฆผ์œผ๋กœ ์•Œ์•„๋ณด๋Š” B-Tree

BํŠธ๋ฆฌ๋Š” ์ด์ง„ํŠธ๋ฆฌ์—์„œ ๋ฐœ์ „๋˜์–ด ๋ชจ๋“  ๋ฆฌํ”„๋…ธ๋“œ๋“ค์ด ๊ฐ™์€ ๋ ˆ๋ฒจ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์ž๋™์œผ๋กœ ๋ฒจ๋Ÿฐ์Šค๋ฅผ ๋งž์ถ”๋Š” ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.

velog.io

 

๋ฐฐ๊ฒฝ์ง€์‹ : ํ•จ์ˆ˜ ์ข…์†

๋‘ ํŠœํ”Œ์˜ X๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด Y๊ฐ’๋„ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ฆ‰ X ๊ฐ’์— ๋”ฐ๋ผ์„œ Y์˜ ๊ฐ’์ด ๊ฒฐ์ •๋˜๋Š” ๊ฒƒ์ธ๋ฐ, X์™€ Y๋ฅผ์„ ํ•จ์ˆ˜ ์ข…์† ๊ด€๊ณ„๋ผ๊ณ  ํ•œ๋‹ค.

๊ด€์ ์— ๋”ฐ๋ผ์„œ X๊ฐ€ Y๋ฅผ ํ•จ์ˆ˜์ ์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค. ๋ผ๊ณ  ํ• ์ˆ˜๋„ ์žˆ๊ณ  Y๊ฐ€ X์— ํ•จ์ˆ˜์ ์œผ๋กœ ์˜์กดํ•œ๋‹ค. ๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ด€๊ณ„๋ฅผ ํ•จ์ˆ˜ ์ข…์† ํ˜น์€ Funtional Dependency(FD)๋ผ๊ณ  ํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜ ํ…Œ์ด๋ธ”์—์„œ๋Š” ํšŒ์›์ด๋ฆ„๊ณผ ํ”„๋กœ๊ทธ๋žจ์ด primary key์ด๋ฉฐ ์ด๋Š” ๊ฐ€๊ฒฉ์„ ๊ฒฐ์ •ํ•œ๋‹ค.

(ํšŒ์› ๋ฒˆํ˜ธ๊ฐ€ ์ข€ ๋” ์ž์—ฐ์Šค๋Ÿฝ์ง€๋งŒ ์„ค๋ช…์„ ์œ„ํ•ด ๋‹ค๋ฅธ ํ‚ค๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ ๋‹ค.)

์ด ๋‘˜์„ FD ๊ด€๊ณ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธฐํ˜ธ๋กœ๋Š” {ํšŒ์›์ด๋ฆ„,ํ”„๋กœ๊ทธ๋žจ} -> ๊ฐ€๊ฒฉ ์œผ๋กœ ํ‘œ์‹œํ•œ๋‹ค.

ํšŒ์›๋ฒˆํ˜ธ ํšŒ์›์ด๋ฆ„ ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๊ฒฉ
101 ๋ฏผ์ˆ˜ ํ…Œ๋‹ˆ์Šค 5000
102 ์ฒ ์ˆ˜ ๋†๊ตฌ 7000
103 ์˜ํฌ ์ถ•๊ตฌ 4000
103 ์˜ํฌ ๋†๊ตฌ 7000

 

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ FD๋ฅผ ํŒŒ์•…ํ• ๋•Œ๋Š” ์Šคํ‚ค๋งˆ์˜ ์˜๋ฏธ๋ฅผ ๋ณด๊ณ  ํŒŒ์•…ํ•ด์•ผํ•˜๋ฉฐ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ณด๊ณ  ์ถ”๋ก ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ํšŒ์› ์ด๋ฆ„๊ณผ ๊ฐ€๊ฒฉ ๋ฐ์ดํ„ฐ๊ฐ€ FD์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋„ ๋™๋ช…์ด์ธ์ด๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ณ  ์—ฌ๋Ÿฌ ์˜ˆ์™ธ ์ƒํ™ฉ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ๊ตฌ์ถ•ํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์†์„ฑ(์• ํŠธ๋ฆฌ๋ทฐํŠธ)๊ฐ€ ๊ด€๊ณ„์ ์œผ๋กœ ์–ด๋–ค ์˜๋ฏธ๋ฅผ ์ง€๋‹์ง€์— ๋”ฐ๋ผ์„œ FD๋“ค์ด ๋‹ฌ๋ผ์ง„๋‹ค.

 

๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ(or state)๋งŒ ๋ณด๊ณ  ํŒ๋‹จํ•˜๊ธฐ๋ณด๋‹จ ์Šคํ‚ค๋งˆ๋ฅผ ๋ณด๊ณ  ์˜๋ฏธ์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ์ง€ ํŒŒ์•…ํ•ด์•ผํ•œ๋‹ค.

 

๋˜ ํ•œ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ ์€ FD๋Š” ์—ญ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

X -> Y ๊ด€๊ณ„๋ผ๊ณ  ํ•ด์„œ Y->X๊ฐ€ ์„ฑ๋ฆฝํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ€๊ฒฉ์„ ๊ฒฐ์ •์ง“๋Š” ๋‹ค๊ณ  ํ•ด์„œ ๊ฐ€๊ฒฉ์ด ํ”„๋กœ๊ทธ๋žจ์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค!

{ํ”„๋กœ๊ทธ๋žจ} -> ๊ฐ€๊ฒฉ (O)
{๊ฐ€๊ฒฉ} -> ํ”„๋กœ๊ทธ๋žจ (X)

 

*{}-> Y ๋Š” "Y์€ ์–ธ์ œ๋‚˜ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ์„ ๊ฐ€์ง„๋‹ค"๋Š” ์˜๋ฏธ์ด๋‹ค.

 

Trivial Funtional Dependcy

X -> Y์˜ ๊ด€๊ณ„์—์„œ Y๊ฐ€ X์˜ ๋ถ€๋ถ„ ์ง‘ํ•ฉ์ด๋ผ๋ฉด ์ด ๊ด€๊ณ„๋ฅผ Trivial Funtional Dependcy๋ผ๊ณ  ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, {a,b,c} -> {c} ๊ฐ™์ด c๊ฐ€ a,b,c์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. 

๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋กœ๋Š” ๋‹น์—ฐํžˆ non-Trivial Funtional Dependcy (์•„์˜ˆ ์•ˆ๊ฒน์น˜๋ฉด completely-non) ๊ฐ™์€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค.

 

Partial Functional Dependency

X->Y์˜ ๊ด€๊ณ„์—์„œ X์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ(์ „์ฒด๋ฅผ ์ œ์™ธํ•œ)๋งŒ์œผ๋กœ Y๋ฅผ ๊ฒฐ์ •์ง€์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๋ฅผ Partial Functional Dependency๋ผ๊ณ  ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, {a,b,c} -> {c} ์—์„œ {a} -> {c}๊ฐ€ ์„ฑ๋ฆฝํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋Š” Full Funtional Dependcy๊ฐ€ ์žˆ๋‹ค.

 

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

๋ฐ์ดํ„ฐ ์ค‘๋ณต๊ณผ insertion , update , deletion anomaly๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜์˜ ์ข…์†์„ฑ์„ ์ด์šฉํ•ด์„œ relational DB๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

 

์‚ฝ์ž…์ด์ƒ : ์ž๋ฃŒ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ์˜๋„์น˜ ์•Š์€ ์ž๋ฃŒ๊นŒ์ง€ ์‚ฝ์ž…ํ•ด์•ผํ•œ๋‹ค. (ex. null)

๊ฐฑ์‹ ์ด์ƒ : ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ ์ค‘ ์ผ๋ถ€๋งŒ ์ˆ˜์ •๋˜์–ด ๋ชจ์ˆœ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์‚ญ์ œ์ด์ƒ : ์–ด๋–ค ์ •๋ณด๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์˜๋„์น˜ ์•Š์€ ๋‹ค๋ฅธ ์ •๋ณด๊นŒ์ง€ ์‚ญ์ œ๋œ๋‹ค.

 

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

 

์ •๊ทœํ˜•์—๋Š” ๋ช‡ ๋‹จ๊ณ„์˜ nf(normal forms)๊ฐ€ ์žˆ๋Š”๋ฐ ์ฒ˜์Œ ๋‹จ๊ณ„๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉฐ ์•ž ๋‹จ๊ณ„๋ฅผ ๋งŒ์กฑํ•ด์•ผ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ณดํ†ต ์‹ค๋ฌด์—์„œ 3nf๊นŒ์ง€ ํ•˜๋ฉด ์ •๊ทœํ™”๋˜์—ˆ๋‹ค๋ผ๊ณ  ๋งํ•œ๋‹ค.

 

์ œ 1 ์ •๊ทœํ˜•(1NF)

๋ชจ๋“  attribute์˜ value๋Š” ๋” ์ด์ƒ ๋‚˜๋ˆ ์งˆ ์ˆ˜ ์—†๋Š” ๊ฐ’์ด์–ด์•ผํ•œ๋‹ค. -> ์—ฌ๋Ÿฌ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค.

 

ํšŒ์›๋ฒˆํ˜ธ ํšŒ์›์ด๋ฆ„ ํ”„๋กœ๊ทธ๋žจ
101 ๋ฏผ์ˆ˜ ํ…Œ๋‹ˆ์Šค
102 ์ฒ ์ˆ˜ ๋†๊ตฌ
103 ์˜ํฌ ์ถ•๊ตฌ,๋†๊ตฌ

(์˜ˆ์‹œ ์ฐธ๊ณ : ์ฝ”๋”ฉ์• ํ”Œ)

 

์˜ํฌ์— ํ•ด๋‹นํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‘ ๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด๋Š” ์ œ 1 ์ •๊ทœํ˜•์„ ์œ„๋ฐ˜ํ•œ๋‹ค.

 

์ œ 2 ์ •๊ทœํ˜•(2NF)

๋ชจ๋“  non-prime attribute๋Š” ๋ชจ๋“  key์— ๋Œ€ํ•ด full funtional dependentํ•ด์•ผํ•œ๋‹ค.
(ํ˜„์žฌ ํ…Œ์ด๋ธ”๊ณผ ์ƒ๊ด€์—†๋Š” ์ปฌ๋Ÿผ๋“ค์„ ๋ถ„๋ฆฌํ•œ๋‹ค.)

 

์ œ 1 ์ •๊ทœํ˜•์„ ์ ์šฉํ•˜์˜€์œผ๋ฉด ์ด์ œ ์ œ 2 ์ •๊ทœํ˜•์„ ์ง„ํ–‰ํ•  ์ฐจ๋ก€์ด๋‹ค.

ํ˜„์žฌ ํ…Œ์ด๋ธ”์—์„œ๋Š” ํšŒ์› ์ •๋ณด์™€ ํ”„๋กœ๊ทธ๋žจ ์ •๋ณด๊ฐ€ ํ˜ผ์žฌํ•ด์žˆ๋‹ค. ์ด๋Ÿฐ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•  ์‹œ์— ๋งค์šฐ ๋ฒˆ๊ฑฐ๋กœ์šธ ์ˆ˜ ์žˆ๋‹ค.

 

ํšŒ์›๋ฒˆํ˜ธ ํšŒ์›์ด๋ฆ„ ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๊ฒฉ
101 ๋ฏผ์ˆ˜ ํ…Œ๋‹ˆ์Šค 5000
102 ์ฒ ์ˆ˜ ๋†๊ตฌ 7000
103 ์˜ํฌ ์ถ•๊ตฌ 4000
103 ์˜ํฌ ๋†๊ตฌ 7000

(์˜ˆ์‹œ ์ฐธ๊ณ : ์ฝ”๋”ฉ์• ํ”Œ)

 

์˜ˆ์‹œ์—์„œ๋Š” ๊ฐ€๊ฒฉ ์ปฌ๋Ÿผ์ด ํ”„๋กœ๊ทธ๋žจ์— partial funtional dependentํ•˜๋‹ค.

{ํšŒ์›์ด๋ฆ„,ํ”„๋กœ๊ทธ๋žจ} -> ๊ฐ€๊ฒฉ

{ํ”„๋กœ๊ทธ๋žจ} -> ๊ฐ€๊ฒฉ

primary key๊ฐ€ ํšŒ์›๋ฒˆํ˜ธ,ํ”„๋กœ๊ทธ๋žจ์ด์ง€๋งŒ ๊ฐ€๊ฒฉ์€ ํ”„๋กœ๊ทธ๋žจ ํ•˜๋‚˜๋งŒ์œผ๋กœ ๊ฒฐ์ •๋  ์ˆ˜ ์žˆ๋‹ค. -> ํ˜„์žฌ ํ…Œ์ด๋ธ”์— ์ƒ๊ด€ ์—†๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด๋‹ค!

์ด ์ƒํ™ฉ์—์„œ ๊ฐ€๊ฒฉ์ด ๋ณ€๊ฒฝ๋จ์— ๋˜๋ฉด ์ปฌ๋Ÿผ์„ ์ผ์ผ์ด ์ˆ˜์ •ํ•ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๊ฒฉ
ํ…Œ๋‹ˆ์Šค 5000
๋†๊ตฌ 7000
์ถ•๊ตฌ 4000

 

์ด์ œ ๊ฐ€๊ฒฉ์€ ํ”„๋กœ๊ทธ๋žจ์— full functional dependencyํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ ํ…Œ์ด๋ธ”์— ์—ฐ๊ด€์žˆ๋Š” ์ปฌ๋Ÿผ๋“ค๋งŒ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.

๋งŒ์•ฝ ๊ฐ€๊ฒฉ์ด ์ˆ˜์ •๋œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์ด ํ…Œ์ด๋ธ”์˜ ๊ฐ’๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ œ 3 ์ •๊ทœํ˜• (3NF)

๋ชจ๋“  non-prime attribute(ํ‚ค๋ฅผ ์ œ์™ธํ•œ)๋Š” ์–ด๋–ค key์—๋„ transitive FD(์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†) ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

 

transitive FD(์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†) ์ด๋ž€, X -> Y ์ด๊ณ  Y -> Z์ด๋ฉด X -> Z ์ธ ๊ฒฝ์šฐ์ด๋‹ค.

ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๊ฒฉ ๊ฐ•์‚ฌ ์ „ํ™”๋ฒˆํ˜ธ
ํ…Œ๋‹ˆ์Šค 5000 ํ•œ์„์› 010-xxxx
๋†๊ตฌ 7000 ์ด์ง€์˜ 010-xxxx
์ถ•๊ตฌ 4000 ์ด๋ช…ํ•™ 010-xxxx

 

์ด ๊ฒฝ์šฐ์—๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ๊ฐ•์‚ฌ๊ฐ€ ๊ฒฐ์ •๋˜๋Š”๋ฐ ๋™์‹œ์— ๊ฐ•์‚ฌ๊ฐ€ ์ „ํ™”๋ฒˆํ˜ธ ๋˜ํ•œ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ -> ๊ฐ•์‚ฌ 

๊ฐ•์‚ฌ  -> ์ „ํ™”๋ฒˆํ˜ธ

=> ํ”„๋กœ๊ทธ๋žจ -> ์ „ํ™”๋ฒˆํ˜ธ ๊ฐ™์€ ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์ด ๋ฐœ์ƒํ•œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ•์‚ฌ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ณผ๋ชฉ์„ ๋‹ด๋‹นํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์˜€์„ ๋•Œ ์ค‘๋ณต๋œ ๊ฐ•์‚ฌ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒƒ์ด๋‹ค.

ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๊ฒฉ ๊ฐ•์‚ฌ ์ „ํ™”๋ฒˆํ˜ธ
ํ…Œ๋‹ˆ์Šค 5000 ํ•œ์„์› 010-xxxx
ํ…Œ๋‹ˆ์Šค ์ž…๋ฌธ 3000 ํ•œ์„์› 010-xxxx
๋†๊ตฌ 7000 ์ด์ง€์˜ 010-xxxx
์ถ•๊ตฌ 4000 ์ด๋ช…ํ•™ 010-xxxx

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋งŒ์•ฝ ํ•ด๋‹น ๊ฐ•์‚ฌ๊ฐ€ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜์˜€์„ ๊ฒฝ์šฐ ์ผ์ผ์ด ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผ ํ•˜๋ฉฐ ์ด๋Š” ๊ฐฑ์‹  ์ด์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๋‹น ์ปฌ๋Ÿผ์„ ๋ถ„๋ฆฌํ•ด์คŒ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ•์‚ฌ ์ „ํ™”๋ฒˆํ˜ธ
ํ•œ์„์› 010-xxxx
์ด์ง€์˜ 010-xxxx
์ด๋ช…ํ•™ 010-xxxx

 

๋ณดํ†ต ์—ฌ๊ธฐ๊นŒ์ง€ ์˜ค๋ฉด ์ •๊ทœํ™” ๋˜์—ˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์ง€๋งŒ BCNF๊นŒ์ง€๋งŒ ๋” ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

BCNF

๋ชจ๋“  ์œ ํšจํ•œ non-trivial FD X -> Y ๋Š” X๊ฐ€ ์Šˆํผํ‚ค์—ฌ์•ผํ•œ๋‹ค.

 

๋งŒ์•ฝ ํ…Œ์ด๋ธ”์— ๊ฐ•์˜์‹ค ์ •๋ณด๊นŒ์ง€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž 

ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๊ฒฉ ๊ฐ•์‚ฌ ๊ฐ•์˜์‹ค
ํ…Œ๋‹ˆ์Šค 5000 ํ•œ์„์› 207ํ˜ธ
ํ…Œ๋‹ˆ์Šค ์ž…๋ฌธ 3000 ํ•œ์„์› 207ํ˜ธ
๋†๊ตฌ 7000 ์ด์ง€์˜ 211ํ˜ธ
์ถ•๊ตฌ 4000 ์ด๋ช…ํ•™ 213ํ˜ธ

 

์ด์ œ ๊ฐ•์˜์‹ค์„ ํ†ตํ•ด ํ•ด๋‹น ๊ฐ•์‚ฌ์˜ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ตณ์ด ์ค‘๋ณต๋œ ๊ฐ•์‚ฌ์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผํ• ๊นŒ? ๋ผ๋Š” ์˜๋ฌธ์ด ๋“œ๋Š”๋ฐ ์ด์™€ ๊ด€๋ จ๋œ ๊ฐœ๋…์ด BCNF์ด๋‹ค.

 

ํ…Œ์ด๋ธ”์„ ๋ณด๋ฉด ๊ฐ•์˜์‹ค์„ ํ†ตํ•ด ํ˜„์žฌ ์–ด๋–ค ๊ฐ•์‚ฌ๊ฐ€ ๋ฐฐ์ •๋˜์—ˆ๋Š” ์ง€ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ•์˜์‹ค -> ๊ฐ•์‚ฌ๋Š” non-trivial FD ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐ•์˜์‹ค์€ ์Šˆํผํ‚ค๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ BCNF๋ฅผ ์œ„๋ฐ˜ํ•œ๋‹ค.

๊ฐ•์˜์‹ค ๊ฐ•์‚ฌ
207ํ˜ธ ํ•œ์„์›
2011ํ˜ธ ์ด์ง€์˜
213ํ˜ธ ์ด๋ช…ํ•™

 

ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌํ•œ ๊ฒฐ๊ณผ ๊ฐ•์˜์‹ค์€ ์Šˆํผํ‚ค๊ฐ€ ๋˜์—ˆ๊ณ  ๋” ์ด์ƒ ์›๋ž˜ ํ…Œ์ด๋ธ”์— ์ค‘๋ณต๋œ ๊ฐ•์‚ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•ด๋‘๋ฉด BCNF๋ฅผ ์ง€ํ‚ค๋ฉด์„œ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋“ค์„ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

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

ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์•ผ ํ•˜๋Š”๋ฐ, ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์„ ์˜ฌ๋ฆฌ๊ธฐ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์šฉ๋Ÿ‰์ด ํ„ฑ ์—†์ด ๋ถ€์กฑํ•˜๋‹ค. ์ด๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค. 

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ด์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ž์›๋“ค์„ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ผ๊นŒ?

 

CPU๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋…ผ๋ฆฌ ์ฃผ์†Œ(logical memory)๋ฅผ ๋ฐ”๋ผ๋ณธ๋‹ค.

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

์ด๋ ‡๊ฒŒ ํ•ด์ฃผ๋ฉด CPU ์ž…์žฅ์—์„œ๋Š” "๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋„ค?" ๋ผ๋Š” ์ฐฉ๊ฐ์„ ํ•˜๊ฒŒ ๋˜๊ณ  ์ด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ถ”์ƒํ™”๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

(์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ์—†๋“  CPU ์ž…์žฅ์—์„  ์•Œ ํ•„์š” ์—†๋‹ค.)

 

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

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

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

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋Š” ์š”๊ตฌํŽ˜์ด์ง• ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํŽ˜์ด์ง€๋กœ ๋‚˜๋ˆ„๊ณ  ๊ผญ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋“ค๋งŒ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์ ธ์˜จ๋‹ค.

 

์š”๊ตฌ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์ด๋ž€

 

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

์š”๊ตฌ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์€ ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ฒƒ์ธ๋ฐ, ์š”๊ตฌ๋˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•จ์œผ๋กœ์จ ๊ธฐ์กด ๋ฌธ์ œ๋“ค์„ ์™„ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

์ถœ์ฒ˜ :&nbsp;https://velog.io/@chappi/OS%EB%8A%94-%ED%95%A0%EA%BB%80%EB%8D%B0-%ED%95%B5%EC%8B%AC%EB%A7%8C-%ED%95%A9%EB%8B%88%EB%8B%A4.-16%ED%8E%B8-Demand-Paging%EC%9A%94%EA%B5%AC-%ED%8E%98%EC%9D%B4%EC%A7%95-locality%EC%A7%80%EC%97%AD%EC%84%B1

 

 

๋งŒ์•ฝ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์—์„œ 4๋ฒˆ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ–ˆ๋Š”๋ฐ page fault๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด์ž.

ํ˜„์žฌ 4๋ฒˆ ํŽ˜์ด์ง€์˜ ์œ ํšจ๋น„ํŠธ๋Š” 1(invalid)์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์Šค์™‘ ์˜์—ญ์—์„œ ๊ฐ€์ ธ์™€์•ผํ•˜๋Š”๋ฐ ์ด๋•Œ ์Šค์™€ํ•‘์ด ๋ฐœ์ƒํ•œ๋‹ค.

์ผ๋‹จ, ์ž„์˜๋กœ 4๋ฒˆ์— ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ ์Šค์™‘ ์˜์—ญ์œผ๋กœ ๋ฐฉ์ถœ(์Šค์™‘ ์•„์›ƒ)ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์œ ํšจ๋น„ํŠธ๋Š” 1์—์„œ 0์ด ๋˜๊ณ  ์Šค์™‘ ์˜์—ญ ๋‚ด์˜ ์ฃผ์†Œ(6)๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

๊ทธ ๋‹ค์Œ ์Šค์™‘ ์˜์—ญ์˜ 1๋ฒˆ์— ํ•ด๋‹นํ•˜๋Š” ํ”„๋กœ์„ธ์Šค(E)๊ฐ€ ๋ฌผ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ์˜ 3๋ฒˆ ํ”„๋ ˆ์ž„์œผ๋กœ ์˜ฌ๋ผ๊ฐ€๊ณ  ์œ ํšจ ๋น„ํŠธ๋Š” 1์—์„œ 0์œผ๋กœ ๋ฐ”๋€๋‹ค.

 

์ถœ์ฒ˜ :&nbsp;https://velog.io/@chappi/OS%EB%8A%94-%ED%95%A0%EA%BB%80%EB%8D%B0-%ED%95%B5%EC%8B%AC%EB%A7%8C-%ED%95%A9%EB%8B%88%EB%8B%A4.-16%ED%8E%B8-Demand-Paging%EC%9A%94%EA%B5%AC-%ED%8E%98%EC%9D%B4%EC%A7%95-locality%EC%A7%80%EC%97%AD%EC%84%B1

 

์ด์ฒ˜๋Ÿผ ์œ ํšจ๋น„ํŠธ๊ฐ€ 1(๋ฉ”๋ชจ๋ฆฌ์— ์—†์Œ)์ผ๋•Œ๋Š” ์ฃผ์†Œ ํ•„๋“œ์— ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ  0(๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์Œ)์ผ๋•Œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ˆ์‹œ์—์„œ๋Š” ์ž„์˜๋กœ ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ์ถœํ–ˆ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ํŽ˜์ด์ง€๊ฐ€ ๊ฝ‰ ์ฐผ์„ ๊ฒฝ์šฐ ์ง€์—ญ์„ฑ์„ ๊ณ ๋ คํ•ด์„œ ํŽ˜์ด์ง• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๊ณ„ํ•œ๋‹ค.

 

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋™์ž‘ ๋ฐฉ์‹

ํ•„์š”์„ฑ์„ ์•Œ์•˜๋‹ค๋ฉด ๊ธฐ๋ณธ์ ์ธ ๋™์ž‘ ๋ฐฉ์‹์„ ๋‹ค๋ค„๋ณด๋ ค๊ณ ํ•œ๋‹ค.

 

๋จผ์ € ์ฒ˜์Œ์—๋Š” CPU๊ฐ€ ํ”„๋กœ์„ธ์Šค ์š”์ฒญ์„ ํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

์ด๋•Œ ๋ฐ”๋กœ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋กœ ๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์บ์‹ฑ ๊ณ„์ธต์ธ TLB๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค. -> ์—ฌ๊ธฐ์—๋„ ์—†์œผ๋ฉด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋กœ ๊ฐ„๋‹ค.

 

 

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

๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ํ”„๋กœ์„ธ์Šค๋งˆ์ € ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ํ˜„์ƒ์€ ๋ถˆ๊ฐ€ํ”ผํ•˜๋‹ค. 

 

์ค‘์š”ํ•œ ๊ฒƒ์€ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ผ์–ด๋‚œ ๋‹ค์Œ์ธ๋ฐ, ๋ฐ”๋กœ ์Šค์™€ํ•‘์„ ํ†ตํ•ด ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์Šค์™€ํ•‘์ด๋ž€ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐ”๋กœ ๋””์Šคํฌ์˜ ์Šค์™‘ ์˜์—ญ์—์„œ ๊ฐ€์ ธ์˜ด์œผ๋กœ์จ ๋นจ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์Šค์™€ํ•‘์ด ์ž์ฃผ ์ผ์–ด๋‚œ๋‹ค๋Š” ๊ฒƒ์€ ์ข‹์€ ํ˜„์ƒ์ด ์•„๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ œ๊ฐ€ *์Šค๋ ˆ์‹ฑ์ด๋‹ค.

์Šค์™€ํ•‘์ด ๋™์‹œ ๋‹ค๋ฐœ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋ฉด CPU ์ฒ˜๋ฆฌ์˜ ๊ณต๋ฐฑ์ด ๋ฐœ์ƒํ•œ๋‹ค.

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

 

์Šค๋ ˆ์‹ฑ : ํŽ˜์ด์ง€ ๋ถ€์žฌ์œจ(Page fault)์ด ์ฆ๊ฐ€ํ•˜์—ฌ CPU ์ด์šฉ์œจ์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋–จ์–ด์ง€๋Š” ํ˜„์ƒ

 

์Šค๋ ˆ์‹ฑ ํ˜„์ƒ์˜ ๋Œ€ํ‘œ์ ์ธ ํ•ด๊ฒฐ๋ฒ•์œผ๋กœ๋Š” PFF(page fault frequency)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€ ํดํŠธ์˜ ์ƒํ•œ์„ ๊ณผ ํ•˜ํ•œ์„ ์„ ์ •ํ•ด์คŒ์œผ๋กœ์จ ์ตœ์†Œํ•œ์˜ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„ ํ• ๋‹น์„ ๋ณด์žฅํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค.

์ด ๋ฐฉ์‹์„ ํ†ตํ•ด ํŽ˜์ด์ง€ ํดํŠธ ๋นˆ๋„๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ƒํ•œ์„ ๋ณด๋‹ค ๋†’์œผ๋ฉด ๋” ๋งŽ์€ ํ”„๋ ˆ์ž„์„ ํ• ๋‹นํ•ด์ฃผ๊ณ  ๋‚ฎ์œผ๋ฉด ํ• ๋‹นํ•œ ํ”„๋ ˆ์ž„์„ ํšŒ์ˆ˜ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

์•„๋‹ˆ๋ฉด ์ž‘์—… ์ง‘ํ•ฉ ๋ชจ๋ธ(Working Set)์„ ๋งŒ๋“ค์–ด์„œ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€๋“ค์„ ์ง‘ํ•ฉ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Š” ์ตœ๊ทผ์— ์ฐธ์กฐ๋œ ํ”„๋ ˆ์ž„๋“ค์ด ์ดํ›„์—๋„ ๋˜ ์ฐธ์กฐ๋  ๊ฒƒ์ด๋ผ๋Š” ์ง€์—ญ์„ฑ์— ๊ธฐ๋ฐ˜ํ•œ๋‹ค.

 

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ์žฅ๋‹จ์ 

์žฅ์ 

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด์—๋Š” ํ”„๋กœ์„ธ์Šค ์ „์ฒด๊ฐ€ ์˜ฌ๋ผ์™€์•ผ ํ–ˆ๋‹ค๋ฉด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ํ†ตํ•ด ๊ผญ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

 

๋˜ํ•œ ๋žจ+์Šค์™‘ ์˜์—ญ์„ ํ†ตํ•ด ๋น„๊ต์  ๋„“์€ ์˜์—ญ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ ์ถฉ๋Œ ์œ„ํ—˜์ด ์ ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ๋น„๊ต์  ๋‹จ์ˆœํ•ด์ง„๋‹ค.

 

๋‹จ์ 

ํŽ˜์ด์ง€ ํดํŠธ ํ˜„์ƒ์ด ๋นˆ๋ฒˆํ•  ์‹œ ์Šค๋ ˆ์‹ฑ์œผ๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ ์ด๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. ex) ํŽ˜์ด์ง• ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

๊ฒฐ๋ก 

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

CPU ์ž…์žฅ์—์„œ๋Š” ์ด๋Ÿฐ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ถ”์ƒํ™”๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค์„ ์ž์œ ๋กญ๊ฒŒ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๊ณ  ๋งŒ์•ฝ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋”๋ผ๋„ ์Šค์™‘์„ ํ†ตํ•ด ๋ฐ”๋กœ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์žฆ์€ ํŽ˜์ด์ง€ ํดํŠธ๋กœ ์ธํ•œ ์Šค๋ ˆ์‹ฑ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜ฌ๋ฆฌ๊ณ  ๋‚ด๋ฆด ์ง€์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ ํŽ˜์ด์ง• ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”ํ•˜๋‹ค.

์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด๋ž€

ํ”„๋กœ์„ธ์Šค์— ์—ฐ์†์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋งค ์‹œ์  ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ์— ๋งž๊ฒŒ ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์˜ ์ข…๋ฅ˜๋กœ๋Š” ๊ณ ์ • ๋ถ„ํ•  ๋ฐฉ์‹๊ณผ ๊ฐ€๋ณ€ ๋ถ„ํ•  ๋ฐฉ์‹์ด ์žˆ๋‹ค.

์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์˜ ์›๋ฆฌ

์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์—ฌ๋Ÿฌ ๋ถ„ํ• ๋กœ ๋‚˜๋ˆ„์–ด์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค๋“ค์„ ํ• ๋‹นํ•  ๋•Œ ์ ์žฌ๋  ๊ณต๊ฐ„์„ ์ฐพ์•„์•ผํ•˜๋Š”๋ฐ ์ด๋ฅผ ๊ตฌํ˜„ํ•œ ๋ฐฉ๋ฒ•์ด ๋Œ€ํ‘œ์ ์œผ๋กœ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 
์ตœ์ดˆ ์ ํ•ฉ
๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜๋‹ค๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„(hole)์ด ๋‚˜์˜ค๋ฉด ๊ทธ ์ž๋ฆฌ์— ๋ฐ”๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
 
์ตœ์  ์ ํ•ฉ
๋นˆ ์ž๋ฆฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ๋ฌด์กฐ๊ฑด ์ ์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ ์žฌ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ์ž‘์€ ๊ณต๊ฐ„์— ํ”„๋กœ์„ธ์Šค๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
 
์ตœ์•… ์ ํ•ฉ
์ดค์  ์ ํ•ฉ๊ณผ๋Š” ๋ฐ˜๋Œ€๋กœ ์ ์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๊ณต๊ฐ„์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์žฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
 

์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์œผ๋กœ ์ธํ•œ ๋ฌธ์ œ์ 

๊ทผ๋ฐ ๋ฌธ์ œ๋Š” ์œ„์ฒ˜๋Ÿผ ๋นˆ ๊ณต๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋ ‡๊ฒŒ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋‹ค.
๊ทธ ์ด์œ ๋Š” ์™ธ๋ถ€ ๋‹จํŽธํ™”, ๋‚ด๋ถ€ ๋‹จํŽธํ™” ๋•Œ๋ฌธ์ธ๋ฐ ๋‘ ๊ฐœ์˜ ๋ฌธ์ œ๊ฐ€ ๊ฝค ์น˜๋ช…์ ์ด๋‹ค.

 

๋จผ์ € ๊ณ ์ • ๋ถ„ํ•  ๋ฐฉ์‹์—์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ ์€ ์™ธ๋ถ€ ๋‹จํŽธํ™” , ๋‚ด๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ์žˆ๋‹ค.

๊ณ ์ • ๋ถ„ํ•  ๋ฐฉ์‹์€ ๋ถ„ํ• ์˜ ํฌ๊ธฐ๋ณด๋‹ค ํ”„๋กœ์„ธ์Šค์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์„œ ์‹คํ–‰๋˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ ์ด๋ฅผ ์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ผ๊ณ ํ•œ๋‹ค.

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

์ด์ฒ˜๋Ÿผ ๊ณ ์ • ๋ถ„ํ•  ๋ฐฉ์‹์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณ ์ •์‹œ์ผœ ๋†“๊ณ  ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋ณ€ ๋ถ„ํ•  ๋ฐฉ์‹์— ๋น„ํ•ด ์œตํ†ต์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

 

ํ•˜์ง€๋งŒ ๊ฐ€๋ณ€ ๋ถ„ํ•  ๋ฐฉ์‹๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๊ฐ€๋ณ€ ๋ถ„ํ•  ๋ฐฉ์‹๋„ ์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
๋ฉ”๋ชจ๋ฆฌ์— ๋นˆ ๊ณต๊ฐ„์ด 20MB , 30MB๊ฐ€ ์žˆ๋”๋ผ๋„ 50MB๋Š” ํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ๋‘๊ฐœ์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋‚˜๋‰˜์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์ด๋ ‡๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜๋ฉด์„œ ์ƒ๊ธฐ๋Š” ์• ๋งคํ•˜๊ฒŒ ์ž‘์€ ๋นˆ๊ณต๊ฐ„๋“ค์€ ๊ณ„๋ฅต๊ฐ™์€ ์กด์žฌ์—ฌ์„œ ๊ฒฐ๊ตญ์—” ๋นˆ๊ณต๊ฐ„์œผ๋กœ ๋‚จ๊ฒŒ ๋œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ผ๊ณ  ํ•œ๋‹ค.
 

์™ธ๋ถ€ ๋‹จํŽธํ™”

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

๋Œ€ํ‘œ์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• - ํŽ˜์ด์ง•

์ง€๊ธˆ๊นŒ์ง€ ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์€ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์‚ดํŽด๋ณด์•˜๋‹ค.
๊ทธ๋ž˜์„œ ์šด์˜์ฒด์ œ๊ฐ€ ์„ ํƒํ•œ ๋ฐฉ๋ฒ•์€ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ํŽ˜์ด์ง•์ธ๋ฐ ํŽ˜์ด์ง•์— ์ง‘์ค‘ํ•ด์„œ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.
https://cb036133.tistory.com/175

 

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐœ๋… (๋…ผ๋ฆฌ์ฃผ์†Œ, ํŽ˜์ด์ง€ ํดํŠธ, ์Šค์™€ํ•‘)

๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋ž€? ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์•ผ ํ•˜๋Š”๋ฐ, ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์„ ์˜ฌ๋ฆฌ๊ธฐ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์šฉ๋Ÿ‰์ด ํ„ฑ ์—†์ด ๋ถ€์กฑํ•˜๋‹ค. ์ด๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค. ๊ฐ€์ƒ

cb036133.tistory.com

 
ํŽ˜์ด์ง•์€ ๊ทผ์›์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.
๊ฒฐ๊ตญ ์™ธ๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ํฌ๊ธฐ๊ฐ€ ๋ชจ๋‘ ๋‹ฌ๋ผ์„œ์ธ๋ฐ ๊ทธ๋ ‡๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค์˜ ํฌ๊ธฐ๋ฅผ ์ผ์ •ํ•˜๊ฒŒ ์ž๋ฅด๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ํ• ๋‹นํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ?
์ด๋ ‡๊ฒŒํ•˜๋ฉด ๋‚ญ๋น„๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋„ ์ค„์ผ์ˆ˜ ์žˆ๊ณ  ํฌ๊ธฐ ํฐ ํ”„๋กœ์„ธ์Šค๋„ ์ผ์ • ๋ถ€๋ถ„๋งŒ ์˜ฌ๋ ค์„œ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
 
์ด๋ ‡๊ฒŒ ์ผ์ •ํ•œ ํฌ๊ธฐ๋กœ ์ž๋ฅธ ๋‹จ์œ„๋ฅผ ํŽ˜์ด์ง€๋ผ๊ณ ํ•˜๋ฉฐ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋Š” ํ”„๋ ˆ์ž„์ด๋ผ๊ณ  ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์•ˆ์“ฐ๋Š” ํŽ˜์ด์ง€๋“ค์€ ๋‹ค์‹œ ์Šค์™‘ ์˜์—ญ์œผ๋กœ swap out ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์žˆ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค.
 
๊ทผ๋ฐ ํŽ˜์ด์ง€๋Š” ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋ถˆ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹น๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— CPU๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜์—ฌ ํŽ˜์ด์ง€์™€ ํ…Œ์ด๋ธ”์„ ๋งคํ•‘์‹œํ‚จ๋‹ค.(์•ฝ๊ฐ„ ๋„คํŠธ์›Œํฌ์˜ ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ์—ญํ• ์ด๋‹ค)
ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์žˆ๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•ด์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ํ”„๋ ˆ์ž„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ CPU๋Š” ๋ถˆ์—ฐ์† ์ ์œผ๋กœ ํ• ๋‹น๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

๊ทผ๋ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๋ฉด CPU๋Š” ์–ด๋–ป๊ฒŒ ์ด ํ…Œ์ด๋ธ”์„ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฑธ๊นŒ? ์ด ์—ญํ• ์„ ํ•˜๋Š”๊ฒŒ PTBR์ด๋‹ค.

ํ•˜์ง€๋งŒ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด ๋”ฐ๋กœ ์žˆ๋‹ค๋ฉด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋‘๋ฒˆ ์ ‘๊ทผํ•˜๊ฒŒ ๋œ๋‹ค. (ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” 1๋ฒˆ + ํŽ˜์ด์ง€ ์ฐธ์กฐ 1๋ฒˆ)

 

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

FIFO
๋จผ์ € ์˜จ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ๊ต์ฒดํ•œ๋‹ค.

ํŠน์ดํ•˜๊ฒŒ๋„ FIFO์˜ ๊ฒฝ์šฐ ํŽ˜์ด์ง€์˜ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ฒŒ ๋˜๋ฉด ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋” ์ž์ฃผ ๋ฐœ์ƒํ•œ๋‹ค.(๋ฒจ๋ ˆ์ด๋””์˜ ๋ชจ์ˆœ)

 
LRU
์ฐธ์กฐ๊ฐ€ ๊ฐ€์žฅ ์˜ค๋ž˜๋ค ํŽ˜์ด์ง€๋ฅผ ๋ฐ”๊พผ๋‹ค. ์ด ๋ฐฉ์‹์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค ์นด์šดํ„ฐ์™€ ์Šคํƒ์„ ๋‘์–ด์•ผํ•œ๋‹ค.
 

LFU
๊ฐ€์žฅ ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ์ ์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•œ๋‹ค.


NUR (ํด๋Ÿญ ์•Œ๊ณ ๋ฆฌ์ฆ˜)
0๊ณผ 1์„ ๊ฐ€์ง„ ๋น„ํŠธ๋ฅผ ๋‘๊ณ  ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๋ฉด์„œ 0์„ ์ฐพ์€ ์ˆœ๊ฐ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ 0์€ ์ฐธ์กฐ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๋œป์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ฐธ์กฐ ์‹œ์ ์ด ๊ฐ€์žฅ ์˜ค๋ž˜๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ต์ฒดํ•˜๋ฉด ํ•ด๋‹น ๋ถ€๋ถ„์€ 1๋กœ ๋ฐ”๊พผ๋‹ค.

 

 

1. ๋ฐ๋“œ๋ฝ์ด๋ž€?

๋ฐ๋“œ๋ฝ์ด๋ž€ ๋‘๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค ํ˜น์€ ์Šค๋ ˆ๋“œ๊ฐ€ ์„œ๋กœ๊ฐ€ ๊ฐ€์ง„ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ์ด๋‹ค.

์ด๋Ÿฐ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์„œ๋กœ๊ฐ€ ์›ํ•˜๋Š” ์ž์›์„ ์–ป์ง€ ๋ชปํ•ด์„œ ์ฒ˜๋ฆฌ ์ƒํƒœ๊ฐ€ ๋งˆ๋น„๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ , ๋ ˆ์ด์Šค ์ปจ๋””์…˜ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์ด ๋ณตํ•ฉ์ ์œผ๋กœ ์ž‘์šฉํ•ด์„œ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•œ๋‹ค.

2. ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ 

์•ž์„œ ๋ฐ๋“œ๋ฝ์€ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์ด ๋ณตํ•ฉ์ ์œผ๋กœ ์ž‘์šฉํ•ด์•ผํ•œ๋‹ค๊ณ  ํ•˜์˜€๋‹ค. ๊ทธ ์กฐ๊ฑด์€ ํฌ๊ฒŒ 4๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 

1. ์ƒํ˜ธ๋ฐฐ์ œ(Mutual Exclusion)

๋ ˆ์ด์Šค ์ปจ๋””์…˜ ํ™˜๊ฒฝ์—์„œ ๊ณต์œ  ์ž์›๋“ค์„ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฐจ๋Ÿ‰๋“ค์ด ์ฐจ์„ ๋“ค์„ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ด๋Š” ๊ณง ๊ตํ†ต์‚ฌ๊ณ ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

์ด ์กฐ๊ฑด์€ ๋‹น์—ฐํžˆ ๋ณด์žฅ๋˜์–ด์•ผ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

2. ์ ์œ  ๋Œ€๊ธฐ (Hold and Wait)

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

์ ์œ (Hold)ํ•œ ์ƒํƒœ๋กœ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€๊ธฐ(wait) ํ•œ๋‹ค๋Š” ๊ฐœ๋…์ด๋‹ค.

 

์ฐจ๋Ÿ‰์ด 1์ฐจ์„ ์„ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์—์„œ 2์ฐจ์„ ๊นŒ์ง€ ์ ์œ ํ•ด์•ผํ•œ๋‹ค๋ฉด, ๊ทธ ๋™์•ˆ์€ ๋‹ค๋ฅธ ์ฐจ๋Ÿ‰๋“ค์ด 1์ฐจ์„ ์„ ์ ์œ ํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์–ด๋–ค ์ฐจ๋Ÿ‰์ด ๊ผญ 1์ฐจ์„ ์— ๊ฐ€์•ผํ•œ๋‹ค๋ฉด ์ด๋Š” ๊ณง ์ฒ˜๋ฆฌ๊ฐ€ ๋งˆ๋น„๋˜๋Š” ๋ฐ๋“œ๋ฝ์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. ๋น„์„ ์ 

๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๋‚˜ CPU ์ž์›์„ ์ž„์˜๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ ํ˜„์žฌ ์ž์›(๋ฆฌ์†Œ์Šค)์„ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž๋งŒ์ด ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2์ฐจ์„ ์— ์žˆ๋Š” ์ฐจ๋Ÿ‰์ด 1์ฐจ์„ ์— ์žˆ๋Š” ์ฐจ๋Ÿ‰์„ ์–ต์ง€๋กœ ๋Œ์–ด๋‚ด๋ ค์„œ ์ ์œ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฐœ๋…์ด๋‹ค.

 

4. ์ˆœํ™˜ ๋Œ€๊ธฐ

๋ง ๊ทธ๋Œ€๋กœ ์„œ๋กœ๊ฐ€ ์„œ๋กœ์˜ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด 4๊ฐ€์ง€ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์–ด์•ผ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค!

 

3. ๋ฐ๋“œ๋ฝ ํ•ด๊ฒฐ ์ „๋žต

๋ฐ๋“œ๋ฝ ๋ฐฉ์ง€

4๊ฐ€์ง€ ์กฐ๊ฑด์œผ๋กœ ์ธํ•ด ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด, ์—ญ๋ฐœ์ƒ์œผ๋กœ 4๊ฐ€์ง€ ์ƒํ™ฉ์ด ์ถฉ์กฑ๋˜์ง€ ์•Š๊ฒŒ ์‹œ์Šคํ…œ์„ ๋””์ž์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ฒซ๋ฒˆ์งธ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ  ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์€ ์• ์ดˆ์— ํ˜„์‹ค ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ ˆ์ด์Šค ์ปจ๋””์…˜ ํ™˜๊ฒฝ์—์„œ ์ž์›์„ ๊ณต์œ ํ•œ๋‹ค๋Š” ๊ฑฐ๋Š” ๋งค์šฐ ์œ„ํ—˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋˜ํ•œ IO ๊ด€๋ จ ๋ฆฌ์†Œ์Šค๋“ค์€ ์• ์ดˆ์— ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์‹ค ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋‘๋ฒˆ์งธ๋กœ๋Š” ์ ์œ  ๋Œ€๊ธฐ ์ƒํƒœ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.

์ž์›์„ ์ ์œ ํ•œ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ž์›์„ ๋Œ€๊ธฐํ•˜๋ฉด์„œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด, ์• ์ดˆ์— ๋ชจ๋“  ์ž์›์„ ์ ์œ ํ•œ ์ƒํƒœ์—์„œ๋งŒ ์‹คํ–‰ํ•˜๊ฒŒ๋” ํ•˜์—ฌ์„œ

ํ•ด๋‹น ์ƒํƒœ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ฉด ๋œ๋‹ค. ์ฆ‰ "hold(์ ์œ )ํ•œ ์ฑ„๋กœ wait(๋Œ€๊ธฐ)ํ•˜์ง€๋งˆ!" ๋ฐฉ์‹์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

์„ธ๋ฒˆ์งธ๋Š” ๋Œ€๊ธฐ ์ƒํƒœ์—์„œ ์ž์›์„ ์–‘๋ณดํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์ ์œ ํ•œ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์ƒํƒœ๋ผ๋ฉด, ํ˜„์žฌ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž์›์„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์–‘๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Š” ๋ฝ์„ ์ž๋ฐœ์ ์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ชจ๋‹ˆํ„ฐ ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๋‹ค.

https://cb036133.tistory.com/178

 

๋ชจ๋‹ˆํ„ฐ์˜ ๋™์ž‘ ๋ฐฉ์‹๊ณผ ์ž๋ฐ”์—์„œ์˜ ๋ชจ๋‹ˆํ„ฐ

๋ชจ๋‹ˆํ„ฐ๋ž€? ๋ชจ๋‹ˆํ„ฐ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ mutex๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. ์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ ์Šค๋ ˆ๋“œ๋ฅผ waiting ์ƒํƒœ๋กœ ์ „ํ™˜์‹œํ‚ค๋Š”๋ฐ ์ด๋ฅผ cooperation์ด๋ผ๊ณ  ํ•œ๋‹ค. mutex - ๋ฝ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์Šค๋ ˆ

cb036133.tistory.com

 

๋„ค๋ฒˆ์งธ๋Š” ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ์ˆœ์„œ์ฒด๊ณ„๋ฅผ ๋ถ€์—ฌํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ 4๋ฒˆ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ์œ ํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ ๋ฆฌ์†Œ์Šค๋Š” 4๋ฒˆ ๋ฆฌ์†Œ์Šค๋ณด๋‹ค ํฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ์œ ํ•ด์•ผํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ์—†์•จ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ๋“œ๋ฝ ํšŒํ”ผ

๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ๊ฒƒ ๊ฐ™์€ ์ƒํ™ฉ ์ž์ฒด๋ฅผ ํšŒํ”ผํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋‹ค.

์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€, ์ด ์ž์›์˜ ์–‘๊ณผ ํ˜„์žฌ ํ• ๋‹นํ•œ ์ž์›์˜ ์–‘์„ ๊ธฐ์ค€์œผ๋กœ ์•ˆ์ • ๋˜๋Š” ๋ถˆ์•ˆ์ • ์ƒํƒœ๋กœ ๋‚˜๋ˆ„๊ณ  ์•ˆ์ • ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ์ž์›์„ ํ• ๋‹นํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

์•ˆ์ • ์ƒํƒœ: ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๊ณ  ํ”„๋กœ์„ธ์Šค์˜ ์ตœ๋Œ€ ์ž์› ์š”๊ตฌ๋Ÿ‰์„ ์šด์˜์ฒด์ œ๊ฐ€ ์ถฉ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ

๋ฐ๋“œ๋ฝ ๊ฐ์ง€์™€ ๋ณต๊ตฌ

์šฐ์„  ๋ฐ๋“œ๋ฝ์„ ํ—ˆ์šฉํ•ด์ฃผ๊ณ  ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ๋ณต๊ตฌํ•œ๋‹ค.

 

๋ณต๊ตฌ ์ „๋žต์€ ํฌ๊ฒŒ 2๊ฐ€์ง€์ด๋‹ค.

๋จผ์ € ๋ฐ๋“œ๋ฝ์ด ๊ฑธ๋ฆฐ ํ”„๋กœ์„ธ์Šค๋“ค์„ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋•Œ ํ”„๋กœ์„ธ์Šค๋“ค์„ ํ•˜๋‚˜์”ฉ ์ข…๋ฃŒ์‹œํ‚ค๊ฑฐ๋‚˜, ๋ชจ๋‘ ํ•œ๊บผ๋ฒˆ์— ์ข…๋ฃŒ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์€ ์ตœํ›„์˜ ๋ฐฉ๋ฒ•์ด๋‹ค. 

์ด๋ ‡๊ฒŒ ๊ฐ•์ œ ์ข…๋ฃŒ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ๊ทธ๋™์•ˆ์˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์žƒ๊ฒŒ ๋˜๋Š” ๋ฆฌ์Šคํฌ๋ฅผ ๊ฐ๋‚ดํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์ผ์‹œ์ ์œผ๋กœ ์„ ์ ์„ ํ—ˆ์šฉํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ๊ฝ๊ฝ ๋ฌถ์—ฌ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ ๋“ค์ด ๊ทธ๋‚˜๋งˆ ์ง„ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ๋“œ๋ฝ ๋ฌด์‹œ

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

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

์‚ฌ์‹ค ํ˜„์‹ค์—์„œ๋„ ์ปดํ“จํ„ฐ๊ฐ€ ๋ฉˆ์ถ”๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋“ค์€ ๊ป๋‹ค ํ‚จ๋‹ค.

 

๋ชจ๋‹ˆํ„ฐ๋ž€?

๋ชจ๋‹ˆํ„ฐ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ mutex๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.

์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ ์Šค๋ ˆ๋“œ๋ฅผ waiting ์ƒํƒœ๋กœ ์ „ํ™˜์‹œํ‚ค๋Š”๋ฐ ์ด๋ฅผ cooperation์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

mutex - ๋ฝ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์Šค๋ ˆ๋“œ๋งŒ์ด ์ž„๊ณ„ ์˜์—ญ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ณ  ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ชจ๋‹ˆํ„ฐ์˜ ์ž‘๋™ ๋ฐฉ์‹

๋ชจ๋‹ˆํ„ฐ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€์˜ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

๋ฎคํ…์Šค

mutual exclusion์„ ๋ณด์žฅํ•˜๋Š” ์žฅ์น˜์ด๋‹ค. ๋ฝ์„ ๊ฐ€์ง€์ง€ ๋ชปํ•œ ์Šค๋ ˆ๋“œ๋Š” ๋ฎคํ…์Šค์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์—”ํŠธ๋ฆฌ ํ์— ๋“ค์–ด๊ฐ„๋‹ค.

condition variable

wating queue๋ฅผ ์ด์šฉํ•ด ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์ง€ ์•Š์€ ์Šค๋ ˆ๋“œ๋“ค์ด ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋จธ๋ฌผ ์ˆ˜ ์žˆ๋„๋กํ•œ๋‹ค.

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

 

1. wait - ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์‹ ์„ cv(condition variable)์˜ waiting ํ์— ๋„ฃ๊ณ  ๋Œ€๊ธฐ(wait) ์ƒํƒœ๋กœ ์ „ํ™˜ํ•œ๋‹ค.

2. signal - wating ํ์—์„œ ๋Œ€๊ธฐ ์ค‘์ธ ์Šค๋ ˆ๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊นจ์šด๋‹ค. 

3. broadcast - wating ํ์—์„œ ๋Œ€๊ธฐ ์ค‘์ธ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋ฅผ ๊นจ์šด๋‹ค.

 

๋ชจ๋‹ˆํ„ฐ์—๋Š” ๋‘ ๊ฐœ์˜ ํ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์—”ํŠธ๋ฆฌ ํ - ์ž„๊ณ„์˜์—ญ (critical section)์— ์ง„์ž…์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ -> ๋ฎคํ…์Šค๊ฐ€ ๊ด€๋ฆฌํ•œ๋‹ค.

waiting ํ - ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๊ธธ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ -> cv๊ฐ€ ๊ด€๋ฆฌํ•œ๋‹ค.

 

signal and continue

์‹œ๊ทธ๋„์„ ์ฃผ๊ณ  ๊ธฐ์กด ์Šค๋ ˆ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

signal and wait

์‹œ๊ทธ๋„์„ ์ฃผ๊ณ  ๊ธฐ์กด ์Šค๋ ˆ๋“œ๋Š” ๋Œ€๊ธฐ ์ƒํƒœ์— ๋“ค์–ด๊ฐ€๋ฉฐ ๋‹ค์‹œ ๋ฝ์„ ์–ป์œผ๋ฉด ๊นจ์–ด๋‚œ๋‹ค.

 

์ž๋ฐ”์—์„œ์˜ ๋ชจ๋‹ˆํ„ฐ

๋ชจ๋“  ์ž๋ฐ” ๊ฐ์ฒด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด๋ถ€์— ๋ชจ๋‹ˆํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ synchronized ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

*์ž๋ฐ”์˜ ๋ชจ๋‹ˆํ„ฐ๋Š” cv๋ฅผ ํ•˜๋‚˜๋งŒ ๊ฐ€์ง„๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ”์˜ ๋ชจ๋‹ˆํ„ฐ๋„ ์„ธ๊ฐ€์ง€ ์ƒํƒœ๊ฐ€ ์žˆ๋Š”๋ฐ, ์šฉ์–ด๋งŒ ์‚ด์ง ๋‹ค๋ฅผ ๋ฟ ๊ธฐ๋Šฅ์€ ๊ฐ™๋‹ค.

๋ชจ๋‹ˆํ„ฐ ์ž๋ฐ” ๋ชจ๋‹ˆํ„ฐ
wait wait
signal notify
broadcast notifyAll

์Šค์ผ€์ค„๋ง์ด๋ž€?

CPU ๋ฒ„์ŠคํŠธ*๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์šด์˜์ฒด์ œ๊ฐ€ ๊ณต์ •ํ•˜๊ณ  ํ•ฉ๋ฆฌ์ ์œผ๋กœ CPU ์ž์›์„ ๋ถ„๋ฐฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

CPU ๋ฒ„์ŠคํŠธ: CPU๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ๊ฐ„

 

์Šค์ผ€์ค„๋ง์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

์Šค์ผ€์ค„๋ง์˜ ์ฃผ์š” ๋ชฉ์ ์€ ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ CPU์˜ ์œ ํœด(idle) ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜์—ฌ CPU์˜ ์ด์šฉ๋ฅ ์„ ์ตœ๋Œ€ํ•˜ํ•˜๋Š” ๊ฒƒ์— ์žˆ๋‹ค.

๋ฌผ๋ก  ์•„๋ฌด ํ”„๋กœ์„ธ์Šค๋‚˜ ๋žœ๋ค์œผ๋กœ ๋„ฃ์–ด์„œ๋Š” ์•ˆ๋˜๊ณ  ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์—ฌ๋Ÿฌ ์กฐ๊ฑด๋“ค์„ ๊ณ ๋ คํ•ด์„œ ์–ด๋–ค ๊ฒƒ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•  ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.

 

ํ•œ๊ฐ€์ง€ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž

์ž…์ถœ๋ ฅ ์ž‘์—…์ด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค์™€ CPU ์‚ฌ์šฉ์ด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค. ์ด ๋‘˜ ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•ด์•ผ ๋ ๊นŒ?

์ด ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค. 

์™œ๋ƒํ•˜๋ฉด, ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ๋จผ์ € ๋นจ๋ฆฌ ๋๋งˆ์นœ ๋’ค์— CPU ์‚ฌ์šฉ์ด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋งŽ์€ CPU ์ž์›์„ ํ• ๋‹นํ•ด์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

CPU ์Šค์ผ€์ค„๋ง์€ ์ด์ฒ˜๋Ÿผ ์ค‘์š”์„ฑ๊ณผ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ณ ๋ คํ•ด์„œ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ ์ž์›์„ ํ• ๋‹นํ•ด์ค€๋‹ค.

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

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

 

์Šค์ผ€์ค„๋ง ๋™์ž‘ ๋ฐฉ์‹

์•ž์—์„œ ์Šค์ผ€์ค„๋ง์„ ์‹œ์— CPU ๋ฒ„์ŠคํŠธ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ์„œ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ฑ…์ •ํ•œ๋‹ค๊ณ  ํ•˜์˜€๋‹ค.

์ด๋Ÿฌํ•œ ์šฐ์„  ์ˆœ์œ„ ์ •๋ณด๋“ค์€ PCB ๋ผ๋Š” ๊ณณ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”๋ฐ, CPU ์ž…์žฅ์—์„œ PCB๋ฅผ ์ผ์ผ์ด ๋’ค์ ธ์„œ ์Šค์ผ€์ค„๋ง์„ ํ•˜๋Š” ๊ฒƒ์€ ์—ฌ๊ฐ„ ๋ฒˆ๊ฑฐ๋กœ์šด ์ผ์ด ์•„๋‹ ๊ฒƒ์ด๋‹ค.

 

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

 

์Šค์ผ€์ค„๋ง ํ๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 

- ์ค€๋น„ํ(ready queue)

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

 

- ๋Œ€๊ธฐํ(wait,device queue)

์ž…์ถœ๋ ฅ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€๋งŒ ์ง€๊ธˆ ๋‹น์žฅ CPU๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์žฅ์น˜๋“ค์ด ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋””์Šคํฌ์— ์ž…์ถœ๋ ฅ ์š”์ฒญ์„ ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ์‹œ์— ๋””์Šคํฌ๋Š” ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š๋ผ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ CPU๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋„ ์•Š๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU ์ž์›์„ ๋ฐ›๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ธฐํ๋กœ ๋น ์ง€๊ฒŒ ๋œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ํ์— ํ”„๋กœ์„ธ์Šค๋“ค์ด ์Œ“์ด๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ์ ํ•˜๋Š” ์ง€๋ฅผ ์•Œ์•„๋ณด์ž

๊ทธ ์ „์— ์Šค์ผ€์ค„๋ง ๋””์ŠคํŒจ์ฒ˜์˜ ๊ตฌ์กฐ๋ฅผ ์•Œ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

 

๋Œ€๊ฒŒ ์Šค์ผ€์ค„๋Ÿฌ์™€ ๋””์ŠคํŒจ์ฒ˜๋ฅผ ๊ฐ™์€ ๋ฒ”์ฃผ๋กœ ๋ฌถ์–ด์„œ ๋งํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋‘˜์˜ ์—ญํ• ์€ ๋ช…ํ™•ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

 

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

์ด ๊ณผ์ •์€ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค.

์Šค์ผ€์ค„๋Ÿฌ๋Š” ์•ž์—์„œ ๋ฐฐ์› ๋˜ ์ค€๋น„ ํ์—์„œ ์šฐ์„  ์ˆœ์œ„์— ๋”ฐ๋ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

 

๋””์ŠคํŒจ์ฒ˜๋Š” ์ด๋ ‡๊ฒŒ ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹ค์ œ๋กœ CPU์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋กํ•œ๋‹ค.

์„ ํƒ ๋œ ํ”„๋กœ์„ธ์Šค๋กœ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์„ ํ•ด์ฃผ๋ฉฐ ์ด ์ž‘์—…์„ ์œ„ํ•ด ์ปค๋„๋ชจ๋“œ๋กœ ์ง„์ž…ํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์„ ์œ„ํ•ด ์œ ์ € ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์˜ ๋งˆ์ง€๋ง‰ ์ž‘์—… ์ƒํƒœ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์ ์ ˆํ•œ ์œ„์น˜๋กœ ์ด๋™์‹œ์ผœ์ค€๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด "์–ด๋–ป๊ฒŒ CPU๋ฅผ ์„ ์ ํ•  ๊ฒƒ์ธ๊ฐ€?" ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ํ•„์š”ํ•œ๋ฐ ํฌ๊ฒŒ ์„ ์ ํ˜• , ๋น„์„ ์ ํ˜• ๋ฐฉ์‹์ด ์žˆ๋‹ค.

 

๋น„์„ ์ ํ˜•

์‹คํ–‰ ์ƒํƒœ์—์„œ ํ”„๋กœ์„ธ์Šค์˜ ์ž๋ฐœ์ ์ธ ์ƒํƒœ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ์Šค์ผ€์ค„๋ง์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

 

1. IO request : ๋ฐœ์ƒ ์‹œ

2. terminate ๋ฐœ์ƒ ์‹œ : ์‹คํ–‰ํ•˜๋˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚ฌ์„ ๊ฒฝ์šฐ

 

๋น„์„ ์ ํ˜• ๋ฐฉ์‹์€ ์ƒํ˜ธ ํ˜‘๋ ฅ์ (๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•ด ์–‘๋ณดํ•˜๋Š” ๊ฒฝ์šฐ)์ด๋ผ๋Š” ์žฅ์ ์ด ์žˆ๋Š” ๋ฐ˜๋ฉด์— ๋Š๋ฆฐ ์‘๋‹ต ์‹œ๊ฐ„*์ด๋ผ๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณต์ •ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

Response time(์‘๋‹ต ์‹œ๊ฐ„): ready ํ์— ๋“ค์–ด์™€์„œ ์ฒ˜์Œ์œผ๋กœ CPU(์ตœ์ดˆ๋กœ)๋ฅผ ์–ป๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

 

์„ ์ ํ˜•

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚˜์ง€ ์•Š์•˜์Œ์—๋„ ์šด์˜์ฒด์ œ๊ฐ€ ๊ฐœ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1. interrupt ๋ฐœ์ƒ ์‹œ : ์™ธ๋ถ€์—์„œ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋“ค์–ด์˜จ ๊ฒฝ์šฐ

2. IO request : ๋ฐœ์ƒ ์‹œ

3. time-out ๋ฐœ์ƒ ์‹œ : time slicing (์‹œ๋ถ„ํ• ) ์— ์˜ํ•ด, ์ฃผ์–ด์ง„ ์‹œ๊ฐ„์ด ๋๋‚ฌ์„ ๊ฒฝ์šฐ

4. wake-up ๋ฐœ์ƒ ์‹œ : ๋Œ€๊ธฐ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์„ ์ค€๋น„ ํ์— ์˜ฎ๊ธธ๋•Œ

5. terminate ๋ฐœ์ƒ ์‹œ : ์‹คํ–‰ํ•˜๋˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚ฌ์„ ๊ฒฝ์šฐ

 

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

์ด๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ๋„ ํ•œ๋‹ค. -> ์ด๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฎคํ…์Šค , ์„ธ๋งˆํฌ์–ด ๊ธฐ์ˆ  ์ ์šฉ

 

์™ธ๋ถ€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค! ํ•˜์ง€๋งŒ ์žฆ์€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์œผ๋กœ ์ธํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ์šฐ์„  ์ˆœ์œ„๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋“ค์€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๋‹ค. (๊ธฐ์•„ ํ˜„์ƒ)

 

์ด์ œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ์ง€ ์•Œ์•„๋ณด์ž

์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ ๋Œ€ํ‘œ์ ์œผ๋กœ 7๊ฐ€์ง€๋งŒ ์ถ”๋ ค๋ณด์•˜๋‹ค.

 

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

- FCFS

์ค€๋น„ํ์— ๋จผ์ € ๋„์ฐฉํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๋งค์šฐ ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

Convoy effect ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 


 Convoy effect: ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๋กœ ์ธํ•ด ๋’ค์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋Š” ํ˜„์ƒ

 

- SJF(Shortest job first)

ํ”„๋กœ์„ธ์Šค์˜ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๊ฐ€์žฅ ์งง์€ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•œ๋‹ค.

CPU ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๋Š” ๋‚˜์ค‘์— , ์งง์€ ํ”„๋กœ์„ธ์Šค๋Š” ๋จผ์ €!

๊ธฐ์กด์ ์œผ๋กœ ๋น„์„ ์  ํ˜•์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค.

 

- SRTF

SJF + Round Robin

๋‚จ์€ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๊ฐ€์žฅ ์งง์€ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•œ๋‹ค.

time slice๋งŒํผ cpu๋ฅผ ์ด์šฉํ•˜๋˜, ๋‚จ์€ ์ž‘์—… ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์ ์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์‹คํ–‰

 

- priority

์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์‹คํ–‰

์šฐ์„  ์ˆœ์œ„๊ฐ€ ๊ฐ™๋‹ค๋ฉด FCFS๋กœ ์ฒ˜๋ฆฌ

 

starvation(๊ธฐ์•„) ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ (์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰ ๋ฌด๊ธฐํ•œ ์ง€์—ฐ)

-> ์—์ด์ง• ๊ธฐ๋ฒ•์œผ๋กœ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ์Œ

 

- Round-Robin

FCFS + ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค

time slice๋กœ ๋‚˜๋ˆ ์ง„ CPU time์„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์‹คํ–‰

์ •ํ•ด์ง„ ์‹œ๊ฐ„์ด ๋๋‚ฌ์Œ์—๋„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋‹ค์‹œ ํ์˜ ๋งจ ๋’ค์— ์‚ฝ์ž…ํ•œ๋‹ค.

 

Round Robin์—์„œ time slice์˜ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํฌ๋‹ค๋ฉด fcfs์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚˜ํƒ€๋‚˜๊ณ ,

๋ฐ˜๋Œ€๋กœ ๋„ˆ๋ฌด ์ž‘์•„์ ธ๋ฒ„๋ฆฌ๋ฉด context switching์œผ๋กœ ์ธํ•œ CPU์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ ์ ˆํ•œ time slice์˜ ํฌ๊ธฐ๋ฅผ ํ•„์—ฐ์ ์œผ๋กœ ๊ณ ๋ คํ•ด์•ผํ•œ๋‹ค.

 

- multilevel-queue

์šฐ์„  ์ˆœ์œ„๋ณ„๋กœ ์ค€๋น„ํ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

ํ”„๋กœ์„ธ์Šค ์œ ํ˜•๋ณ„๋กœ ๊ทธ๋ฃนํ™”ํ•ด์„œ ํ๋ณ„๋กœ ๋‹ค๋ฅธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

queue ๊ฐ„์˜ ์ด๋™์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  ๊ธฐ์•„ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

- multilevel-feedback-queue

queue ๊ฐ„์˜ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ multilevel-queue ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹

์ •ํ•ด์ง„ time slice ์•ˆ์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ–ˆ์œผ๋ฉด ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ๋กœ ์ด๋™ํ•œ๋‹ค.

-> ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋†’์•„์ง

์—์ด์ง• ๊ธฐ๋ฒ•๋„ ์ ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

CPU ์Šค์ผ€์ค„๋ง์˜ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ์ด๋‹ค!

๊ฒฐ๋ก 

์šด์˜์ฒด์ œ๋Š” ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ์—์„œ CPU์˜ ์ด์šฉ๋ฅ ์„ ์ตœ๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

๋งŒ์ผ ์ ํ•ฉํ•˜์ง€ ๋ชปํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌด๊ธฐํ•œ ์ง€์—ฐ๋˜๋Š” ๊ธฐ์•„(starvation) ํ˜„์ƒ์ด๋‚˜ ์‘๋‹ต ์‹œ๊ฐ„์˜ ์ง€์—ฐ์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ CPU ์„ ์  ๋ฐฉ์‹์—์„œ๋ถ€ํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊นŒ์ง€, ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ ๋‹นํ•œ ๋ฐฉ์‹์„ ๊ณ ๋ฅด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

๐Ÿ’ก ์šด์˜์ฒด์ œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

- ์šด์˜์ฒด์ œ๋ž€ ์œ ์ €์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ปดํ“จํ„ฐ์˜ ์ž์›๋“ค์„ ๋Œ€์‹  ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค.

- ์—ฌ๊ธฐ์„œ ์ž์›์€ ๋ฉ”๋ชจ๋ฆฌ , CPU ๊ทธ๋ฆฌ๊ณ  I/O ๋””๋ฐ”์ด์Šค๋“ค์ด ์žˆ๋‹ค.

- ์šด์˜์ฒด์ œ๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์œ ์ €๋Š” ๋™์ž‘์›๋ฆฌ๋ฅผ ์•Œ์ง€ ๋ชปํ•ด๋„ PC๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

(ex. ์œˆ๋„์šฐ , ๋ฆฌ๋ˆ…์Šค , ์œ ๋‹‰์Šค)

๐Ÿ’ก ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

- ํ”„๋กœ์„ธ์Šค๋Š” ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์ž‘์—…์„ ํ• ๋‹น๋ฐ›๋Š” ์ž‘์—…์˜ ๋‹จ์œ„์ด๋ฉฐ , ์Šค๋ ˆ๋“œ๋Š” ๊ทธ ์ž์›์„ ์ด์šฉํ•˜๋Š” ์‹คํ–‰์˜ ๋‹จ์œ„์ด๋‹ค.

- ํ”„๋ž˜์„ธ์Šค ๋‚ด์— ์Šค๋ ˆ๋“œ๋Š” ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ตœ์†Œ ํ•œ ๊ฐœ ์ด์ƒ์„ ๊ฐ€์ ธ์•ผํ•œ๋‹ค.

๐Ÿ’ก ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์˜ ์žฅ์  ๋ฐ ๋‹จ์ ์€ ๋ฌด์—‡์ธ๊ฐ€?

- ์Šค๋ ˆ๋“œ๋Š” ์„œ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๊ฐ€๋ณ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

- ์ด๋Š” ํ†ต์‹  ๋น„์šฉ ๊ฐ์†Œ ๋ฐ ์‹œ์Šคํ…œ ์ž์›์˜ ํšจ์œจ์ ์ธ ์‚ฌ์šฉ์œผ๋กœ ์ด์–ด์ง„๋‹ค.

- ๋˜ํ•œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜๋ฅผ ๋น„์šฉ์ด ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์— ๋น„ํ•ด ์ค„์–ด๋“ ๋‹ค.

 

- ํ•˜์ง€๋งŒ ์ž์›์„ ๊ณต์œ ํ•œ๋‹ค๋Š” ํŠน์„ฑ์€ ๊ณง ์—ฌ๋Ÿฌ ๋‹จ์ ์„ ๋‚ณ๋Š”๋‹ค.

- ๋Œ€ํ‘œ์ ์œผ๋กœ ๋™๊ธฐํ™”์˜ ๋ฌธ์ œ์ธ๋ฐ, ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•œ ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ ์˜๋„์น˜ ์•Š์€ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

- ๊ทธ๋ฆฌ๊ณ  ์Šค๋ ˆ๋“œ ํ•˜๋‚˜๊ฐ€ ์ข…๋ฃŒ ๋˜๋ฉด ํ•ด๋‹น ์ž์›์„ ๊ณต์œ ํ•˜๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋“ค์—๊ฒŒ๋„ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ •์„ฑ ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•œ๋‹ค.

- ๋”ฐ๋ผ์„œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์˜ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ๋ฅผ ํ•„์ˆ˜์ ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๋Œ€์‹  ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

- ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋งŒ์˜ ์žฅ์ ์€ ์ž์›์„ ์„œ๋กœ ๊ณต์œ ํ•จ์œผ๋กœ์จ ์Šค๋ ˆ๋“œ๊ฐ„ ํ†ต์‹  ๋น„์šฉ์ด ๊ฐ์†Œํ•˜๊ณ  ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์“ด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

- ๋”ฐ๋ผ์„œ ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฑฐ๋‚˜, ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ์ž์ฃผ ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•˜๋‹ค.

 

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

๐Ÿ’ก ์Šค๋ ˆ๋“œ์— ์Šคํƒ์„ ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ์ด์œ ?

- ์Šค๋ ˆ๋“œ์—๊ฒŒ ์ตœ์†Œํ•œ์˜ ๋…๋ฆฝ์ ์ธ ์‹คํ–‰์„ ๋ณด์žฅํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

- ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์œ„ํ•œ ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์Šคํƒ์„ ํ• ๋‹นํ•ด์คŒ์œผ๋กœ์จ ์ด๋ฅผ ๋ณด์žฅํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก PC๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ์ด์œ ?

- ์Šค๋ ˆ๋“œ์˜ ๋ ˆ์ง€์Šคํ„ฐ๋Š” "๋งˆ์ง€๋ง‰ ์ƒํƒœ"๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

- ์˜ˆ๋ฅผ ๋“ค์–ด ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ž‘ํ•˜๋‹ค๊ฐ€ ์Šค์ผ€์ค„๋ง์— ์˜ํ•ด CPU ์ ์œ ๊ถŒ์ด ๋„˜์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค๋ฉด ์Šค๋ ˆ๋“œ๋Š” ๋งˆ์ง€๋ง‰ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ข…๋ฃŒ๋œ๋‹ค.

- ์ด ์ƒํƒœ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ์ด PC ๋ ˆ์ง€์Šคํ„ฐ์ด๋‹ค.

๐Ÿ’ก ์ž๋ฐ” ์Šค๋ ˆ๋“œ๋ž€?

- ๊ธฐ์กด ์Šค๋ ˆ๋“œ ๊ฐœ๋…๊ณผ ๋™์ผํ•˜๊ฒŒ JVM ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๊ด€๋ฆฌ๋˜์–ด ์ง€๋Š” ์‹คํ–‰ ๋‹จ์œ„์ด๋‹ค. 

- ์ฒ˜์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด main ํ•จ์ˆ˜์—์„œ ์Šค๋ ˆ๋“œ ํ•˜๋‚˜๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ, ํ•„์š”์— ๋”ฐ๋ผ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ๋‹จ ์ด ๊ฒฝ์šฐ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜์–ด๋„ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

๐Ÿ’ก Thread-safe๊ฐ€ ๋ญ์—์š”?
- ๋ฉ€ํ‹ฐ ์Šค๋ ˆ์Šค ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ž์›์— ์ ‘๊ทผํ•  ๋•Œ ์‹คํ–‰ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๊ฒƒ์„ "์Šค๋ ˆ๋“œ ์„ธ์ดํ”„" ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

- ์ฆ‰ ๋ ˆ์ด์Šค ์ปจ๋””์…˜ ํ™˜๊ฒฝ์—์„œ ๋™๊ธฐํ™”๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

Mutual exclusion (์ƒํ˜ธ ๋ฐฐ์ œ)

- ๋ฝ์„ ์‚ฌ์šฉํ•ด ๊ณต์œ  ์ž์›์— ๋™์‹œ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

- ๋Œ€ํ‘œ์ ์œผ๋กœ ์Šคํ•€ ์˜คํ”„ , ๋ฎคํ…์Šค , ์„ธ๋งˆํฌ์–ด๊ฐ€ ์žˆ๋‹ค.

 

Atomic operation (์›์ž ์—ฐ์‚ฐ)

- ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•  ๋•Œ ์›์ž ์—ฐ์‚ฐ ํ˜น์€ ์›์ž์ ์œผ๋กœ ์ ‘๊ทผํ•œ๋‹ค. 

*์›์ž์ ์ด๋ž€ ๋ชจ๋‘ ์„ฑ๊ณตํ•˜๋˜์ง€ ์•„๋‹ˆ๋ฉด ๋ชจ๋‘ ์‹คํŒจํ•˜๋Š” ์ง€๋ฅผ ๋ณด์žฅํ•ด์ฃผ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

Thread-local storage (์“ฐ๋ ˆ๋“œ ์ง€์—ญ ์ €์žฅ์†Œ)

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

- ์ „์—ญ ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ์„ ๋ง‰์Œ์œผ๋กœ์จ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

Re-entrancy (์žฌ์ง„์ž…์„ฑ)

- ์Šค๋ ˆ๋“œ๊ฐ€ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰๋˜๋”๋ผ๋„ ์‹คํ–‰ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

- ๋ชจ๋“  ์žฌ์ง„์ž… ํ•จ์ˆ˜๋Š” ์Šค๋ ˆ๋“œ-์•ˆ์ „ํ•˜์ง€๋งŒ, ๋ชจ๋“  ์Šค๋ ˆ๋“œ ํ•จ์ˆ˜๊ฐ€ ์žฌ์ง„์ž…์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

๐Ÿ’ก ์„ธ๋งˆํฌ์–ด์™€ ๋ฎคํ…์Šค๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

- ๋ฎคํ…์Šค๋Š” ๊ณต์œ  ์ž์›์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฝ์„ ๊ฐ€์ง€๊ณ  ๋‹ค๋ฅธ ๋ฝ์€ ์Šฌ๋ฆฝ ์ƒํƒœ๋กœ ๋Œ€๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

- ์„ธ๋งˆํฌ์–ด๋Š” ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. 

- ์„ธ๋งˆํฌ์–ด์˜ ์ œํ•œ์„ 1๋กœ ๋‘ ์œผ๋กœ์จ ๋ฎคํ…์Šค ํ™˜๊ฒฝ์„ ์–ด๋Š์ •๋„ ๊ตฌํ˜„ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๋ฎคํ…์Šค๋Š” ๋ฝ์„ ๊ฐ€์ง„ ์ž๋งŒ์ด ๋ฝ์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

+ Recent posts