Skip to content

Commit 767ac3c

Browse files
committed
8.27 os modify
1 parent ceec536 commit 767ac3c

1 file changed

Lines changed: 166 additions & 0 deletions

File tree

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
# 操作系统
2+
3+
!!! abstract "课程概述"
4+
本笔记涵盖操作系统的核心概念,包括进程管理、内存管理、文件系统等重要内容。
5+
6+
## 2. 进程与线程
7+
8+
### 2.1 进程的基本概念
9+
10+
!!! abstract "进程的引入目的"
11+
为了实现系统的**并发性****共享性**,操作系统引入了进程的概念。
12+
13+
#### 进程的组成
14+
15+
!!! info "进程实体的三个组成部分"
16+
1. **PCB(Process Control Block)**:进程控制块
17+
2. **程序段**:可执行的程序代码
18+
3. **数据段**:程序运行时的相关数据
19+
20+
这三部分共同构成**进程实体**,创建进程实质上就是创建PCB。
21+
22+
#### 进程的定义
23+
24+
!!! note "进程的几种典型定义"
25+
- **实例定义**:正在执行程序的实例
26+
- **加载定义**:程序及其数据从硬盘加载到内存后在CPU上的执行过程
27+
- **功能定义**:具有独立功能的程序在一个数据集合上运行的过程
28+
29+
!!! important "进程的本质"
30+
进程是**进程实体的运行过程**,是系统进行**资源分配和调度**的一个独立单位。
31+
32+
这里的"系统资源"主要指**时间资源**(时间片)。
33+
34+
#### 进程的特征
35+
36+
!!! tip "进程的四个基本特征"
37+
38+
**1. 动态性(Dynamic)**
39+
- 进程是程序的一次执行过程,有创建、执行、消亡的过程
40+
- 程序是静态的,进程是动态的
41+
42+
**2. 并发性(Concurrency)**
43+
- 多个进程可以在同一时间段内执行
44+
- 宏观上同时进行,微观上交替执行
45+
46+
**3. 独立性(Independence)**
47+
- 进程是能独立运行、独立获得资源、独立接受调度的基本单位
48+
- 不同进程的工作不会相互干扰
49+
50+
**4. 异步性(Asynchronism)**
51+
- 各进程按各自独立的、不可预知的速度向前推进
52+
- 操作系统必须提供"进程同步机制"来解决异步问题
53+
54+
### 2.2 进程状态与转换
55+
56+
![进程状态转换图](https://eclipseyue-1323281044.cos.ap-nanjing.myqcloud.com/pic/processState.png)
57+
58+
!!! info "进程的基本状态"
59+
60+
**运行态(Running)**
61+
- 进程正在CPU上执行
62+
- 单核系统中,同一时刻只有一个进程处于运行态
63+
64+
**就绪态(Ready)**
65+
- 进程已获得除CPU外的所有必需资源
66+
- 等待分配CPU时间片
67+
68+
**阻塞态(Blocked/Waiting)**
69+
- 进程因等待某个事件而暂停执行
70+
- 即使给它CPU也无法运行
71+
72+
!!! tip "状态转换条件"
73+
- **就绪 → 运行**:获得CPU时间片
74+
- **运行 → 就绪**:时间片用完
75+
- **运行 → 阻塞**:等待I/O或其他事件
76+
- **阻塞 → 就绪**:等待的事件发生
77+
78+
### 2.3 进程控制块(PCB)
79+
80+
!!! abstract "PCB的重要作用"
81+
PCB是操作系统用于管理和控制进程的数据结构,包含了进程的所有相关信息。
82+
83+
**PCB的主要内容:**
84+
- **进程标识信息**:PID、用户ID等
85+
- **处理机状态信息**:寄存器值、程序计数器等
86+
- **进程调度信息**:进程状态、优先级等
87+
- **进程控制信息**:程序入口地址、资源清单等
88+
89+
### 2.4 信号机制
90+
91+
!!! abstract "信号的概念"
92+
信号是Unix/Linux系统中进程间通信的一种方式,用于通知进程发生了某个事件。
93+
94+
#### 信号的特点
95+
96+
!!! note "信号处理特点"
97+
- **pending**:信号已产生但尚未被处理
98+
- **blocked**:信号被暂时阻塞,不会立即处理
99+
- **优先级**:程序号小的信号优先级高
100+
- **信号丢弃**:同类型的后续信号可能被丢弃
101+
102+
#### 信号相关系统调用
103+
104+
!!! example "kill系统调用"
105+
```c
106+
int kill(pid_t pid, int sig);
107+
```
108+
- 向指定进程发送信号
109+
- pid:目标进程ID
110+
- sig:信号编号
111+
112+
!!! tip "信号处理时机"
113+
- **内核态转用户态**时会检查是否有待处理信号
114+
- 信号可以作为**异常处理的配套机制**
115+
116+
#### 常见信号类型
117+
118+
参考CSAPP和man pages中的信号表,了解各种信号的含义和用途。
119+
120+
### 2.5 线程的引入
121+
122+
!!! abstract "为什么引入线程"
123+
为了在进程内部实现更细粒度的并发,提高系统的并发性能。
124+
125+
#### 进程与线程的关系
126+
127+
!!! important "资源分配与调度的分离"
128+
- **进程**:资源分配的基本单位
129+
- **线程**:CPU调度的基本单位
130+
- **线程并发**:在同一进程内实现多线程并发执行
131+
132+
#### 线程的优势
133+
134+
!!! tip "线程的特点"
135+
136+
**1. 切换开销小**
137+
- 线程切换不需要CPU状态切换
138+
- 同一进程内的线程共享地址空间
139+
140+
**2. 资源共享**
141+
- 同一进程内的线程共享内存、文件等资源
142+
- 通信更加便捷
143+
144+
**3. 创建销毁快**
145+
- 线程的创建和销毁比进程更快
146+
147+
#### 线程的分类
148+
149+
!!! note "用户级线程 vs 内核级线程"
150+
151+
**用户级线程(User-level Thread)**
152+
- 由用户程序负责管理,而非操作系统
153+
- 操作系统感知不到用户级线程的存在
154+
- 切换速度快,但无法充分利用多核
155+
156+
**内核级线程(Kernel-level Thread)**
157+
- 由操作系统内核直接管理
158+
- 可以充分利用多核处理器
159+
- 切换开销相对较大
160+
161+
!!! warning "用户级线程的限制"
162+
- 一个用户级线程阻塞会导致整个进程阻塞
163+
- 无法在多核系统上并行执行
164+
- 调度完全依赖于用户程序的实现
165+
166+

0 commit comments

Comments
 (0)