HashMap๊ณผ HashTable

๋™๊ธฐํ™”๊ฐ€ ํ•„์š”์—†๋‹ค๋ฉด ํ•ด์‹œ๋งต์„,
๋™๊ธฐํ™” ๋ณด์žฅ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ํ•ด์‹œํ…Œ์ด๋ธ”์„!

 

 

์ฐจ์ด์ 

๋™๊ธฐํ™” Synchronization

HashMap์˜ ๊ฒฝ์šฐ ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. 

๋ฐ˜๋ฉด ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ HashTable์€ ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

* vector์˜ ์ƒ์œ„ ํ˜ธํ™˜ ๊ฐœ๋…์ธ ArrayList์˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋“ฏ, ์ƒˆ๋กœ์šด ๋ฒ„์ „์ธ HashMap์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•˜๋ฉด ConcurrentHashMap์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•œ๋‹ค. ๊ตฌํ˜•์ธ HashTable์€ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ๋ผ๋Š” ๋น„์šฉ๋•Œ๋ฌธ์— HashMap์— ๋น„ํ•ด ๋Š๋ฆฌ๋‹ค. 

 

 

Thread-safe ์—ฌ๋ถ€

Hashtable์€ Thread-safeํ•˜๊ณ , HashMap์€ Thread-safeํ•˜์ง€ ์•Š๋‹ค.

๋”ฐ๋ผ์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์ด ์•„๋‹ˆ๋ผ๋ฉด Hashtable์€ HashMap ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค.

 

 

Null ๊ฐ’ ํ—ˆ์šฉ ์—ฌ๋ถ€

Hashtable์€ key์— null์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ, HashMap์€ key์— null์„ ํ—ˆ์šฉํ•œ๋‹ค.

 

 

Enumeration ์—ฌ๋ถ€ 

HashMap์€ ์ €์žฅ๋œ ์š”์†Œ๋“ค์˜ ์ˆœํšŒ๋ฅผ ์œ„ํ•ด Fail-Fast Iterator๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.(ConcurrentHashMap์˜ ๊ฒฝ์šฐ์—๋Š” Fail-Safe Iterator)

Hashtable์€ ๊ฐ™์€ ๊ฒฝ์šฐ Enumeration์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

* Fail-Fast Iterator : ๋ง ๊ทธ๋Œ€๋กœ ๋น ๋ฅธ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ๋ฒ„๊ทธ๋ฅผ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜๋ฉด์— Enumeration๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋Š” ์ค‘๊ฐ„์— remove๋ฅผ ํ•ด๋„ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์— ๋ฒ„๊ทธ๋ฅผ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•  ํ™•๋ฅ ๋„ ์กด์žฌํ•œ๋‹ค.

 

 

๋ณด์กฐ ํ•ด์‹œ ์‚ฌ์šฉ

HashMap์€ ๋ณด์กฐํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์กฐ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Hashtable์— ๋น„ํ•˜์—ฌ ํ•ด์‹œ ์ถฉ๋Œ(hash collision)์ด ๋œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด ์ƒ๋Œ€์ ์œผ๋กœ ์„ฑ๋Šฅ์ƒ ์ด์ ์ด ์žˆ๋‹ค.

 


<์ฐธ๊ณ >

https://odol87.tistory.com/3 https://devlog-wjdrbs96.tistory.com/253 https://12216715011126.tistory.com/53

์šฉ์–ด ์ •๋ฆฌ

Hash ์ž๋ฃŒ๊ตฌ์กฐ๋ž€

key์™€ value๋ฅผ ๊ฐ–๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ํšจ์œจ์ ์ธ ๊ฒ€์ƒ‰๊ณผ ์ €์žฅ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. 

linked list์™€ ๋‹ฌ๋ฆฌ ํ•ด๋‹น ์ž๋ฃŒ๊ฐ€ ์œ„์น˜ํ•œ ๋ฒ„ํ‚ท์˜ ์ฃผ์†Œ๊ฐ’์„ ๋ฐ”๋กœ ์•Œ์•„๋‚ด์–ด ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(1)์— ์ˆ˜๋ ดํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

Hash ํ•จ์ˆ˜, Hash ์•Œ๊ณ ๋ฆฌ์ฆ˜, Hash ์ฝ”๋“œ

์ž„์˜์˜ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์ • ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋กœ ๋งคํ•‘ํ•˜๋Š” ํ•จ์ˆ˜

๋น„๋‘˜๊ธฐ์ง‘ ์›๋ฆฌ์— ์˜ํ•ด ํ•ด์‹œํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ์ค‘๋ณต ๋˜์–ด ํ•ด์‹œ ์ถฉ๋Œ์„ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

* ๋น„๋‘˜๊ธฐ์ง‘ ์›๋ฆฌ : n+1๊ฐœ์˜ ๋ฌผ๊ฑด์„ n๊ฐœ์˜ ์ƒ์ž์— ๋„ฃ์„ ๋•Œ, ์ ์–ด๋„ ์–ด๋Š ํ•œ ์ƒ์ž์—๋Š” ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ฌผ๊ฑด์ด ๋“ค์–ด์žˆ๋‹ค๋Š” ์›๋ฆฌ

 

