๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๊ฐœ๋ฐœ๊ณต๋ถ€/CS๐Ÿ’ป

CS ๊ฐ•์˜ 12. ์‹œ๊ฐ„ ์ž์›๊ณผ ์‹œ๊ฐ„๋ณต์žก๋„

728x90

์ถœ์ฒ˜ : ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

 

0. ์‹œ๊ฐ„ ์ž์›

0 - 1. CPU ์‹œ๊ฐ„ ์ž์›

์ปดํ“จํ„ฐ๋Š” ํ•œ์ •๋œ CPU๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚˜๋ˆ„์–ด ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด CPU ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ํ†ตํ•ด ์‹œ๊ฐ„ ์ž์›์„ ๊ด€๋ฆฌํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„ OS๊ฐ€ ์ฃผ๊ด€ํ•˜์ง€๋งŒ, ์‚ฌ์šฉ์ž๋กœ์„œ ์ž˜ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค

0 - 2. ๋ฉ”๋ชจ๋ฆฌ ์‹œ๊ฐ„ ์ž์›

CPU์™€ ์ฃผ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹œ๊ฐ„ ์ž์›์€ ์ปดํ“จํ„ฐ์˜ ์ฃผ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋กœ๋“œ๋˜์–ด CPU๋ฅผ ํ†ตํ•ด ์—ฐ์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์—ฐ์‚ฐํ•˜๋Š” ๋™์•ˆ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ์œ  ๊ฐ€๋Šฅํ•œ ์‹œ๊ฐ„์ด ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ๊ฐ„ ์ž์›์ด ๋œ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ…Œ์ŠคํŠธ๋„ ์ด ์‹œ๊ฐ„ ์ž์›์„ ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์œผ๋กœ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์ด๋‹ค

 

- ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ๊ฐ„ ์ž์›์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ/์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์ž‘ ๋‹น 1๊ฐœ์˜ ์—ฐ์‚ฐ ๋‹จ์œ„๋กœ ๋‘๊ณ  ์žˆ๋‹ค

=> ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ์‹คํ–‰ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ธฐ๋ณธ ์—ฐ์‚ฐ์˜ ์‹คํ–‰ ํšŸ์ˆ˜๋กœ ์‹œ๊ฐ„ ์ž์›์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค

~ ๊ธฐ๋ณธ ์—ฐ์‚ฐ์˜ ์ข…๋ฅ˜

๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ : copy, move ๋“ฑ

์‚ฐ์ˆ  ์—ฐ์‚ฐ : add, multiply ๋“ฑ

์ œ์–ด ์—ฐ์‚ฐ : if, while ๋“ฑ

 

- ๋ฉ”๋ชจ๋ฆฌ ์‹œ๊ฐ„ ์ž์›์€ ์ฃผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋˜์–ด ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์ž…๋ ฅ์˜ ํฌ๊ธฐ์™€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํ—ˆ์šฉํ•˜๋Š” ์†Œ๋ชจ์‹œ๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค

0 - 3. ๋„คํŠธ์›Œํฌ ์‹œ๊ฐ„ ์ž์›

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

 

(1) ํƒ€์ž„์•„์›ƒ

- ๋„คํŠธ์›Œํฌ์—์„œ ํƒ€์ž„์•„์›ƒ์€ ์žฅ์น˜๋‚˜ ํ”„๋กœ๊ทธ๋žจ์ด ์—ฐ๊ฒฐ์„ ์ค‘๋‹จํ•˜๊ธฐ ์ „๊นŒ์ง€ ์†Œ์š”๋˜๋Š” ์‘๋‹ต ์‹œ๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค

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

 

(2) ํƒ€์ž„์•„์›ƒ ์ข…๋ฅ˜ : ๋ณธ์งˆ์ด ํƒ€์ž„์•„์›ƒ์ด๋ผ๋Š” ๊ฒƒ์ด ์ค‘์š”

- ์ปค๋„ฅ์…˜ ํƒ€์ž„์•„์›ƒ

- ์„ธ์…˜ ํƒ€์ž„์•„์›ƒ

- ์„œ๋ฒ„ ํƒ€์ž„์•„์›ƒ

- DNS ํƒ€์ž„์•„์›ƒ ๋“ฑ

 

(3) ํƒ€์ž„์•„์›ƒ์ด ํ•„์š”ํ•œ ์ด์œ 

1. ์ง€์†์ ์ธ ์—ฐ๊ฒฐ ์‹œ๋„ ๋ฐฉ์ง€

- ์žฅ์น˜ ๊ฐ„ ์—ฐ๊ฒฐ ์‹œ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด ์‘๋‹ต ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž„์•„์›ƒ์— ์˜ํ•ด ์—ฐ๊ฒฐ ํ•ด์ œ ๋ฐ ์˜ค๋ฅ˜๋ฅผ ์•Œ๋ ค์ค˜ ๋ฌธ์ œ ์ƒํ™ฉ์„ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค

 

