Skip to content

Commit

Permalink
feat: [OS] OS 개둠(1) (#17)
Browse files Browse the repository at this point in the history
  • Loading branch information
sunnny619 authored Jan 2, 2025
1 parent 437c81d commit 4bf8579
Show file tree
Hide file tree
Showing 5 changed files with 362 additions and 0 deletions.
1 change: 1 addition & 0 deletions .obsidian/app.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
1 change: 1 addition & 0 deletions .obsidian/appearance.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
30 changes: 30 additions & 0 deletions .obsidian/core-plugins.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"properties": false,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": false
}
169 changes: 169 additions & 0 deletions .obsidian/workspace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
{
"main": {
"id": "634aaf0496b492c8",
"type": "split",
"children": [
{
"id": "25a4c94f5622f304",
"type": "tabs",
"children": [
{
"id": "21fcf842d395c9fd",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "OS/OS 개둠(1).md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "OS 개둠(1)"
}
}
]
}
],
"direction": "vertical"
},
"left": {
"id": "01c3c39e1b081319",
"type": "split",
"children": [
{
"id": "453d809014ecf4e2",
"type": "tabs",
"children": [
{
"id": "7c379b6d44b27816",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical"
},
"icon": "lucide-folder-closed",
"title": "파일 탐색기"
}
},
{
"id": "065a8f22f598d999",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "검색"
}
},
{
"id": "4be260accb36353c",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
}
]
}
],
"direction": "horizontal",
"width": 220.5
},
"right": {
"id": "ca0d6dc7d3cb4600",
"type": "split",
"children": [
{
"id": "b359ea281cfb8844",
"type": "tabs",
"children": [
{
"id": "bfbd089905bf8b5e",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "OS/OS 개둠(1).md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "OS 개둠(1)의 백링크"
}
},
{
"id": "2b8977e99d61b97c",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"file": "OS/OS 개둠(1).md",
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "OS 개둠(1)의 λ‚˜κ°€λŠ” 링크"
}
},
{
"id": "487df3e4c5bbf217",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true
},
"icon": "lucide-tags",
"title": "Tags"
}
},
{
"id": "8bb1c149a146fbb0",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"file": "OS/OS 개둠(1).md"
},
"icon": "lucide-list",
"title": "OS 개둠(1) κ°œμš”"
}
}
]
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"switcher:퀡 μŠ€μœ„μ²˜ μ—΄κΈ°": false,
"graph:κ·Έλž˜ν”„ λ·° μ—΄κΈ°": false,
"canvas:μƒˆ μΊ”λ²„μŠ€ λ§Œλ“€κΈ°": false,
"daily-notes:였늘의 데일리 λ…ΈνŠΈ μ—΄κΈ°": false,
"templates:ν…œν”Œλ¦Ώ μ‚½μž…": false,
"command-palette:λͺ…λ Ήμ–΄ νŒ”λ ˆνŠΈ μ—΄κΈ°": false
}
},
"active": "21fcf842d395c9fd",
"lastOpenFiles": [
"OS/OS 개둠(1).md"
]
}
161 changes: 161 additions & 0 deletions OS/OS 개둠(1).md
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
#OS

>operating system concepts 10th 1μž₯을 ν† λŒ€λ‘œ μ •λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
# 1️⃣ Introduction

OSλ₯Ό 배우기 μ „ 기초 μ§€μ‹μœΌλ‘œ μ•Œμ•„λ‘λ©΄ 쒋을 컴퓨터 ν•˜λ“œμ›¨μ–΄ ꡬ성과 ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ 과정을 λ¨Όμ € μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

## 1. 컴퓨터 ν•˜λ“œμ›¨μ–΄μ˜ κΈ°λ³Έ ꡬ성

### 1.1 CPU (Central Processing Unit)