๋ฐ์ดํ„ฐ์˜ value๊ฐ’์„ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค์ธ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ผ๋ จ์˜ ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ›๊ฒŒ ๋˜์—ˆ์„ ๋•Œ ๋ฌธ์ž ํ•œ๊ธ€์ž ํ•œ๊ธ€์ž์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์„ ๋”ํ•˜๋Š” ๊ณผ์ •์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ •์ˆ˜ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋งŒ์•ฝ, 
hello ๋ผ๋Š” ๋ฌธ์ž์—ด์„ ์ •์ˆ˜ํ˜• key ๊ฐ’์œผ๋กœ ๋ฐ”๊พผ๋‹ค๋ฉด,
h + e + l + l + o -> 104 +101 + 108 + 108 + 111 = 532๋ผ๋Š”
ํ•ด์‹œ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์‹œ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•œ ๊ณผ์ •์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋งˆ๋‹ค ์ ์ ˆํ•œ ํ•ด์‹œ ํ•จ์ˆ˜(ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜)์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์˜ ์—ญ๋Ÿ‰์— ๋‹ฌ๋ ค์žˆ๋‹ค.

 

 

 

Hash ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ Hash table์— ์ €์žฅํ•˜๊ธฐ

ํ•ด์‹œ์ฝ”๋“œ๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์•„์ฃผ ๋งŽ๋‹ค. ์ €์žฅํ•  ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ๋ฌผ๋ฆฌ์  ํ•œ๊ณ„๊ฐ€ ์žˆ๊ณ  ์ˆ˜ ๋งŽ์€ ํ•ด์‹œ์ฝ”๋“œ๋“ค์„ ๋Œ€์ฒ˜ ํ•  ์ˆ˜ ์—†๋‹ค.

์ด๋Ÿฐ ๊ฒฝ์šฐ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ„๊ณ , ๊ทธ ๋‚˜๋จธ์ง€๋ฅผ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด 0๋ถ€ํ„ฐ ๋ฐฐ์—ด์˜ ์‚ฌ์ด์ฆˆ-1 ๋งŒํผ์˜ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ํ•ด์‰ฌ์ฝ”๋“œ๊ฐ€ 532์ด๊ณ  ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ 10์ธ ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€๊ฐ€ 2๊ฐ€ ๋‚˜์˜ค๊ณ , ์ด ๋‚˜๋จธ์ง€ ๊ฐ’์„ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

* ๊ฐ ๋ฒ„ํ‚ท์€ ๋ช‡ ๊ฐœ์˜ ์Šฌ๋กฏ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

 

 

 

OverFlow๋ž€ 

์—ฌ๋Ÿฌ๊ฐœ์˜ ํ‚ค๊ฐ’์ด ๊ณตํ†ต๋œ ๋ฒ„ํ‚ท์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒฝ์šฐ, ๋ฒ„ํ‚ท๋“ค์˜ ๊ณต๊ฐ„์€ ์œ ํ•œํ•ด์„œ ๊ฒฐ๊ตญ ๋ฒ„ํ‚ท์ด ๊ฝ‰ ์ฐจ๊ฒŒ ๋œ๋‹ค.

๊ฝ‰ ์ฐจ์žˆ๋Š” ์ˆœ๊ฐ„ ๋˜ํ•˜๋‚˜์˜ ํ‚ค๊ฐ’์ด ํ•ด๋‹น ๋ฒ„ํ‚ท์— ๋งตํ•‘๋œ๋‹ค๋ฉด ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

์ถฉ๋Œ Collision

๋‹ค๋ฅธ ํ•ด์‹œ์ฝ”๋“œ์ž„์—๋„ ๊ฐ™์€ ์ธ๋ฑ์Šค๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฐ ๊ฒฝ์šฐ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ์ถฉ๋Œ์˜ ํ•ด๊ฒฐ๋ฐฉ์‹์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 

๋ถ„๋ฆฌ ์ฒด์ธ๋ฒ•, ์„ ํ˜• ํƒ์‚ฌ๋ฒ•, 2์ฐจ ํƒ์‚ฌ๋ฒ•, ์ด์ค‘ ํ•ด์‹ฑ ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค.

* ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ž๋ฐ”์—์„œ hashCode( )๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•  ๋•Œ equals( )๋„ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์•ผํ•œ๋‹ค. ๋ณ„๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ์šฐ์—ฐํžˆ ํ•ด์‹œ์ฝ”๋“œ๊ฐ€ ๋˜‘๊ฐ™์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋”๋ผ๋„ equals๋กœ ๊ฐ’์˜ ๋™๋“ฑ์„ฑ์„ ํ•œ๋ฒˆ ๋” ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋˜๋ฉด ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

์ถฉ๋Œ ํ•ด๊ฒฐํ•˜๊ธฐ

1. ๋ถ„๋ฆฌ ์ฒด์ธ๋ฒ• seperate chaning (open hashing)

๊ฐ™์€ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ, ๊ทธ ์ธ๋ฑ์Šค์˜ Linked List๋ฅผ ์„ ์–ธํ•˜๊ณ  ๊ฐ ๋ฐ์ดํ„ฐ๋“ค์„ ์ด ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•œ๋‹ค.

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

ํ•œ ์ธ๋ฑ์Šค์˜ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ํฌ๊ฒŒ ๋‚˜์˜ค๊ฒŒ ๋˜๋ฉด ํ•ด์‹œ ํ•จ์ˆ˜ (ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜)์ด ์ฃผ์–ด์ง„ ๋ฌธ์ œ์— ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ์„ค๊ณ„๋ฅผ ๋‹ค์‹œ ๊ณ ๋ คํ•ด๋ด์•ผ ํ•œ๋‹ค. 

* ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ฃผ์–ด์ง„ ํ•ด์‹œํ…Œ์ด๋ธ” ๊ณต๊ฐ„์™ธ์˜ ์ƒˆ๋กœ์šด ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— open hashing์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

 

 

 

 

2. Open Addressing (Closed Hashing)