2. ๋ฆฌ์†Œ์Šค ๊ณ ๊ฐˆ ๋ฐฉ์ง€

- ํ•œ ํ”„๋กœ๊ทธ๋žจ์€ ์—ฌ๋Ÿฌ ์ปค๋„ฅ์…˜์„ ์ƒ์„ฑํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ ์ปค๋„ฅ์…˜์—์„œ ๋Œ€๊ธฐ๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ๊ธธ์–ด์ง€๋ฉด ํ• ๋‹น ๋ฐ›์€ ์‹œ๊ฐ„ ์ž์›์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๊ณ , ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ด ํƒ€์ž„์•„์›ƒ์ด๋‹ค

 

3. ๋ณด์•ˆ ๊ฐ•ํ™”

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

1. ์‹œ๊ฐ„๋ณต์žก๋„

1 - 1. ์‹œ๊ฐ„๋ณต์žก๋„ ๊ณ„์‚ฐ๋ฒ•

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

- ๋น… ์˜ค : ์ƒํ•œ ์ ๊ทผ

- ๋น… ์˜ค๋ฉ”๊ฐ€ : ํ•˜ํ•œ ์ ๊ทผ

- ๋น… ์„ธํƒ€ : ํ‰๊ท 

~ ๊ฐ ํ‘œ๊ธฐ๋ฒ•์€ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ตœ์•…, ์ตœ์„ , ํ‰๊ท ์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค. ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์ด๋ž€ ์ƒ์ˆ˜๊ฐ’์„ ์ œ์™ธํ•˜๊ณ  ํฐ ํ๋ฆ„์ธ ์ถ”์„ธ๋งŒ ํ‘œ๊ธฐํ•ด ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•œ๋‹ค

* O(1) : ์ผ์ •ํ•œ ๋ณต์žก๋„๋ผ๊ณ  ํ•˜๋ฉฐ, ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์ž…๋ ฅ๊ฐ’๊ณผ ์ƒ๊ด€์ด ์—†๋‹ค

function O_1_algorithm(arr, index) {
  return arr[index];
}

let arr = [1, 2, 3, 4, 5];
let index = 1;
let result = O_1_algorithm(arr, index);
console.log(result); // 2

~ arr์˜ ๊ธธ์ด์— ์ƒ๊ด€์—†์ด, ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค์˜ ๊ฐ’์— ๋ฐ”๋กœ ์ ‘๊ทผ์— ๊ฐ’์„ ์–ป๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

 

* O(n) : ์„ ํ˜• ๋ณต์žก๋„๋ผ๊ณ  ํ•˜๋ฉฐ, ์ž…๋ ฅ๊ฐ’์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์‹œ๊ฐ„๋ณต์žก๋„๋„ ๊ฐ™์€ ๋น„์œจ๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค

function O_n_algorithm(n) {
  for (let i = 0; i < n; i++) {
    // do something for 1 second
  }
}

function another_O_n_algorithm(n) {
  for (let i = 0; i < 2n; i++) {
    // do something for 1 second
  }
}

- O_n_algorithm(n)์€ ์ž…๋ ฅ๊ฐ’ 1 ์ฆ๊ฐ€์‹œ๋งˆ๋‹ค ์‹คํ–‰์‹œ๊ฐ„์ด 1์ดˆ ์ฆ๊ฐ€ํ•œ๋‹ค

- another_O_n_algorithm(n)์€ 1 ์ฆ๊ฐ€์‹œ๋งˆ๋‹ค ์‹คํ–‰์‹œ๊ฐ„ 2์ดˆ ์ฆ๊ฐ€ํ•˜์ง€๋งŒ O(2n)์ด ์•„๋‹ˆ๋ผ O(n)์ด๋‹ค

~ ๊ฐ™์€ ๋น„์œจ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ฆ๊ฐ€ ๊ฐ’์— ๊ด€๊ณ„์—†์ด O(n)์ด๋‹ค

 

* O(log n) : ๋กœ๊ทธ ๋ณต์žก๋„, ๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ• ์ค‘ O(1) ๋‹ค์Œ์œผ๋กœ ๋น ๋ฅด๋‹ค

void Logarithmic(n){
	i = 1; //1
    while(i<n){
    	printf(i);
        i = i * 2; // 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์œผ๋กœ ์ปค์ง‘๋‹ˆ๋‹ค.
    }
}

