-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: [OS] process * fix: add picture * fix: picture * fix: picture
- Loading branch information
1 parent
91a254f
commit fa9d5da
Showing
1 changed file
with
150 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,150 @@ | ||
## ๊ฐ์ | ||
|
||
Operating System(OS)์ ์ฃผ์ ๊ธฐ๋ฅ ์ค ํ๋๋ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ค. ํ๋ก์ธ์ค๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ์ถ์ํ๋ก, ์คํ ๋จ์ ๋ฐ ๋ณดํธ ๋๋ฉ์ธ ์ญํ ์ ์ํํ๋ค. ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค ์์ฑ, ์คํ, ์ํ ์ ํ, ์ข ๋ฃ ๋ฑ ํ๋ก์ธ์ค์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๋ค. | ||
|
||
--- | ||
|
||
## 1. ํ๋ก๊ทธ๋จ์์ ํ๋ก์ธ์ค๋ก | ||
|
||
### ํ๋ก๊ทธ๋จ ์์ฑ ๊ณผ์ | ||
|
||
<img width="547" alt="Pasted image 20241126134119" src="https://github.com/user-attachments/assets/6fe807bd-c288-43b9-98df-64999d4c7e00" /> | ||
|
||
|
||
- **Source Code**: ์ฌ๋์ด ์ดํดํ ์ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋์ด๋ค. | ||
- **Object File**: ์ปดํ์ผ๋ฌ๋ฅผ ํตํด ๊ธฐ๊ณ์ด๋ก ๋ณํ๋ ํ์ผ๋ก, CPU๊ฐ ์ดํดํ ์ ์๋ค. | ||
- ํ๋ก์ธ์ค๋ก ๋ณํ๋๊ธฐ ์ํ ์ ๋ณด๊ฐ ์ฝ์ ๋์ด์ผ ํ๋ค. | ||
- **Executable File**: ๋ง์ปค๋ฅผ ํตํด ์คํ ๊ฐ๋ฅํ ํํ๋ก ๋ณํ๋ ํ์ผ์ด๋ค. | ||
- **Loader**: Executable File์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ์ฌ Address Space๋ฅผ ์์ฑํ๊ณ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ค. | ||
|
||
--- | ||
|
||
### ์ปดํ์ผ๋ฌ์ ๋ง์ปค | ||
|
||
- **์ปดํ์ผ๋ฌ**: | ||
- Source Code๋ฅผ Object File๋ก ๋ณํํ๋ค. | ||
- ํ์ผ์ CPU ์ํคํ ์ฒ(x86, ARM ๋ฑ)์ ๋ง๊ฒ ์์ฑ๋๋ค. | ||
- **๋ง์ปค**: | ||
- ์ฌ๋ฌ Object File๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ์ฌ Executable File๋ก ๋ณํํ๋ค. | ||
- ์ฌ๋ณผ๋ค์ ์ฃผ์๋ฅผ ์ ๋๊ฐ(Absolute Address)์ผ๋ก ๋ณํํ๋ค. | ||
|
||
--- | ||
|
||
### ๋ก๋์ Runtime System | ||
|
||
<img width="458" alt="Pasted image 20241126134647" src="https://github.com/user-attachments/assets/c3972d8f-ccfa-41db-af5a-ee502d3f189f" /> | ||
|
||
|
||
- **Loader**: | ||
- Executable File์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๊ณ Address Space๋ฅผ ์์ฑํ๋ค. | ||
- ์ด๊ธฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ณต์ฌํ๊ณ , ํ๋ก๊ทธ๋จ์ ์คํ์ ์ค๋นํ๋ค. | ||
- **Runtime System**: | ||
- ํ๋ก๊ทธ๋จ์ ํจ์จ์ ์คํ์ ์ง์ํ๋ฉฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๊ธฐํ ๋ฐ ๋ฉ์ธ ํจ์ ํธ์ถ์ ๋ด๋นํ๋ค. | ||
|
||
--- | ||
|
||
## 2. ํ๋ก์ธ์ค ๊ฐ๋ | ||
|
||
### ํ๋ก์ธ์ค ์ ์ | ||
|
||
- **Execution Unit**: ํ๋ก์ธ์ค๋ ์ค์ผ์ค๋ง์ ๋จ์์ด๋ค. | ||
- **Protection Domain**: ํ๋ก์ธ์ค ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์ ํํ๋ค. | ||
- **๊ตฌ์ฑ ์์**: | ||
- Program Counter | ||
- Stack | ||
- Data Section | ||
|
||
### Process Image | ||
|
||
ํ๋ก์ธ์ค๋ ๋ฉ๋ชจ๋ฆฌ ์์์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค: | ||
|
||
- **Text Segment**: ์คํ ๋ช ๋ น์ด์ ๊ด๋ จ๋ ์ฝ๋. | ||
- **Data Segment**: ์ด๊ธฐํ๋ ์ ์ญ ๋ณ์. | ||
- **bss Segment**: ์ด๊ธฐํ๋์ง ์์ ์ ์ญ ๋ณ์. | ||
- **Heap**: ๋์ ์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ. | ||
- **Stack**: ํจ์ ํธ์ถ๊ณผ ๋ก์ปฌ ๋ณ์. | ||
|
||
### Process State | ||
|
||
ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์ ์ํ๋ฅผ ๊ฐ์ง๋ค: | ||
|
||
- **New**: ์์ฑ ์ค. | ||
- **Running**: ์คํ ์ค. | ||
- **Waiting**: ํน์ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ค. | ||
- **Ready**: ํ๋ก์ธ์ ํ ๋น ๋๊ธฐ ์ค. | ||
- **Terminated**: ์คํ ์ข ๋ฃ. | ||
|
||
--- | ||
|
||
## 3. ํ๋ก์ธ์ค ๊ด๋ฆฌ | ||
|
||
### Process Control Block(PCB) | ||
|
||
๊ฐ ํ๋ก์ธ์ค๋ OS์์ PCB๋ก ํํ๋๋ค. | ||
|
||
- **์ ๋ณด ํฌํจ**: | ||
- Process State | ||
- Program Counter | ||
- CPU Registers | ||
- Memory Management Information | ||
- I/O Status Information | ||
|
||
### Context Switch | ||
|
||
Context Switch๋ CPU๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํด ๊ธฐ์กด ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ์๋ก์ด ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๋ก๋ํ๋ ์์ ์ด๋ค. | ||
|
||
- **ํน์ง**: | ||
- Context Switching์ Overhead๋ฅผ ๋ฐ์์ํจ๋ค. | ||
- ํ๋์จ์ด ์ง์์ ๋ฐ๋ผ ํจ์จ์ฑ์ด ๋ฌ๋ผ์ง๋ค. | ||
- **CISC vs RISC**: | ||
- CISC | ||
- ๋ณต์กํ ๋ช ๋ น์ด ์ -> ๋์ ํจ์จ, ํด๋ญ ์๋ ์ ํ | ||
- ๋ณต์กํ ํ๋ก | ||
- RISC | ||
- ๊ฐ๋จํ ๋ช ๋ น์ด ์ -> ๋์ ํด๋ญ ์๋, ๋น ๋ฅธ ์ํ ์๋ | ||
- ์ ์ฝ๋ ๊ณต๊ฐ์ ๋ ๋ง์ ๋ ์ง์คํฐ ์ฅ์ฐฉ | ||
- RISC๋ ๊ฐ๋จํ ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋น ๋ฅธ ์ํ ์๋๋ฅผ ์ ๊ณตํ์ง๋ง, Context Switching์์ ๋ ๋ง์ Overhead๊ฐ ๋ฐ์ํ๋ค. | ||
|
||
### Process Creation | ||
|
||
ํ๋ก์ธ์ค๋ Concurrentํ๊ฒ ์คํ๋ ์ ์์ผ๋ฉฐ ๋์ ์ผ๋ก ์์ฑ ๋ฐ ์ข ๋ฃ๋๋ค. | ||
|
||
<img width="207" alt="Pasted image 20241126141508" src="https://github.com/user-attachments/assets/5548d601-85d7-46c9-80c0-62ccf9fbe0fc" /> | ||
|
||
|
||
- **Unix ์์คํ **: | ||
- `fork()` ์์คํ ์ฝ๋ก Parent Process๋ก๋ถํฐ Child Process๋ฅผ ์์ฑํ๋ค. | ||
- Parent์ Child๋ ๋ฉ๋ชจ๋ฆฌ์ ์์์ ๊ณต์ ํ๊ฑฐ๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. | ||
|
||
### Process Termination | ||
|
||
ํ๋ก์ธ์ค๋ ์คํ์ด ๋๋ ํ ์ข ๋ฃ๋๋ค. | ||
|
||
- **์ข ๋ฃ ์กฐ๊ฑด**: | ||
- ํ๋ก์ธ์ค๊ฐ ๋ง์ง๋ง ๋ช ๋ น์ด๋ฅผ ์คํํ ํ OS์ `exit()` ์์คํ ์ฝ์ ํตํด ์ข ๋ฃ๋ฅผ ์์ฒญํ๋ค. | ||
- **๋์ ๊ณผ์ **: | ||
- ์์ ํ๋ก์ธ์ค์ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ Parent Process๋ก ๋ฐํํ๋ค(์: `wait()` ํจ์ ์ฌ์ฉ). | ||
- OS๋ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ์์์ ํ์ํ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ค. | ||
- **๋น์ ์ ์ข ๋ฃ**: | ||
- ํ๋ก์ธ์ค๋ `abort()` ํจ์๋ `SIGABRT` ์ ํธ๋ฅผ ํตํด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋ ์ ์๋ค. | ||
- ์ด ๊ฒฝ์ฐ Core Dump๊ฐ ์์ฑ๋์ด ๋๋ฒ๊น ์ ์ฌ์ฉ๋๋ค. | ||
|
||
--- | ||
|
||
## 4. ํ๋ก์ธ์ค ํ๋ ฅ | ||
|
||
<img width="219" alt="Pasted image 20241126141945" src="https://github.com/user-attachments/assets/b3d0c5be-8d37-429a-b413-ecc076574a37" /> | ||
|
||
|
||
ํ๋ก์ธ์ค ํ๋ ฅ์ ์๋ก ๋ ๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๊ฐ ์ํธ์์ฉํ์ฌ ์์ ์ ์ํํ๋ ๊ฒ์ ์๋ฏธํ๋ค. | ||
|
||
- **์ฅ์ **: | ||
- ์ ๋ณด ๊ณต์ . | ||
- ๊ณ์ฐ ์๋ ํฅ์. | ||
- ๋ชจ๋ํ ๋ฐ ํธ์์ฑ ์ ๊ณต. | ||
|
||
--- | ||
|
||
## ๊ฒฐ๋ก | ||
|
||
ํ๋ก์ธ์ค๋ OS์์ ๊ฐ์ฅ ์ค์ํ ๊ด๋ฆฌ ๋จ์๋ก, ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ํด ํ์ํ ๋ค์ํ ์ ๋ณด์ ๋ฉ์ปค๋์ฆ์ ํฌํจํ๋ค. ํ๋ก์ธ์ค ๊ด๋ฆฌ์ ์ดํด๋ ํจ์จ์ ์ธ ์ด์์ฒด์ ์ค๊ณ์ ์ฑ๋ฅ ์ต์ ํ์ ํต์ฌ์ด๋ค. Context Switching, Process State, PCB ๋ฑ์ ๊ฐ๋ ์ ์์คํ ์์์ ํจ์จ์ ํ์ฉ๊ณผ ์์ ์ฑ ๋ณด์ฅ์ ์ํ ๊ธฐ์ด๊ฐ ๋๋ค. |