์ฃผ์–ด์ง„ ํ•ด์‹œํ…Œ์ด๋ธ”์—์„œ ์ •ํ•ด์ง„ ๊ทœ์น™์— ๋”ฐ๋ผ ๋ฒ„ํ‚ท์„ ์ฐพ์•„ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. open addressing์˜ ๋ฒ„ํ‚ท ๊ฒฐ์ • ๋ฐฉ๋ฒ•์—๋Š” ๋ช‡๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 

 

2.1 ์„ ํ˜• ์กฐ์‚ฌ

์ถฉ๋Œ์ด ์ผ์–ด๋‚œ ๋‹ค์Œ ์ž๋ฆฌ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•

์ œ 1 ๊ตฐ์ง‘ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค

* ์ œ 1 ๊ตฐ์ง‘ ํ˜„์ƒ : ํŠน์ • ์˜์—ญ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชฐ๋ฆด ๋•Œ, linked list์˜ ์ˆœ์ฐจ ํƒ์ƒ‰์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ๊ณต๊ฐ„์ด ์ง€์ •๋˜์–ด ์„ฑ๋Šฅ์ด ์น˜๋ช…์ ์œผ๋กœ ์ €ํ•˜๋œ๋‹ค. ( ์ด์ฐจ์› ์กฐ์‚ฌ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•˜๋‹ค)

 

 

 

 

2.2 ์ด์ฐจ์› ์กฐ์‚ฌ

์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ๋‹ค์Œ ๋ฐ์ดํ„ฐ์˜ ์ž๋ฆฌ๋ฅผ ์ด์ฐจํ•จ์ˆ˜๋กœ ๊ฒฐ์ •ํ•œ๋‹ค.

 

2.3 ๋”๋ธ” ํ•ด์‹ฑ

 

2.4 ๋ฌด์ž‘์œ„ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•


<์ฐธ๊ณ >

https://siyoon210.tistory.com/85 https://galid1.tistory.com/171

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ

ํŒŒ์ผ์ฒ˜๋ฆฌ์‹œ์Šคํ…œ์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅ
๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„๋†“์€ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์ฒด
๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ
์ด์ „์—๋Š” ๊ตฌ์กฐํ™”๋˜์ง€ ์•Š์€ ํŒŒ์ผ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์ด์—ˆ๋‹ค. 
ํ•˜์ง€๋งŒ ํŒŒ์ผ์ฒ˜๋ฆฌ์—๋Š” ๋‹ค์–‘ํ•œ ๋ฌธ์ œ์ ๋“ค์ด ์žˆ์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋œ๋‹ค. 

 

 

 

 

*ํŒŒ์ผ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์˜ ๋ฌธ์ œ์ 

 

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

 

2) ๋น„์ผ๊ด€์„ฑ : ๋ฐ์ดํ„ฐ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์กฐ๊ธˆ๋งŒ ์žˆ์–ด๋„ ๊ฐ ํŒŒ์ผ์—์„œ ํ•ด๋‹น๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ˆ˜์ •์— ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ , ํ•œ๊บผ๋ฒˆ์— ์ˆ˜์ •์ด ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ’์ด ์„œ๋กœ ํ‹€๋ฆฌ๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค.

 

3) ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๋ฌธ์ œ : ๊ธฐ์กด์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ํŒŒ์ผ ์šฉ๋„์—๋งŒ ๋งž์ถฐ์„œ ์ œ์ž‘๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๋•Œ๋Š” ๋‹ค์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค

 

4) ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ๋ฐ ๊ฒ€์ƒ‰์˜ ๋ฌธ์ œ : ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ํŒŒ์ผ์— ์‚ฐ์žฌํ•˜๊ณ  ๋˜ ๊ทธ ํŒŒ์ผ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–‘์‹์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฅ ์ ์ธ ๊ฒ€์ƒ‰์ด๋‚˜ ๋‹จ์ˆœ ์ถ”๊ฐ€ ์ž‘์—…์ด ์–ด๋ ต๋‹ค.

 

 

 

 

 


 

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ง•

1. ๋ฐ์ดํ„ฐ์˜ ๋…๋ฆฝ์„ฑ

  • ๋ฌผ๋ฆฌ์  ๋…๋ฆฝ์„ฑ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•ด๋„ ๊ด€๋ จ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • ๋…ผ๋ฆฌ์  ๋…๋ฆฝ์„ฑ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋…ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋กœ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋…ผ๋ฆฌ์  ์š”๊ตฌ๋ฅผ ๋งŒ์กฑ์‹œ์ผœ์ค€๋‹ค.

 

2. ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ 

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

 

3. ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ์„ฑ

  • ์ธ๊ฐ€๋œ ์‚ฌ์šฉ์ž๋“ค๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์— ์ž์›์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ„์ • ๊ด€๋ฆฌ ๋˜๋Š” ์ ‘๊ทผ ๊ถŒํ•œ์„ ์„ค์ •

 

4. ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ

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

 

5. ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต ์ตœ์†Œํ™”

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

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์žฅ์ 

1. ๋ฐ์ดํ„ฐ ๊ณต์œ 

2. ๋ฐ์ดํ„ฐ ์ค‘๋ณต์˜ ์ตœ์†Œํ™”

3. ๊ณ„์†์  ๋ณ€ํ™”์— ๋Œ€ํ•œ ์ ์‘

4. ๋ณด์•ˆ์„ฑ

 

 

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ

๋””์Šคํฌ I/O๋ฅผ ์–ด๋–ป๊ฒŒ ์ค„์ด๋ƒ์— ๋”ฐ๋ผ ๋‹ฌ๋ ค์žˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋ฐ ๋””์Šคํฌ ํ—ค๋”์˜ ์œ„์น˜ ์ด๋™์—†์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ฒˆ์ด ๊ธฐ๋กํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค.

