From 11831849f7b06301fb132c59c42aea1feced6ab0 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Mon, 1 Oct 2018 22:26:22 +0800 Subject: [PATCH] auto commit --- notes/Socket.md | 4 ++-- notes/计算机操作系统.md | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/notes/Socket.md b/notes/Socket.md index ddc47f56..c188580d 100644 --- a/notes/Socket.md +++ b/notes/Socket.md @@ -38,7 +38,7 @@ Unix 有五种 I/O 模型: 应用进程被阻塞,直到数据复制到应用进程缓冲区中才返回。 -应该注意到,在阻塞的过程中,其它程序还可以执行,因此阻塞不意味着整个操作系统都被阻塞。因为其他程序还可以执行,因此不消耗 CPU 时间,这种模型的 CPU 利用率效率会比较高。 +应该注意到,在阻塞的过程中,其它程序还可以执行,因此阻塞不意味着整个操作系统都被阻塞。因为其他程序还可以执行,所以不消耗 CPU 时间,这种模型的 CPU 利用率效率会比较高。 下图中,recvfrom 用于接收 Socket 传来的数据,并复制到应用进程的缓冲区 buf 中。这里把 recvfrom() 当成系统调用。 @@ -62,7 +62,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 它可以让单个进程具有处理多个 I/O 事件的能力。又被称为 Event Driven I/O,即事件驱动 I/O。 -如果一个 Web 服务器没有 I/O 复用,那么每一个 Socket 连接都需要创建一个线程去处理。如果同时有几万个连接,那么就需要创建相同数量的线程。并且相比于多进程和多线程技术,I/O 复用不需要进程线程创建和切换的开销,系统开销更小。 +如果一个 Web 服务器没有 I/O 复用,那么每一个 Socket 连接都需要创建一个线程去处理。如果同时有几万个连接,那么就需要创建相同数量的线程。相比于多进程和多线程技术,I/O 复用不需要进程线程创建和切换的开销,系统开销更小。

diff --git a/notes/计算机操作系统.md b/notes/计算机操作系统.md index 432aeca4..7ed11bbe 100644 --- a/notes/计算机操作系统.md +++ b/notes/计算机操作系统.md @@ -173,7 +173,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H Ⅱ 调度 -线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。 +线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。 Ⅲ 系统开销 @@ -181,7 +181,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H Ⅳ 通信方面 -线程间可以通过直接读/写同一进程中的数据段来进行通信,但是进程通信需要借助 IPC。 +线程间可以通过直接读写同一进程中的数据进行通信,但是进程通信需要借助 IPC。 ## 进程状态的切换 @@ -243,7 +243,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H **2.3 多级反馈队列** -如果一个进程需要执行 100 个时间片,如果采用时间片轮转调度算法,那么需要交换 100 次。 +一个进程需要执行 100 个时间片,如果采用时间片轮转调度算法,那么需要交换 100 次。 多级队列是为这种需要连续执行多个时间片的进程考虑,它设置了多个队列,每个队列时间片大小都不同,例如 1,2,4,8,..。进程在第一个队列没执行完,就会被移到下一个队列。这种方式下,之前的进程只需要交换 7 次。 @@ -338,9 +338,9 @@ void consumer() { down(&full); down(&mutex); int item = remove_item(); + consume_item(item); up(&mutex); up(&empty); - consume_item(item); } } ``` @@ -837,7 +837,7 @@ FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户 为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。 -从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序称为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0\~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。 +从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0\~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。

@@ -989,7 +989,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 优先调度与当前磁头所在磁道距离最近的磁道。 -虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两边的磁道请求更容易出现饥饿现象。 +虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象。