์ ์ฒด ๊ธ118 ํด๋์ค์ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ ํด๋์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ค๋ ๊ฒ์ ๊ฒฐ๊ตญ 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. ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก(PCB, Process Control Block) ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก(PCB)์ ์ด์ ์ฒด์ ์์ ๋ค์ค ์์ ์ ๊ด๋ฆฌํ๊ณ ํ๋ก์ธ์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์คํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค. ์ด ํฌ์คํ ์์๋ PCB์ ๊ฐ๋ ๊ณผ ์ญํ , ๊ทธ๋ฆฌ๊ณ ์ด์ ์ฒด์ ์์ ๊ด๋ จ์ฑ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก(PCB, Process Control Block) ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก(PCB)์ ์ด์ ์ฒด์ ์ ๋ฐ์ ํ ์ฐ๊ด์ด ์๋ ๊ฐ๋ ์ ๋๋ค. ์ด์ ์ฒด์ ๋ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋์์ ๊ด๋ฆฌํ๊ณ ์คํํ๋ ์ญํ ์ ์ํํ๋๋ฐ, ์ด๋ฅผ ์ํด PCB๋ฅผ ์ฌ์ฉํฉ๋๋ค. PCB๋ ๊ฐ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์ถ์ ํ๋ ์ญํ ์ ํฉ๋๋ค. PCB๋ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก, ๊ฐ ํ๋ก์ธ์ค๋ง๋ค ํ๋์ฉ ํ ๋น๋ฉ๋๋ค. PCB์๋ ํด๋น ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ์ฌ๋ฌ ๊ฐ์ง ์ ๋ณด๋ค์ด ์ ์ฅ๋ฉ๋๋ค. ์ด ์ ๋ณด.. 2023. 8. 30. IPC(Inter-Process Communication, ํ๋ก์ธ์ค ๊ฐ ํต์ ) IPC(Inter-Process Communication) ์ด๋? ํ๋ก์ธ์ค ๊ฐ ํต์ (Inter-Process Communication, IPC)์ ๋ค๋ฅธ ํ๋ก์ธ์ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ฑฐ๋ ์ํธ์์ฉํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์ ๋งํฉ๋๋ค. ๋ค์ํ IPC ๊ธฐ๋ฒ์ด ์กด์ฌํ๋ฉฐ, ๊ฐ๊ฐ์ ๊ธฐ๋ฒ์ ๋ค๋ฅธ ์ํฉ์ด๋ ์๊ตฌ์ ๋ง๊ฒ ์ ํ๋์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋ฉํฐ์ค๋ ๋์ ํจ๊ป ๋ฉํฐ ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ ์ ์ก ๊ธฐ์ ์ ๋๋ค. ๋ค์์ ๋ํ์ ์ธ IPC ๋ฐฉ๋ฒ์ ๋๋ค. 1. ํ์ดํ(Pipes): ํ์ดํ๋ ํ ํ๋ก์ธ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ ๋จ๋ฐฉํฅ ํต์ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์ ํ๋ก์ธ์ค ์ฌ์ด์์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. 2. ๋ช ๋ช ๋ ํ์ดํ(Named Pipes): ๋ช ๋ช ๋ ํ์ดํ๋ ํ์ผ ์์คํ ๋ด์ ํน๋ณํ ํ์ผ๋ก ์์ฑ๋๋ฉฐ, .. 2023. 8. 29. ์ด์ 1 ยทยทยท 7 8 9 10 11 12 13 ยทยทยท 20 ๋ค์