์ ์ฒด ๊ธ106 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. [C++] 20. ๋ฉํฐ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ(Multi-Threads) ๋ฉํฐ์ค๋ ๋(Multi-Threads) ๋ฉํฐ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ํ๋์ ์ปดํจํฐ ํ๋ก๊ทธ๋จ ์์์ ์ฌ๋ฌ ๊ฐ์ ์คํ ํ๋ฆ์ธ ์ค๋ ๋(thread)๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ๋ก ์์ ์ ์ํํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ๋๋ค. ๊ฐ๋จํ ๋งํด์, ๋ฉํฐ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ๋ฌ ๊ฐ์ ์์ "๋ถ๋ถ ์์ "์ ๋์์ ์คํํ์ฌ ์ ์ฒด ์์ ์ ๋ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ๋ฉํฐ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ฃผ์ ๊ฐ๋ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: 1. ์ค๋ ๋ (Thread): ํ๋ก๊ทธ๋จ์ ์คํ ํ๋ฆ์ ๋ํ๋ด๋ ํ๋์ ๋จ์๋ก, ๋์์ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ์คํํ๋ฉด ์ฌ๋ฌ ์์ ์ ๋์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. 2. ๋ณ๋ ฌ์ฑ (Concurrency): ๋ฉํฐ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์คํ๋์ง๋ง, ์ค์ ๋ก ๋์์ ์คํ๋๋ ๊ฒ์ ํ๋ก์ธ์์ ๋ฌผ๋ฆฌ์ ํ๊ณ ๋๋ฌธ์ ์ ํ๋ ์ .. 2023. 8. 18. ์ ํ ์๋ฃ๊ตฌ์กฐ(Linear Data Structure) ์ ํ ์๋ฃ๊ตฌ์กฐ(Linear Data Structure) ์ ํ ์๋ฃ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ ์์๋ค์ด ์ผ๋ ฌ๋ก ๋ฐฐ์น๋์ด ์๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ฌํ ์๋ฃ๊ตฌ์กฐ์์ ๋ฐ์ดํฐ ์์๋ ์์๋ฅผ ๊ฐ์ง๋ฉฐ, ๊ฐ๊ฐ์ ์์๋ ๋ฐ๋ก ์ด์ ์์์ ๋ฐ๋ก ๋ค์ ์์์ ๊ด๋ จ์ด ์์ต๋๋ค. ์ ํ ์๋ฃ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ๊ณ ์กฐ์ํ๋๋ฐ ์ ์ฉํ๋ฉฐ, ๊ฐ๋จํ ๊ตฌ์กฐ๋ก์ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์์ฉ ๋ถ์ผ์์ ํ์ฉ๋ฉ๋๋ค. ์ฌ๋ฌ ๊ฐ์ง ์ ํ ์๋ฃ๊ตฌ์กฐ์ ์์์ ํน์ง์ ์ดํด๋ณด๊ฒ ์ต๋๋ค 1. ๋ฐฐ์ด (Array) - ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ ํ ์๋ฃ๊ตฌ์กฐ๋ก, ๋์ผํ ๋ฐ์ดํฐ ํ์ ์ ์์๋ค์ ์์ฐจ์ ์ผ๋ก ์ ์ฅํฉ๋๋ค. - ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์์์ ์ ๊ทผํ๊ณ , ํน์ ์์น์ ์์๋ฅผ ์ฝ์ , ์ญ์ ํ ์ ์์ต๋๋ค. - ๋ฐ์ดํฐ ๊ฒ์๊ณผ ์ ๊ทผ์ด ๋น ๋ฅด์ง๋ง, ์ค๊ฐ์ ์์๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ ๊ฒฝ์ฐ .. 2023. 8. 11. ์ด์ 1 ยทยทยท 6 7 8 9 10 11 12 ยทยทยท 18 ๋ค์