- **ꡬ성 μš”μ†Œ**
- **ALU(Arithmetic Logic Unit)** : μ‚°μˆ  μ—°μ‚°(λ§μ…ˆ, λΊ„μ…ˆ λ“±)κ³Ό 논리 μ—°μ‚°(AND, OR, XOR λ“±)을 λ‹΄λ‹Ήν•˜λŠ” μž₯치
- **컨트둀 μœ λ‹›(Control Unit)** : λ©”λͺ¨λ¦¬μ— μžˆλŠ” λͺ…λ Ήμ–΄λ₯Ό fetchν•˜μ—¬ decodingν•˜κ³ , ALUλ‚˜ 기타 λΆ€ν’ˆμ΄ ν•΄λ‹Ή λͺ…령을 μ˜¬λ°”λ₯΄κ²Œ μ‹€ν–‰ν•˜λ„λ‘ μ œμ–΄ν•˜λŠ” μž₯치
- **λ ˆμ§€μŠ€ν„°(Register)** : CPU 내뢀에 μžˆλŠ” 맀우 λΉ λ₯Έ μž„μ‹œ μ €μž₯곡간. ν”νžˆ ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°(PC)λ‚˜ μ‚°μˆ  연산을 μž„μ‹œλ‘œ μ €μž₯ν•˜λŠ” λ ˆμ§€μŠ€ν„°λ“€μ΄ 쑴재

- **μ—­ν• **
- λ©”λͺ¨λ¦¬μ— μ €μž₯된 기계어λ₯Ό **fetch**ν•˜κ³ ,
- μΈμΆœν•œ λͺ…λ Ήμ–΄λ₯Ό **decode**ν•˜μ—¬ μ–΄λ–€ 연산을 ν•΄μ•Ό ν•˜λŠ”μ§€ κ²°μ •ν•˜κ³ ,
- **execute**을 톡해 μ‹€μ œ μ—°μ‚°(ALU λ™μž‘ 및 λ ˆμ§€μŠ€ν„° μ‘°μž‘)을 μˆ˜ν–‰ν•¨

- **νŠΉμ§•**
- CPUκ°€ μ΄ν•΄ν•˜λŠ” 것은 **였직 기계어**μž„
- λ”°λΌμ„œ κ³ κΈ‰ μ–Έμ–΄(ex. C, Java λ“±)둜 μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ„ κΈ°κ³„μ–΄λ‘œ μ»΄νŒŒμΌν•˜κ±°λ‚˜, μΈν„°ν”„λ¦¬νŠΈ ν•΄μ£ΌλŠ” 과정이 λ°˜λ“œμ‹œ ν•„μš”

### 1.2 λ©”λͺ¨λ¦¬(Memory)

- **μ£ΌκΈ°μ–΅ μž₯치(Main Memory)** : ν”„λ‘œκ·Έλž¨μ΄ 싀행될 λ•Œ, CPUκ°€ λ°”λ‘œ μ ‘κ·Όν•˜μ—¬ μ½”λ“œμ™€ 데이터λ₯Ό μž„μ‹œλ‘œ μ €μž₯ν•˜λŠ” 곡간
- 보톡 RAM을 μ˜λ―Έν•˜λ©°, **전원이 꺼지면 휘발**λ˜λŠ” νŠΉμ„±μ„ 가짐 -> νœ˜λ°œμ„± λ©”λͺ¨λ¦¬

### 1.3 μž…μΆœλ ₯ μž₯치(I/O Device)

- **μž…λ ₯(Input) μž₯치** : ν‚€λ³΄λ“œ, 마우슀, ν„°μΉ˜μŠ€ν¬λ¦°, 마이크 λ“±
- **좜λ ₯(Output) μž₯치** : λͺ¨λ‹ˆν„°, ν”„λ¦°ν„°, μŠ€ν”Όμ»€ λ“±
- CPU와 λ©”λͺ¨λ¦¬κ°€ 직접 I/O μž₯μΉ˜λ“€κ³Ό μƒν˜Έ μž‘μš©ν•˜μ§€ μ•Šκ³ , I/O μ»¨νŠΈλ‘€λŸ¬λ‚˜ busλ₯Ό 톡해 데이터λ₯Ό μ£Όκ³ λ°›μŒ

>❓ **λ²„μŠ€?**
ν˜„λŒ€μ˜ 일반적인 컴퓨터 μ‹œμŠ€ν…œμ€ μ—¬λŸ¬κ°œμ˜ CPU와 μž₯치 컨트둀러(Device controllers)둜 κ΅¬μ„±λ˜μ–΄ 있음
이듀은 κ³΅ν†΅λ²„μŠ€λ‘œ 이어져 λ©”λͺ¨λ¦¬λ₯Ό κ³΅μœ ν•¨

