CS ๊ณต๋ถ€ 22

๋ฉ€ํ‹ฐ ํƒœ์Šคํ‚น, ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ, ๋ฉ€ํ‹ฐ ์ฝ”์–ด, ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ

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

์ธ๋ฑ์Šค๊ฐ€์— Hash๋ณด๋‹ค B-TREE๋ฅผ ์“ฐ๋Š” ์ด์œ ?

Buckets (Hash Table)๋Š” O(1)๋กœ ํƒ์ƒ‰์‹œ๊ฐ„์ด ๋น ๋ฅด๋‹ค Hash ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ ๊ฐ’(keys)์ด ๋“ค์–ด์˜ค๋ฉด ์–ธ์ œ๋‚˜ ๊ฐ™์€ ์ถœ๋ ฅ ๊ฐ’(Hash ๊ฐ’)์„ ๊ฐ€์ง buckets์˜ index ๊ฐ’์œผ๋กœ ๋งคํ•‘๋˜์–ด ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ ๋ฏธ๋ฆฌ ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„(buckets)์— ํ•œ ๋ฒˆ์— ์ ‘๊ทผ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํƒ์ƒ‰ ์‹œ๊ฐ„์ด O(1)๋กœ ๋น ๋ฆ„ Hash ๊ฐ’์ด ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜๋Š” ๋“ฑ์˜ ์ตœ์•…์˜ ๊ฒฝ์šฐ, O(N)์ด ๋  ์ˆ˜๋„ ์žˆ์Œ ํƒ์ƒ‰์‹œ๊ฐ„์ด ๋น ๋ฅธ Hash๊ฐ€ ์ธ๋ฑ์Šค๋กœ ์ ์ ˆํ•˜์ง€ ์•Š์€ ์ด์œ  ๋‹จ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ์‹œ๊ฐ„์ด O(1)์œผ๋กœ ๋น ๋ฅธ ๊ฒƒ์ด๋‹ค. Hash Table์— ์ €์žฅ๋˜๋Š” ๊ฐ’๋“ค์€ ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ์ž‘์€ ๊ฐ’์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค. SQL ์ฟผ๋ฆฌ๋ฌธ์—์„œ ํŠน์ • ๋ฒ”์œ„์˜ ๊ฐ’์„ ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ, ํŠน์ • ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜..

Redis

WEB-WAS-DB์˜ ์ „ํ˜•์ ์ธ 3ํ‹ฐ์–ด ๊ตฌ์กฐ -> ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด DB์— ์Šฌ์Šฌ ๋ฌด๋ฆฌ๊ฐ€ ๊ฐ€๊ธฐ ์‹œ์ž‘ ๋งค transaction ๋งˆ๋‹ค ๋””์Šคํฌ์— ์ ‘๊ทผํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€ํ•˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์ƒ๋‹นํžˆ ๋Š๋ ค์ง ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด DB๋งŒ์œผ๋กœ๋Š” ๋ถ€ํ•˜๋ฅผ ๊ฒฌ๋”œ ์ˆ˜ ์—†์–ด ์บ์‹œ์„œ๋ฒ„ ๋„์ž… ์บ์‹œ ํ•œ ๋ฒˆ ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์˜์˜ ๊ณต๊ฐ„์— ์ €์žฅํ•˜์—ฌ ๋‹ค์Œ์— ์ฝ์„ ๋•Œ๋Š” ๋น ๋ฅด๊ฒŒ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ณต๊ฐ„ ๊ฐ™์€ ์š”์ฒญ์ด ์—ฌ๋Ÿฌ๋ฒˆ ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ ์บ์‹œ์„œ๋ฒ„์—์„œ ๋ฐ”๋กœ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ DB๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ, ์„œ๋น„์Šค์˜ ๊ฐœ์„  cache Hit ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น์„œ๋ฒ„์— ์š”์ฒญ ์›น์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฅผ DB์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— Cache์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ Cache์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด, ๋ฐ์ดํ„ฐ๋ฅผ DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ cache ..

์—ญ์ •๊ทœํ™”

