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

์ „์ฒด๋ณด๊ธฐ114

์•„์Šคํ‚ค์ฝ”๋“œ(ASCII)๊ฐ€ 128๊ฐœ๋ฐ–์— ์—†๋Š” ์ด์œ  ์•„์Šคํ‚ค์ฝ”๋“œ๋ž€? ASCII (American Standard Code for Information Interchange, ๋ฏธ๊ตญ ์ •๋ณด ๊ตํ™˜ ํ‘œ์ค€ ๋ถ€ํ˜ธ)๋ž€ ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ€์žฅ ์ดˆ์ฐฝ๊ธฐ ๋ฌธ์ž ์ง‘ํ•ฉ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๋‚˜๋ฌด์œ„ํ‚ค์˜ ์„ค๋ช…์„ ๋ง๋ถ™์˜€์œผ๋‹ˆ ๊ฐ€๋ณ๊ฒŒ ๋ณด์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์˜๋ฌธ ํ‚ค๋ณด๋“œ๋กœ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ธฐํ˜ธ๋“ค์ด ํ• ๋‹น๋˜์–ด ์žˆ๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ถ€ํ˜ธ ์ฒด๊ณ„์ด๋‹ค. ๋งค์šฐ ๋‹จ์ˆœํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋Š ์‹œ์Šคํ…œ์—์„œ๋„ ์ ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. 8๋น„ํŠธ ์ปดํ“จํ„ฐ์—์„œ๋Š” ์•„์Šคํ‚ค ์ฝ”๋“œ์— 1๋น„ํŠธ๋ฅผ ๋”ํ•ด ๋” ๋งŽ์€ ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ์ง€๊ฐ€ ์ƒ๊ฒผ๊ณ , ์•„์Šคํ‚ค ์ฝ”๋“œ์— ์—†๋Š” ๋ฌธ์ž๋ฅผ ์ถ”๊ฐ€ํ•ด "์ฝ”๋“œํŽ˜์ด์ง€"๋ฅผ ์ œ์ •ํ•˜์˜€๋‹ค. IBM PC์—์„œ๋Š” "Codepage 437"(๋ผํ‹ด์–ด, ์Œ์„ฑ๊ธฐํ˜ธ, ์ˆ˜ํ•™๊ธฐํ˜ธ, ๊ด˜์„ , ํŠน์ˆ˜๋ฌธ์ž ๋“ฑ ์ถ”๊ฐ€)์„ ์‚ฌ์šฉํ–ˆ๊ณ , ํ™•์žฅ๋œ.. 2023. 10. 7.
10์ง„์ˆ˜ -> 2์ง„์ˆ˜/16์ง„์ˆ˜ ๋ณ€ํ™˜(2์ง„์ˆ˜/16์ง„์ˆ˜ -> 10์ง„์ˆ˜ ๋ณ€ํ™˜) ์˜ค๋Š˜์€ 10์ง„์ˆ˜, 2์ง„์ˆ˜, 16์ง„์ˆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ง„์ˆ˜๋ฒ•๋„ ์žˆ๋Š”๋ฐ ์™œ 10์ง„์ˆ˜, 2์ง„์ˆ˜, 16์ง„์ˆ˜๋งŒ ๋‹ค๋ฃจ๋ƒ๊ณ ์š”? ๋จผ์ € 10์ง„์ˆ˜๋Š” ๋‹น์—ฐํžˆ ์‚ฌ๋žŒ์—๊ฒŒ ์ต์ˆ™ํ•ฉ๋‹ˆ๋‹ค. ์†๊ฐ€๋ฝ ๊ฐœ์ˆ˜๊ฐ€ 10๊ฐœ์ธ ๊ฒƒ์„ ๋”ฐ๋ผ ์‚ฌ๋žŒ์ด ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ์ˆซ์ž ์ฒด๊ณ„๋Š” 10์ง„์ˆ˜์ž…๋‹ˆ๋‹ค. 2์ง„์ˆ˜๋Š” ์ปดํ“จํ„ฐ์—๊ฒŒ ์ต์ˆ™ํ•ฉ๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ๋Š” 0๊ณผ 1๋กœ๋งŒ ์—ฐ์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ๊ทธ๋Ÿฌ๋ฉด 16์ง„์ˆ˜๋Š” ์–ด๋–จ๊นŒ์š”? ์šฐ๋ฆฌ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ํŠน์ • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์œ„์น˜ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐ์–ด๋ณด๋ฉด 0x25F7C14 ์™€ ๊ฐ™์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. 0x๋ผ๊ณ  ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๋ฉฐ 25F7C14๊ฐ€ ๋ฐ”๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์ธ๋ฐ ์ด๊ฒŒ 16์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ฆ‰, 16์ง„์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์‚ฌ๋žŒ์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ๋‚˜ํƒ€๋‚ธ ์ปดํ“จํ„ฐ์™€ ์‚ฌ๋žŒ์˜ ์ค‘๊ฐ„ ํ‘œํ˜„๋‹จ๊ณ„๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ.. 2023. 10. 5.
ํด๋ž˜์Šค์˜ ํฌ๊ธฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ํด๋ž˜์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์€ ๊ฒฐ๊ตญ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์œผ๋กœ ํ™˜์›๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™€์„œ CPU๊ฐ€ ์‹คํ–‰ํ•˜๊ณ  ์‹คํ–‰ ์ค‘์— ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์„ ์ฝ๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๋‚ด์šฉ์„ ์“ฐ๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ์ „๋ถ€๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋Š” ๋ง์ž…๋‹ˆ๋‹ค. class CTest { public: char m_Char; int m_Int; double m_Double; static int m_SInt; int MemberFunc() { return m_Int; } }; ์œ„ ํด๋ž˜์Šค CTest์˜ ์ •์  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ m_SInt์™€ ๋ฉค๋ฒ„ ํ•จ์ˆ˜ MemberFunc๋Š” CTest t ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋Š” ๊ฐ.. 2023. 9. 14.
์ปค๋„(Kernel)๊ณผ ์ธํ„ฐํŽ˜์ด์Šค(Interface) ์ปค๋„(Kernel) ์šด์˜์ฒด์ œ์˜ ์ปค๋„์€ ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์œผ๋กœ, ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•ต์‹ฌ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์ปค๋„์€ ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ๊ฒƒ์„ ์™„์ „ํžˆ ์ œ์–ดํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ ์ž์›๊ณผ ํ”„๋กœ์„ธ์Šค, ์ž…์ถœ๋ ฅ ๋“ฑ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. 1. ์—ญํ• ๊ณผ ๊ธฐ๋Šฅ ์ž์› ๊ด€๋ฆฌ: ์ปค๋„์€ ์‹œ์Šคํ…œ ์ž์›์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž์›์—๋Š” CPU ์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„, ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ปค๋„์€ ์ด๋Ÿฌํ•œ ์ž์›์„ ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๊ณต์ •ํ•˜๊ฒŒ ํ• ๋‹นํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋“œ์›จ์–ด ์ถ”์ƒํ™”: ์ปค๋„์€ ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ง์ ‘ ๋‹ค๋ฃจ์ง€ ์•Š๊ณ ๋„ ์ปค๋„์„ ํ†ตํ•ด ํ•˜๋“œ์›จ์–ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ: ์ปค๋„์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑ, ์ข…๋ฃŒ ๋ฐ ์Šค์ผ€์ค„๋งํ•˜๋ฉฐ, ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ์—์„œ ๊ฐ.. 2023. 9. 12.
ํฐ๋…ธ์ด๋งŒ ๊ตฌ์กฐ๋ž€? ํฐ๋…ธ์ด๋งŒ ๊ตฌ์กฐ(Von Neumann architecture) ํฐ๋…ธ์ด๋งŒ ๊ตฌ์กฐ(Von Neumann architecture)๋Š” ํ˜„๋Œ€ ์ปดํ“จํ„ฐ ์•„ํ‚คํ…์ฒ˜์˜ ์ค‘์š”ํ•œ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋กœ, ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์„ค๊ณ„์™€ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด ์•„ํ‚คํ…์ฒ˜๋Š” ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•˜๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์ด ์ด๋Ÿฌํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํฐ๋…ธ์ด๋งŒ ๊ตฌ์กฐ์˜ ์ฃผ์š” ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1. ์ค‘์•™ ์ฒ˜๋ฆฌ ์žฅ์น˜(Central Processing Unit, CPU): ํฐ๋…ธ์ด๋งŒ ๊ตฌ์กฐ์˜ ํ•ต์‹ฌ์€ CPU๋กœ, ์ด๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. 2. ๋ฉ”๋ชจ๋ฆฌ(Memory): ํฐ๋…ธ์ด๋งŒ ๊ตฌ์กฐ์—์„œ๋Š” ๋ฐ์ดํ„ฐ์™€ ํ”„๋กœ๊ทธ๋žจ ๋ช…๋ น์–ด๊ฐ€ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ.. 2023. 9. 5.
[C++] 22. ์Šค๋ ˆ๋“œ ํ’€(Thread Pool), ์ƒ์‚ฐ์ž ์†Œ๋น„์ž ํŒจํ„ด(Producer-consumer) ์ง€๋‚œ ์‹œ๊ฐ„์—์„œ๋Š” ์Šค๋ ˆ๋“œ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•  ์ ๊ณผ ์Šค๋ ˆ๋“œ์˜ ์‹ค์ œ ์‚ฌ์šฉ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค. [C++] 21. ์Šค๋ ˆ๋“œ ๊ฒฝ์Ÿ ์ƒํƒœ(Race condition), ๋ฎคํ…์Šค(mutex), ๋ฐ๋“œ๋ฝ, std::conditional_variable, std::async ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์Šค๋ ˆ๋“œ ํŒจํ‚ค์ง€์˜ ๋งˆ์ง€๋ง‰ ์‹œ๊ฐ„, ์Šค๋ ˆ๋“œ ํ’€์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด์‹œ์ฃ ! ์ƒ์‚ฐ์ž-์†Œ๋น„์ž ํŒจํ„ด(Producer-Consumer) Producer-Consumer ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ๋””์ž์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ, ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ์ž‘์—…์„ ๋ถ„๋ฆฌํ•˜๊ณ  ์กฐ์ ˆํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒจํ„ด์€ ๋‹ค์ˆ˜์˜ ์ƒ์‚ฐ์ž(Producer)์™€ ์†Œ๋น„์ž(Consumer) ๊ฐ„์˜ ํ˜‘๋ ฅ์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ƒ์‚ฐ์ž ์†Œ๋น„์ž ํŒจํ„ด์€ ๋ฐ์ดํ„ฐ์˜ ์ง„์ž…(income).. 2023. 9. 4.