```text
disks mouse, keyborad, printer monitor
| | |
+-----+ +--------+--------+ +--------+-------+ +---------+--------+
| CPU | | disk controller | | USB controller | | graphics adapter |
+--+--+ +--------+--------+ +--------+-------+ +---------+--------+
| | | |
+-------------+---------+---------+-------------------+
|
+---+----+
| memory |
+--------+
```


## 2. ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ κ³Όμ •

### 2.1 κ³ κΈ‰ μ–Έμ–΄μ—μ„œ κΈ°κ³„μ–΄λ‘œ

1. **μ†ŒμŠ€ μ½”λ“œ μž‘μ„±**(ex. C, C++, Java λ“±)
2. **컴파일(λ˜λŠ” μΈν„°ν”„λ¦¬νŠΈ) κ³Όμ •**을 거쳐 **기계어**둜 λ³€ν™˜
3. λ³€ν™˜λœ κΈ°κ³„μ–΄λŠ” **λ©”λͺ¨λ¦¬μ— λ‘œλ“œ**λ˜μ–΄ μ‹€ν–‰

### 2.2 CPU의 λͺ…λ Ήμ–΄ μ‹€ν–‰ 사이클

1. **Fetch** : λ©”λͺ¨λ¦¬μ—μ„œ ν˜„μž¬ PC(Program Counter)κ°€ κ°€λ¦¬ν‚€λŠ” λͺ…λ Ήμ–΄λ₯Ό κ°€μ Έμ˜΄
2. **Decode** : κ°€μ Έμ˜¨ λͺ…λ Ήμ–΄λ₯Ό ν•΄λ…ν•˜μ—¬ μ–΄λ–€ 연산을 ν•΄μ•Ό ν•˜λŠ”μ§€ νŒŒμ•…
3. **Execute** : ALU와 λ ˆμ§€μŠ€ν„° 등을 ν™œμš©ν•˜μ—¬ λͺ…λ Ήμ–΄κ°€ μš”κ΅¬ν•˜λŠ” μ—°μ‚° μˆ˜ν–‰
4. **Store/Write Back** : μ‹€ν–‰ κ²°κ³Όκ°€ ν•„μš”ν•˜λ‹€λ©΄ λ ˆμ§€μŠ€ν„°λ‚˜ λ©”λͺ¨λ¦¬μ— μ €μž₯
5. λ‹€μŒ λͺ…λ Ήμ–΄λ‘œ 이동(PCλ₯Ό κ°±μ‹ )ν•˜κ³ , λ‹€μ‹œ fetch 과정을 반볡

==μ΄λŸ¬ν•œ **인좜-해독-μ‹€ν–‰** 사이클에 따라 λͺ…λ Ήμ–΄λ₯Ό 순차적으둜 μ²˜λ¦¬ν•˜λŠ” ꡬ쑰λ₯Ό **폰 λ…Έμ΄λ§Œ(von Neumann) μ•„ν‚€ν…μ²˜**라고 ν•©λ‹ˆλ‹€.==

# 2️⃣ What operating systems do

운영체제 ν•˜λ“œμ›¨μ–΄μ™€ μ‘μš©ν”„λ‘œκ·Έλž¨ 사이에 μ‘΄μž¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ λ§ν•©λ‹ˆλ‹€.
μ»΄ν“¨ν„°μ˜ ν•˜λ“œμ›¨μ–΄λ₯Ό κ΄€λ¦¬ν•˜κ³ , ν•˜λ“œμ›¨μ–΄μ™€ μ†Œν”„νŠΈμ›¨μ–΄, μ‚¬μš©μžλ₯Ό λ§€κ°œν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ λœ»ν•˜μ£ .

그렇기에 운영체제λ₯Ό λ‹€λ₯Έ λ§λ‘œλŠ” **resource manager**(μžμ›κ΄€λ¦¬μž) 라고 λΆ€λ¦…λ‹ˆλ‹€.

μ˜ˆμ „μ—λŠ” 운영체제(OS)λ₯Ό 컀널(Kernel)이라고도 λΆˆλ €μŠ΅λ‹ˆλ‹€.

>❓**컀널(Kernel)**
컀널은 운영체제의 핡심
μš΄μ˜μ²΄μ œλŠ” 컀널과 컀널 λͺ¨λ“ˆ(Kernel module)λ“€λ‘œ κ΅¬μ„±λ˜λŠ”λ°, 컀널이 운영체제의 ν•΅μ‹¬μ΄λ‹€λ³΄λ‹ˆ 일반적으둜 μš΄μ˜μ²΄μ œμ™€ 컀널은 λ™μΌμ‹œ 됨. 컀널이 κ°™λ‹€λ©΄ 같은 운영체제둜 μ·¨κΈ‰