๋”ฐ๋ผ์„œ ์ˆœ์ฐจ์ ์œผ๋กœ I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š”๊ฒŒ ๋žœ๋ค I/O๋ณด๋‹ค ๋น ๋ฅด๋‹ค.

 

 

 

์ฟผ๋ฆฌ ์ตœ์ ํ™”, ๋น ๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์œ„ํ•œ 7๊ฐ€์ง€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

1. SELECT ์‹œ์—๋Š” ๊ผญ ํ•„์š”ํ•œ ์นผ๋Ÿผ๋งŒ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•œ๋‹ค.

  • ๋„ˆ๋ฌด ๋งŽ์€ ํ•„๋“œ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜๋ก DB๋Š” ๋” ๋งŽ์€ ๋กœ๋“œ๋ฅผ ๋ถ€๋‹ดํ•˜๊ธฐ ๋•Œ๋ฌธ์—

 

2. ์กฐ๊ฑด ๋ถ€์—ฌ์‹œ, ๊ฐ€๊ธ‰์  ๊ธฐ์กด DB๊ฐ’์— ๋ณ„๋„์˜ ์—ฐ์‚ฐ์„ ๊ฑธ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • ์กฐ๊ฑด ๊ฒ€์ƒ‰์ด ํ•„์š”ํ• ๋•Œ ๊ตณ์ด ๋ชจ๋“  ํ•„๋“œ ๊ฐ’์„ ํƒ์ƒ‰ํ•  ํ•„์š” ์—†๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ์งœ์ฃผ์ž

 

3. LIKE ์‚ฌ์šฉ์‹œ %(์™€์ผ๋“œ์นด๋“œ๋ฌธ์ž์—ด)๋ฅผ string ์•ž๋ถ€๋ถ„์— ๋ฐฐ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • ์œ„์˜ 2๋ฒˆ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ full table scan์„ ๋ง‰๊ฒŒ ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ์กฐ๊ฑด์ ˆ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ํšจ๊ณผ์ ์ด๋‹ค.

 

4. SELECT DISTINCT, UNION DISTINCT์™€ ๊ฐ™์ด ์ค‘๋ณต ๊ฐ’์„ ์ œ๊ฑฐํ•˜๋Š” ์—ฐ์‚ฐ์€ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค.

  • ์ค‘๋ณต ๊ฐ’์„ ์ œ๊ฑฐํ•˜๋Š” ์—ฐ์‚ฐ์€ ์‹œ๊ฐ„์ด ๋งŽ์ด๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ์ฐจ๋ผ๋ฆฌ EXISTS๋ฅผ ์‚ฌ์šฉํ•˜์ž.

 

5. ๊ฐ™์€ ๋‚ด์šฉ์˜ ์กฐ๊ฑด์ด๋ผ๋ฉด, GROUP BY ์—ฐ์‚ฐ ์‹œ์—๋Š” ๊ฐ€๊ธ‰์  HAVING๋ณด๋‹ค๋Š” WHERE ์ ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • WHERE ์ ˆ์ด HAVING์ ˆ๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— WHERE๋กœ ๋ฏธ๋ฆฌ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ ๋†“๋Š”๊ฒŒ ์ข‹๋‹ค.

 

6. 3๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ INNER JOIN ํ•  ๋•Œ๋Š”, ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ํฐ ํ…Œ์ด๋ธ”์„ FROM ์ ˆ์— ๋ฐฐ์น˜ํ•˜๊ณ , INNER JOIN ์ ˆ์—๋Š” ๋‚จ์€ ํ…Œ์ด๋ธ”์„ ์ž‘์€ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • INNER JOIN ๊ณผ์ •์—์„œ ์ตœ์†Œํ•œ์˜ Combination์„ ํƒ์ƒ‰ํ•˜๋„๋ก FROM & INNER JOIN์˜ ์ˆœ์„œ๋ฅผ ๋ฐฐ์—ดํ•˜๋ฉด ์ข‹๋‹ค๋Š” ์ด์•ผ๊ธฐ์ธ๋ฐ, ํ•ญ์ƒ ํ†ต์šฉ๋˜์ง€๋Š” ์•Š๋‹ค.

 

7. ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์— ๋Œ€ํ•ด์„œ๋Š” ๋ฏธ๋ฆฌ ์ „์ฒ˜๋ฆฌ๋œ ํ…Œ์ด๋ธ”์„ ๋”ฐ๋กœ ๋ณด๊ด€, ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๋„ ์ข‹๋‹ค.

 

 

 

 


<์ฐธ๊ณ >

https://velog.io/@redgem92/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0%EC%99%80-%ED%8A%B9%EC%A7%95 https://yang1650.tistory.com/28

https://medium.com/watcha/%EC%BF%BC%EB%A6%AC-%EC%B5%9C%EC%A0%81%ED%99%94-%EC%B2%AB%EA%B1%B8%EC%9D%8C-%EB%B3%B4%EB%8B%A4-%EB%B9%A0%EB%A5%B8-%EC%BF%BC%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-7%EA%B0%80%EC%A7%80-%EC%B2%B4%ED%81%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8-bafec9d2c073

์Šค์ผ€์ค„๋Ÿฌ

Ready Queue์— ์กด์žฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์„
ํŠน์ •ํ•œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ CPU๋ฅผ ํ• ๋‹น๋ฐ›๊ฒŒ ํ•˜๋Š” ์—ญํ• ๋กœ
์žฅ๊ธฐ, ์ค‘๊ธฐ, ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์žˆ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค๋ฅผ ์Šค์ผ€์ค„๋งํ•˜๊ธฐ ์œ„ํ•œ queue์˜ ์ข…๋ฅ˜
1. Job Queue : ํ˜„์žฌ ์‹œ์Šคํ…œ ๋‚ด์— ์žˆ๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ
2. Ready Queue : ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์žˆ์œผ๋ฉด์„œ CPU๋ฅผ ํ• ๋‹น ๋ฐ›๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ
3. Device Queue : Device I/O ์ž‘์—…์„ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ง‘ํ•ฉ

 

 

 