~ ์ž…๋ ฅ๊ฐ’ n์ด ์ปค์งˆ ๋•Œ๋งˆ๋‹ค i๋Š” 2์˜ ๊ฑฐ๋“ญ ์ œ๊ณฑ์œผ๋กœ ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์— log n๋งŒํผ ๋ฐ˜๋ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(log n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค

 

* ๋Œ€ํ‘œ์ ์ธ O(log n) ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์ด์ง„ํƒ์ƒ‰

- BST๋ผ๊ณ  ํ•˜๋ฉฐ, ์›ํ•˜๋Š” ๊ฐ’์„ ํƒ์ƒ‰ํ•  ๋•Œ ๋…ธ๋“œ๋ฅผ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“ ๋‹ค

~ ๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ๋งŒํผ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

 

* O(n^2) : 2์ฐจ ๋ณต์žก๋„๋ผ๊ณ  ํ•˜๋ฉฐ, ์ž…๋ ฅ๊ฐ’์ด ์ฆ๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค n^2 ๋น„์œจ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค

~ ์ž…๋ ฅ๊ฐ’ 1์ผ๋•Œ 1์ดˆ ์†Œ์š”๋˜๋˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ž…๋ ฅ๊ฐ’์„ 5๋กœ ํ–ˆ์„๋•Œ 25์ดˆ๊ฐ€ ์†Œ์š”๋˜๋Š” ๊ฒฝ์šฐ

function O_quadratic_algorithm(n) {
  for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
      // do something for 1 second
    }
  }
}

function another_O_quadratic_algorithm(n) {
  for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
      for (let k = 0; k < n; k++) {
        // do something for 1 second
      }
    }
  }
}

~ ๋‘ ๋ฒˆ์งธ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ์—๋„ ์ƒ์ˆ˜๊ฐ€ 1์ด๋ฏ€๋กœ n^3๋„ ๋ชจ๋‘ O(n2)๋กœ ํ‘œ๊ธฐํ•œ๋‹ค

 

* O(2^n) : ๊ธฐํ•˜๊ธ‰์ˆ˜์  ๋ณต์žก๋„๋ผ๊ณ  ํ•˜๋ฉฐ, ๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ• ์ค‘ ๊ฐ€์žฅ ๋Š๋ฆฌ๋‹ค. ์ด ๊ฒฝ์šฐ์—” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‹ค์‹œ ์งœ๋Š” ๊ฒƒ์„ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค

function fibonacci(n) {
  if (n <= 1) {
    return 1;
  }
  return fibonacci(n - 1) + fibonacci(n - 2);
}

1 - 2. ์ž๋ฃŒ๊ตฌ์กฐ๋ณ„ ์‹œ๊ฐ„๋ณต์žก๋„

1) Array : ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๊ฐ€ ์žˆ๋‹ค, ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๊ฐ€ ๊ณ ์ •์ผ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ

- O(1) : i๋ฒˆ์จฐ ๋ฐ์ดํ„ฐ ์—‘์„ธ์Šค

- O(n) : ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…/์‚ญ์ œ, ์ธ๋ฑ์Šค ์—†์ด ๋ฐ์ดํ„ฐ ํƒ์ƒ‰

 

2) ArrayList : ๋ฐฐ์—ด๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ „์ฒด ํฌ๊ธฐ๊ฐ€ ๊ฐ€๋ณ€์ด์ง€๋งŒ, ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆด ๊ฒฝ์šฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค(= Dynamic Array)

- O(1) : i๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ์—‘์„ธ์Šค

- O(n) : (๋์ง€์ ์„ ์ œ์™ธํ•˜๊ณ ) ๋ฐ์ดํ„ฐ ์‚ฝ์ž…/์‚ญ์ œ, ๋ฐ์ดํ„ฐ ํƒ์ƒ‰

 

3) Queue : ๋ฐฐ์—ด์— ๋น„ํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

- O(1) : ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ add, append/ poll(pop)

- O(n) : i๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ/์‚ฝ์ž…/์‚ญ์ œ, ๋ฐ์ดํ„ฐ ํƒ์ƒ‰

 

4) Deque : ์–‘ ์ชฝ์—์„œ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…/์‚ญ์ œ ๊ฐ€๋Šฅ ํ, ํ์™€ ์Šคํƒ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค

- O(1) : ๋ฐ์ดํ„ฐ์˜ add, append/ poll(pop)

- O(n) : i๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ/์‚ฝ์ž…/์‚ญ์ œ, ๋ฐ์ดํ„ฐ ํƒ์ƒ‰

 

5) Stack : ํŒฐ๋ฆฐ๋“œ ๋กฌ(ํšŒ๋ฌธ) ๋ฌธ์ œ๊ฐ€ ์˜ˆ์‹œ๋กœ ์žˆ๋‹ค, ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์€ ๋‚ด๋ถ€์ ์œผ๋กœ ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด ๋™์ž‘

- O(1) : ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ/์‚ญ์ œ, ๊ฐ€์žฅ ์œ„์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž…

