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

์ „์ฒด ๊ธ€106

์ปดํ“จํ„ฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ธฐ์ˆ  ๋ฉ”์ธ๋ณด๋“œ ๋‚ด ๋ฉ”๋ชจ๋ฆฌ์™€ ์ฃผ๋ณ€์žฅ์น˜๋Š” ์‹œ์Šคํ…œ๋ฒ„์Šค(FSB)๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , CPU ๋‚ด ALU, ์ œ์–ด์žฅ์น˜, ๋ ˆ์ง€์Šคํ„ฐ๋Š” CPU ๋‚ด๋ถ€ ๋ฒ„์Šค(BSB)๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์†๋„๋Š” ์‹œ์Šคํ…œ ๋ฒ„์Šค์˜ ์†๋„์™€ ๊ฐ™๊ณ , CPU์˜ ์†๋„๋Š” CPU ๋‚ด๋ถ€ ๋ฒ„์Šค์˜ ์†๋„์™€ ๊ฐ™๋‹ค. CPU ๋‚ด๋ถ€ ๋ฒ„์Šค์˜ ์†๋„๊ฐ€ ์‹œ์Šคํ…œ ๋ฒ„์Šค์˜ ์†๋„ ๋ณด๋‹ค ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„๋กฏํ•œ ์ฃผ๋ณ€์žฅ์น˜์˜ ์†๋„๊ฐ€ CPU์˜ ์†๋„๋ฅผ ๋”ฐ๋ผ๊ฐ€์ง€ ๋ชปํ•œ๋‹ค. ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ธฐ์ˆ ์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ž‘์—… ์†๋„๋ฅผ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ ๊ธฐ์ˆ  ์ค‘ ์šด์˜์ฒด์ œ์™€ ๊ด€๋ จ๋œ ๊ธฐ์ˆ ์„ ์‚ดํŽด๋ณด์ž. ๋ฒ„ํผ ๋ฒ„ํผ๋Š” ์†๋„์— ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๋‘ ์žฅ์น˜ ์‚ฌ์ด์—์„œ ๊ทธ ์ฐจ์ด๋ฅผ ์™„ํ™”ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋ณด๊ด€ ์ฐฝ๊ณ ์—์„œ ๊ทค 5๊ฐœ๋ฅผ ๋„๋งˆ๋กœ ์˜ฎ๊ธธ ๋•Œ ํ•˜๋‚˜์”ฉ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฐ”๊ตฌ๋‹ˆ๋กœ 5๊ฐœ๋ฅผ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ๋ฒ„ํผ์— ํ•ด๋‹นํ•œ๋‹ค. ์ผ.. 2023. 1. 7.
๊ต์ฐฉ์ƒํƒœ(DeadLock) ์•„์‚ฌ ํ˜„์ƒ์€ ์šด์˜์ฒด์ œ๊ฐ€ ์ž˜๋ชป๋œ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—…์ด ์ง€์—ฐ๋˜๋Š” ๋ฌธ์ œ. ๊ต์ฐฉ ์ƒํƒœ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„œ๋กœ ์–‘๋ณดํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ. ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์šด์˜์ฒด์ œ๊ฐ€ ๊ฐ•์••์ ์œผ๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. ๊ต์ฐฉ ์ƒํƒœ์˜ ๋ฐœ์ƒ ๊ต์ฐฉ ์ƒํƒœ๋Š” ์‹œ์Šคํ…œ ์ž์›, ๊ณต์œ  ๋ณ€์ˆ˜(๋˜๋Š” ํŒŒ์ผ), ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ์‹œ์Šคํ…œ ์ž์› ์˜ˆ๋ฅผ ๋“ค๋ฉด, ํ”„๋กœ์„ธ์Šค P1์€ ํ”„๋ฆฐํ„ฐ๋ฅผ ํ• ๋‹น ๋ฐ›์€ ํ›„ CD ๋ ˆ์ฝ”๋”๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ํ”„๋กœ์„ธ์Šค P2๋Š” CD ๋ ˆ์ฝ”๋”๋ฅผ ํ• ๋‹น ๋ฐ›์€ ํ›„ ํ”„๋ฆฐํ„ฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ๊ต์ฐฉ ์ƒํƒœ ๋ฐœ์ƒ ์—ฌ๊ธฐ์„œ ํ”„๋ฆฐํ„ฐ์™€ CD ๋ ˆ์ฝ”๋“œ ๊ฐ™์€ ์ž์›์€ ์ž„๊ณ„๊ตฌ์—ญ์œผ๋กœ ๋ณดํ˜ธ๋ฐ›๊ณ  ์žˆ์Œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ณต์œ ํ•  ์ˆ˜ ์—†๋Š” ์ž์›์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒ(๋Œ€ํ‘œ์ ) ๊ณต์œ  ๋ณ€์ˆ˜ ์˜ˆ๋ฅผ ๋“ค๋ฉด, ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•œ ๊ณต์œ  ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋ฉด์„œ ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๋„๋Š” ๊ฒฝ์šฐ ํ•œ .. 2023. 1. 3.
์‹ฑ๊ธ€ํ†ค ํŒจํ„ด โœ… ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋  ๋•Œ ์–ด๋–ค ํด๋ž˜์Šค๊ฐ€ ์ตœ์ดˆ ํ•œ๋ฒˆ๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ (Static) ๊ทธ ๋ฉ”๋ชจ๋ฆฌ์— ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธํŒจํ„ด. ์ƒ์„ฑ์ž๊ฐ€ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ํ˜ธ์ถœ๋˜๋”๋ผ๋„ ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋Š” ํ•˜๋‚˜๊ณ  ์ตœ์ดˆ ์ƒ์„ฑ ์ดํ›„์— ํ˜ธ์ถœ๋œ ์ƒ์„ฑ์ž๋Š” ์ตœ์ดˆ์— ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (์ž๋ฐ”์—์„  ์ƒ์„ฑ์ž๋ฅผ private๋กœ ์„ ์–ธํ•ด์„œ ์ƒ์„ฑ ๋ถˆ๊ฐ€ํ•˜๊ฒŒ ํ•˜๊ณ  getInstance()๋กœ ๋ฐ›์•„์“ฐ๊ธฐ๋„ ํ•จ) => ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ๋‹จ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. (์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š” ํ•  ๋•Œ ๋˜‘๊ฐ™์€ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋™์ผ(๊ธฐ์กด) ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒํ•จ) โœ… ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์“ฐ๋Š” ์ด์œ  ๊ณ ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์–ป์œผ๋ฉด์„œ ํ•œ๋ฒˆ์˜ new๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ ๋˜ํ•œ ์‹ฑ๊ธ€ํ†ค.. 2023. 1. 3.
Context Switching(๋ฌธ๋งฅ ๊ตํ™˜) 2023. 1. 2.
์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๊ฟ€ํŒ! โœ… ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ Tip ํ•จ์ˆ˜ ์ธ์ž ์ค„์ด๊ธฐ ํ•จ์ˆ˜ ์ธ์ž๊ฐ€ ๋งŽ์œผ๋ฉด ํ•จ์ˆ˜ ํ˜ธ์ถœ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ตฌ์กฐ์ฒด๋‚˜ ํด๋ž˜์Šค๋กœ ๋ฌถ์–ด์„œ ๊ทธ๊ฒƒ์„ ์ฐธ์กฐ๋กœ ์ „๋‹ฌํ•˜๋ฉด 30% ์†๋„๋ฅผ ์ฆ๊ฐ€ ์‹œํ‚จ๋‹ค. const ์„ ์–ธ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” const ์ƒ์ˆ˜ ๊ฐ์ฒด๋ฅผ ์ผ๋ฐ˜์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๋จธ์‹  ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์‚ฐ์ด ๋”์šฑ ๋น ๋ฅด๋‹ค. ์กฐ๊ฑด๋ฌธ ๋‚ด ์—ฐ์‚ฐ ์ค„์ด๊ธฐ ์กฐ๊ฑด๋ฌธ ์•ˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์กฐ๊ฑด ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ๋’ค๋กœ ๋ณด๋‚ด์ž. ๋งŒ์•ฝ if ( getValue() > 3000 || isExist ) ๊ฐ€ ์žˆ๋‹ค๋ฉด if ( isExist || getValue > 3000)๋กœ ๋ฐ”๊พธ์ž. isExist๊ฐ€ true๋ผ๋ฉด ๋’ค ์—ฐ์‚ฐ์€ ์ƒ๋žตํ•ด์„œ ์„ฑ๋Šฅ์— ๋„์›€์„ ์ค€๋‹ค. ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ผ€์ด์Šค๋ฅผ Switch ์•ž์ชฝ์œผ๋กœ ๋ฐฐ์น˜ switch ์ฝ”๋“œ๋Š” ์œ„์—์„œ ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ์ฒด.. 2022. 12. 30.
[C/C++] unsigned์™€ signed์˜ ๊ฐ’ ๋น„๊ต ์ฃผ์˜ unsigned ์ž๋ฃŒํ˜•๊ณผ signed ์ž๋ฃŒํ˜•์€ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ™์€ ์ž๋ฃŒํ˜•์ด๋ผ๋„ unsigned์™€ signed์˜ ๊ฐ’์„ ๋น„๊ตํ•  ๋•Œ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ warning์„ ๋ฑ‰์–ด์ค๋‹ˆ๋‹ค. unsigned int uVal = 3; int nVal = -1; if (uVal > nVal) { printf("unsigned 3 is bigger than signed -1\n"); } else { printf("signed -1 is bigger than unsigned 3\n"); } ์–ด๋–ค ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค„๊นŒ์š”? ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” else๋ฌธ์ธ "signed -1 is bigger than unsigned 3"์ด ์ถœ๋ ฅ ๋ฉ๋‹ˆ๋‹ค. ํ†ต์ƒ์ ์œผ๋กœ uVal์ด nVal๋ณด๋‹ค ํฌ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒ ์ง€๋งŒ unsigned์™€ signed๋ฅผ.. 2022. 3. 23.