์ฐธ๊ณ ์์ - ์ด์์ฒด์ ๊ณต๋ฃก ์ฑ
์์ฑํ ๋ ๋ ธ๋์๋ก ํ์๋ ๋ ธ๋.. ^.^ - https://youtu.be/YrlnU1ogdEU?si=sqY-8iNOv2m6z_BB
0. ๊ฐ์
์ฐ๋ฆฌ๋ ์ปดํจํฐ, ํด๋ํฐ ๋ฑ ๋ง์ ์ ์๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ค. ์ด ๊ธฐ๊ธฐ๋ก ๊ฐ๋จํ ์์ฉํ๋ก๊ทธ๋จ์ ์ฐ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์ฐ๋ฆฌ๊ฐ ๋ณด๋ ๊ฒ์ ํน์ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ UI์ผ ๊ฒ์ด๋ค. ํ์ง๋ง ์ด UI๋ฅผ ๋์ฐ๊ธฐ ์ํด ์ด์์ฒด์ ๋ ์๋ง์ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ณ ์๋ค. ์ด๋ฒ ๊ธ์์๋ ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ค๋ ์๋น์ค๊ฐ ๊ทธ๋์ ๋ญ๊ณ , ์๋น์ค๋ฅผ ์์ฒญํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํด์ผ๋๋์ง ์์๋ณผ ๊ฒ์ด๋ค.
์ด์์ฒด์ ์ ๋๋ถ๋ถ ์๋น์ค๋ค์ ์ปค๋์์ ์ด๋ค์ง๋ค. ๋ฐ๋ผ์ ์ด์์ฒด์ ์๊ฒ ์๋น์ค ์๊ตฌ == ์ปค๋์๊ฒ ์๋น์ค ์๊ตฌ์ ์ ์ฌํ๋ค. ํ์ง๋ง ์ด ์ปค๋์ ์๋ชป ๊ฑด๋๋ฆฌ๋ฉด ์ปดํจํฐ ์์คํ ์ด ๋ง๊ฐ์ง ์ ์๊ณ , ์ฌ์ฉ์ ๋ณด์์ด ์ํํ ์ ์๋ค. ๋ฐ๋ผ์ ์ปค๋์๊ฒ ์๋น์ค๋ฅผ ์๊ตฌํ๋ ค๋ฉด ์๊ฒฉํ ํ๋ก์ฐ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค.
๋จผ์ , ๋ถํ ์ด ์๋ฃ๋์ด ํ๋ก๊ทธ๋จ์ ์์ํ ์ฆ์์๋ ์ด์์ฒด์ ์ ๋ชจ๋๊ฐ ์ ์ ๋ชจ๋์ผ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์๋ ์ปค๋์๊ฒ ์ง์ ์์ ์ ์์ฒญํ ์ ์๋ค. ๋จผ์ ์์คํ ์ฝ์ ํธ์ถํด ์ปค๋ ๋ชจ๋๋ก ๋ณ๊ฒฝํ ํ, ์์คํ ์ฝ ์์ ์ ์ํํ๋ค. ์ด๋ ์๋น์ค๊ฐ ์ ๊ณต๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ์ด ๋๋๋ฉด ๋ค์ ์ ์ ๋ชจ๋๋ก ๋ณต๊ทํ๋ค.
์ฌ๊ธฐ์ ์ ์ ์๋๊ฑด, ์ฐ๋ฆฌ๊ฐ ์ด์์ฒด์ ์๊ฒ ์๋น์ค๋ฅผ ์๊ตฌํ๊ธฐ ์ํด์๋ System Call์ ์ฌ์ฉํด์ผ ๋๋ค๋ ๊ฒ์ด๋ค. ์ด ์์คํ ์ฝ์ ์์ฒญํ๋ ์ฃผ์ฒด๊ฐ ๋๊ตฌ๋์ ๋ฐ๋ผ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋๋ค.
- command interpreter๋ก System call ์์ฒญํ๊ธฐ.
- API๋ก System call ์์ฒญํ๊ธฐ.
์ด ๋ ๊ฐ์ง๋ฅผ ํ๋์ฉ ์ดํด๋ณผ ๊ฒ์ด๋ฉฐ, ์ ์ฒด ๋ชฉ์ฐจ๋ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์ด์์ฒด์ ์ ์๋น์ค
์ฑ ํ๋ ์ด ๋๋ ์ด์์ฒด์ ์ ์๋ง์ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ๋ค. ์ด "์๋น์ค"๊ฐ ๋์ฒด ๋ญ์ง ์ด๋ฒ ๋จ๋ฝ์์ ์๊ฐํ๊ณ ์ ํ๋ค. ์ด์์ฒด์ ๊ฐ ํ๋ ์ผ, ์ฆ ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ ์๋น์ค๋ ์๋ ์ฌ์ง์ ๋์์๋ ๊ฒ ์ธ์๋ ๋ง๋ค. ํ์ง๋ง ์ค์ฌ์ด ๋๋ ๊ฒ ์์ฃผ๋ก ์๊ฐํ๊ณ ์ ํ๋ค.
์ด ๋ค ๊ฐ์ง ์๋น์ค๊ฐ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ค.
1 - a) ์ด์์ฒด์ ์ ์๋น์ค 1 - ํ๋ก๊ทธ๋จ ์ํ
์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ ๊ฐ์ฅ ์ฃผ๋ ์๋น์ค, ๋ฐ๋ก ํ๋ก๊ทธ๋จ์ ์ํํ ์ ์๋ ๋ฅ๋ ฅ์ด๋ค. ๋๋ ์ด๊ฒ์ด ์ด์์ฒด์ ๊ฐ ์๋ ์ฃผ ๋ชฉ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์๋ํ๋ฉด, ๋ค๋ฅธ ์๋น์ค๋ค์ ๋ชฉ์ ์ด ๊ฒฐ๊ตญ ํ๋ก๊ทธ๋จ ์ํ์ด๊ธฐ ๋๋ฌธ์ด๋ค. << ์ด๋ ๊ฒ ์๊ฐํ ์ด์ ๋ ํ๋ก๊ทธ๋จ ์คํ ๊ณผ์ ์ ์๋ค.
์ฐ๋ฆฌ๊ฐ GUI์์ ์์ด์ฝ ๋ธ๊นํด์ ์ฌ๋ ํ๋ก๊ทธ๋จ์, ์ฌ์ค ๋ง๋ฒ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ ๋์จ๋ค. ์๋ํ๋ฉด, ์ฒ์ ์์ ๋จ๊ณ๋ ๊ทธ๋ฅ ์ฝ๋ + ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฌ๋ ์ด ๋ฉ์ด๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์ํด์ ์ผ๋จ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ๋ค. ์ด๊ฑธ๋ก ๋๋๊ฒ ์๋๊ณ , ์คํํ๊ธฐ ์ํ ์์์ ํ ๋น ๋ฐ์์ผ ํ๋ค. CPUํํ ์์์ ํ ๋น ๋ฐ์๋ค๋ฉด, Program Counter๊ฐ ์คํํด์ผ ๋๋ ์์น๋ฅผ ํ๋์ฉ ๊ฐ๋ฆฌํค๋ฉด์ ...์ค๋ต... ํ๋ก๊ทธ๋จ์ ๊ฒฐ๋ก ์ ์ผ๋ก ์คํํ ์ ์๋ ๊ฒ์ด๋ค. (์ค๋ต์ด๋ผ๊ณ ์จ๋ ๊ฒ์ฒ๋ผ ๊ต์ฅํ ๋ง์ ๊ณผ์ ์ด ์ถ๊ฐ์ ์ผ๋ก ๋ค์ด๊ฐ๋ค.)
์ด์จ๋ ํ๋ก๊ทธ๋จ ์คํ์ ํ์์ ์ธ ์ด ์์ ๋ค์ ์ด์์ฒด์ ๊ฐ ํด์ค๋ค. ๋ฐ๋ผ์, ์ด์์ฒด์ ์ ๋ฉ์ธ ์๋น์ค๊ฐ "ํ๋ก๊ทธ๋จ ์ํ"์ด๋ผ๊ณ ์๊ฐํ๋ค. ๐ ๊ทธ๋ฆฌ๊ณ ์์ผ๋ก ์๊ฐํ 3๊ฐ์ง์ ์๋น์ค๋ ํ๋ก๊ทธ๋จ ์ํ์ ํ๊ธฐ ์ํด ์ ๊ณตํด์ผ ํ๋ ์๋น์ค์ด๋ค.
1 - b) ์ด์์ฒด์ ์ ์๋น์ค 2 - ์์ ํ ๋น
ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด์๋ ๋ฐ๋์ ๋ฆฌ์์ค๋ฅผ ํ ๋น๋ฐ์์ผ ํ๋ค. ๋ฐ๋ผ์ ์ด์์ฒด์ ๋ ํ๋ก๊ทธ๋จ ์ํ์ ๋ด๋นํ๊ธฐ ๋๋ฌธ์, ์์ ํ ๋น๋ ๊ด๋ฆฌํด์ค๋ค. multi-tasking์ ์ง์ํ๋ ์ด์์ฒด์ ๋ผ๋ฉด ์ ์์ ํ ๋น์ด ๊ต์ฅํ ์ค์ํ๋ค. ์๋ํ๋ฉด, ํ์ ๋ ์์์ผ๋ก ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ๋๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ป๊ฒ ๊ณตํํ๊ณ ํจ์จ์ ์ด๊ฒ ์์์ ํ ๋นํ ์ง์ ๊ด๋ จ๋ ๋ด์ฉ์, CPU ์ค์ผ์ค๋ง ๊ฐ๋ ์ ์ฐพ์๋ณด๋ฉด ๋๋ค.
์ด์จ๋ ์ค์ํ ์ ์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด์๋ ์์์ด ํ์ํ๋ฐ, ์ด ์์์ ํ ๋นํด์ฃผ๋ ์น๊ตฌ๊ฐ ์ด์์ฒด์ ๋ผ๋ ์ ์ด๋ค.
1 - c) ์ด์์ฒด์ ์ ์๋น์ค 3 - ํ์ผ ์์คํ ์กฐ์
์ธ ๋ฒ์งธ๋ก ์๊ฐํ ์ด์์ฒด์ ์ ์ฃผ์ ์๋น์ค๋ ํ์ผ ์์คํ ์กฐ์์ด๋ค. CS์ ์ผ๋ก ํ์ผ ์์คํ ์กฐ์์ ํ์ผ์ ์์ ๊ถ์ ๋ฐ๋ผ CRUD๊ฐ ๊ฐ๋ฅํ๊ฐ? ๋ผ๋ ๋ง์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํ์ผ ์์คํ ์กฐ์์ ํ๋ก๊ทธ๋จ ์คํ์ ์์ด์ ํ์์ ์ธ ์์์ด๋ค. ์๋ํ๋ฉด, ํ๋ก๊ทธ๋จ์ ์ด๊ธฐ ์ํ๋ ์ฝ๋+๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ด ์ฝ๋+๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ๋ ์ฃผ๋ก ํ์ผ ์์คํ ์ ์๋ค. ๋ฐ๋ผ์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด์๋ ์ด ์ฝ๋+๋ฐ์ดํฐ ํ์ผ์ ์ ๊ทผ๋ถํฐ ๊ฐ๋ฅํด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ๋์ ์ฐ๋ฆฌ๋ ํ์ผ์ CRUDํ ์ผ์ด ์์ ์๋ค. ๋ก๊น ํ์ผ์ ๋จ๊ธด๋ค๋ ์ง, ์๋ ํ์ผ์ ์์ฑํด์ ์ ์ฅํ๋ค๋ ์ง.. ๋ฑ๋ฑ ์๊ฐํด๋ณด๋ฉด ๋ง์ ๊ฒ์ด๋ค. ์๋๋ก์ด๋์์๋ ๋ญ.. ์ฑ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ ํ์์ ๋ค์ด๋ก๋ํ ํ์ผ์ ์ ์ฅํ๋ ์ผ ๋ฑ์ด ์์ ๊ฒ์ด๋ค.
1 - d) ์ด์์ฒด์ ์ ์๋น์ค 4 - ์ ์ถ๋ ฅ ์ฐ์ฐ
์ด๊ฑด ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ์๊ฐํด๋ณด๋ฉด ๋๋ค. ์ฐ๋ฆฌ๋ ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ๋ง์ฐ์ค or ํค๋ณด๋ or ํฐ์น ์คํฌ๋ฆฐ์ผ๋ก ์๋ง์ ์ ๋ ฅ์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ฉด์ ์ฐ๋ฆฌ์๊ฒ ์ด๋ค ์ ๋ณด๋ค์ ์ถ๋ ฅํด์ค๋ค. โก๏ธ ์ ๋ฆฌํด๋ณด์๋ฉด, ํ๋ก์ธ์ค๋ ๋ฐํ์ ์ค ์๋ง์ ์ ์ถ๋ ฅ์ ์๊ตฌํ๋ค. ๊ทธ๋ฌ๋ ํ๋ก์ธ์ค๋ ์ ์ถ๋ ฅ์ ์ฒ์์ผ๋ก ์ฒ๋ฆฌํ๋ ๋จ๊ณ๋ ์๋๋ค. ์ด์์ฒด์ ๊ฐ ๊ฐ์ฅ ๋จผ์ ์ ์ถ๋ ฅ์ ๋ฐ๊ณ , ํ๋ก์ธ์ค์๊ฒ "์ด๋ฐ ์ ์ถ๋ ฅ์ด ์ผ์ด๋ฌ๋๋ฐ ๋ ํ์ํด?"๋ผ๊ณ ์ ๋ฌํด์ฃผ๋ ํํ์ด๋ค.
์ ์
โฌ๏ธ
ํค๋ณด๋ (HW)
โฌ๏ธ
์ด์์ฒด์
โฌ๏ธ
APP
์ ์ด์์ฒด์ ๊ฐ ๋์ ํด์ค๊น?
ํ๋์จ์ด์ ์ง์ ์ ๊ทผํ๋๊ฑธ ๋ง๊ธฐ ์ํจ์ด๋ค.
์ ์ถ๋ ฅ ์ด๋ฒคํธ๋ฅผ ๋ฐ๊ธฐ ์ํด์๋ ํ๋์จ์ด์ ์ ๊ทผํด์ผ ๋๋ค. ๊ทผ๋ฐ ์ด ํ๋์จ์ด ์๋ฌด ํ๋ก๊ทธ๋จ์ด๋ ์ ๊ทผ ๊ถํ์ ์ฃผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น? ์ํ ํ๋ก๊ทธ๋จ์ธ์ฒ ๊ฐ์ฅํด์ ๋น์ ๋น๋ฐ๋ฒํธ๋ฅผ ํธ ์๋ ์์ ๊ฒ์ด๋ค . . . . . ๋ฐ๋ผ์ ๋ณด์์์ ๋ชฉ์ ์ผ๋ก, ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ง์ HW์ ์ ๊ทผํ์ฌ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ง๋ ์๋๋ค.
ํ๋์จ์ด ๋๋ฌด ๋ค์ํ๋ฐ, ์ด๊ฑฐ ํ๋ํ๋ ํ๋ก๊ทธ๋จ์์ ๋์ํ๋๊ฒ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ.
ํ๋ก๊ทธ๋จ์์ ํ๋์จ์ด์ ์ง์ ์ ๊ทผํ๋ค๋ ๋ง์, ํ๋ก๊ทธ๋จ์ด ํ๋์จ์ด ์ฌ์ฉ๋ฒ์ ์๊ณ ์๋ค๋ ๋ป์ด๋ค. ํ๋ก๊ทธ๋จ์ด ๋๋ถ๋ถ์ ์ ์ถ๋ ฅ ํ๋์จ์ด ์คํ์ ์๊ณ , ์ฒ๋ฆฌ ๋ฐฉ๋ฒ๋ ์์์ผ ์ฐ๋ฆฌ๊ฐ ์ง๊ธ์ฒ๋ผ ํธํ๊ฒ ์ธ ์ ์์ ๊ฒ์ด๋ค. ๊ทผ๋ฐ ์ด๊ฑด ํ๋์จ์ด๊ฐ ๋๋ฌด ๋ง์์ ๋ถ๊ฐ๋ฅํ๋ค.๐ซจ ๊ทธ๋์ ์ด ์ ์ถ๋ ฅ ์ด๋ฒคํธ๋ฅผ ์ถ์ํํด์ ์๋ ค์ฃผ๋ ์น๊ตฌ๊ฐ ๋ฐ๋ก os์ด๋ค. os๋ ์ ์ถ๋ ฅ ์ด๋ฒคํธ๋ฅผ ์ง์ ๋ฐ๊ณ , ํ๋ก๊ทธ๋จ์๊ฒ ์ถ์ํ๋ ํํ๋ก ์ ๋ฌํ๋ค.
(๊ทธ๋ฌ๋ฉด ์ด์์ฒด์ ๋ ๊ฐ ์ ์ถ๋ ฅ ํ๋์จ์ด ์ฅ์น ๋์์ ์ด๋ป๊ฒ ํ๋..? << ์๊ฑฐ์ ๋ํ ๊ฑด OS์ ์ ์ถ๋ ฅ ๋๋ผ์ด๋ฒ ์ชฝ์ ์ดํด๋ณด๋ฉด ๋๋ค.)