- O(n) : i๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ/์‚ฝ์ž…/์‚ญ์ œ, ๋ฐ์ดํ„ฐ ํƒ์ƒ‰

 

 cf) ์ž๋ฃŒ๊ตฌ์กฐ ๋น„๊ตํ‘œ

Data Structure Average Case     Worst Case    
  Search Insert Delete Search Insert Delete
Array O(n)          
Sorted Array O(log n) O(n) O(n) O(log n) O(n) O(n)
Linked List O(n) O(1) O(1) O(n)    
Doubly Linked List O(n) O(1) O(1) O(n)    
Stack O(n) O(1) O(1) O(n)    
Hash Table O(1) O(1) O(1) O(n) O(n)  
Binary Search Table O(log n) O(log n) O(log n) O(n) O(n)  
B-Tree O(log n) O(log n) O(log n) O(log n) O(log n) O(log n)
Red-Black tree O(log n) O(log n) O(log n) O(log n) O(log n) O(log n)
AVL Tree O(log n) O(log n) O(log n) O(log n) O(log n) O(log n)

1 - 3. ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณ„ ์‹œ๊ฐ„๋ณต์žก๋„

- ๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์—ฐ์‚ฐ(์‚ฐ์ˆ , ๋Œ€์ž…, ๋น„๊ต, ์ด๋™)๋“ค์ด ๋ช‡ ๋ฒˆ ์ด๋ฃจ์–ด์ง€๋Š” ์ง€ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ํ‘œํ˜„

- ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๋„ ์ž…๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ์‹คํ–‰์‹œ๊ฐ„์ด ๋‹ค๋ฅด๋ฉฐ ์ตœ์„ , ํ‰๊ท , ์ตœ์•…์˜ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค

 

(1) ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณ„ ์‹œ๊ฐ„๋ณต์žก๋„

- ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)

์žฅ์  : ์ตœ์„ ์ด O(n), ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ผ๋ถ€๋กœ ์‚ฌ์šฉ๋  ๋งŒํผ ํšจ์œจ์ ์ด๋‹ค

๋‹จ์  : ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n^2)๋กœ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ ํŽธ์ฐจ๊ฐ€ ์‹ฌํ•˜๋‹ค

 

- ์„ ํƒ ์ •๋ ฌ(Selection Sort)

์žฅ์  : ์„ ํƒ ์ •๋ ฌ ๋ฐ ๋ฒ„๋ธ” ์ •๋ ฌ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„์ด ์‰ฝ๋‹ค. ๊ตํ™˜์ด ๋งŽ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•  ๋•Œ ํšจ์œจ์ ์ด๋‹ค. ๋ฒ„๋ธ” ์ •๋ ฌ๊ณผ ๊ฐ™์ด O(n^2)๋ผ๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€์ง€๋งŒ, ๋ฒ„๋ธ” ์ •๋ ฌ๋ณด๋‹ค๋Š” ์กฐ๊ธˆ ๋” ๋น ๋ฅด๋‹ค

๋‹จ์  : O(n^2)๋ผ๋Š” ์‹œ๊ฐ„๋ณต์žก๋„

 

- ๋ฒ„๋ธ” ์ •๋ ฌ(Bubble Sort)

์žฅ์  : ์ธ์ ‘ํ•œ ๊ฐ’๋งŒ ๊ณ„์† ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋–„๋ฌธ์— ๊ตฌํ˜„์ด ์‰ฝ๊ณ  ์ฝ”๋“œ๊ฐ€ ์ง๊ด€์ ์ด๋‹ค

