Control Data Structure
_Control Data Structure_๋ ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํด OS์ ์ํด ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๋ค.
๊ฐ๊ฐ์ ํ๋ก์ธ์ค์ ์์์ ๋ํ ํ์ฌ ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ OS ์์คํ ๊ด๋ฆฌ์ ์์ด์ ๊ฐ๊ฐ์ ์ํฐํฐ ๋ง๋ค ํ ์ด๋ธ๋ค์ด ๊ตฌ์ฑ๋๋๋ฐ, ๊ทธ ์ค์์ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๋ ํ ์ด๋ธ์ TCB, Table Control Block์ด๋ผ๊ณ ํ๋ค.
Process Control Block(PCB)
PCB๋ ๊ฐ๊ฐ์ Process๋ง๋ค ํ ๋น๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๋ถ์๋ ์ฌ๋ฌ๊ฐ์ง ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ์์ฑ๋ค์ ๊ฐ์ง๊ณ ์๋ค.
- Identifier : ๊ณ ์ ํ ์๋ณ์์ด๋ค.
- State, Priority : ์์ ์ดํด๋ณธ ํ๋ก์ธ์ค์ ์ํ ์ ๋ณด์ด๋ค. Priority๋ ์ฐ์ ์์๋ฅผ ์ ์ฅํ๋ค.
- Program Counter : ํ์ฌ ๋ช ๋ น ์์๋ฅผ ์ ์ฅํ๋ ๋ ์ง์คํฐ
- Memory pointers : ํ๋ก์ธ์ค๊ฐ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ์์ ์ด๋์ ์ ์ฅ๋์ด ์๋ ์ง ์ ์ฅ
- Address of memory context : ํ๋ก๊ทธ๋จ ์ฝ๋์ ๋ณ์ ์์น
- I/O status information : ์ ์ถ๋ ฅ์ ์งํ ์ํ ์ ์ฅ
- Accounting information : ์์ ์ด์ฉ์ ๋ํ ํต๊ณ ์ ๋ณด ์ ์ฅ