운영체제의 역할은 μ‚¬μš©μž 관점(User View)κ³Ό μ‹œμŠ€ν…œ 관점(System View)으둜 λ‚˜λˆ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

## 1. 운영체제의 μ—­ν• 
### 1.1 User View

일반적으둜 μ‚¬μš©μžλŠ” 컴퓨터λ₯Ό μ‚¬μš©ν• λ•Œ λ‹¨μˆœνžˆ ν‚€λ³΄λ“œμ™€ 마우슀λ₯Ό μ΄μš©ν•΄ μ‘°μž‘ν•©λ‹ˆλ‹€.
μ‚¬μš©μžκ°€ λ‹¨μˆœνžˆ κΈ°κ³„λ§Œ μ‘°μž‘ν•¨μœΌλ‘œμ„œ 컴퓨터λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” μ΄μœ λŠ” μš΄μ˜μ²΄μ œκ°€ 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

μš΄μ˜μ²΄μ œλŠ” μ‚¬μš©μžκ°€ 컴퓨터 μžμ› μ‚¬μš©(Resource utilization)을 신경쓰지 μ•Šκ²Œ λ„μš°λ©°, μ‚¬μš©μžκ°€ 컴퓨터λ₯Ό μ‰½κ²Œ μ΄μš©ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€.

또 λ‹€λ₯Έ 경우λ₯Ό μ‚΄νŽ΄λ³΄λ©΄, μ‚¬μš©μžλŠ” λ©”μΈν”„λ ˆμž„(Mainframe)에 μ—°κ²°λœ 터미널을 μ‚¬μš©ν•˜κ±°λ‚˜ λ―Έλ‹ˆμ»΄ν“¨ν„°(Minicomputer)λ₯Ό μ‚¬μš©μ΄ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 μƒν™©μ—μ„œ μ»΄ν“¨ν„°μ˜ μžμ›μ„ μ—¬λŸ¬ μ‚¬μš©μžκ°€ λ‚˜λˆ μ“°κ²Œ λ˜λŠ”λ°, μš΄μ˜μ²΄μ œλŠ” μ‚¬μš©μžλ“€μ΄ μžμ›μ„ κ³΅ν‰ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

### 1.2 System View

μ‹œμŠ€ν…œμ—κ²Œ μš΄μ˜μ²΄μ œλŠ”Β **μžμ› ν• λ‹Ήμž**(Resource allocator)μž…λ‹ˆλ‹€.
컴퓨터 μ‹œμŠ€ν…œμ€ CPU μ‹œκ°„, λ©”λͺ¨λ¦¬ 곡간, 파일 μ €μž₯μ†Œ 곡간, μž…μΆœλ ₯ μž₯치 λ“± λ‹€μ–‘ν•œ 문제λ₯Ό ν•΄κ²°ν•΄μ•Ό ν•˜λŠ”λ°μš”.
μš΄μ˜μ²΄μ œλŠ” μ΄λŸ¬ν•œ 컴퓨터 μžμ›λ“€μ„ κ΄€λ¦¬ν•˜λŠ”Β **μ œμ–΄ ν”„λ‘œκ·Έλž¨**μœΌλ‘œμ„œ λ™μž‘ν•˜κ²Œ λ©λ‹ˆλ‹€.

### 1.3 운영체제의 역할은?

μœ„ 두 관점을 μ’…ν•©ν•΄ 보면, 운영체제(OS)κ°€ μ‚¬μš©μžμ—κ²ŒλŠ” **νŽΈλ¦¬ν•œ μΈν„°νŽ˜μ΄μŠ€**λ‘œμ„œ λ™μž‘ν•˜κ³ , μ‹œμŠ€ν…œμ—κ²ŒλŠ” **μžμ›μ„ 효율적으둜 관리**ν•˜λŠ” κ΄€λ¦¬μž(ν• λ‹Ήμž)둜 λ™μž‘ν•œλ‹€λŠ” 점을 이해할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λ‘œλΆ€ν„° 얻을 수 μžˆλŠ” μ€‘μš”ν•œ **이해/μ‹œμ‚¬μ **은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

