2023. 3. 25. 15:07ใComputerScience/OperatingSystem
์ด์์ฒด์ (Operating System)๋?
- ์ปดํจํฐ ํ๋์จ์ด(CPU, IO์ฅ์น, ๋ฉ๋ชจ๋ฆฌ) ์์ ์ปดํจํฐ ์ํํธ์จ์ด๊ฐ ์ํ๋๋๋ก ๊ด๋ฆฌํด์ฃผ๋ ์ํํธ์จ์ด
- ํ๋ก๊ทธ๋จ์ด ํ๋์จ์ด๋ฅผ ๋ชฐ๋ผ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ธํฐํ์ด์ค ์ ๊ณต -> ์์คํ ์ฝ
- CPU์ ๊ฐ์ ํ๋์จ์ด๊ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ๋๋๋ก ๊ด๋ฆฌ
- ํ๋์จ์ด ๋ด๋ถ์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํต๋ก - BUS
1) System controller (north Bridge)
- CPU, ๋ฉ๋ชจ๋ฆฌ(DRAM), ๊ทธ๋ํฝ ์นด๋(AGP)
- memory controller hub (MCH)
- ๋งค์ฐ ๋น ๋ฅธ ์๋๊ฐ ์๊ตฌ๋จ
- AGP Bus, Memory Bus
2) Pheripheral Bus (South Bridge)
- I/O Controller Hub
- LAN, USB, ํค๋ณด๋ ๋ฑ๋ฑ ๋น๊ต์ ๋๋ฆฐ ์๋
System Call
1. System call์ ๊ฐ๋
https://fjvbn2003.tistory.com/306
์์คํ ํธ์ถ(system call)์ ์ด์ ์ฒด์ ์ ์ปค๋์ด ์ ๊ณตํ๋ ์๋น์ค์ ๋ํด,
์์ฉ ํ๋ก๊ทธ๋จ(=application)์ ์์ฒญ์ ๋ฐ๋ผ ์ปค๋์ ์ ๊ทผํ๊ธฐ ์ํ ์ธํฐํ์ด์ค
C๋ C++๊ณผ ๊ฐ์ด ๊ณ ๊ธ ์ธ์ด๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ๋ค์ ์ง์ ์์คํ ํธ์ถ์ ์ฌ์ฉํ ์ X
-> ๊ณ ๊ธ API๋ฅผ ํตํด ์์คํ ํธ์ถ์ ์ ๊ทผํ๊ฒ ํ๋ ๋ฐฉ๋ฒ
์ ์ ๋ ๋ฒจ์ ํ๋ก๊ทธ๋จ์ ์ ์ ๋ ๋ฒจ์ ํจ์๋ค ๋ง์ผ๋ก๋ ๋ง์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ํ๋ค๊ธฐ ๋๋ฌธ์,
์ปค๋(kernel)์ ๋์์ ๋ฐ๋์ ๋ฐ์์ผ ํ๋ค.
๊ทธ๋ฌ๋ ์์ฉํ๋ก๊ทธ๋จ์ผ๋ก ๋ํ๋๋ ์ ์ ํ๋ก์ธ์ค(User Process)์์ ์ ์ ๋ชจ๋์์๋ ์ปค๋์ ์ํํ ์ ์๋ค.
kernel์ ๊ด๋ จ๋ ๊ฒ์ ์ปค๋ ๋ชจ๋๋ก ์ ํํ ํํด๋น ์์ ์ ์ํํ ๊ถํ์ด ์ฃผ์ด์ง
์ด๋, ์ปค๋ ๋ชจ๋๋ฅผ ํตํ ์์ ์ ๋ฐ๋์ ์์คํ ์ฝ์ ํตํด ์ํํ๋๋ก ์ค๊ณ๋์ด ์๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ถํ์ ์ ํ์ํ ๊ฒ์ผ๊น?
๊ทธ ์ด์ ๋ ํด์ปค๊ฐ ํผํด๋ฅผ ์ ํ๊ธฐ ์ํด ์ ์์ ์ผ๋ก ์์คํ ์ฝ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
Or ์ฌ์ฉ์๊ฐ ์์๋ก ํจ์๋ฅผ ํธ์ถ ํ์ ๊ฒฝ์ฐ, ์์คํ ์ ์ฒด๋ฅผ ๋ง๊ฐ๋จ๋ฆด ์๋ ์๋ค.
๋ฐ๋ผ์ ์ด๋ฌํ ๋ช ๋ น์ด๋ค์ ํน๋ณํ๊ฒ ์ปค๋ ๋ชจ๋์์๋ง ์คํํ ์ ์๋๋ก ์ค๊ณ
๋ง์ฝ ์ ์ ๋ชจ๋์์ ์์คํ ์ฝ์ ํธ์ถํ ๊ฒฝ์ฐ -> ์ด์์ฒด์ ์์ ๋ถ๋ฒ์ ์ธ ์ ๊ทผ์ผ๋ก ํ๋จํ์ฌ trap์ ๋ฐ์์ํจ๋ค.
https://wpaud16.tistory.com/245
+ ์ฌ์ฉ์๊ฐ kernel level๋ก ๋ฐ๋ก ์ ๊ทผํ๋ฉด ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ ํ๋์ ์์ ์ฅ์น
+ ์์คํ ์ฝ์ user mode์์ kermel mode๋ก ๋ค์ด๊ฐ๋ ๊ฒ
+ ์์คํ
์ฝ์ ์ด์ฉํ๊ธฐ ์ํด ๋๋ถ๋ถ API๋ฅผ ์ฌ์ฉํ๋ค. API๋ฅผ ์ฐ๋ ์ด์ ๋ ์ด์์ฑ ๋๋ฌธ์ด๋ค.
์ฌ์ฉํ๋ ๊ณณ๋ง๋ค ์์คํ
์ฝ์ ํ๋ ํ๊ฒฝ์ด ๋ค๋ฅผ ํ
๋ฐ API๋ ์ธ์๋ง ๋ฐํํด์ฃผ๋ฉด ๊ฐ๋จํ๊ธฐ ๋๋ฌธ
์์คํ ์ฝ์ ์ด๋ป๊ฒ ๊ตฌํ๋ ๊น?
- ๋จผ์ ๊ฐ๊ฐ์ system call์ ๋ฒํธ(index)๋ฅผ ํ ๋น๋ฐ๋๋ฐ
table์ด๋ผ๋ ๊ณณ์์ indexed ๋์ด ํ ๋น๋๋ค. - system call interface(์์คํ
์ฝ ํธ๋ค๋ฌ)๋ ํ ๋น๋ ๋ฒํธ์ ๋ง๋ index๋ฅผ ์ฐพ์์ ์คํํ๊ณ
๋ค์ ๋ฐํํ๋ค. - ์์คํ ์ฝ๊ณผ mapping ๋๋ table์ ์ปดํจํฐ ๊ตฌ์กฐ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์๋ค.
2. ์์คํ ์ฝ์ ์ ํ
์์คํ ํธ์ถ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ง์ํ์ง ์๋ ๊ธฐ๋ฅ์ ๋ํ์ฌ ์ด์ ์ฒด์ ์ ๋ฃจํด์ ํธ์ถํ์ฌ ์ด์ฉํ๋ ๊ฒ์ ๋งํ๋ค.
์์คํ ํธ์ถ์ ์ธ ๊ฐ์ง ๊ธฐ๋ฅ
- ์ฌ์ฉ์ ๋ชจ๋์ ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ปค๋์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค. == ์ธํฐํ์ด์ค
- ์์คํ ํธ์ถ์ ํ๋ฉด ์ฌ์ฉ์ ๋ชจ๋์์ ์ปค๋ ๋ชจ๋๋ก ์ ํํ๋ค.
- ์ปค๋์์ ์์คํ ํธ์ถ์ ์ฒ๋ฆฌํ๋ฉด, ์ปค๋ ๋ชจ๋์์ ์ฌ์ฉ์ ๋ชจ๋๋ก ๋์๊ฐ ์์ ์ ๊ณ์ํ๋ค.
์์คํ ํธ์ถ์ ์ ํ
- ํ๋ก์ธ์ค ์ ์ด(process control)
- ํ์ผ ์กฐ์(file manipulation)
- ์ฅ์น ๊ด๋ฆฌ(device management)
- ์ ๋ณด ์ ์ง(information maintenance)
- ํต์ (communication)
https://luckyyowu.tistory.com/133
์์คํ
์ฝ์ ๋ค์ฏ ๊ฐ์ง์ ์ค์ํ ๋ฒ์ฃผ๋ก ๋๋ ์ ์๋ค.
ํ๋ก์ธ์ค ์ ์ด, ํ์ผ ์กฐ์, ์ฅ์น ์กฐ์, ์ ๋ณด ์ ์ง๋ณด์, ํต์ ๊ณผ ๋ณดํธ.
์ฌ๊ธฐ์๋ ๊ฐ ๋ฒ์ฃผ๋ค์ ์ด๋ ํ ๊ธฐ๋ฅ๋ค์ด ์๋์ง๋ง ๊ฐ๋ตํ๊ฒ ์ดํด๋ณธ๋ค.
2.4.1 ํ๋ก์ธ์ค ์ ์ด(Process Control)
- ๋๋ด๊ธฐ(end), ์ค์ง(abort)
- ์ ์ฌ(load), ์คํ(execute)
- ํ๋ก์ธ์ค ์์ฑ(create process)
- ํ๋ก์ธ์ค ์์ฑ ํ๋๊ณผ ์ค์ (get process attribute and set process attribute)
- ์๊ฐ ๋๊ธฐ(wait time)
- ์ฌ๊ฑด ๋๊ธฐ(wait event)
- ์ฌ๊ฑด์ ์๋ฆผ(signal event)
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ํด์ : malloc, free
2.4.2 ํ์ผ ์กฐ์(File Manipulation)
- ํ์ผ ์์ฑ(create file), ํ์ผ ์ญ์ (delete file)
- ์ด๊ธฐ(open), ๋ซ๊ธฐ(close)
- ์ฝ๊ธฐ(read), ์ฐ๊ธฐ(write), ์์น ๋ณ๊ฒฝ(reposition)
- ํ์ผ ์์ฑ ํ๋ ๋ฐ ์ค์ (get file attribute and set file attribute)
2.4.3 ์ฅ์น ๊ด๋ฆฌ(Devide Management)
- ์ฅ์น๋ฅผ ์๊ตฌ(request devices), ์ฅ์น๋ฅผ ๋ฐฉ์ถrelease device)
- ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์์น ๋ณ๊ฒฝ
- ์ฅ์น ์์ฑ ํ๋, ์ฅ์น ์์ฑ ์ค์
- ์ฅ์น์ ๋ ผ๋ฆฌ์ ๋ถ์ฐฉ(attach) ๋๋ ๋ถ๋ฆฌ(detach)
2.4.4 ์ ๋ณด ์ ์ง(Information Maintenance)
- ์๊ฐ๊ณผ ๋ ์ง์ ์ค์ ๊ณผ ํ๋(time)
- ์์คํ ๋ฐ์ดํฐ์ ์ค์ ๊ณผ ํ๋(date)
- ํ๋ก์ธ์ค ํ์ผ, ์ฅ์น ์์ฑ์ ํ๋ ๋ฐ ์ค์
2.4.5 ํต์ (Communication)
- ํต์ ์ฐ๊ฒฐ์ ์์ฑ, ์ ๊ฑฐ
- ๋ฉ์์ง์ ์ก์ , ์์
- ์ํ ์ ๋ณด ์ ๋ฌ
- ์๊ฒฉ ์ฅ์น์ ๋ถ์ฐฉ ๋ฐ ๋ถ๋ฆฌ
3. ๊ตฌ์ฒด์ ์ธ ์์คํ ์ฝ์ ๊ณผ์
https://ko.wikipedia.org/wiki/์์คํ _ํธ์ถ
+ ์ฌ์ง ์๋ฃ - ๊ตฌ์ฒด์ ์ธ ์์คํ ์ฝ์ ๊ณผ์
๋ค์๊ณผ ๊ฐ์ ์ ์ฐจ๋ก ์์ฉ ํ๋ก๊ทธ๋จ ํจ์๊ฐ ์ปค๋์ ํจ์์ ์ฐ๊ฒฐ๋๋ค:
- ์์ฉ ํ๋ก๊ทธ๋จ์์ open(...) ํจ์๋ฅผ ์คํํ๋ฉด
libc์์ ์ ๊ณตํ open ํจ์ ์์์ ์ธ์ ๋ฐ์ดํฐ๋ฅผ register์ ๋ฃ๊ณ ,
software interrupt(trap) ์คํ - trap์ ์ํด ISR(Interrupt Service Routine: ์ธํฐ๋ฌ)์ด ์๋ ์ปค๋์ ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ์์น๋ฅผ ์ฐพ์ ํด๋น ์ฃผ์๋ก ์คํ์ ์ฎ๊ธด๋ค.
์ด๋ CPU๋ ๊ถํ์์ค์ด ์ต๊ณ ์์ค์ธ ์คํ ๋ชจ๋(kernel mode)๊ฐ ๋๋ค.
CPU์ ์ธํฐ๋ฝํธ ๋ฉ์ปค๋์ฆ์ ์ํด ์๋ ๋ณํ๋๋ค. - ๋ง์ ์์คํ
ํธ์ถ ํจ์ ์ค์ ํด๋น ์ธํฐ๋ฝํธ ๋ฒกํฐ ์ซ์(์ธํฐ๋ฝํธ ๋๋ฒ)๋ฅผ ์ด์ฉํด ํจ์์ ์์น๋ฅผ ํ์ํ๊ณ ํด๋น ์ฃผ์๋ก ์ ํ
์ปค๋ ์์ ์ฅ์น ๋ชฉ๋ก์์ ํด๋น ์ฅ์น๋ฅผ ์ฐพ๊ณ , ๋๋ผ์ด๋ฒ์ ํจ์ .open์์ ์ ์๋ mydrv_open(...)๊ฐ ํธ์ถ๋จ. - mydrv_open()ํจ์์ return์ ๋ฐ๋ผ ์ปค๋์ ํจ์ ํธ์ถ์ด ์๋ฃ๋๊ณ ,
์ปค๋์ ๋ค์ ํด๋น ์์ฉ ํ๋ก๊ทธ๋จ์ ์ค์ผ์ค๋ง์ ์ํด ํ์ฑํํ๊ณ ํด๋น ํ๋ก์ธ์๋ก ์ ํํ๋ค.
์ด๋ CPU์ ๊ถํ์์ค์ ๋ค์ ์ฌ์ฉ์ ๋ชจ๋๋ก ์ ํ๋๋ค.
๋ง์ฝ write ํจ์๋ read ํจ์์ ํธ์ถ์ ์ํด, ์ปค๋์ ํจ์๊ฐ ํธ์ถ๋ ํ return์ ์ํด ์ข ๋ฃ๋์ง ์์ผ๋ฉด
์์ฉ ํ๋ก๊ทธ๋จ์ ์ค์ผ์ค๋ง์์ ๋น ์ ธ ์ปค๋์ ์ํ์์ ๋จธ๋ฌผ๋ฉด์ ๋ธ๋ญํน ํ์์ด ๋ฐ์ํ๋ค.
ํด๋น ๋๋ผ์ด๋ฒ์ ์ธํฐ๋ฝํธ ๋ฑ์ผ๋ก ๋ธ๋ญํน์ ํด์ ํ ์ ์๋ค.
4. System call vs Library call
https://coding-chobo.tistory.com/31
System Call๊ณผ Library Call์ ์ฃผ์ ์ฐจ์ด์
System Call: ์ปค๋์ ๋ํ Resource Access ์์ฒญ์ด๊ณ ,
Library Call: ํ๋ก๊ทธ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์๋ ํจ์์ ๋ํ ์์ฒญ
์ปค๋์ System Call ์ ๊ณต, ํ๋ก๊ทธ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Library Call ์ ๊ณต
1. System call
์ปดํจํฐ ์์คํ ์๋ Kernel Mode์ User Mode์ ๋ ๊ฐ์ง ๋ชจ๋๊ฐ ์์ต๋๋ค.
Kernel Mode์์ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ํ๋์จ์ด ๋ฆฌ์์ค์ ์ง์ ์ก์ธ์ค ํ ์ ์์ต๋๋ค.
+ User Mode์์ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ํ๋์จ์ด ๋ฆฌ์์ค์ ์ง์ ์ก์ธ์ค X
๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ์ User Mode์์ ์คํ๋จ
ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ๋ ํ๋์จ์ด ๋ฆฌ์์ค๊ฐ ํ์ํ ๊ฒฝ์ฐ -> System Call์ ์ฌ์ฉํ์ฌ ์ปค๋์ ์์ฒญ
-> ๋ชจ๋๊ฐ User Mode์์ Kernel Mode๋ก ์ ํ๋๊ณ ,
์์ ์ด ๋๋๋ฉด, ๋ชจ๋๊ฐ Kernel Mode์์ User Mode๋ก ๋ค์ ๋ฐ๋๋๋ค.
: ์ด๋ฌํ ๋ชจ๋ ์ ํ์ Context Switching
UNIX ์์คํ
์์ ๋ ๊ฐ์ง System Call ์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
- fork() : ๊ธฐ์กด ํ๋ก์ธ์ค๋ฅผ ์ ์งํ๋ฉด์ ์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
ํน์ ํ๋ก์ธ์ค๊ฐ fork()๋ฅผ ํธ์ถํ๋ฉด ํ๋ก์ธ์ค์ ์ฌ๋ณธ์ด ์์ฑ๋ฉ๋๋ค.
๋ฐ๋ผ์ ๋ ๊ฐ์ง ํ๋ก์ธ์ค๊ฐ ์์ต๋๋ค.
ํ๋๋ Parent ํ๋ก์ธ์ค์ด๊ณ ์์ฑ๋ ์ ํ๋ก์ธ์ค๋ Child ํ๋ก์ธ์ค์
๋๋ค.
- exec() : ์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๊ณ ์ข
๋ฃ ํ๋ก์ธ์ค๋ฅผ ์ ํ๋ก์ธ์ค๋ก ๋ฐ๊ฟ๋๋ค.
๋ฐ๋ผ์ exec()๋ฅผ ํธ์ถํ๋ฉด ์ ํ๋ก์ธ์ค ๋ง ์กด์ฌํฉ๋๋ค.
์ฆ, System Call์ ์ํ ํ ํ๋ก์ธ์ค๊ฐ ํ๊ดด๋ฉ๋๋ค.
2. Library Call
Library Call์ ํ๋ก๊ทธ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ก ์์ฒญํฉ๋๋ค.
ํ๋ก๊ทธ๋๋จธ๊ฐ ํน์ Library Call์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จผ์ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์์ผ ํฉ๋๋ค.
C ํ๋ก๊ทธ๋๋ฐ์์ ํ๋ก๊ทธ๋๋จธ๋ ํ๋ก๊ทธ๋จ์ ํค๋ ํ์ผ์ ํฌํจ์์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ํธ์ถ ํ ์ ์๊ณ ,
์ ์ฒ๋ฆฌ๊ธฐ ์ง์๋ฌธ (#include)์ ์ฌ์ฉํ์ฌ ํค๋ ํ์ผ์ ํฌํจ์์ผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํค๋ ํ์ผ์ ์๋ฅผ ๋ค๋ฉด, stdio.h ํค๋ ํ์ผ์๋ ์
๋ ฅ ๋ฐ ์ถ๋ ฅ ์กฐ์์ ์ํํ๋ ๋ค์ํ ๊ธฐ๋ฅ์ด ํฌํจ๋จ
fopen()์ ํ์ผ์ ์ฌ๋๋ฐ ์ฌ์ฉ๋๋ ๋ฐ๋ฉด, fclose()๋ ํ์ผ์ ๋ซ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
printf() ๊ธฐ๋ฅ์ ํ์ํ ๋ ์ถ๋ ฅ์ ํ์ค ์ถ๋ ฅ ์ฅ์น๋ก ๋ณด๋ผ ์ ์๊ณ , scanf() ๊ธฐ๋ฅ์ ํ์ค ์
๋ ฅ ์ฅ์น์์ ํ์ํ ๋ ์
๋ ฅํ ์ ์์ต๋๋ค.
๋ํ "math.h"ํค๋ ํ์ผ์๋ ์ํ ์ฐ์ฐ์ ์ํํ๋ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ต๋๋ค.
"time.h"ํค๋ ํ์ผ์๋ ์๊ฐ ๋ฐ ๋ฐ์ดํฐ ๊ณ์ฐ์ ์ํํ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
"string.h"ํค๋ ํ์ผ์๋ ๋ฌธ์์ด ์กฐ์์ ์ํํ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
3. System Call๊ณผ Library Call ์ฐจ์ด
System Call์ ์์์ Accessํ๊ธฐ ์ํด ํ๋ก๊ทธ๋จ์ด ์ปค๋์ ์ปค๋ ๋ชจ๋๋ฅผ ์์ฒญ
Library Call์ ํ๋ก๊ทธ๋จ์ด ํ๋ก๊ทธ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ ๋ ๊ธฐ๋ฅ์ Access ํ๊ธฐ ์ํ ์์ฒญ
- UNIX / LINUX์ Manul์ ๋ช
๋ น์ด man(manual)์ ํตํด์ ์ ๊ณต๋๊ณ ์์ผ๋ฉฐ,
manual์ ์์ญ์ ๋ฐ๋ผ Section ๋ฒํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
System Call์ Section 2๋ฒ์ ์ฌ์ฉํ๊ณ , Library Call์ Section 3๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
+ read() / write() ๋ฐ fread() / fwrite() ๋น๊ต
Library Call์ ์ฌ์ฉํ๋๋ผ๋, ๋ด๋ถ์ ์ผ๋ก System Call์ ์ฌ์ฉํฉ๋๋ค.
fread() / fwrite()์ ๊ฒฝ์ฐ ๋ด๋ถ์ ์ผ๋ก Buffer์ ๋ฐ์ดํฐ์ ์์๋ค๊ฐ ์ผ์ ํฌ๊ธฐ ์ด์์ด ๋๋ฉด read() / write()๋ฅผ ์คํํฉ๋๋ค.
read() / write() ๊ฐ์ System Call์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค
fread() / fwrite() ๊ฐ์ด Library Call์ ์ฌ์ฉํจ์ผ๋ก์จ,
System Call์ ํธ์ถ ๋น๋๊ฐ ํ์ฐํ๊ฒ ์ค์ด๋๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
Kernel ์ปค๋์ด๋?
- ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ์ฌ ํญ์ ์คํ๋๋(== ์ด์์๋) ํ๋ก๊ทธ๋จ
- ์ปค๋ + ์์คํ ํ๋ก๊ทธ๋จ -> ์ด์์ฒด์
- ์ด์์ฒด์ ์์ ํต์ฌ์ด ๋๋ ํ๋ก๊ทธ๋จ, ์์คํ ์ ๋ชจ๋ ๊ฒ์ ํต์ ํ๋ค.
- ์ด์์ฒด์ ์ ๋ค๋ฅธ ๋ถ๋ถ ๋ฐ Application ์ํ์ ํ์ํ ์ฌ๋ฌ๊ฐ์ง ์๋น์ค ์ ๊ณต
- ์ปค๋์ ์ญํ
- 1) ๋ณด์ - ์ปดํจํฐ ํ๋์จ์ด์ ํ๋ก์ธ์ค์ ๋ณด์ ์ฑ ์
- 2) ์์ ๊ด๋ฆฌ - ํ์ ๋ ์์คํ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ค. ex) ํ๋ก์ธ์ค์ CPU ํ ๋นํ๋ ์ค์ผ์ค๋ง
- 3) ์ถ์ํ - ์ด์ ์ฒด์ ์ ๋ณต์กํ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ๊ณ , ์ธํฐํ์ด์ค๋ฅผ ํ๋์จ์ด์๊ฒ ์ ๊ณต
CPU์ ๊ตฌ์กฐ
- ALU - ์ฐ์ ๋ ผ๋ฆฌ ์ฐ์ฐ ์ฅ์น -> ์ฐ์ & ๋ ผ๋ฆฌ ์ฐ์ฐ์
- CU - ์ ์ด์ ๋, control unit -> ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ
- MMU - memory management unit -> virtual memory ๊ด๋ฆฌ
Registers
- PC - program counter -> ์คํ์ํฌ ๋ช ๋ น์ด์ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ง
- IR - instruction register -> ์ํํ ๋ช ๋ น์ด
- SP - stack pointer -> stack's top์ ๊ฐ๋ฆฌํด
- PSW - program status word - ํ์ฌ CPU์ ์ํ
- General Purpose registers (๋ํ๊ธฐ, ๊ณฑํ๊ธฐ ๋ฑ ์์์ ์ผ๋ก ์ ์ฅ)
'ComputerScience > OperatingSystem' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] Synchronization in Swift (0) | 2023.04.17 |
---|---|
[์ด์์ฒด์ ] CFS in Linux (0) | 2023.04.10 |
[์ด์์ฒด์ ] GPGPU for Deep Learning (0) | 2023.04.02 |
[์ด์์ฒด์ ] CPU Interrupt (0) | 2023.03.25 |
[์ด์์ฒด์ ] CPU์ Architecture _ SMP vs NUMA vs Clustered system (0) | 2023.03.25 |