Skip to content

Commit 1183184

Browse files
committed
auto commit
1 parent abb0eca commit 1183184

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

notes/Socket.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Unix 有五种 I/O 模型:
3838

3939
应用进程被阻塞,直到数据复制到应用进程缓冲区中才返回。
4040

41-
应该注意到,在阻塞的过程中,其它程序还可以执行,因此阻塞不意味着整个操作系统都被阻塞。因为其他程序还可以执行,因此不消耗 CPU 时间,这种模型的 CPU 利用率效率会比较高。
41+
应该注意到,在阻塞的过程中,其它程序还可以执行,因此阻塞不意味着整个操作系统都被阻塞。因为其他程序还可以执行,所以不消耗 CPU 时间,这种模型的 CPU 利用率效率会比较高。
4242

4343
下图中,recvfrom 用于接收 Socket 传来的数据,并复制到应用进程的缓冲区 buf 中。这里把 recvfrom() 当成系统调用。
4444

@@ -62,7 +62,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *
6262
6363
它可以让单个进程具有处理多个 I/O 事件的能力。又被称为 Event Driven I/O,即事件驱动 I/O。
6464
65-
如果一个 Web 服务器没有 I/O 复用,那么每一个 Socket 连接都需要创建一个线程去处理。如果同时有几万个连接,那么就需要创建相同数量的线程。并且相比于多进程和多线程技术,I/O 复用不需要进程线程创建和切换的开销,系统开销更小。
65+
如果一个 Web 服务器没有 I/O 复用,那么每一个 Socket 连接都需要创建一个线程去处理。如果同时有几万个连接,那么就需要创建相同数量的线程。相比于多进程和多线程技术,I/O 复用不需要进程线程创建和切换的开销,系统开销更小。
6666
6767
<div align="center"> <img src="../pics//1492929444818_6.png"/> </div><br>
6868

notes/计算机操作系统.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -173,15 +173,15 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H
173173

174174
Ⅱ 调度
175175

176-
线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。
176+
线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。
177177

178178
Ⅲ 系统开销
179179

180180
由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。
181181

182182
Ⅳ 通信方面
183183

184-
线程间可以通过直接读/写同一进程中的数据段来进行通信,但是进程通信需要借助 IPC。
184+
线程间可以通过直接读写同一进程中的数据进行通信,但是进程通信需要借助 IPC。
185185

186186
## 进程状态的切换
187187

@@ -243,7 +243,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H
243243

244244
**2.3 多级反馈队列**
245245

246-
如果一个进程需要执行 100 个时间片,如果采用时间片轮转调度算法,那么需要交换 100 次。
246+
一个进程需要执行 100 个时间片,如果采用时间片轮转调度算法,那么需要交换 100 次。
247247

248248
多级队列是为这种需要连续执行多个时间片的进程考虑,它设置了多个队列,每个队列时间片大小都不同,例如 1,2,4,8,..。进程在第一个队列没执行完,就会被移到下一个队列。这种方式下,之前的进程只需要交换 7 次。
249249

@@ -338,9 +338,9 @@ void consumer() {
338338
down(&full);
339339
down(&mutex);
340340
int item = remove_item();
341+
consume_item(item);
341342
up(&mutex);
342343
up(&empty);
343-
consume_item(item);
344344
}
345345
}
346346
```
@@ -837,7 +837,7 @@ FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户
837837

838838
为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。
839839

840-
从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序称为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0\~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。
840+
从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0\~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。
841841

842842
<div align="center"> <img src="../pics//7b281b1e-0595-402b-ae35-8c91084c33c1.png"/> </div><br>
843843

@@ -989,7 +989,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问
989989
990990
优先调度与当前磁头所在磁道距离最近的磁道。
991991

992-
虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两边的磁道请求更容易出现饥饿现象
992+
虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象
993993

994994
<div align="center"> <img src="../pics//4e2485e4-34bd-4967-9f02-0c093b797aaa.png"/> </div><br>
995995

0 commit comments

Comments
 (0)