- **운영체제의 이쀑 μ—­ν• **
- β€˜μ‚¬μš©μžβ€™ μΈ‘λ©΄μ—μ„œμ˜ νŽΈμ˜μ„±κ³Ό
- β€˜μ‹œμŠ€ν…œβ€™ μΈ‘λ©΄μ—μ„œμ˜ μžμ› 할당・관리

이 두 가지 역할을 κ· ν˜• 있게 μˆ˜ν–‰ν•˜λŠ” 것이 운영체제의 핡심 κΈ°λŠ₯μž„

- **좔상화와 보호**
OSλŠ” ν•˜λ“œμ›¨μ–΄ μžμ›μ— λŒ€ν•œ 접근을 좔상화해 μ£Όμ–΄, μ‚¬μš©μžκ°€ ν•˜λ“œμ›¨μ–΄ λ™μž‘μ„ 직접 λ‹€λ£° ν•„μš” 없도둝 도움
λ™μ‹œμ— μ—¬λŸ¬ μ‚¬μš©μžκ°€ μžμ›μ„ μ•ˆμ „ν•˜κ²Œ λ‚˜λˆ„μ–΄ 쓰도둝 λ³΄ν˜Έμ™€ 관리 λ©”μ»€λ‹ˆμ¦˜μ„ μ œκ³΅ν•¨

- **닀쀑 μ‚¬μš©μž ν™˜κ²½**
μ—¬λŸ¬ μ‚¬μš©μžκ°€ λ™μ‹œμ— μ‹œμŠ€ν…œμ— μ ‘κ·Όν•˜κ³  ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ” ν™˜κ²½μ—μ„œλŠ” μš΄μ˜μ²΄μ œκ°€ κ³΅μ •ν•œ μžμ› μ‚¬μš© 보μž₯, μ‚¬μš©μž κ°„μ˜ κ°„μ„­(좩돌) 방지, λ³΄μ•ˆ, 였λ₯˜ 처리 등을 μ‹ κ²½ 써야 함


==μ •λ¦¬ν•˜μžλ©΄, **μš΄μ˜μ²΄μ œλŠ” μ‚¬μš©μžμ—κ²ŒλŠ” νŽΈλ¦¬ν•¨μ„, μ‹œμŠ€ν…œ μž…μž₯μ—μ„œλŠ” 효율과 μ•ˆμ „μ„±μ„ 제곡**ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄λΌλŠ” 점을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.==

## 2. Computer Startup

κ·Έλ ‡λ‹€λ©΄ μ»΄ν“¨ν„°λŠ” μ–΄λ–»κ²Œ μ‹œμž‘λ˜κ³  μ΄λ•Œμ˜ μš΄μ˜μ²΄μ œλŠ” μ–΄λ–€ 역할을 ν•˜λŠ”μ§€ μ•Œμ•„λ΄…μ‹œλ‹€.

컴퓨터가 μ‹œμž‘λ˜λŠ” κ³Όμ •(booting)은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

컴퓨터λ₯Ό 켜면 **λΆ€νŠΈμŠ€νŠΈλž© ν”„λ‘œκ·Έλž¨**(Bootstrap program)μ΄λΌλŠ” μ΄ˆκΈ°ν™” ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ©λ‹ˆλ‹€.
이 ν”„λ‘œκ·Έλž¨μ„ μ»΄ν“¨ν„°μ˜ **ROM(Read-Only Memory)** μ΄λ‚˜ EEPROM(Electrically Erasable Programmable Read-Only Memory)에 μ €μž₯λ˜μ–΄ 있으며, 주둜 νŽŒμ›¨μ–΄(Firmware)라고 λΆˆλ¦½λ‹ˆλ‹€.

Bootstrap program은 μ‹œμŠ€ν…œμ„ μ΄ˆκΈ°ν™”ν•˜κ³ , **λΆ€νŠΈλ‘œλ”**(Boot loader)λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

λ©€ν‹°λΆ€νŒ… 컴퓨터도 μ‘΄μž¬ν•˜λŠ”λ°, 이 경우 λΆ€νŠΈλ‘œλ”κ°€ μ—¬λŸ¬ 운영체제λ₯Ό 가리킀고 μžˆκΈ°μ— μ–΄λ–€ 운영체제λ₯Ό 싀행할지 선택해야 ν•©λ‹ˆλ‹€.