๋‹จ์  : ๋น„ํšจ์œจ์ ์ด๋‹ค. ์ตœ์„ ๊ณผ ์ตœ์•… ๋ชจ๋‘ O(n^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค

 

- ํ€ต ์ •๋ ฌ(Quick Sort)

์žฅ์  : ๊ธฐ์ค€๊ฐ’(Pivot)์— ์˜ํ•œ ๋ถ„ํ• ์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜๋Š” ์ •๋ ฌ๋กœ, ๋ถ„ํ•  ๊ณผ์ •์—์„œ logN๋งŒํผ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๊ณ  ์ „ ๊ณผ์ •์ด NlogN์œผ๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ํšจ์œจ์ ์ธ ํŽธ์ด๋‹ค

๋‹จ์  : ๊ธฐ์ค€๊ฐ’์— ๋”ฐ๋ผ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง„๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ NlogN์ด์ง€๋งŒ, ์ตœ์•…์ธ ๊ฒฝ์šฐ(ํ”ผ๋ฒ—์„ ๋ฐฐ์—ด์˜ ์ตœ์†Œ๊ฐ’์ด๋‚˜ ์ตœ๋Œ€๊ฐ’์œผ๋กœ ์„ ํƒํ•œ ๊ฒฝ์šฐ) O(n^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค

 

- ๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort)

์žฅ์  : ์ฟฝ ์ •๋ ฌ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์›๋ณธ ๋ฐฐ์—ด์„ ๋ฐ˜์”ฉ ๋ถ„ํ• ํ•˜๋ฉฐ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ณผ์ •์—์„œ logN๋งŒํผ ์†Œ์š”๋œ๋‹ค. ํ€ต ์ •๋ ฌ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ํ”ผ๋ฒ—์„ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  ๋ฌด์กฐ๊ฑด ์ ˆ๋ฐ˜์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”ผ๋ฒ—์— ๋”ฐ๋ฅธ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์—†์–ด ํ•ญ์ƒ O(NlogN)์˜ ์ •๋ ฌ ์ค‘ ์ค€์ˆ˜ํ•œ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค

๋‹จ์  : ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•˜๋‹ค. ์ž„์‹œ ๋ฐฐ์—ด์— ์›๋ณธ ๋ฐฐ์—ด์„ ๊ณ„์† ์˜ฎ๊ธฐ๋ฉด์„œ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๊ธฐ ๋•Œ๋ฌธ์—

์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ์—๋Š” ๋ณ‘ํ•ฉ ์ •๋ ฌ์€ ์•„์˜ˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค

 

(2) ์‹œ๊ฐ„๋ณต์žก๋„๋ณ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜

N : ๋ฌธ์ œ์— ์ฃผ์–ด์ง„ ๋ฐ˜๋ณต ๋ณ€์ˆ˜(๋ฐ์ดํ„ฐ)

-> ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์กฐ๊ธˆ ์—ฌ์œ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์‹œํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค

2. ์‹œ๊ฐ„์ž์›์˜ ํ•œ๊ณ„

2 - 1. CPU ์‹œ๊ฐ„์ž์›์˜ ํ•œ๊ณ„

- Logical Processor๋Š” 4๊ฐœ + Cores ์ˆซ์ž์™€ ์ฐจ์ด๋‚˜๋Š” ์ด์œ  : ํ•˜์ดํผ ์“ฐ๋ ˆ๋”ฉ

- ํ”„๋กœ์„ธ์Šค๋Š” ํ˜„์žฌ 251๊ฐœ

- ์“ฐ๋ ˆ๋“œ๋Š” 3312๊ฐœ ๋™์ž‘์ค‘

- ํ•œ์ •๋œ L.P ์œ„์—์„œ ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค์™€ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์šด์˜์ฒด์ œ๊ฐ€ CPU๋ฅผ ๊ฐ€์ƒํ™”์‹œ์ผœ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

 

* ํ”„๋กœ์„ธ์„œ๊ฐ€ ํ•œ๊ณ„์ธ ์ƒํ™ฉ์—์„œ

- ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์„œ์—์„œ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ”„๋กœ์„ธ์„œ๋Š” ์‹œ๋ถ„ํ• ์„ ํ†ตํ•ด CPU๊ฐ€ ์—ฌ๋ ค๊ฐœ์ธ ๋“ฏํ•œ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•œ๋‹ค

- ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฌธ๋งฅ ๊ตํ™˜์„ ํ†ตํ•ด ๋ฒˆ๊ฐˆ์•„ ์‹คํ–‰ํ•˜๋ฉฐ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•˜๋ฉฐ, ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•œ๋‹ค

https://cdaosldk.tistory.com/288

 

CS ๊ฐ•์˜ 3. ํ”„๋กœ์„ธ์Šค ์ƒ๋ช…์ฃผ๊ธฐ์™€ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ

์ถœ์ฒ˜ : ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ 0. ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ์„ธ์Šค 0-1. ํ”„๋กœ๊ทธ๋žจ์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ณณ : ๋ณด์กฐ ๊ธฐ์–ต์žฅ์น˜ 0-2. ํ”„๋กœ๊ทธ๋žจ์ด ๋กœ๋”ฉ๋˜๋Š” ๊ณณ : ์ฃผ ๊ธฐ์–ต์žฅ์น˜ 0-3. ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ์ฃผ์ฒด : ํ”„๋กœ์„ธ์Šค 0-4. ์ž‘์—…์„

cdaosldk.tistory.com

 

(1) ์Šค์ผ€์ค„๋ง์˜ ๋‹จ์œ„

https://cdaosldk.tistory.com/264

 

CS ๊ฐ•์˜ 2. CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‹ฌํ™”

์ถœ์ฒ˜ : ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ 1. CU์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ : ์Šค์ผ€์ค„๋ง 1) ์Šค์ผ€์ค„๋ง ์†Œ๊ฐœ - ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ์ฃผ์ฒด = ํ”„๋กœ์„ธ์Šค ex) ์นดํ†ก ์‹คํ–‰ - ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฃผ์ฒด = ์Šค๋ ˆ๋“œ ex) ์นดํ†ก ๋ฉ”์„ธ์ง€ ์†ก์ˆ˜์‹  CPU๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜

cdaosldk.tistory.com

 

(2) ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‰๊ฐ€๊ธฐ์ค€ : ๊ธฐ์กด ๋ธ”๋กœ๊ทธ ์ฐธ์กฐ

(3) ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ข…๋ฅ˜ : ๊ธฐ์กด ๋ธ”๋กœ๊ทธ ์ฐธ์กฐ

2 - 2. ๋ฉ”๋ชจ๋ฆฌ ์‹œ๊ฐ„์ž์›์˜ ํ•œ๊ณ„

1์ดˆ ๋™์•ˆ : ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ๊ฐ€ ์•ฝ 1 ~ 5์–ต๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•ด ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„

- ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ๊ฐ„์ž์›์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ ๋ฐ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์ž‘์„ 1๊ฐœ์˜ ์—ฐ์‚ฐ ๋‹จ์œ„๋กœ ๋‘”๋‹ค

- ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ์‹คํ–‰ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋ณธ ์—ฐ์‚ฐ์˜ ์‹คํ–‰ ํšŸ์ˆ˜๋กœ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ํ‰๊ฐ€ํ•œ๋‹ค

๊ธฐ๋ณธ ์—ฐ์‚ฐ

1) ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ : copy, move ๋“ฑ

2) ์‚ฐ์ˆ  ์—ฐ์‚ฐ : add, multiply ๋“ฑ

3) ์ œ์–ด ์—ฐ์‚ฐ : if, while ๋“ฑ

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

- O(1)์€ ์ƒ์ˆ˜ ์‹œ๊ฐ„, O(logn)์€ ๋กœ๊ทธ ์‹œ๊ฐ„, O(n)์€ ์„ ํ˜• ์‹œ๊ฐ„, O(nlogn)์ด๋‚˜ O(n^2)๊ฐ™์ด ๊ณฑ์…ˆ์œผ๋กœ ํ‘œํ˜„๋˜๋Š” ๊ฒƒ์€ ๋‹คํ•ญ ์‹œ๊ฐ„,

O(2^n)์€ ์ง€์ˆ˜ ์‹œ๊ฐ„, O(N!)์€ ํŒฉํ† ๋ฆฌ์–ผ ์‹œ๊ฐ„์ด๋‹ค

- n์ด 25์ด์ƒ์ธ ๊ฒฝ์šฐ ์ง€์ˆ˜ ์‹œ๊ฐ„์€ ์‹œ๊ฐ„์ดˆ๊ณผ(์ผ๋ฐ˜์ ์œผ๋กœ 1 ~ 5์ดˆ)๋ฅผ ํ†ต๊ณผํ•˜๊ธฐ ์–ด๋ ต๋‹ค

- n์ด 11 ์ดํ•˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ํŒฉํ† ๋ฆฌ์–ผ๋„ ์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ํ†ต๊ณผํ•˜๊ธฐ ์–ด๋ ต๋‹ค. n์˜ ํฌ๊ธฐ์— ๋”ฐ๋ฅธ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋Œ€๋žต ํ‘œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค

+ ์ผ๋ฐ˜์ ์ธ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ(์‹œ๊ฐ„์— ๋Œ€ํ•ด ๋ช…์‹œํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ)

~ ์ œํ•œ์‹œ๊ฐ„ : ์•ฝ 1 ~ 5์ดˆ, ์ œํ•œ ์‹œ๊ฐ„์€ ์–ธ์–ด๋งˆ๋‹ค ๋‹ค๋ฅด๋ฏ€๋กœ, ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์ค‘์š”ํ•˜๋‹ค

~ ์‹œ๊ฐ„๋ณต์žก๋„์˜ ์—ฐ์‚ฐ๋Ÿ‰์ด 1์–ต ์ด์ƒ์ด๋ฉด ๊ฑฐ์˜ ํ™•์‹คํ•˜๊ฒŒ ์‹œ๊ฐ„ ์ดˆ๊ณผ

 

- ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ ์„ฑ๋Šฅ : 1์ดˆ์— ์•ฝ 1์–ต ํšŒ ์—ฐ์‚ฐ ๊ฐ€๋Šฅ, 0.1์ดˆ์— ์•ฝ ์ฒœ๋งŒ ํšŒ ์—ฐ์‚ฐ ๊ฐ€๋Šฅ

 cf) log1000 = 10, log2000 = 11, log1000000 = 20

2 - 3. ๋„คํŠธ์›Œํฌ ์‹œ๊ฐ„์ž์›์˜ ํ•œ๊ณ„

- Connection Timeout

