1. ํ๋ก์ธ์ค? ์ค๋ ๋?
2. ํ๋ก์ธ์ค ๊ตฌ์กฐ & ์ค๋ ๋ ๊ตฌ์กฐ
3. ๋ฉํฐ ํ๋ก์ธ์ค & ๋ฉํฐ ์ค๋ ๋
1. ํ๋ก์ธ์ค? ์ค๋ ๋?
https://ybdeveloper.tistory.com/20?category=782261
[OS] ํ๋ก์ธ์ค๋?
ํ๋ก๊ทธ๋จ? "์ปดํจํฐ๋ฅผ ์คํ์ํค๊ธฐ ์ํด์ ์ฐจ๋ก๋๋ก ์์ฑ๋ ๋ช ๋ น์ด ๋ชจ์" ํน์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ ์๋ ํน์ ์์ ์ ์ํ ํ๊ธฐ ์ํ ์ผ๋ จ์ ๋ช ๋ น๋ฌธ์ ์งํฉ์ฒด์ด๋ค. ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ๋ค์ ํ๋๋์คํฌ ๋ฑ์ ๋ณด์กฐ..
ybdeveloper.tistory.com
- ํ๋ก์ธ์ค : ํ๋ก๊ทธ๋จ์ ๋ณต์ฌํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์์์ ์คํ์ค์ธ ์์ ์ ์๋ฏธ
- ์ค๋ ๋ : ํ๋ก์ธ์ค ๋ด๋ถ์์ ์คํ๋๋ ์ฌ๋ฌ ์์ ๋จ์
- ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก์ธ์ค๋ง๋ค ์ต์ 1๊ฐ์ ์ค๋ ๋๋ฅผ ์์ ํ๊ณ ์์ ์) Android์ UI Thread
2. ํ๋ก์ธ์ค ๊ตฌ์กฐ & ์ค๋ ๋ ๊ตฌ์กฐ

ํ๋ก์ธ์ค๋ ๊ฐ๊ฐ ๋ณ๋์ ์ฃผ์ ๊ณต๊ฐ์ ํ ๋น๋ฐ์ผ๋ฉฐ, ๋ ๋ฆฝ์ ์
- Code : ์ฝ๋ ์์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ (ํ๋ก๊ทธ๋จ ๋ช ๋ น)
- Data : ์ ์ญ๋ณ์, ์ ์ ๋ณ์, ๋ฐฐ์ด (์ด๊ธฐํ ๋ ๋ฐ์ดํฐ)
- Heap : ๋์ ํ ๋น ์ ์ฌ์ฉ (new(), malloc()..)
- Stack : ์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์, ๋ฆฌํด ๊ฐ (์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ)
์ค๋ ๋๋ Stack๋ง ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๊ฒ ๋๋ฉฐ, ๋๋จธ์ง ์์ญ์ ์๋ก ๊ณต์
์ ๋ฆฌํ์๋ฉด, ํ๋ก์ธ์ค๋ ์์ ๋ง์ ๊ณ ์ ๊ณต๊ฐ๊ณผ ์์์ ํ ๋น๋ฐ์ ์ฌ์ฉํ๋๋ฐ ๋ฐํด, ์ค๋ ๋๋ ๋ค๋ฅธ ์ค๋ ๋์ Stack์ ์ ์ธํ ๋๋จธ์ง๋ฅผ ๊ณต์ ํด์ ์ฌ์ฉํ๋ ์ฐจ์ด๊ฐ ์์
3. ๋ฉํฐ ํ๋ก์ธ์ค & ๋ฉํฐ ์ค๋ ๋
1. ๋ฉํฐ ํ๋ก์ธ์ค
- ํ๋์ ์ปดํจํฐ์ ์ฌ๋ฌ CPU๋ฅผ ์ฅ์ฐฉํ๊ฒ ๋๋ฉด ํ๋ ์ด์์ ํ๋ก์ธ์ค์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํจ
- OS ์ฐจ์์์ ๋ฉ๋ชจ๋ฆฌ ์นจ๋ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ ์์ ์ ์
- ๊ฐ๊ฐ ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ์ง๊ณ ์์ด ์์ ๊ณต์ ๊ฐ ๊น๋ค๋ก์ฐ๋ฉฐ, Context Switching์ผ๋ก ์ธํด ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํจ
Context Switching
๋์ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ๋๊ธฐ ์ํ๋ก ์ ํ๋๋ฉฐ ํ์ฌ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์ ์ฅํ๊ณ , ๋๊ธฐํ๊ณ ์๋ ๋ค์ ์๋ฒ์ ํ๋ก์ธ์ค๊ฐ ์คํ ์ํ๋ก ์ ํ๋๋ฉฐ ์ ์ฅ๋์๋ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๋ณต๊ตฌํ๋ ๊ณผ์ ์ ์๋ฏธ
2. ๋ฉํฐ ์ค๋ ๋
- ํ๋์ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ์์ฑํ๊ณ , ๊ฐ ์ค๋ ๋๊ฐ ํ๋์ ์์ ์ ์ฒ๋ฆฌํ๋ ๊ฒ
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋งํผ ์์ ๊ณต์ ๊ฐ ๊ฐ๋จํจ
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋งํผ ์์ ์ ์ด์ง ๋ชปํจ(๋๊ธฐํ ๋ฌธ์ ), ํ๋์ ์ค๋ ๋์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ ์ฒด์ ์ผ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์
Critical Section
ํ๋์ ์ค๋ ๋๊ฐ ๊ณต์ ๋ฐ์ดํฐ ๊ฐ์ ์ ๊ทผํ๋ ์์ ์ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํ๋ ๋๊ธฐํ ๊ณผ์
์ํธ ๋ฐฐ์ , ์งํ, ํ์ ๋ ๋๊ธฐ๋ฅผ ์ถฉ์กฑํด์ผํจ
Reference
https://github.com/gyoogle/tech-interview-for-developer
gyoogle/tech-interview-for-developer
๐ถ๐ป ์ ์ ๊ฐ๋ฐ์ ์ ๊ณต ์ง์ & ๊ธฐ์ ๋ฉด์ ๋ฐฑ๊ณผ์ฌ์ ๐. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.
github.com