๋น„์ •๊ทœํ™”(Unnormalized form) : ์ •๊ทœํ™”๋œ ํ…Œ์ด๋ธ”(๋ฆด๋ ˆ์ด์…˜)์„ ์ฝ๊ธฐ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ํ…Œ์ด๋ธ”์„ ๋‹ค์‹œ ํ•ฉ์น˜๋Š” ๋ฐฉ๋ฒ• ์—ญ์ •๊ทœํ™”(Denormalization) : ์ •๊ทœํ™”๋œ ํ…Œ์ด๋ธ”์„ ๋น„์ •๊ทœํ™” ์ƒํƒœ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜ (๋น„์ •๊ทœํ™”๊ฐ€ ๋” ํฌ๊ด„์ ) ์—ญ์ •๊ทœํ™”๋ฅผ ํ•˜๋Š” ์ด์œ  ์ฝ๊ธฐ์ž‘์—…์ด ๋งŽ์ด ํ•„์š”ํ•œ ํ…Œ์ด๋ธ”์˜ ์ฝ๊ธฐ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด์„œ ๋น„์ •๊ทœํ™” ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ์—ญ์ •๊ทœํ™” ํ”„๋กœ์„ธ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์™„๋ฒฝํ•œ ๊ตฌ์กฐ์„ค๊ณ„๋ฅผ ํฌ๊ธฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋–จ์–ดํŠธ๋ฆฌ๋Š” ๋Œ€์‹  ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฝ๊ธฐ(Read)์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์„ค๊ณ„ ๋ฐฉ๋ฒ• ์ •๊ทœํ™”๋ฅผ ํ†ตํ•ด ๋ถ„๋ฆฌ๋˜์—ˆ๋˜ ๋ฆด๋ ˆ์ด์…˜์—์„œ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๊ณ  ๋‹ค์‹œ ํ†ตํ•ฉํ•˜๊ฑฐ๋‚˜ ๋ถ„ํ• ํ•˜์—ฌ ๊ตฌ์กฐ๋ฅผ ์žฌ์กฐ์ •ํ•˜๋Š” ๊ณผ์ • ์ •๊ทœํ™”๋œ ๋ฆด๋ ˆ์ด์…˜์˜ ์„ฑ๋Šฅ ์ €ํ•˜ ์š”์ธ 1. JOIN ์—ฐ์‚ฐ ์ •๊ทœํ™”๋œ ํ…Œ์ด๋ธ”์—์„œ๋Š” 3๊ฐ€์ง€ ํ…Œ์ด๋ธ”์„ ๊ฐ™์€ ํ‚ค..

Key์˜ ์ข…๋ฅ˜ (candidate key, primary key, alternate key, super key, foreign key)

Key? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” ํŠœํ”Œ์„ ์ฐพ๊ฑฐ๋‚˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•  ๋•Œ ๋‹ค๋ฅธ ํŠœํ”Œ๋“ค๊ณผ ๊ตฌ๋ณ„ ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ธฐ์ค€์ด ๋˜๋Š” ์†์„ฑ ์œ ์ผ์„ฑ : ํ•˜๋‚˜์˜ ํ‚ค๊ฐ’์œผ๋กœ ํŠœํ”Œ์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ์งˆ --> ๊ฐ๊ฐ์˜ ํŠœํ”Œ์„ ์„œ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ตœ์†Œ์„ฑ : ํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ๋“ค ์ค‘ ๊ผญ ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ์†์„ฑ๋“ค๋กœ๋งŒ ํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์„ฑ์งˆ --> ๊ตณ์ด ์—†์–ด๋„ ๋  ์†์„ฑ์€ ๋„ฃ์ง€ ๋ง์ž. ์Šˆํผํ‚ค (Super Key) : ์œ ์ผ์„ฑ O, ์ตœ์†Œ์„ฑ X ์œ ์ผ์„ฑ์˜ ํŠน์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ์†์„ฑ ๋˜๋Š” ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ ํ•œ ๋ฆด๋ ˆ์ด์…˜์˜ ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ‚ค ๋ฆด๋ ˆ์ด์…˜์— ์žˆ๋Š” ๋ชจ๋“  ํŠœํ”Œ์— ๋Œ€ํ•ด ์œ ์ผ์„ฑ์„ ๋งŒ์กฑ์‹œํ‚จ๋‹ค. (์•„์ด๋””) : ๊ฐ ํŠœํ”Œ์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์Œ --> ์œ ์ผ์„ฑO (๋‚˜์ด, ์ง์—…, ๋“ฑ๊ธ‰) : ๋‹ค๋ฅธ ํŠœํ”Œ๊ณผ ์ถฉ๋ถ„ํžˆ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ์Œ --> ์œ ์ผ..

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ์˜ ๋ทฐ(view)?