์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ Long - Term Scheduler

์ˆ˜ํ–‰ํ•  job์ด 10๊ฐœ, ๋ฉ”๋ชจ๋ฆฌ์—๋Š” 6๊ฐœ ๋ฐ–์— ์˜ฌ๋ฆด ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ
job 10๊ฐœ ์ค‘ 6๊ฐœ๋ฅผ ๊ณจ๋ผ์„œ ์˜ฌ๋ ค์•ผ ํ•˜๋Š”๋ฐ ์ด๋•Œ job์„ ๊ณ ๋ฅด๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ
๋”ฐ๋ผ์„œ ์žก ์Šค์ผ€์ค„๋Ÿฌ๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•œ๋‹ค.

 

ready queue์— ์ ์žฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ ์‚ฌ์ด์˜ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹นํ•˜๋Š” ์Šค์ผ€์ค„๋Ÿฌ์ธ๋ฐ,  I/O bound ์ค‘์‹ฌ์˜ ํ”„๋กœ์„ธ์Šค๋“ค๊ณผ CPU bound ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์ ์ ˆํ•œ ๋น„์œจ์„ ์กฐ์ ˆํ•ด ์˜ฌ๋ฆฐ๋‹ค.

 

* I/O bound process : ์ž…์ถœ๋ ฅ ๋งŽ์€ ํ”„๋กœ์„ธ์Šค (์ด ๋น„์œจ์ด ๋†’์œผ๋ฉด ๋†€๊ณ  ์žˆ๋Š” cpu ๋งŽ์•„์ง)

CPU bound process : CPU๊ฐ€ ๊ณ„์‚ฐ์„ ํ•ด์ค˜์•ผ ํ•˜๋Š” ๋น„์ค‘์ด ํฐ ํ”„๋กœ์„ธ์Šค (์ด ๋น„์œจ์ด ๋†’์œผ๋ฉด ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ ์ด์ง€ ๋ชปํ•ด์„œ ์‹ค์‹œ๊ฐ„์ ์ธ ์˜๋ฏธ ์—†์–ด์ง)

 

1. ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ Ready Queue์— ์‚ฝ์ž…ํ• ์ง€ ๊ฒฐ์ •

2. ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ ์‚ฌ์ด์˜ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹น

3. ํ”„๋กœ์„ธ์Šค์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น 

4. ๋ฉ”๋ชจ๋ฆฌ์— ๋™์‹œ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ฅผ ์กฐ์ ˆ 

5. ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ[new -> ready(inmemory)]

 

 

 

 

๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ Short - Term Scheduler

์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ํ†ตํ•ด์„œ job์„ 6๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ƒํƒœ
CPU์—์„œ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰์™„๋ฃŒํ•˜๊ณ  ๋‚˜๋จธ์ง€ job์ค‘ ์—์„œ ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ์•ผํ•˜๋Š”๋ฐ ์ด๊ฑธ ๊ณจ๋ผ์ฃผ๋Š” ์Šค์ผ€์ค„๋Ÿฌ
๋”ฐ๋ผ์„œ CPU ์Šค์ผ€์ค„๋Ÿฌ๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•œ๋‹ค.

CPU๊ฐ€ ๋‚ญ๋น„๋˜์ง€ ์•Š๊ฒŒ A๋ผ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜ํ–‰๋˜๋‹ค๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›๊ธฐ ์œ„ํ•ด cpu๊ฐ€ ๋Œ€๊ธฐํ•˜๋Š” ์ƒํ™ฉ์ด ๋˜๋ฉด ๋ฐ”๋กœ B ํ”„๋กœ์„ธ์Šค๋กœ ๊ต์ฒดํ•ด์„œ ์ˆ˜ํ–‰์‹œํ‚จ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ์‚ฌ์šฉ์ž์˜ I/O๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค์‹œ Aํ”„๋กœ์„ธ์Šค๋ฅผ cpu๋กœ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

 

์ตœ์†Œ 100๋ฐ€๋ฆฌ ์„ธ์ปจ์ฆˆ๋งˆ๋‹ค ์ˆ˜ํ–‰๋˜์–ด ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๋ผ ๋ถˆ๋ฆฐ๋‹ค.

 

์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ์™€ ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ -> CPU ์Šค์ผ€์ค„๋Ÿฌ

์š”์ฆ˜์—” virtual memory management๊ฐ€ ๋ฐœ๋‹ฌํ•ด์„œ job์ด 10๊ฐœ๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋กœ 10๊ฐœ๊ฐ€ ๋‹ค ์˜ฌ๋ผ์˜จ๋‹ค. 

์ฆ‰, ์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ์˜ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ, long term์ด ์—†๋‹ค๋ฉด short term์˜ ์˜๋ฏธ๊ฐ€ ๋ฌด์ƒ‰ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๋กœ CPU ์Šค์ผ€์ค„๋Ÿฌ๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. 

 

1. CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์˜ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹นํ•˜๋ฉฐ CPU ์Šค์ผ€์ค„๋Ÿฌ๋ผ๊ณ ๋„ํ•จ

2. Ready Queue์— ์กด์žฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ CPU๋ฅผ ํ• ๋‹นํ•  ํ”„๋กœ์„ธ์Šค ์„ ํƒ

3. ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ[ready -> running -> waiting -> ready]

 

 

 

 

 

์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ Medium - Term Scheduler