2. ๊ทธ๋์ ์ด์์ฒด์ ์๊ฒ ์ผ์ ์ํค๋ ๋ฐฉ๋ฒ?
์ง๊ธ๊น์ง๋ ์ด์์ฒด์ ๊ฐ ์ ๊ณตํด์ฃผ๋ ์๋น์ค์ ๋ํด ์์๋ณด์๋ค. ์๋น์ค์ ๋ฉ์ธ ๋ชฉ์ ์ ํ๋ก๊ทธ๋จ ์คํ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํ๋ก๊ทธ๋จ ์คํ์ ์ํด ์์ ํ ๋น, ํ์ผ ์์คํ ์กฐ์, ์ ์ถ๋ ฅ ์ฐ์ฐ ๋ฑ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค๊ณ ์ค๋ช ํ๋ค. ์ง๊ธ๋ถํฐ๋, ์ด์์ฒด์ ์๊ฒ ์ด ์๋น์ค๋ค์ ์ด๋ป๊ฒ ์๊ตฌํ ์ ์๋์ง์ ๋ํด ์์๋ณด๋ ค๊ณ ํ๋ค. ์ฌ๊ธฐ์๋ OS GUI๋ฅผ ์ฌ์ฉํด ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฒฝ์ฐ๋ ์ ์ธํ๋ค. ์ด๊ฑด ๋๋ฌด ๋น์ฐํ์์~!
๊ฐ์์์ ์ธ๊ธํ๋ฏ์ด ์ด์์ฒด์ ์๊ฒ ์๋น์ค๋ฅผ ์๊ตฌํ๋ ค๋ฉด, System Call์ ์ฌ์ฉํด์ผ ํ๋ค. ์ฐ๋ฆฌ๋ ์ฃผ๋ก ํฌ๊ฒ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ด System call์ ํธ์ถํ๋ค. ์ฒซ ๋ฒ์งธ๋ ์ฃผ๋ก User๊ฐ ํฐ๋ฏธ๋์ ํตํด ์์คํ ์ฝ์ ํธ์ถํ๋, Command Interpreter๋ฅผ ํ์ฉํ ๋ฐฉ์์ด๋ค. ๋ ๋ฒ์งธ๋ ๊ฐ๋ฐ์๊ฐ ์ฃผ๋ก ์ฌ์ฉํ๋์ธ API๋ฅผ ํ์ฉํ ๋ฐฉ์์ด๋ค.
2 - a) ๋ฐฉ๋ฒ 1 - Command Interpreter
Command Interpreter๋ฅผ ํ์ฉํด์ OS์๊ฒ ์๋น์ค๋ฅผ ์์ฒญํ๋ ๊ทธ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ ์ ๊ฐ ๋ช ๋ น์ด๋ฅผ Terminal์ ์ ๋ ฅํ๋ค.
- Terminal์ ์ ๋ ฅ๋ฐ์ ๋ช ๋ น์ด๋ฅผ ์คํ ์ฃผ์ฒด์ธ Command Interpreter, Shell์๊ฒ ์ ๋ฌํ๋ค.
- Shell์ ์ด๊ฑธ ์ด์์ฒด์ ๊ฐ ์์๋ค์ ์ ์๋ ๋ช
๋ น์ด๋ก Interpreting ์์
์ ํ๋ค.
- ์ฃผ๋ก ์ ์ ํ System call์ด ๋ ๊ฒ์ด๋ค.
- ์ด์์ฒด์ ์๊ฒ ์์ฒญ์ ํ๋ค.
์ ์ปค๋งจ๋ ์ธํฐํ๋ฆฌํฐ, ์ฆ ์์ด ์๋๊ฑธ๊น? ๊ฐ์ฅ ํฐ ๋ชฉ์ ์ ์ด์์ฒด์ ์ ์๋น์ค๋ฅผ ์ ์ ๋ ์ฝ๊ฒ ์ฌ์ฉํ๊ฒ ํ๊ธฐ ์ํจ์ด๋ค.
(์กฐ๊ธ ๋ ๋ด ์๊ฐ์ ๋ง๋ถ์ด๋ฉด ์ด๋ ๋ค. ์์คํ ์ฝ์ ์ด์จ๋ ํจ์์ ํํ๋ค. ๊ทธ๋ฌ๋ค ๋ณด๋ ๋ฌธ๋ฒ์ด ๋ณต์กํ๋ฐ, ์ด๊ฑธ ์ ์ ๊ฐ ์ฌ์ฉํ๊ฒ ํ๊ธฐ์ ์ข ๋๊ฐํ๊ฑฐ๋ค. ๊ทธ๋์ ์์ฐ์ด ์นํ์ ์ธ ๊ฑธ ๋ง๋ค์๋ค. ์ด๊ฒ ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ํฐ๋ฏธ๋์์ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ค. ๊ทผ๋ฐ ์ด์์ฒด์ ๋ ๋ช ๋ น์ด๋ ๋ชจ๋ฅด๋๊น, ์ค๊ฐ์ ํต์ญ๊ฐ(์)์ด ํ์ํด์ง๊ฑฐ๋ค. ๋ฐ๋ผ์ ์์ ์ผ์ข ์ ๋ฒ์ญ๊ธฐ์ด๋ค.)
๊ทธ๋ฆฌ๊ณ ๋ช ๋ น์ด๋ก ๋ฐ๋ณต ์์ ํ ์ผ ์์๋, ์์ด ์ ์ฉํ๋ค. ์๋ํ๋ฉด ์ฌ๋ฌ ์ ๋ช ๋ น์ด๋ฅผ ํ ๋ฒ์ ๋ชจ์์ ์คํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๊ฒ ๋ฐ๋ก ์ ์คํฌ๋ฆฝํธ(.sh), ๋ฐฐ์น ํ์ผ(.bat)์ด๋ค.
์ถ๊ฐ๋ก, ํฐ๋ฏธ๋๊ณผ ์์ ๋ค๋ฅธ ๊ฒ์ด๋ค. ํฐ๋ฏธ๋์ ์๋จ์ด์์ ์ ์ ์๋ฏ ์ฐฝ๊ตฌ๋ฅผ ์๋ฏธํ๋ค. ๋ฐ๋ผ์ ์ ์ ๊ฐ ์์ฒญ์ ํ๊ฑฐ๋, ์๋ต์ ๋ฐ์ ๋ ์ฌ์ฉํ๋ end point์ ๋จ๋ง์ด๋ค. ์ ์ ๊ฐ ์ ๋ ฅํ ๋ช ๋ น์ด๋ฅผ ํฐ๋ฏธ๋์ด ๋ฐ์ผ๋ฉด, ํฐ๋ฏธ๋์ ์ด๊ฒ์ ์์๊ฒ ์ ๋ฌํ๋ค. ํฐ๋ฏธ๋์ ๊ป๋ฐ๊ธฐ์ผ ๋ฟ์ด๊ธฐ์, ํฐ๋ฏธ๋ ํผ์์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ ๋ฅ๋ ฅ์ด ์๋ค. (์์ ํฐ๋ฏธ๋ ์์ด๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋ ์ ์๋ค.)
์ ์ ์ ๋ช ๋ น์ด๋ฅผ ์ด์์ฒด์ ๊ฐ ์์๋ค์ ์ ์๋ ์์คํ ์ฝ๋ก ๋ฒ์ญํด์ฃผ๋ ์น๊ตฌ๊ฐ ์์ด๋ผ๋ ๊ฒ์ ์์๋ค. ๊ทผ๋ฐ ์ด ๋ช ๋ น์ด๋ ๋ ๊ฐ์ง๋ก ์นดํ ๊ณ ๋ผ์ด์ฆ๊ฐ ๊ฐ๋ฅํ๋ค. ์ธ๋ถ ํ๋ก๊ทธ๋จ์ ๋์์ด ํ์ํ๊ฐ๋ก ๋ด๋ถ ๋ช ๋ น์ด, ์ธ๋ถ ๋ช ๋ น์ด๋ก ๋๋๋ค. ๋ด๋ถ ๋ช ๋ น์ด๋ command interpreter๊ฐ ๋ช ๋ น์ ์คํํ๊ธฐ ์ํ ์ฝ๋๋ฅผ ์์ฒด์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ค. ๋ฐ๋ผ์ ๊ทธ ์ฝ๋์ ํ์ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ ํ๊ฒ ์ค์ ํ๊ณ ์์คํ ์ฝ์ ํ๋ค. ๋ํ์ ์ธ ๋ด๋ถ๋ช ๋ น์ด๋ก๋ cd๊ฐ ์๋ค. ์ธ๋ถ ๋ช ๋ น์ด๋ command interpreter๊ฐ ๋ช ๋ น์ ์คํํ๊ธฐ ์ํด ์์คํ ํ๋ก๊ทธ๋จ์๊ฒ ์์ฒญ์ ํด์ผ ๋๋ ๊ฒฝ์ฐ๋ค. ์๋ํ๋ฉด ์๊ธฐ ์ฝ๋์๋ ์ด ๋ช ๋ น์ด๋ฅผ ์คํํ ๋ก์ง์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. ์์ ์ด๋ค ์์คํ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํด์ ๋ช ๋ น์ ์คํํ ์ ์๋์ง๋ง ์๋ค. ์ต์ํ command ์ค ์ธ๋ถ๋ช ๋ น์ด๋ ls๊ฐ ์๋ค.
- ์ธ๋ถ๋ช ๋ น์ด ๊ด๋ จํด์ ์กฐ๊ธ ๋ ๊น๊ฒ ๋ค์ด๊ฐ๊ณ ์ถ์ผ๋ฉด ํ๊ฒฝ๋ณ์(PATH)์ ์ธ๋ถ๋ช ๋ น์ด์ ๊ด๊ณ๋ฅผ ๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. (๊ด๋ จ ๋งํฌ: ๋ฆฌ๋ ์ค ์๋ด๋ถ๋ช ๋ น์ด์ ์ธ๋ถ๋ช ๋ น์ด๋ฅผ ๊ตฌ๋ถํ๋ ๋ฐฉ๋ฒ)
2 - b) ๋ฐฉ๋ฒ 2 - API(Application Programming Interface)
์ฐ๋ฆฌ๋ ๊ณ ์ค๊ธ ์ธ์ด๋ฅผ ํ์ฉํด์ ์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ค. ๊ณ ์ค๊ธ ์ธ์ด๋ก API๋ค์ ํ์ฉํด์ ์ฑ์ ๋ง๋ค์ด๋ธ๋ค. ํ์ง๋ง low level์์๋ ์ด์์ฒด์ ๊ฐ ์ด์ผ์ ํ๊ณ ์๋ค. ๋ค์ ๋งํ๋ฉด, API๊ฐ ํธ์ถํ ์๋ง์ ์์คํ ์ฝ์ ์ฐ์์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ค์ ์ด ๋ก์ฐ ๋ ๋ฒจ๊น์ง๋ ์ ๊ฒฝ์ฐ์ง๋ ์๊ณ , ๋ช๋ช์ ์ด๋ฐ ์ผ๋ค์ด ์ผ์ด๋๊ณ ์๋์ง๋ ๋ชจ๋ฅด๊ณ ์๋ค. ์ผ๋จ ๋๋ ์ด ์ฌ์ค์ ๋ชฐ๋์๋ค ^^...
์ ๋ชฐ๋์๊น? ๊ทธ๊ฒ ๋ฐ๋ก API์ ์ค๊ณ ์๋์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ฐ๋ฆฌ๋ ์ฃผ๋ก API๋ง ์ฌ์ฉํด์ ๊ฐ๋ฐ์ ํ๋ค. API doc์ ๋ณด๊ณ , ์ด๋ฐ ์ผ์ ํ๊ฒ ๊ตฌ๋๋ผ๊ณ ์ดํดํ๊ณ ์ฌ์ฉํ๋ค. ์ค์ ๋ก ๋ก์ฐ ๋ ๋ฒจ์์ ๋ญ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง๋ ์ฐ๋ฆฌ์ ๊ด์ฌ์ฌ๊ฐ ์๋๋ค. ์ฆ, API๊ฐ ์ค์ ๋ก ๋ญ ํ๋์ง๋ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ ์ํผ ์ฅ์ ์ด ์๊ธด ๊ฒ์ด๋ค.
์ด๊ฒ ๋ฌด์จ ๋ง์ด๋๋ฉด, ์๋๋ก์ด๋ ์ฑ์์ ํน์ ํ์ผ์ ์ฝ๊ณ ์ถ์ด์ Java File IO์ read ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค๊ณ ์๊ฐํด๋ณด์. ๊ทธ๋ฌ๋ฉด ๋ด๋ถ์ ์ผ๋ก๋ ์๋์ ๊ฐ์ ์์คํ
์ฝ๋ค์ด ํธ์ถ๋ ๊ฒ์ด๋ค. (์ฌ์ค ๋ ๋ง์ด ํธ์ถ๋จ.)
- ์ ๋ ฅ ํ์ผ ์ด๋ฆ ํ๋
- ์ ๋ ฅ ํ์ผ ์ด๊ธฐ
- ์ ๋ ฅ ํ์ผ๋ก๋ถํฐ ์ฝ์ด ๋ค์ธ๋ค. (nํ til EOF)
- ์ ๋ ฅ ํ์ผ ๋ซ๊ธฐ
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ read ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋ ์ด๋ฐ ์์คํ ์ฝ๋ค์ ํ๋ํ๋ ๋ฐ์ง์ง ์๋๋ค. ์ฐ๋ฆฌ๊ฐ read api๋ก ๊ธฐ๋ํ๋ ๊ฑด, ํน์ ํ์ผ์ ์ฝ์ด์ค ๊ฒ์ด๋ผ๋ ๊ฒ ๋ฟ์ด๋ค. ๋ก์ฐ ๋ ๋ฒจ์์ ๋ญ ํ๋์ง๋ ์ ํ ๊ณ ๋ คํ์ง ์๋๋ค.
๊ทธ๋ฌ๋๊น ์ฌ๊ธฐ์ Application Programming Interface์ ๊ฐ๋ ์ ์ก์ ์ ์๋ค. API๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ธฐ๋ํ๋ ์์คํ ์ฝ๋ค์ ์ถ์ํํ ํํ์ด๋ค. ์ํค๋ฐฑ๊ณผ์ API ์๊ฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
API์ ํ ๊ฐ์ง ๋ชฉ์ ์ ์์คํ ์ด ๋์ํ๋ ๋ฐฉ์์ ๊ดํ ๋ด๋ถ์ ์ธ์ธํ ๋ถ๋ถ์ ์จ๊ธฐ๋ ๊ฒ์ผ๋ก, ๋ด๋ถ์ ์ธ์ธํ ๋ถ๋ถ์ด ๋์ค์ ๋ณ๊ฒฝ๋๋๋ผ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๊ณ ์ผ์ ํ๊ฒ ๊ด๋ฆฌํ ์ ์๋ ๋ถ๋ถ๋ค๋ง ๋ ธ์ถ์ํจ๋ค.
์ฌํผ API์ ๊ฐ๋ ๊น์ง ์๊ฐํ๊ธฐ๋ ํ๋ค. ๊ทผ๋ฐ ์ ํํ ์ ์ถ์ํํ๊ฒ ์ํผ ์ฅ์ ์ผ๊น?
- ๊ฐ๋ฐ์๋ API๋ฅผ ํธ์ถํ๋ฉด ์์
์ด ์ผ์ด๋ ๊ฒ์์ ๊ธฐ๋ํ๋ ๊ฑธ๋ก ๋์ด๋ค. ๋ด๋ถ ์ฌ์ ์ ๋ชฐ๋ผ๋ ๋๋ค.
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ์์คํ ์ข ๋ฅ ํ๋ํ๋ ๋์ํด์ฃผ๋ ๊ฑด ๊ฐ๋ฐ์์ ๊ณ ๋ ค์ฌํญ์ด ์๋๊ฒ ๋๋ค.
- ๊ฐ๋ฐ์๊ฐ ๋ด๋ถ ์ฌ์ ์ ์๊ณ ํ๋ ๊ฒ๋ณด๋ค ๋ฒ๊ทธ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ ๋ค.
- ํ์ผ ์ฝ๋๋ฐ๋ง ํด๋ ์๋ง์ ์์คํ ์ฝ์ด ๋ฐ์ํ๋๋ฐ, ์ด ์์๋ฅผ ๊ฐ๋ฐ์๊ฐ ํ์คํ๊ฒ ์ง์ผ ํธ์ถํ ๊ฒ์ด๋ผ๊ณ ๋ณด์ฅํ ์ ์์๊น?
- API ๋ด๋ถ์์ ์์์ ์ฒ๋ฆฌํด์ฃผ๋๊ฒ 1๋จ ๊ฐ๋ฐ์ ๋ง์ด ํธํ๋ค. ๐ซ
RTE(Runtime Environment)
์ ๋จ๋ฝ์์๋ API๊ฐ ์ง์ ์์คํ ์ฝ์ ์์ฒญํ๋ค๋ ๊ฒ์ฒ๋ผ ๋งํ๋๋ฐ, ์์ ํ ํ๋ฆฐ ๋ง์ ์๋๊ธด ํ๋ฐ ... ์ฌ์ค ํ ๋จ๊ณ๊ฐ ๋ ์จ์ด์ ธ ์๋ค. ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ผ๋จ API ํธ์ถ์ ํ๋ฉด ์ต์ข ์ ์ผ๋ก๋ System Call์ด ํธ์ถ ๋๋ ๊ฒ์ ๋ง๋ค. ํ์ง๋ง ์ด๋ค System Call์ ํธ์ถํด์ฃผ๋ฉด ์ข์์ง ํ๋จ์ ํด์ฃผ๋ ์น๊ตฌ๊ฐ ํ์ํ๋ค.
๊ทธ๊ฒ ๋ฐ๋ก RTE์ System Call Interface๋ค. ์ด System Call Interface๊ฐ ํ์ํ ์ด์ ๋, ์ด์์ฒด์ ์ ๋ค์์ฑ๊ณผ ๊ด๋ จํด์ ์๊ฐํด๋ณด๋ฉด ๋๋ค. ์ด์์ฒด์ ๋ ๋๋ถ๋ถ ๋น์ทํ System Call ํ์์ ๊ฐ์ง๊ณ ์์ง๋ง, ์กฐ๊ธ์ฉ ๋ค๋ฅผ ์ ์๋ค. ์ฆ ์ด ๋ง์, ์ด์์ฒด์ ์ ํ๊ฒฝ์ ๋ง๊ฒ ์ ์ ํ ์์คํ ์ฝ์ด ๋ถ๋ ค์ผ ํ๋ค๋ ๋ง์ด๋ค. ๊ทธ๋์ ์ด ์ญํ ์ ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก System Call Interface์ด๋ค. ๊ทธ๋์ API ์์ฒญ์ด ๋ค์ด์ค๋ฉด, System Call Interface๊ฐ ์์ฒญ์ ๋จผ์ ๊ฐ๋ก์ฑ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์์คํ ์ฝ์ด ํ์ํ ์ง ํ๋จํ๊ณ ํธ์ถํด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ return ๊ฐ์ ๋ฐํํ๋ค.
์ด๋ ๊ฒ๋ง ์์ฑํ๋ฉด RTE๊ฐ ์์คํ ์ฝ ๋งคํผ์ฒ๋ผ ๋๊ปด์ง๋๋ฐ, ๊ทธ๊ฑด ์๋๋ค. ์ด์ธ์๋ ์ด์์ฒด์ ํ๊ฒฝ์ ์์์ผ๋ง ์ํ ๊ฐ๋ฅํ ์ผ๋ค์ ํด์ค๋ค. ๊ทธ๋์ ์ฑ ์์๋ RTE๋ฅผ, Applcation์ ์คํํ๊ธฐ ์ํด ํ์ํ ์ ์ฒด ์ํํธ์จ์ด๋ผ๊ณ ์๊ฐํ๋ค.
์๋๋ก์ด๋์ RTE
Android์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฝํ๋ฆฐ, ์๋ฐ๋ก ์์ฑ๋๋ค. ์ด ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํด์๋ RTE๊ฐ ํ์ํ๋ฐ, ์๋๋ก์ด๋์์ ART์ด๋ค. ๐ฅธ (๋ฌผ๋ก ์ฝ๋ ์์ฒด๋ JVM์ ์ฌ์ฉํด์ .class ํ์ผ๋ก ์ปดํ์ผ ๋๊ธฐ๋ ํ๋ค)
Android ๋ฐํ์(ART)
AOSP์์ ์ ๊ณตํ๋ ์๋ฐ ๋ฐํ์ ํ๊ฒฝ์ ๋๋ค. ART๋ ์ฑ์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๊ธฐ๊ธฐ์ ๋ฐํ์ ํ๊ฒฝ์์ ์คํ๋๋ ํ๋ก์ธ์๋ณ ๋ช ๋ น์ผ๋ก ๋ณํํฉ๋๋ค.