๋ทฐ(view)? ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฐ€์ƒ์˜ ํ…Œ์ด๋ธ”, ๋…ผ๋ฆฌ์ ์œผ๋กœ๋งŒ ์กด์žฌ ํ…Œ์ด๋ธ” : ๋””์Šคํฌ ๊ณต๊ฐ„์ด ํ• ๋‹น๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ๋ทฐ : ๋””์Šคํฌ์— ์ €์žฅ ๊ณต๊ฐ„์ด ํ• ๋‹นX, ๋ฐ์ดํ„ฐ ๋”•์…”๋„ˆ๋ฆฌ ํ…Œ์ด๋ธ”*์— ๋ทฐ์— ๋Œ€ํ•œ ์ •์˜๋งŒ ์ €์žฅ (์งˆ์˜ ๋ฌธ์žฅ๋งŒ์„ ๊ฐ€์ง) *DBMS Dictionary Table : ๊ฐ์ฒด์˜ ์ƒ์„ฑ / ์ˆ˜์ • / ์‚ญ์ œ๋‚˜ ์‚ฌ์šฉ์ž์˜ ํŠน์ • ํ–‰๋™(์ œ์•ฝ ์กฐ๊ฑด ๋“ฑ)๋“ค์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” Meta Data๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ์˜ค๋ผํด ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ” = named table, derived table, virtual table ์ „์ฒด ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ์ผ๋ถ€๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ• ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ‘๊ทผ์ด ํ—ˆ์šฉ๋œ ๋ฐ์ดํ„ฐ๋งŒ์„ ์ œํ•œ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์œ ๋„๋œ ๊ฐ€์ƒ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ๋ณด์ •์ž‘์—…, ์ฒ˜๋ฆฌ๊ณผ์ • ์‹œํ—˜ ๋“ฑ ..

๋ชจ์˜๋ฉด์ ‘ ํ‚ค์›Œ๋“œ ์ •๋ฆฌ 2021-11-04