그리고 Boot loaderλŠ” μ΅œμ’…μ μœΌλ‘œ 운영체제λ₯Ό μ‹€ν–‰ν•˜κ²Œ λ©λ‹ˆλ‹€.

>❓**booting을 ν•˜λŠ” 이유?**
μ»΄ν“¨ν„°μ˜ λ©”λͺ¨λ¦¬λŠ” λΉ„νœ˜λ°œμ„± λ©”λͺ¨λ¦¬(ROM)μ΄λΌμ„œ μ’…λ£Œ ν–ˆλ‹€κ°€ λ‹€μ‹œ μ‹€ν–‰ν•˜λ©΄ μ΄ˆκΈ°ν™” 됨
그렇기에 컴퓨터λ₯Ό μž‘λ™ν•˜κΈ° μœ„ν•΄μ„œ 운영체제λ₯Ό 읽어듀여야 ν•˜λŠ”λ° 이λ₯Ό μœ„ν•΄ booting을 진행

컀널이 load, μ‹€ν–‰λ˜λ©΄ **μ‹œμŠ€ν…œκ³Ό μ‚¬μš©μžμ—κ²Œ μ„œλΉ„μŠ€λ₯Ό 제곡**ν•΄μ•Ό ν•˜λŠ”λ°μš”.
μ΄λ•Œ 일뢀 μ„œλΉ„μŠ€λŠ” 컀널 μ™ΈλΆ€μ—μ„œ μ œκ³΅λ˜λŠ”λ°, 이듀은 λΆ€νŒ…ν•  λ•Œ λ©”λͺ¨λ¦¬μ— λ‘œλ“œλ˜λŠ” μ‹œμŠ€ν…œ ν”„λ‘œμ„ΈμŠ€(System processes)λ‚˜ μ‹œμŠ€ν…œ 데λͺ¬(System daemons)을 λ§ν•©λ‹ˆλ‹€.

>❓**데λͺ¬?**
데λͺ¬(Daemon)은 μ „ν˜•μ μœΌλ‘œ **λ°±κ·ΈλΌμš΄λ“œ**(background)μ—μ„œ μ‹€ν–‰λ˜λ©΄μ„œ, νŠΉμ • μ„œλΉ„μŠ€λ‚˜ κΈ°λŠ₯을 μ§€μ†μ μœΌλ‘œ μ œκ³΅ν•˜κ±°λ‚˜ λͺ¨λ‹ˆν„°λ§ν•˜λŠ” 역할을 ν•˜λŠ” **ν”„λ‘œμ„ΈμŠ€**λ₯Ό 말함
일반적으둜 μ‚¬μš©μžκ°€ 직접 μ‹€ν–‰ν•˜κ±°λ‚˜ μΈν„°λž™μ…˜ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό 달리, 데λͺ¬μ€ λΆ€νŒ… μ‹œμ  ν˜Ήμ€ ν•„μš”μ— 따라 μžλ™μœΌλ‘œ μ‹œμž‘λ˜μ–΄ μ‹œμŠ€ν…œ μ΄λ²€νŠΈλ‚˜ μš”μ²­μ„ κ°μ‹œν•˜κ³  μ²˜λ¦¬ν•¨

UNIX의 경우 첫 μ‹œμŠ€ν…œ ν”„λ‘œμ„ΈμŠ€λŠ”Β **init**이며, 이 ν”„λ‘œμ„ΈμŠ€λŠ” 또 λ‹€λ₯Έ 데λͺ¬λ“€μ„ μ‹€ν–‰μ‹œν‚΅λ‹ˆλ‹€.
데λͺ¬μ€ ν”„λ‘œμ„ΈμŠ€λ‘œ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ λŒλ©΄μ„œ μ‹œμŠ€ν…œ λ‘œκ·ΈλŠ” λ‚¨κΈ°λŠ” λ“±μ˜ μ—¬λŸ¬ μž‘μ—…μ„ μ§„ν–‰ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 과정이 λλ‚˜λ©΄ μ‹œμŠ€ν…œμ΄ μ™„μ „νžˆ booting되고, μ΄λ²€νŠΈκ°€ λ°œμƒν•˜κΈ°λ₯Ό κΈ°λ‹€λ¦¬κ²Œ λ©λ‹ˆλ‹€.

# πŸ”— μ°Έκ³ 
operating system concepts 10th
https://parksb.github.io/article/5.html

0 comments on commit 4bf8579

Please sign in to comment.