์žฅ๊ธฐ/๋‹จ๊ธฐ ์ดํ›„์— ๋‚˜์™”๋‹ค. ์œ„์—์„œ ๋งํ–ˆ๋“ฏ์ด ํ˜„์žฌ ๊ฐœ๋…์€ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ ๋˜ํ•œ ์ด์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด 10๊ฐœ ์ค‘ 6๊ฐœ์˜ job์„ ์˜ฌ๋ ค์„œ ์ˆ˜ํ–‰์ค‘์ธ ์ƒํƒœ
CPU๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ๋ณด๋‹ˆ ๊ฐ๋‹นํ•˜๊ธฐ์—” ๋„ˆ๋ฌด ๋งŽ์•„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ 6๊ฐœ ์ค‘ 2๊ฐœ๋ฅผ ๋‚ด๋ ค๋ณด๋‚ด๋ฉด ์ƒํ™ฉ์ด ํ•ด๊ฒฐ๋  ๊ฒƒ
6๊ฐœ ์ค‘ ๋ญ˜ ๋‚ด๋ ค๋ณด๋‚ผ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ์˜ ์—ญํ•  
Swapper๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

 

 

ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‚ด๋ฆด ๋•Œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋‚˜ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์•˜๋˜ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๋‚ด๋ฆฐ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‚ด๋ฆฌ๊ณ  (swapping out) ๋‹ค์‹œ ์˜ฌ๋ ค์ง€๋Š” (swapping in) swapping๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— swapper๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.

 

 

 1. ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋œ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆ

2. ๋ฉ”๋ชจ๋ฆฌ์ ์žฌ๋œ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๊ฐ€ ๋งŽ์„ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ†ต์งธ๋กœ ๋””์Šคํฌ์˜ ์Šค์™‘ ์˜์—ญ์— ์ €์žฅ(Swap Out)

3. ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ[ready -> suspended]

 

 

 

 

 


<์ฐธ๊ณ >

https://kmseop.tistory.com/119 https://jhnyang.tistory.com/372

Process Management 
ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ๋•Œ, CPU๊ฐ€ CPU ์Šค์ผ€์ค„๋ง์„ ํ†ตํ•ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ
( ์ด๋•Œ CPU๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ˆ„๊ตฐ์ง€ ์•Œ์•„์•ผ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์˜ ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์ด Process Metadata์ด๋‹ค. )

 

[ Process Metadata ]

  • Process ID : PID(Process Identification Number)๋ผ๊ณ ๋„ ํ•œ๋‹ค. // ํ”„๋กœ์„ธ์Šค ๊ณ ์œ  ์‹๋ณ„๋ฒˆํ˜ธ
  • Process State : ํ”„๋กœ์„ธ์Šค์˜ ํ˜„์žฌ ์ƒํƒœ(์ค€๋น„, ์‹คํ–‰, ๋Œ€๊ธฐ)๋ฅผ ๊ธฐ์–ต์‹œํ‚จ๋‹ค. //ํ”„๋กœ์„ธ์Šค ์ƒํƒœ
  • Process Priority : ํ”„๋กœ์„ธ์Šค ์šฐ์„ ์ˆœ์œ„ ๋“ฑ๊ณผ ๊ฐ™์€ ์Šค์ผ€์ค„๋ง ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ธฐ์–ต์‹œํ‚จ๋‹ค. //์Šค์ผ€์ค„๋ง ์ •๋ณด
  • CPU Registers : ํ”„๋กœ์„ธ์Šค์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ CPU ๋‚ด ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ, ๋ฐ์ดํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ, ์„ธ๊ทธ๋จผํŠธ ๋ ˆ์ง€์Šคํ„ฐ ๋“ฑ์ด ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ’์„ ๊ธฐ์–ต์‹œํ‚จ๋‹ค.
  • Owner : CPU ์‚ฌ์šฉ์‹œ๊ฐ„์˜ ์ •๋ณด(Quantum)๊ณผ ๊ฐ์ข… ์Šค์ผ€์ค„๋Ÿฌ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ์–ต์‹œํ‚จ๋‹ค. //๊ณ„์ • ์ •๋ณด
  • ๊ธฐ์–ต์žฅ์น˜ ๊ด€๋ฆฌ ์ •๋ณด : ํ”„๋กœ๊ทธ๋žจ์ด ์ ์žฌ๋  ๊ธฐ์–ต ์žฅ์น˜์˜ ์ƒํ•œ์น˜, ํ•˜ํ•œ์น˜, ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋“ฑ์˜ ์ •๋ณด๋ฅผ ๊ธฐ์–ต์‹œํ‚จ๋‹ค.
  • ์ž…์ถœ๋ ฅ ์ •๋ณด : ํ”„๋กœ์„ธ์Šค ์ˆ˜ํ–‰ ์‹œ ํ•„์š”ํ•œ ์ฃผ๋ณ€ ์žฅ์น˜, ํŒŒ์ผ๋“ค์˜ ์ •๋ณด๋ฅผ ๊ธฐ์–ต์‹œํ‚จ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ : ๋‹ค์Œ์— ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ๊ธฐ์–ต์‹œํ‚จ๋‹ค. //๊ณ„์ˆ˜๊ธฐ

์ด๋Ÿฌํ•œ ์ •๋ณด๋“ค์ด ๋‹ด๊ธด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด PCB๋ผ๋Š” ๊ณณ์— ์ €์žฅ๋œ๋‹ค!

 


PCB (Process Controll Block)

ํ”„๋กœ์„ธ์Šค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•ด ๋†“๋Š” ๊ณณ
ํ•˜๋‚˜์˜ PCB ์•ˆ์—๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ -> ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ -> ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„์— (์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ์Šคํƒ) ์ƒ์„ฑ -> ์ด ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋“ค์ด PCB์— ์ €์žฅ

 

 