ํ•ด์‹œํ•จ์ˆ˜ : ์ž…๋ ฅ๊ฐ’๊ณผ ์ถœ๋ ฅ๊ฐ’, ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•, ํ‚ค๊ฐ’ ์ถœ๋ ฅ๊ฐ’์„ ํ†ตํ•ด ์ž…๋ ฅ๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค. ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•์œผ๋กœ, ํ‚ค๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. ํ•ด์‹œ ์ถฉ๋Œ ํ•ด๊ฒฐ ๊ธฐ๋ฒ• 1. ์ฒด์ด๋‹ : ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฒ„ํ‚ท์— ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๊ฐ€ ๊ธธ์–ด์งˆ์ˆ˜๋ก ์„ฑ๋Šฅ ์ €ํ•˜ (Closed Addressing) 2. ๊ฐœ๋ฐฉ ์ฃผ์†Œ๋ฒ•(Open Addressing) : ๋‹ค๋ฅธ ๋ฒ„ํ‚ท์— ์‚ฝ์ž… ํ•ด์‹œ ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜๋ฉด ๋‹ค๋ฅธ ๋ฒ„ํ‚ท์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค. *ํ•ด์‹œ ์ถฉ๋Œ : ์„œ๋กœ ๋‹ค๋ฅธ (๋‘ ๊ฐœ์˜) ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ถœ๋ ฅ๊ฐ’์„ ๋‚ด๋Š” ์ƒํ™ฉ ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ข…๋ฅ˜ : Merge sort, Quick sort ํ•ฉ๋ณ‘ ์ •๋ ฌ : stable sort, ๋ฐ์ดํ„ฐ๋ฅผ ์ ˆ๋ฐ˜์˜ ํฌ๊ธฐ๋กœ ๋ถ„ํ•  ํ€ต ์ •๋ ฌ : unstable sort, ํ”ผ๋ฒ—(์ค‘์•™๊ฐ’์— ๊ฐ€๊นŒ์šธ..

์ธ๋ฑ์Šค์˜ ๊ธฐ๋Šฅ (์žฅ์ , ์—ญํ• )

์ธ๋ฑ์Šค ์ƒ‰์ธ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์กฐํšŒ ๋ฐ ๊ฒ€์ƒ‰์„ ๋” ๋น ๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•/๊ธฐ์ˆ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ์ถ”๊ฐ€์ ์ธ ์“ฐ๊ธฐ ์ž‘์—…๊ณผ ์ €์žฅ ๊ณต๊ฐ„์„ ํ™œ์šฉ ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ํฌํ•จํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑ select๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ์กฐ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ, ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ๋‹ค๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ์ˆœํšŒ์— ๋งŽ์€ ์ž์›๊ณผ ์‹œ๊ฐ„์ด ์†Œ๋ชจ B+ Tree ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ธ๋ฑ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ Root node : ๊ฒฝ๋กœ์˜ ์ถœ๋ฐœ์ ์ด ๋˜๋Š” ๋ฃจํŠธ ๋…ธ๋“œ Non-leaf nodes : ๋ฆฌํ”„๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฒฝ๋กœ ์—ญํ• ์„ ํ•˜๋Š” ๋…ผ๋ฆฌํ”„๋…ธ๋“œ Leaf nodes : ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋ฆฌํ”„๋…ธ๋“œ ๋ฆฌํ”„๋…ธ๋“œ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€์— ๋Œ€ํ•œ ์ž์‹ ๋…ธ๋“œ์— ํฌ์ธํ„ฐ๊ฐ€ ์ €์žฅ B+ํŠธ๋ฆฌ์˜ ๊ฒ€์ƒ‰์€ ..

๋‹คํ˜•์„ฑ(Polymorphism)์ด๋ž€?

OOP(๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)์˜ 4๊ฐ€์ง€ ํŠน์ง• ์ค‘ ํ•˜๋‚˜ ์ถ”์ƒํ™”, ์บก์Šํ™”, ์ผ๋ฐ˜ํ™” ๊ด€๊ณ„, ๋‹คํ˜•์„ฑ ๋‹คํ˜•์„ฑ(Polymorphism) ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ๊ฐ์ž์˜ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋Šฅ๋ ฅ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Overriding), ์˜ค๋ฒ„๋กœ๋”ฉ(Overloading) ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•  ๋ฟ ์•„๋‹ˆ๋ผ ๋ณ€ํ™”์—๋„ ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ ํ˜„์žฌ ์–ด๋–ค ํด๋ž˜์Šค ๊ฐ์ฒด๊ฐ€ ์ฐธ์กฐ๋˜๋Š”์ง€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 1. ๋‹คํ˜•์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ public class Cat { public void meow(){ System.out.println("์•ผ์˜น"); } } public class Dog { public void bark(){ System.out.println("๋ฉ๋ฉ"); } } publi..

CPU ์Šค์ผ€์ค„๋Ÿฌ ์ „๋žต (FCFS, SJF, HRN, SRT, Round Robin, Multi-Level Queue)

CPU ์Šค์ผ€์ค„๋ง ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ• ์ง€ ์ˆœ์„œ๋ฅผ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. Ready Queue์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘์— ๋ˆ„๊ตฌ์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•ด ์ค„ ๊ฒƒ์ธ์ง€ ์ •ํ•œ๋‹ค. ์™œ ํ•„์š”ํ• ๊นŒ? CPU๋Š” ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ I/O ์š”์ฒญ์— ์˜ํ•ด ๋Œ€๊ธฐํ•ด์•ผํ•  ๊ฒฝ์šฐ CPU๋Š” ๊ทธ์ € ๋†€๊ณ  ์žˆ๊ฒŒ ๋œ๋‹ค. ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์‹œ๊ฐ„์„ ์ƒ์‚ฐ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ณ ์ž CPU๋ฅผ ๊ทธ ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ ํšŒ์ˆ˜ํ•ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•œ๋‹ค. (Context Switching) CPU ์ด์šฉ๋ฅ  ์ฆ๊ฐ€ : ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ๊ณผ์ •์—์„œ ์ฃผ ๊ธฐ์–ต์žฅ์น˜๋ฅผ ์•ก์„ธ์Šคํ•œ๋‹ค๋“ ์ง€, ์ž…์ถœ๋ ฅ ๋ช…๋ น์‹คํ–‰ ๋“ฑ์˜ ์›์ธ์— ์˜ํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” CPU์˜ ๋‚ญ๋น„ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ , CPU๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์‹œ๊ฐ„ ๋น„์œจ์„ ์ฆ๊ฐ€์‹œํ‚ต..