- Socket Timeout

- Read Timeout

 

TCP๋Š” ์—ฐ๊ฒฐ์ง€ํ–ฅ ํ”„๋กœํ† ์ฝœ๋กœ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•œ ํ›„ ๊ทธ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ์†ก์ˆ˜์‹ ๋œ๋‹ค.

์—ฐ๊ฒฐ์ง€ํ–ฅ ํ”„๋กœํ† ์ฝœ ์ž‘๋™๋ฐฉ์‹

1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ IP์™€ ํฌํŠธ๋ฅผ ์ด์šฉํ•ด ์„œ๋ฒ„์— ์ปค๋„ฅ์…˜์„ ์š”์ฒญํ•œ๋‹ค

2. ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ปค๋„ฅ์…˜ ์š”์ฒญ์— ์ˆ˜๋ฝ ์‘๋‹ต์„ ์ „์†กํ•œ๋‹ค

3. ์—ฐ๊ฒฐ์ด ์ˆ˜๋ฆฝ๋˜๊ณ , ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ์š”์ฒญ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค

4. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์š”์ฒญ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌํ•œ ํ›„, ์‘๋‹ต์„ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†กํ•œ๋‹ค

 

(1) Connection TImeout

- ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” 3 way handshake ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์„ ๋งบ๋Š”๋‹ค. ์ด ๊ณผ์ •์— ์†Œ์š”๋œ ์‹œ๊ฐ„์„ Connection Time์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด ์‹œ๊ฐ„์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฒƒ์ด Connection Timeout์ด๋‹ค

 

+ ์›์ธ 1 - ๋ฐฉํ™”๋ฒฝ์—์„œ ์ปค๋„ฅ์…˜ ์š”์ฒญ์„ ๋ง‰์€ ๊ฒฝ์šฐ

ํด๋ผ์ด์–ธํŠธ์˜ IP๊ฐ€ ๋ฐฉํ™”๋ฒฝ์— ํ—ˆ์šฉ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋กœ ๋Œ€๋ถ€๋ถ„์˜ Connection Timeout์€ ์—ฌ๊ธฐ์„œ ๋ฐœ์ƒํ•œ๋‹ค

+ ์›์ธ 2 - ์„œ๋ฒ„๊ฐ€ ๋„ˆ๋ฌด ๋ฐ”๋น  ์ปค๋„ฅ์…˜ ์š”์ฒญ์„ ๋ฐ›๊ธฐ ํž˜๋“ค๊ฑฐ๋‚˜ ์š”์ฒญ์„ ๋ฐ›์•˜์–ด๋„ ์‘๋‹ต์„ ์ค„ ์ˆ˜ ์—†๋Š” ์ƒํƒœ

์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ถ€์กฑํ•ด ์‘๋‹ต์„ ์ฃผ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ

+ ์›์ธ 3 - ์ปค๋„ฅ์…˜ํ’€์˜ ์ปค๋„ฅ์…˜์ด ๋ชจ๋‘ ์‚ฌ์šฉ์ค‘์ธ ๊ฒฝ์šฐ

๋ชจ๋‘ ์‚ฌ์šฉ์ค‘์ผ ๋•Œ ๊ฐ€๋” ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋กœ, ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์ด ์ด์ƒ์—†๋‹ค๋ฉด ์ปค๋„ฅ์…˜ํ’€์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ ค์•ผ ํ•œ๋‹ค

 

(2) Socket Timeout

- ๋ณดํ†ต ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์—ฐ๊ฒฐ์„ ๋งบ์€ ํ›„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒจํ‚ท์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†กํ•œ๋‹ค. ๊ฐ ํŒจํ‚ท ์ „์†ก ์‹œ ์‹œ๊ฐ„ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ์‹œ๊ฐ„์˜ ์ž„๊ณ„์น˜๋ฅผ ๋„˜๋Š” ๊ฒƒ์ด Socket Timeout์ด๋‹ค.

Socket Timeout์˜ Target์€ ์ „์ฒด ์‘๋‹ต์‹œ๊ฐ„์ด ์•„๋‹Œ ๊ฐœ๋ณ„ ์‘๋‹ต์‹œ๊ฐ„์ด๋‹ค

 

(3) Read Timeout

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

 

+ ์›์ธ 1 : ์„œ๋ฒ„์—์„œ ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ

์‹œ๊ฐ„ ์†Œ์š”์˜ ์›์ธ์€ ๋‹ค์–‘ํ•  ์ˆ˜ ์žˆ๋‹ค. SQL ์ฟผ๋ฆฌ, ๋ฝ, ํ”„๋กœ๊ทธ๋žจ์ด๋“œ ๊ทธ ๋ฐ–์˜ ๋‹ค๋ฅธ ์„œ๋ฒ„์™€ ์ธํ„ฐํŽ˜์ด์Šค ์ค‘ ์‘๋‹ต์ด ์˜ค์ง€ ์•Š๋Š” ๋“ฑ์˜ ์›์ธ์ด ์žˆ๋‹ค