JAVA์ RTE
JAVA์ ๋ฐํ์ ํ๊ฒฝ์ JRE์ด๋ค.
AWS ๋ฌธ์์์๋ ๋ค์๊ณผ ๊ฐ์ด ์๊ฐํ๊ณ ์๋ค. ์ค๋ช ์ Java์ ํน์์ฑ์ธ, JRE๋ง ๊น๋ ค ์๋ค๋ฉด ์๋ฐ ์ฝ๋๋ ์ด๋์๋ ์ง ์คํ ๊ฐ๋ฅํด์ ~ ์ ์ฐ๊ด์ด ์๋ค. ๊ทธ๋ฌ๋ ์ด์จ๋ ์์ง๋, ์๋ฐ ํ๋ก๊ทธ๋จ์ ๋๋ฆฌ๋๋ฐ ํ์ํ ์ด์์ฒด์ ๋ฆฌ์์ค๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ์น๊ตฌ๊ฐ JRE๋ผ๋ ์ ์ด๋ค.

3. ์ ๋ฆฌํ์๋ฉด..
์์ฃผ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. ์ด์์ฒด์ ๋ ์ฌ๋ฌ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค. ์ด์ค ๊ฐ์ฅ ๋ฉ์ธ์ด ๋๋ ๊ฒ์ ํ๋ก๊ทธ๋จ ์ํ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์์ํ ๋น, ํ์ผ ์์คํ ์กฐ์, ์ ์ถ๋ ฅ ์ฐ์ฐ ๋ฑ๊ณผ ๊ฐ์ ์๋น์ค๋ค๋ ์ ๊ณตํ๋ค. ์ด ์๋น์ค๋ฅผ ์์ฒญํ๊ธฐ ์ํด์๋ ํฌ๊ฒ ๋ ๊ฐ์ง ๋ฐฉ์์ด ์๋ค. ์ฒซ ๋ฒ์งธ๊ฐ ์ฌ์ฉ์๋ค์ด ์ฃผ๋ก ์ฐ๋ Command Interpreter๋ฅผ ํ์ฉํ ๋ฐฉ์์ด๋ค. Command Interpreter๋ฅผ ํตํด ๋ช ๋ น์ด๋ฅผ ์์คํ ์ฝ๋ก ๋ฒ์ญํด์ ์์ฒญํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ฒ์งธ๋ ๊ฐ๋ฐ์๋ค์ด ์ฃผ๋ก ์ฌ์ฉํ๋ API๋ฅผ ํ์ฉํ๋ ๋ฐฉ์์ด๋ค. API๋ฅผ ํธ์ถํ๋ฉด RTE's System Call Interface๊ฐ ์ ์ ํ ์์คํ ์ฝ์ ํธ์ถํ๋ค.
์ฌ๊ธฐ๊น์ง๊ฐ ์ด์์ฒด์ ์ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด์ ์ด์์ฒด์ ์๊ฒ ์ผํ๊ฒ ๋ง๋ค๊ธฐ์ ๊ด๋ จ๋ ๋ด์ฉ์ด๋ค.
# ๋๋ฌธ์ฉ ์ด๋ฏธ์ง
'CS > etc' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[etc] vi editor ๊ฐ๋จํ ๋ช ๋ น์ด (0) | 2023.04.07 |
---|