์ PCB๋ Linux์ PCB ๊ตฌ์กฐ์ด๋ค. ์ด๋ ๊ฒ struct๋ก ์์๋ค์ ๊ณ์ธต์ ์ผ๋ก ๋๋ ์ด์ ๋ ํ๋ก์ธ์ค๋ค๊ฐ์ ์์ ๊ณต์ ๋ฅผ ์กฐ๊ธ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด์์ด๋ค.
Process List
Process List๋ ์ปดํจํฐ ์์ ๋ชจ๋ PCB๋ค์ Double Linked List๋ก ์ฐ๊ฒฐํ ๊ฒ์ด๋ค. ์ฆ, ์ค์ ํ๋ก์ธ์ค๋ค์ ๋ค๋ฅธ ๊ณณ์ ์ ์ฅ๋์ด ์๊ณ , PCB๋ฅผ ์ด์ ๊ฒ์ด๋ค.
๋ฆฌ๋ ์ค์์๋ ์ด๋ฌํ Process List๋ฅผ ๊ฐ์ง๋๋ฐ, ์ฌ๊ธฐ์ ๊ฐ๊ฐ์ Process๋ค์ _task struct_๋ผ๋ ๋จ์๋ก ๋ฌถ์ด๋๊ณ ์ ๋ค ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅํ๋๋ก ๋ง๋ค์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ์ฐ๊ฒฐ๋ Double Linkned List๋ฅผ Run Queue๋ผ๊ณ ํ๋๋ฐ, ์ด๋ ์ฐ๋ฆฌ๊ฐ ์์ ๋ฐฐ์ ๋ Ready Queue์ ๋์ผํ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ Header์ ์๋ PCB๋ idle(swapper) process์ Process Descriptor์ด๋ค. ์ด ํ๋ก์ธ์ค๋ OS๊ฐ ์๋์ ์ผ๋ก ๋ง๋ค์ด๋ธ ํ๋ก์ธ์ค์ด๋ฉฐ, ์ต์ด๋ก ์ ์์ ์ผ๋ก ๋ง๋ค์ด์ง ํ๋ก์ธ์ค์ธ init ํ๋ก์ธ์ค๋ฅผ ๋ง๋๋ ์ญํ ์ ํ๋ค.
์ฆ, swapper process๋ ํญ์ Run Queue์ ์กด์ฌํ๋ค.
Process identification & Processor State information
PCB๋ ์๋์ ๊ฐ์ด ๊ตฌ๋ถํ์ฌ ์ ์ฅํ๋ค.
Process identification์ ์์ฐ์ ๊ฐ์ ์ ์ฅํ๋ ๋ณ์์ด๋ค. ์ด๋ ์๊ธฐ ์์ ์ ํ๋ก์ธ์ค ์์ด๋ ๋ฟ๋ง์ด ์๋๋ผ ๋ถ๋ชจ ํ๋ก์ธ์ค ์์ด๋, ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์์ ์๋ณ์๋ ๊ฐ์ด ์ ์ฅํ๋ค.
์ถ๊ฐ์ ์ผ๋ก ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ๋ํ ์ ๋ณด๋ ์ง๋๋ค. ์ด๋ ์ฐ๋ฆฌ๊ฐ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์์๋ ์์์ ์ง์ ๋๋ค.
Processor State information์ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๋ํ๋๊ณผ ๋์์ CPU ๋ ์ง์คํฐ์ ๋ํ ์ ๋ณด๋ ๊ฐ์ง๋ค.
์ฌ๊ธฐ์ ์ ์ฅ๋ ๋ ์ง์คํฐ๋ค์,
๋ฒ์ฉ ๋ ์ง์คํฐ(eax, ebx, ecx, edx, esi, edi), ๋ช ๋ น ํฌ์ธํฐ ๋ ์ง์คํฐ(eip), ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๋ํ๋ด๋ ๋ ์ง์คํฐ(eflags), ์คํ ์ฃผ์๋ฅผ ๋ํ๋ด๋ ๋ ์ง์คํฐ(sp), ์ด์ ๋ชจ๋๋ฅผ ์ ์ดํ๋ ์ปจํธ๋กค ๋ ์ง์คํฐ(cp0, cp1, cp2...), ๋ฐ์ดํฐ ํ์ ์ ๋ฐ๋ฅธ ์์น๋ฅผ ์ ์ฅํ๋ ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ(cs, ds, ss, es, fs...) ๋ฑ์ ๋ํ ์ ๋ณด๊ฐ ์ ์ฅ๋๋ค.
์ฆ, CPU ๋ด์ ๋ ์ง์คํฐ์ ์๋ ๋ฐ์ดํฐ๋ค์ Context Switch๊ฐ ์ผ์ด๋จ์ ๋ฐ๋ผ ๊ฐ๋ค์ด ๋ฐ๋๋๋ฐ ์ด ๊ฐ๋ค์ ์ ์ฅํ๊ธฐ ์ํด์ PCB์ ํด๋น ๋ ์ง์คํฐ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
์ค์ํ ๊ฒ์ Context Switch๊ฐ ์ผ์ด๋ ๋, ๋ฉ๋ชจ๋ฆฌ์ ํ์ฌ PCB๋ฅผ ์ ์ฅํ๋ _save context_๊ณผ์ ์ด ์ผ์ด๋๊ณ , ๊ทธ์ ๋์์ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ์ด์ ์ ์ ์ฅํ๋ PCB๋ฅผ ๊ฐ์ ธ์ค๋ _restore context_๊ณผ์ ์ด ์ผ์ด๋๋ค๋ ๊ฒ์ด๋ค.
Process Control Information
ํ๋ก์ธ์ค ์ค์ผ์ค๋ง์ ๋ค์์ ์คํ๋ ํ๋ก์ธ์ค๋ฅผ ์ ํ๋ ์์ ์ ๋งํ๋ค.
์ด๋ฐ์ผ์ ํ๊ธฐ ์ํด์ ์ด์์ฒด์ ๋ ๊ฐ ํ๋ก์ธ์ค๊ฐ ์ด๋ค ์ํ์ธ์ง, ์ฐ์ ์์๊ฐ ์ด๋ป๊ฒ ๋๋ ์ง ๋ฑ์ ํต๊ณ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
๊ทธ๋์ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๋ค์ ์ ์ด์ ๊ด๋ จ๋ ์ ๋ณด๋ ์ง๋๋ ๋ฐ, ์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.
- Inter-process Communication
- ํ๋ก์ธ์ค๊ฐ์ ํต์ ์ ์ํ ์ ๋ณด
- ํ๋ก์ธ์ค ๊ถํ(Process Privileges)
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ฑ
- ์ปดํจํ ์์์ ๋ํ ์ ๋ณด
Data Structuring

ํ๋ก์ธ์ค๋ ๊ทธ ์ธ์๋ ์ฌ๋ฌ ๊ตฌ์กฐ๋ก ์ฐ๊ฒฐ๋ ์ ์๋ค.
์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์์ ์๋ฏ์ด ์์ ํ๋ก์ธ์ค๋ _p pptr_์ด๋ผ๋ ํฌ์ธํฐ๋ฅผ ํตํด ๋ถ๋ชจ PCB๋ก ์ ๊ทผํ ์ ์๊ณ , ๋ฐ๋๋ _p cptr_์ด๋ค. ํ์ ๊ด๊ณ๋ _p osptr_๊ณผ _p ysptr_๋ก ์ฐ๊ฒฐ๋๋ค.
'๐ Knowledge > ์ด์์ฒด์ (OS)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [์ด์์ฒด์ ] Process Context์ ๋ํด์ ์์๋ณด์. (0) | 2024.03.16 |
|---|---|
| [์ด์์ฒด์ ] ๋ฆฌ๋ ์ค ๋ช ๋ น์ด ์ ๋ฆฌ (0) | 2024.03.13 |
| [์ด์์ฒด์ ] ํ๋ก์ธ์ค ์ํ๋ ์์๋ณด๊ธฐ (1) | 2024.03.09 |
| [์ด์์ฒด์ ] ํ๋ก์ธ์ค์ ๊ธฐ๋ณธ ๊ฐ๋ ์์๋ณด๊ธฐ (0) | 2024.03.09 |
| [์ด์์ฒด์ ] ์ปค๋์ ์ข ๋ฅ์ ๊ตฌ์กฐ๋ฅผ ์์๋ณด์. (0) | 2024.03.09 |