+ ์›์ธ 2 : ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ ๋Œ€๋Ÿ‰ ์กฐํšŒ

๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๊ฒฝ์šฐ, Read Timeout์„ ๋Š˜๋ ค์ค˜์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ์ด ๊ฒฝ์šฐ OOM์„ ๋ง‰๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ๋„ ๋Š˜๋ ค์•ผ ํ•œ๋‹ค

+์›์ธ 3 : ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ

๋“œ๋ฌผ๊ฒŒ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ์ด ์ข์€ ๊ฒฝ์šฐ ๋ณ‘๋ชฉ ํ˜„์ƒ์œผ๋กœ ์‘๋‹ต์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค

 

* Connection Timeout๊ณผ Socket Timeout์€ ๋ชจ๋‘ ํ•„์š”ํ•˜๋‹ค. ๋‘ ๊ฐ€์ง€ Timeout์„ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด URL ์ ‘์† ์‹œ ๋ฌดํ•œ ๋Œ€๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค

 

+ ๊ทธ ์™ธ ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜

- ์ปค๋„ฅ์…˜ํ’€(์‹œ๊ฐ„ ์ž์› ํ•œ๊ณ„) : ์ปค๋„ฅ์…˜์„ ๋งบ์„ ๋•Œ๋งˆ๋‹ค ์†Œ์š”๋˜๋Š” ์ž์›์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์ƒํƒœ ๋“ฑ์— ๋”ฐ๋ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค

 

๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์˜ค๋ฅ˜

~ Connection Refused : ํด๋ผ์ด์–ธํŠธ๊ฐ€ IP์™€ ํฌํŠธ๋ฅผ ์ด์šฉํ•ด ์ปค๋„ฅ์…˜์„ ์š”์ฒญํ–ˆ๋Š”๋ฐ ์š”์ฒญ์ด ๋“ค์–ด๊ฐ„ ์„œ๋ฒ„์— ํ•ด๋‹น ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ Listenํ•˜๋Š” ์„œ๋ฒ„๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•œ๋‹ค

์›์ธ 1 - ํด๋ผ์ด์–ธํŠธ์—์„œ IP๋‚˜ ํฌํŠธ๋ฅผ ์ž˜๋ชป ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ

์›์ธ 2 - ์„œ๋ฒ„๊ฐ€ ์ค‘์ง€๋˜์—ˆ๊ฑฐ๋‚˜ ์žฌ ๊ธฐ๋™์ค‘์ธ ๊ฒฝ์šฐ

~ Too Many Open Files

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

์›์ธ 1 - ulimit์˜ open files ๊ฐ’์ด ๋„ˆ๋ฌด ์ž‘๋‹ค ~ open files ๊ฐ’์ด 1024 ๋“ฑ์œผ๋กœ ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด ํŒŒ์ผ๊ณผ ์†Œ์ผ“์„ ์—ด ์ˆ˜ ์—†์–ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ulimit ๋ช…๋ น์œผ๋กœ ์กฐ์ • ๊ฐ€๋Šฅํ•˜๋‹ค

์›์ธ 2 - ํŒŒ์ผ์ด๋‚˜ ์†Œ์ผ“์„ ์—ฐ ํ›„ ๋‹ซ์ง€ ์•Š์•˜์„ ๋•Œ ~ ์—ด๊ณ  ๋‚˜์„œ ๋‹ซ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ open files์˜ ๊ฐ’์„ ๊ณ„์† ๋น„ํšจ์œจ์ ์œผ๋กœ ์ฐจ์ง€ํ•˜๊ฒŒ ๋˜๋ฉฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค

์›์ธ 3 - ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์€ ์†Œ์ผ“์„ ์—ด๊ณ  ๋‹ซ์„ ๋•Œ ~ ํ”„๋กœํ† ์ฝœ(ํŠนํžˆ HTTP)์— ๋”ฐ๋ผ ์ปค๋„ฅ์…˜์ด OS์—์„œ ๋Š์–ด์ง€๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค. ์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์—์„œ ์—ฐ๊ฒฐ์„ ๋‹ซ์•„๋„ OS์—์„œ ์‹ค์ œ๋กœ ๋‹ซํžˆ๊ธฐ ๊นŒ์ง€ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋ฏ€๋กœ, OS์— ์ด๋Ÿฐ ์—ฐ๊ฒฐ์ด ์Œ“์ผ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๋ง‰๊ธฐ์œ„ํ•ด ์ปค๋„ฅ์…˜ํ’€์„ ํ™œ์šฉํ•œ๋‹ค

728x90