์ ์ฒด๋ณด๊ธฐ114 ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก(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. Context Switching(๋ฌธ๋งฅ ๊ตํ) Context Switching(๋ฌธ๋งฅ ๊ตํ) ์ด๋? ๋ฌธ๋งฅ๊ตํ(Context Switching)์ ์ปดํจํฐ ์์คํ ์์ ์ฌ๋ฌ ์์ (ํน์ ํ๋ก์ธ์ค ๋๋ ์ค๋ ๋)์ด ๋์์ ์คํ๋๋ ๊ฒฝ์ฐ, ํ ์์ ์์ ๋ค๋ฅธ ์์ ์ผ๋ก ์ ํํ๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋ค์ค ์์ (multitasking) ํ๊ฒฝ์์ ๋ฐ์ํ๋ ์ค์ํ ๊ฐ๋ ์ผ๋ก, ์ด์์ฒด์ ๊ฐ ๊ฐ ์์ ์ CPU ์๊ฐ์ ํ ๋นํ๊ณ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์คํ๋๋๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฌธ๋งฅ๊ตํ์ด ๋ฐ์ํ๋ ์ํฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 1. ์ธํฐ๋ฝํธ(Interrupts): ํ๋์จ์ด๋ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ฌ ํ์ฌ ์คํ ์ค์ธ ์์ ์ ๋ฉ์ถ๊ณ ๋ค๋ฅธ ์์ ์ ์คํํด์ผ ํ ๋๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ์ถ๋ ฅ ์์ ์ด ์๋ฃ๋์์ ๋ ํ๋์จ์ด๊ฐ CPU์ ์๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์ด์ ํด๋นํฉ๋๋ค. 2. ์ค์ผ์ค๋ง: ์ด์.. 2023. 8. 28. OS๊ฐ ๊ด๋ฆฌํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์ด์์ฒด์ ๊ฐ ๊ด๋ฆฌํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ปดํจํฐ ์์คํ ์์ ํ๋ก์ธ์ค๋ค์ด ์คํ๋๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์๋ฏธํฉ๋๋ค. ์ด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์์ ํ๊ฒ ์คํ๋๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ฒฉ๋ฆฌ๋๋๋ก ๊ด๋ฆฌ๋ฉ๋๋ค. ๋ค์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ๋ก์ธ์ค์ ์คํ ๋จ๊ณ์ ์ญํ ์ ๋ฐ๋ผ ๋ถ๋ฅ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ์์ต๋๋ค. 1. ์ฝ๋(Code) ์์ญ: - ์คํ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ์์ญ์ ๋๋ค. - ํ๋ก์ธ์ค์ ๋ช ๋ น์ด๋ค์ด ์ ์ฅ๋์ด CPU์ ์ํด ์คํ๋ฉ๋๋ค. - ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ค์ ๋์ด ์์ด ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ์์ ํ ์ ์์ต๋๋ค. 2. ๋ฐ์ดํฐ(Data) ์์ญ: - ์ ์ญ ๋ณ์์ ์ ์ (static) ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ์ ๋๋ค. - ํ๋ก๊ทธ๋จ์ ์์๊ณผ ํจ๊ป ํ ๋น๋๋ฉฐ .. 2023. 8. 27. ๊ฐ์๋ฉ๋ชจ๋ฆฌ(Virtual Memory)๋ ๋ฌด์์ผ๊น? ๊ฐ์๋ฉ๋ชจ๋ฆฌ(Virtual Memory) ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ปดํจํฐ ์์คํ ์์ ์ค์ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ(RAM)๋ณด๋ค ๋ ํฐ ์ฉ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ๊ณตํ๋ ๊ธฐ์ ์ ๋๋ค. ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด ์ผ๋ถ ๋๋ ์ ์ฒด๊ฐ ์ค์ RAM์ ๋ก๋๋์ง๋ง, ๋ชจ๋ ํ๋ก๊ทธ๋จ ๋ฐ ๋ฐ์ดํฐ๊ฐ ํ ๋ฒ์ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด๊ฐ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ฐ ์ํฉ์์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ถ์กฑ์ ๋ณด์ํ์ฌ ์์คํ ์ฑ๋ฅ์ ํฅ์์ํค๋ ์ญํ ์ ํฉ๋๋ค. ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์คํ ์ ํ๋ก์ธ์ค๊ฐ ํ์๋ก ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์์ ๋จ์์ธ ํ์ด์ง๋ก ๋ถํ ํ๊ณ , ์ด ํ์ด์ง๋ค์ ๋ฌผ๋ฆฌ์ RAM๊ณผ ์ ์ฅ์ฅ์น(ํ๋ ๋์คํฌ ๋ฑ)์ ์ผ๋ถ์ธ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋งคํํฉ๋๋ค. ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ์ผ๋ถ ํ์ด์ง๋ง ์ค์ RAM์ ์ ์ฌ๋๊ณ , ํ์ํ ํ์ด์ง๊ฐ ์ฌ์ฉ๋ ๋ ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ต์ฒดํ์ฌ ๋ฌผ.. 2023. 8. 23. [C++] 21. ์ค๋ ๋ ๊ฒฝ์ ์ํ(Race condition), ๋ฎคํ ์ค(mutex), ๋ฐ๋๋ฝ, std::conditional_variable, std::async ์ง๋ ํฌ์คํ ์์๋ ๋ฉํฐ์ค๋ ๋์ ๋ฉํฐ ํ๋ก์ธ์ค, std::thread์ ๋ํด ์ดํด๋ดค์ต๋๋ค. [C++] 20. ๋ฉํฐ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ(Multi-Threads) ์ค๋์ ์ด์ด์ ์ค๋ ๋๋ผ๋ฆฌ์ ์ถฉ๋ ๋ฌธ์ ์ lock ๋ฌธ์ ๋ฅผ ์ดํด๋ณด๊ณ , ์ค๋ ๋๋ค(workers)์ด wait์ํ์์ ๋๊ธฐํ๋ค๊ฐ ์์ ์ด ์์ ๋ ์์์ ์ฒ๋ฆฌํ๋ ์ค๋งํธํ ์ด์๋ฐฉ์์ ๋ํด ์์๋ณด๊ณ ์ ํฉ๋๋ค. ๊ณต์ ์์(Shared Resources)๊ณผ ์๊ณ์์ญ(Critical Section) ์ค๋ ๋(Thread)๋ ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์์ ์คํ ๋จ์๋ก, ํ๋์ ํ๋ก์ธ์ค ์์ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค. ์ด๋ ์ค๋ ๋ ๊ฐ์๋ ๊ณต์ ์์(Shared Resource)๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ณต์ ์์์ ์์ ํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ์๊ณ์.. 2023. 8. 22. ์ด์ 1 ยทยทยท 7 8 9 10 11 12 13 ยทยทยท 19 ๋ค์