
์์คํ ํธ์ถ(System Call)
- ์ฌ์ฉ์ ๋ชจ๋์์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ์ ์ปค๋ ๊ธฐ๋ฅ์ ์์ฒญํ ๋ ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค์ ๋๋ค.
- ์์คํ ํธ์ถ์ ํตํด ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ํ์ผ ์ ์ถ๋ ฅ, ํ๋ก์ธ์ค ๊ด๋ฆฌ, ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฑ ์ค์ํ ์์คํ ์์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
์์คํ ํธ์ถ์ ์ฃผ์ ๊ฐ๋
- ์ฌ์ฉ์ ๋ชจ๋์ ์ปค๋ ๋ชจ๋ ์ ํ
- ์์คํ ํธ์ถ์ ์ฌ์ฉ์ ๋ชจ๋์์ ์ปค๋ ๋ชจ๋๋ก์ ์ ํ์ ์ ๋ฐํฉ๋๋ค. ์ฌ์ฉ์ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ด ์์คํ ์์์ ์ ๊ทผํ๋ ค๋ฉด ์ปค๋์ ๊ถํ์ด ํ์ํ๊ธฐ ๋๋ฌธ์, ์์คํ ํธ์ถ์ ํตํด ์ปค๋ ๋ชจ๋๋ก ์ ํํ์ฌ ์ด์์ฒด์ ๊ฐ ์ง์ ์์์ ์ ๊ทผํ๋๋ก ํฉ๋๋ค.
- ์ด์์ฒด์ ์ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ธํฐํ์ด์ค
- ์์คํ ํธ์ถ์ ์ด์์ฒด์ ์ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ๊ฐ์ ์ธํฐํ์ด์ค๋ก, ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ์ ๊ธฐ๋ฅ์ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค. ์ด ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ฌ์ฉ์๋ ์ด์์ฒด์ ์ ํต์ฌ ๊ธฐ๋ฅ(ํ์ผ ์ ๊ทผ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฑ)์ ์ ๊ทผํ ์ ์์ต๋๋ค.
- ์์คํ
ํธ์ถ ๋ฒํธ
- ์์คํ
ํธ์ถ์ ๊ฐ ๊ธฐ๋ฅ์ ๋ํด ๊ณ ์ ๋ฒํธ(System Call Number)๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ผ์ ์ด๊ธฐ ์ํ open ํธ์ถ๊ณผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ธฐ ์ํ malloc ํธ์ถ์ ๊ฐ๊ฐ ๋ค๋ฅธ ์์คํ
ํธ์ถ ๋ฒํธ๋ฅผ ๊ฐ์ง๋๋ค. ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์์คํ
ํธ์ถ์ ์์ฒญํ ๋ ์ด ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด์์ฒด์ ๊ฐ ์ด๋ค ์์
์ ํด์ผ ํ๋์ง ์๋ณํ ์ ์์ต๋๋ค.
- ์์คํ ํธ์ถ ๋ฒํธ(System Call Number)๋ ์ด์์ฒด์ ์ปค๋์ด ๋ค์ํ ์์คํ ํธ์ถ์ ๊ตฌ๋ถํ๊ธฐ ์ํด ํ ๋นํ ๊ณ ์ ๋ฒํธ์ ๋๋ค. ์ฌ์ฉ์ ๋ชจ๋์์ ์ปค๋ ๋ชจ๋๋ก ์ ํํ์ฌ ํน์ ์์คํ ํธ์ถ์ ์์ฒญํ ๋, CPU๋ ์์คํ ํธ์ถ ๋ฒํธ๋ฅผ ํตํด ์ด๋ค ์์ ์ ์ํํ ์ง ๊ฒฐ์ ํฉ๋๋ค.
- ์์คํ
ํธ์ถ ๋ฒํธ์ ์ญํ
- ์ด์์ฒด์ ๋ ์๋ง์ ์์คํ ํธ์ถ์ ์ง์ํ๋ฉฐ, ์์คํ ํธ์ถ ๋ฒํธ๋ ์ด๋ค ์์คํ ํธ์ถ์ด ์คํ๋์ด์ผ ํ๋์ง ์๋ณํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์์คํ ํธ์ถ์ ์์ฒญํ ๋ ๋ ์ง์คํฐ(RAX ๊ฐ์ ํน์ ๋ ์ง์คํฐ)์ ์์คํ ํธ์ถ ๋ฒํธ๋ฅผ ์ ์ฅํ์ฌ ์ปค๋์ ์ ๋ฌํฉ๋๋ค.
- ์ปค๋์ ์ด ์์คํ ํธ์ถ ๋ฒํธ๋ฅผ ์ฐธ์กฐํด, ์ง์ ๋ ์์คํ ํธ์ถ์ ์คํํฉ๋๋ค.
- ์์ฝ
- ์์คํ ํธ์ถ ๋ฒํธ๋ ํน์ ์์คํ ํธ์ถ์ ์์ฒญํ ๋ ์ฌ์ฉํ๋ ๊ณ ์ ์๋ณ ๋ฒํธ์ ๋๋ค.
- ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ปค๋์ ์์ฒญํ ์์คํ ํธ์ถ์ ์๋ณํ๊ณ , ์ปค๋์ด ํด๋น ์์ ์ ์ํํ๋๋ก ์ง์ํ๋ ์ญํ ์ ํฉ๋๋ค.
- ๊ฐ ์์คํ ํธ์ถ์๋ ๊ณ ์ ํ ๋ฒํธ๊ฐ ๋ถ์ฌ๋์ด ์์ด, ์ฌ์ฉ์ ๋ชจ๋์์ ์ปค๋ ๋ชจ๋๋ก ์ ํ ์ ์ ํํ ์์คํ ํธ์ถ์ ์ง์ ํ ์ ์์ต๋๋ค.
- ์์คํ
ํธ์ถ์ ๊ฐ ๊ธฐ๋ฅ์ ๋ํด ๊ณ ์ ๋ฒํธ(System Call Number)๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ผ์ ์ด๊ธฐ ์ํ open ํธ์ถ๊ณผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ธฐ ์ํ malloc ํธ์ถ์ ๊ฐ๊ฐ ๋ค๋ฅธ ์์คํ
ํธ์ถ ๋ฒํธ๋ฅผ ๊ฐ์ง๋๋ค. ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์์คํ
ํธ์ถ์ ์์ฒญํ ๋ ์ด ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด์์ฒด์ ๊ฐ ์ด๋ค ์์
์ ํด์ผ ํ๋์ง ์๋ณํ ์ ์์ต๋๋ค.
์์คํ ํธ์ถ์ ๋์ ๊ณผ์
- ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์์ ์์คํ ํธ์ถ ์์ฒญ: ํ๋ก๊ทธ๋จ์ด ์์คํ ์์(์: ํ์ผ, ๋ฉ๋ชจ๋ฆฌ)์ ์ ๊ทผํ๋ ค ํ ๋, ์์คํ ํธ์ถ์ ์์ฒญํฉ๋๋ค. ์ด๋ฅผ ์ํด ์์คํ ํธ์ถ ๋ฒํธ์ ํ์ํ ์ธ์๋ฅผ ์ค์ ํฉ๋๋ค.
- ์ปค๋ ๋ชจ๋๋ก ์ ํ: ์์คํ ํธ์ถ์ด ํธ์ถ๋๋ฉด CPU๋ ์ปค๋ ๋ชจ๋๋ก ์ ํ๋ฉ๋๋ค. ์ด ์ ํ์ ํตํด ์ด์์ฒด์ ๊ฐ ๊ถํ์ ๊ฐ์ง๊ณ ์์คํ ์์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
- ์ด์์ฒด์ ์์ ์์ฒญ ์ฒ๋ฆฌ: ์ปค๋ ๋ชจ๋๋ก ์ ํ๋ ํ, ์ด์์ฒด์ ๋ ์์คํ ํธ์ถ ๋ฒํธ๋ฅผ ์ฐธ์กฐํ์ฌ ํด๋น ์์ ์ ์ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ผ์ ์ด๋ผ๋ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ปค๋์ open ํธ์ถ์ ํตํด ํ์ผ์ ์ด๊ณ , ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ๋ฐํํฉ๋๋ค.
- ์ฌ์ฉ์ ๋ชจ๋๋ก ๋ณต๊ท: ์์ฒญ์ด ์๋ฃ๋๋ฉด CPU๋ ๋ค์ ์ฌ์ฉ์ ๋ชจ๋๋ก ์ ํ๋์ด ํ๋ก๊ทธ๋จ์ ์คํ์ด ๊ณ์๋ฉ๋๋ค. ๋ฐํ๋ ๊ฒฐ๊ณผ๋ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์คํ ํธ์ถ์ ์ข ๋ฅ์ ์์
- ํ์ผ ๊ด๋ฆฌ
- open(): ํ์ผ์ ์ฝ๋๋ค.
- read(): ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ต๋๋ค.
- write(): ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์๋๋ค.
- close(): ํ์ผ์ ๋ซ์ต๋๋ค.
- ํ๋ก์ธ์ค ๊ด๋ฆฌ
- fork(): ํ์ฌ ํ๋ก์ธ์ค๋ฅผ ๋ณต์ ํ์ฌ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์์ฑํฉ๋๋ค.
- exec(): ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์คํํฉ๋๋ค.
- wait(): ์์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
- exit(): ํ์ฌ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
- malloc(): ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ํ ๋นํฉ๋๋ค.
- free(): ๋์ ์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํฉ๋๋ค.
- mmap(): ํ์ผ์ด๋ ์ฅ์น๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋งคํํฉ๋๋ค.
- ๋คํธ์ํฌ ํต์
- socket(): ์์ผ์ ์์ฑํฉ๋๋ค.
- connect(): ์์ผ์ ํตํด ์๋ฒ์ ์ฐ๊ฒฐํฉ๋๋ค.
- send(), recv(): ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ ์์ ํฉ๋๋ค.
์์คํ ํธ์ถ์ ์ค์์ฑ
- ๋ณด์ ๋ฐ ์์ ์ฑ: ์์คํ ํธ์ถ์ ํตํด ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ง์ ์ปค๋์ ์ ๊ทผํ์ง ์๊ณ ์ด์์ฒด์ ๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ์ ๊ทผํ์ฌ ๋ณด์์ ์ ์งํฉ๋๋ค.
- ์์ ๊ด๋ฆฌ: ์ด์์ฒด์ ๊ฐ ์์คํ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ํ๋ก์ธ์ค ๊ฐ ์์ ์ฌ์ฉ์ ์ ์ดํ ์ ์์ต๋๋ค.
- ์ถ์ํ ์ ๊ณต: ์์คํ ํธ์ถ ์ธํฐํ์ด์ค๋ฅผ ํตํด ํ๋์จ์ด์ ๋ณต์ก์ฑ์ ์ถ์ํํ์ฌ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ฝ๊ฒ ์์คํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
QnA
Q1. ์์คํ ํธ์ถ ๋ช ๋ น์ด๋ง๋ค ํน์ ๋ฒํธ๊ฐ ์๊ณ , ํธ๋ค๋ฌ์์ ๋ช ๋ น์ด์ ๋ฒํธ๋ก ๋งค์นญ์ ํด์ค๋ค๋๊ฑด๊ฐ?
- ๋ค, ๋ง์ต๋๋ค. ๊ฐ ์์คํ ํธ์ถ๋ง๋ค ๊ณ ์ ํ ๋ฒํธ๊ฐ ๋ถ์ฌ๋์ด ์์ผ๋ฉฐ, ์ปค๋์ ์์คํ ํธ์ถ ํธ๋ค๋ฌ๊ฐ ์ด ๋ฒํธ๋ฅผ ๋ณด๊ณ ํด๋น ์์คํ ํธ์ถ์ ๋งค์นญํ์ฌ ์ํํฉ๋๋ค.
Q2. ์์คํ ์ฝ์์ ์ฌ์ฉ๋๋ ํจ์ ๊ด๋ จ ๋ฐ์ดํฐ๋ ์ปค๋ ์คํ์ ์ ์ฅ์ด ๋๋๊ฑด๊ฐ?
- ๋ค, ์์คํ ์ฝ(System Call)์์ ์ฌ์ฉ๋๋ ํจ์ ๊ด๋ จ ๋ฐ์ดํฐ๋ ์ปค๋ ์คํ(Kernel Stack)์ ์ ์ฅ๋ฉ๋๋ค.
- ์์คํ
์ฝ์์ ์ปค๋ ์คํ์ ์ญํ
- ์ฌ์ฉ์ ๋ชจ๋์์ ํธ์ถ๋ ํจ์์ ์ปจํ ์คํธ(๋งค๊ฐ๋ณ์, ๋ฐํ ์ฃผ์ ๋ฑ)๋ ์ปค๋ ๋ชจ๋๋ก ์ ํ๋๋ฉด์ ์ปค๋ ์คํ์ ์ ์ฅ๋ฉ๋๋ค.
- ์ด๋ ์ปค๋์ด ์คํ ์ค์ธ ํจ์์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๊ด๋ฆฌํ๊ณ , ์ฌ์ฉ์ ์คํ๊ณผ ๋ถ๋ฆฌ๋ ํ๊ฒฝ์์ ์์ ํ๊ธฐ ์ํจ์ ๋๋ค.
- ์ ์ฅ๋๋ ๋ฐ์ดํฐ
- ๋ฆฌํด ์ฃผ์
- ์ปค๋ ๋ชจ๋์์ ์์ ์ด ๋๋ ํ ์ฌ์ฉ์ ๋ชจ๋๋ก ๋์๊ฐ ์ฃผ์.
- ํจ์์ ๋งค๊ฐ๋ณ์ ๋ฐ ๋ก์ปฌ ๋ณ์
- ์์คํ ์ฝ ์ฒ๋ฆฌ ํจ์๊ฐ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ์ง์ญ ๋ณ์.
- ๋ฆฌํด ์ฃผ์
-
- ๋ ์ง์คํฐ ์ํ
- ์ธํฐ๋ฝํธ ๋๋ ํธ๋ฉ ๋ฐ์ ์, ํ์ฌ CPU ๋ ์ง์คํฐ ๊ฐ์ด ์ ์ฅ๋ฉ๋๋ค.
- ๋ ์ง์คํฐ ์ํ
-
- ์ฌ์ฉ์ ์คํ์ ์ ๋ณด
- ์ฌ์ฉ์ ๋ชจ๋์์ ์ ๋ฌ๋ ๋งค๊ฐ๋ณ์ ๋ฑ์ด ํ์ํ๋ค๋ฉด ์ปค๋ ์คํ์ ๋ณต์ฌ๋ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ์คํ์ ์ ๋ณด
'๐ซ Krafton Jungle > PintOS Project2 _ User Programs' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์์ ๋ฐ ๋ณด์ ํ์ - Atomic Operation (0) | 2024.11.28 |
|---|---|
| ์์ ๋ฐ ๋ณด์ ํ์ - File Descriptor (1) | 2024.11.28 |
| [Pintos] Project02 _ User Programs | Keyword | User Stack (0) | 2024.11.28 |
| [Pintos] Project02 _ User Programs | Keyword | Register VS Memory (0) | 2024.11.28 |
| [Pintos] Project02 _ User Programs | Keyword | UserMode VS KernelMode (1) | 2024.11.28 |