PCB ์ƒ์„ธ ๊ตฌ์กฐ ->

 

 

 

 

 

 

 

PCB๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  

CPU์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ต์ฒด ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

์ด๋•Œ ์•ž์œผ๋กœ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•  Block ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๊ฐ’์„ PCB์— ์ €์žฅํ•ด๋‘”๋‹ค. 

 

 

 

PCB์˜ ๊ด€๋ฆฌ ๋ฐฉ์‹

Linked List ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌ๋œ๋‹ค. PCB list head์— PCB ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ๋ถ™๊ฒŒ ๋œ๋‹ค. ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ ธ์žˆ๋Š” ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์‚ฝ์ž…, ์‚ญ์ œ ์šฉ์ด

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ํ•ด๋‹น PCB๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ํ”„๋กœ์„ธ์Šค ์™„๋ฃŒ์‹œ ์ œ๊ฑฐ๊ฐ€ ๋œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ, CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ Context Switching์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 


 

Context Switching

CPU๊ฐ€ ํ˜„์žฌ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” task(process, thread)์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ 
๋‹ค์Œ ์ง„ํ–‰ํ•  task์˜ ์ƒํƒœ ๋ฐ register ๊ฐ’๋“ค์— ๋Œ€ํ•œ
์ •๋ณด(context)๋ฅผ ์ฝ์–ด ์ƒˆ๋กœ์šด task์˜ context ์ •๋ณด๋กœ ๊ต์ฒดํ•˜๋Š” ๊ณผ์ •

 

* context๋ž€ : CPU๊ฐ€ ๋‹ค๋ฃจ๋Š” Task(Process / Thread)์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋งํ•˜๊ณ , ๋Œ€๋ถ€๋ถ„์˜ ์ •๋ณด๋Š” Register์— ์ €์žฅ๋˜๊ณ  pcb๋กœ ๊ด€๋ฆฌ๋œ๋‹ค. 

 

 

์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, ์‹คํ–‰ ์ค‘์ธ CPU ์‚ฌ์šฉ ํ—ˆ๊ฐ€ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ์†Œ๋ชจํ•˜๊ฑฐ๋‚˜, 

์ž…์ถœ๋ ฅ์„ ์œ„ํ•ด ๋Œ€๊ธฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ Context Switching์ด ๋ฐœ์ƒ

ํ”„๋กœ์„ธ์Šค๊ฐ€ Ready -> Running , Running -> Ready , Running -> Block ์ฒ˜๋Ÿผ ์ƒํƒœ ๋ณ€๊ฒฝ ์‹œ์— ๋ฐœ์ƒ

 

 

 

Context Switching ์ˆ˜ํ–‰ ๊ณผ์ •

1. Task์˜ ๋Œ€๋ถ€๋ถ„ ์ •๋ณด๋Š” Register์— ์ €์žฅ๋˜๊ณ  PCB(Process Control Block)๋กœ ๊ด€๋ฆฌ

2. ํ˜„์žฌ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” Task์˜ PCB ์ •๋ณด๋ฅผ ์ €์žฅ (Process Stack, Ready Queue)

3. ๋‹ค์Œ ์‹คํ–‰ํ•  Task์˜ PCB ์ •๋ณด๋ฅผ ์ฝ์–ด Register์— ์ ์žฌํ•˜๊ณ  CPU๊ฐ€ ์ด์ „์— ์ง„ํ–‰ํ–ˆ๋˜ ๊ณผ์ •์„ ์—ฐ์†์ ์œผ๋กœ ์ˆ˜ํ–‰

 

 

Context Switching Cost

1. Cashe ์ดˆ๊ธฐํ™”

2. Memory Mapping ์ดˆ๊ธฐํ™”

3. ๋ฉ”๋ชจ๋ฆฌ์˜ ์ ‘๊ทผ์„ ์œ„ํ•ด์„œ ํ•ญ์ƒ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” kernel

์œ„์™€ ๊ฐ™์€ Cost๊ฐ€ ์†Œ์š”๋˜๊ธฐ ๋•Œ๋ฌธ์— ์žฆ์€ context switching์€ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

 

* Process๊ฐ€ Thread๋ณด๋‹ค ๋งŽ์ด ๋“ ๋‹ค. ( Thread๋Š” stack์˜์—ญ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— context switching ๋ฐœ์ƒ์‹œ stack ์˜์—ญ๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ)

 

 

 

Context Switching๊ณผ Interrupt

CPU๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์ •๋ณด๋งŒ์„ ๊ธฐ์–ตํ•œ๋‹ค.

์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ๋Š” CPU๊ฐ€ ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ๋ณต๊ท€ํ•˜๊ณ  ๋‹ค์‹œ ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ๋ณต๊ท€ํ•˜๋Š” ์ผ์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค ์ค‘๋‹จ๊ณผ ์‹คํ–‰์‹œ interrupt๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ context switching์ด ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์€ interrupt๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

Context Switching๊ณผ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰

์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์ด ์ ์–ด์ง€๋ฉด :

๋ฌธ๋งฅ ๊ตํ™˜ ์ˆ˜, ์ธํ„ฐ๋ŸฝํŠธ ํšŸ์ˆ˜, ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๋Š” ๋Š๋‚Œ์„ ๊ฐ–๋Š”๋‹ค.

 

์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์ด ์ปค์ง€๋ฉด :

๋ฌธ๋งฅ ๊ตํ™˜ ์ˆ˜, ์ธํ„ฐ๋ŸฝํŠธ ํšŸ์ˆ˜, ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๊ฐ์†Œํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๋Š” ๋Š๋‚Œ์„ ๊ฐ–์ง€ ๋ชปํ•œ๋‹ค.

 

 

 


<์ฐธ๊ณ >

https://m.blog.naver.com/adamdoha/222019884898 https://jhnyang.tistory.com/33

 

HTTP

์›น ์ƒ์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์ธ
HTTP ๋ฉ”์†Œ๋“œ์—๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋Š”๋ฐ
๊ทธ๊ฒƒ์ด GET ๋ฐฉ์‹๊ณผ POST ๋ฐฉ์‹



GET 

'๊ฐ€์ ธ์˜ค๋‹ค'
์–ด๋– ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹
  • URL์— ๋ณ€์ˆ˜(๋ฐ์ดํ„ฐ)๋ฅผ ํฌํ•จ์‹œ์ผœ ์š”์ฒญ
  • ๋ฐ์ดํ„ฐ๋ฅผ header์— ํฌํ•จ์‹œ์ผœ ์ „์†ก
  • URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์–ด ๋ณด์•ˆ์— ์ทจ์•ฝ
  • ์บ์‹ฑ ๊ฐ€๋Šฅ

GET์€ URL๋์— ?์™€ ํ•จ๊ป˜ ์ด๋ฆ„๊ณผ ๊ฐ’์œผ๋กœ ์Œ์„ ์ด๋ฃจ๋Š” ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ(์ฟผ๋ฆฌ ์ŠคํŠธ๋ง)๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•œ๋‹ค. ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์ด ์—ฌ๋Ÿฌ๊ฐœ์ผ ๊ฒฝ์šฐ &๋กœ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค.

 

๋ถˆํ•„์š”ํ•œ ์š”์ฒญ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด ์š”์ฒญ์ด ์บ์‹œ๋  ์ˆ˜ ์žˆ๋‹ค.

ex. js, css์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์–‘์ด ํฌ๊ณ  ๋ณ€๊ฒฝ๋  ์ผ์ด ์ ์€ ์ •์  ์ปจํ…์ธ 

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

ํ”„๋ก ํŠธ์•ค๋“œ ๊ฐœ๋ฐœ์‹œ ์ •์  ์ปจํ…์ธ ๊ฐ€ ์บ์‹œ๋˜์–ด ์ปจํ…์ธ ๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €์˜ ์บ์‹œ๋ฅผ ์ง€์›Œ์ฃผ๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค.

 

POST

'์ œ์ถœํ•˜๋‹ค'
๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์ œ์ถœํ•˜์—ฌ ์ถ”๊ฐ€ ๋˜๋Š” ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹, ์ž‘์—… ์ˆ˜ํ–‰ ์‹œ ์‚ฌ์šฉ๋จ
  • URL์— ๋ณ€์ˆ˜(๋ฐ์ดํ„ฐ)๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์š”์ฒญ
  • ๋ฐ์ดํ„ฐ๋ฅผ body์— ํฌํ•จ์‹œ์ผœ ์ „์†ก
  • URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š์•„์„œ ๊ธฐ๋ณธ ๋ณด์•ˆ์ด ๋˜์–ด์žˆ์Œ
  • ์บ์‹ฑ ๋ถˆ๊ฐ€๋Šฅ

GET๊ณผ ๋‹ฌ๋ฆฌ http ๋ฉ”์„ธ์ง€์˜ ๊ธธ์ด ์ œํ•œ์ด ์—†๋Š” body์— ๋‹ด์•„์„œ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

GET๋ณด๋‹ค๋Š” ๋ณด์•ˆ์„ฑ์ด ๋†’์ง€๋งŒ ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋‚˜ Fiddler์™€ ๊ฐ™์€ ํˆด๋กœ ์š”์ฒญ ๋‚ด์šฉ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ ์ „์†ก์‹œ์—๋Š” ๋ฐ˜๋“œ์‹œ ์•”ํ˜ธํ™”๋ฅผ ํ•ด์•ผํ•œ๋‹ค.

 

POST๋Š” ์š”์ฒญ ํ—ค๋”์˜ content-type์— ์š”์ฒญ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ํ‘œ์‹œํ•ด์•ผ ํ•œ๋‹ค.

ํ‘œ์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„๋Š” ๋‚ด์šฉ์ด๋‚˜ URL์— ํฌํ•จ๋œ ๋ฆฌ์†Œ์Šค ํ™•์žฅ์ž๋ช… ๋“ฑ์œผ๋กœ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์œ ์ถ”ํ•˜๊ณ , ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—” aplication/octet-stream๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•จ

 

 

 

 

 

GET๊ณผ POST์™€ ๋ฉฑ๋“ฑ์„ฑ

๋ฉฑ๋“ฑ - ๋™์ผํ•œ ์—ฐ์‚ฐ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ˆ˜ํ–‰ํ•˜๋”๋ผ๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ

 

GET์€ ์„œ๋ฒ„์—๊ฒŒ ๋™์ผํ•œ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ์ „์†กํ•˜๋”๋ผ๋„ ๋™์ผํ•œ ์‘๋‹ต์ด ๋Œ์•„์™€์•ผํ•˜๋Š” ๋ฉฑ๋“ฑ์„ฑ์„ ๊ฐ–๋„๋ก ์„ค๊ณ„๋˜์–ด์žˆ๋‹ค.

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

 

POST๋Š” ์„œ๋ฒ„์—๊ฒŒ ๋™์ผํ•œ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ „์†กํ•˜๋”๋ผ๋„ ์‘๋‹ต์€ ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์„œ๋ฒ„์˜ ์ƒํƒœ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉ์ด ๋œ๋‹ค.

 

 

 

 

 


<์ฐธ๊ณ >

https://mangkyu.tistory.com/17 https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/ 

+ Recent posts