auto commit

This commit is contained in:
CyC2018 2018-02-27 13:15:52 +08:00
parent d49bbc8193
commit e849e80495
2 changed files with 23 additions and 23 deletions

View File

@ -98,7 +98,7 @@ File、InputStream 和 OutputStream、Reader 和 Writer、Serializable、Socket
如果发现笔误,可以直接编辑修改,楼主会及时处理。
如果您觉得哪部分内容写的好或者不好,都希望您能在 Issue 中进行反馈,您的反馈是楼主改进的方向。
如果您觉得哪部分内容写的好或者不好,都希望您能在 Issues 中进行反馈,您的反馈是楼主改进的方向。
想要支持楼主的话,在 Github 上点个 Star 即可。

View File

@ -21,9 +21,9 @@
* [进程状态的切换](#进程状态的切换)
* [调度算法](#调度算法)
* [1. 批处理系统中的调度](#1-批处理系统中的调度)
* [1.1 先来先服务FCFS](#11-先来先服务fcfs)
* [1.2 短作业优先SJF](#12-短作业优先sjf)
* [1.3 最短剩余时间优先SRTN](#13-最短剩余时间优先srtn)
* [1.1 先来先服务](#11-先来先服务)
* [1.2 短作业优先](#12-短作业优先)
* [1.3 最短剩余时间优先](#13-最短剩余时间优先)
* [2. 交互式系统中的调度](#2-交互式系统中的调度)
* [2.1 优先权优先](#21-优先权优先)
* [2.2 时间片轮转](#22-时间片轮转)
@ -96,7 +96,7 @@
### 2. 共享
共享是指系统中的资源可以供多个并发进程共同使用。
共享是指系统中的资源可以供多个并发进程共同使用。
有两种共享方式:互斥共享和同时共享。
@ -104,7 +104,7 @@
### 3. 虚拟
虚拟技术把一个物理实体转换为多个逻辑实体。主要有两种虚拟技术:时分复用技术和空分复用技术,例如多个进程能在同一个处理器上并发执行使用了时分复用技术,让每个进程轮流占有处理器,每次只执行一小个时间片并快速切换,这样就好像有多个处理器进行处理
虚拟技术把一个物理实体转换为多个逻辑实体。主要有两种虚拟技术:时分复用技术和空分复用技术,例如多个进程能在同一个处理器上并发执行使用了时分复用技术,让每个进程轮流占有处理器,每次只执行一小个时间片并快速切换。
### 4. 异步
@ -152,19 +152,19 @@
### 2. 线程
一个线程中可以有多个线程,是独立调度的基本单位。同一个进程中的多个线程之间可以并发执行,它们共享进程资源。
一个进程中可以有多个线程,线程是独立调度的基本单位。同一个进程中的多个线程之间可以并发执行,它们共享进程资源。
### 3. 区别
① 拥有资源:进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问率属进程的资源。
- **拥有资源**:进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问率属进程的资源。
② 调度:线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。
- **调度**:线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。
③ 系统开销由于创建或撤销进程时系统都要为之分配或回收资源如内存空间、I/O 设备等,因此操作系统所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置。而线程切换时只需保存和设置少量寄存器内容,开销很小。此外,由于同一进程内的多个线程共享进程的地址空间,因此,这些线程之间的同步与通信非常容易实现,甚至无需操作系统的干预。
- **系统开销**由于创建或撤销进程时系统都要为之分配或回收资源如内存空间、I/O 设备等,因此操作系统所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置。而线程切换时只需保存和设置少量寄存器内容,开销很小。
④ 通信方面:进程间通信 (IPC) 需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间可以通过直接读/写进程数据段(如全局变量)来进行通信。
- **通信方面**:进程间通信 (IPC) 需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间可以通过直接读/写同一进程中的数据段(如全局变量)来进行通信。
举例QQ 和 浏览器是两个进程,浏览器进程里面有很多线程,例如 http 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 http 请求时,浏览器还可以响应用户的其它事件。
举例QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。
## 进程状态的切换
@ -180,25 +180,25 @@
### 1. 批处理系统中的调度
#### 1.1 先来先服务FCFS
#### 1.1 先来先服务
first-come first-serverd。
first-come first-serverdFCFS
调度最先进入就绪队列的作业。
有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。
#### 1.2 短作业优先SJF
#### 1.2 短作业优先
shortest job first。
shortest job firstSJF
调度估计运行时间最短的作业。
长作业有可能会饿死,处于一直等待短作业执行完毕的状态。如果一直有短作业到来,那么长作业永远得不到调度。
#### 1.3 最短剩余时间优先SRTN
#### 1.3 最短剩余时间优先
shortest remaining time next。
shortest remaining time nextSRTN
### 2. 交互式系统中的调度
@ -214,19 +214,19 @@ shortest remaining time next
将所有就绪进程按 FCFS 的原则排成一个队列,每次调度时,把 CPU 分配给队首进程,该进程可以执行一个时间片。当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把 CPU 分配给队首的进程。
时间片轮转算法的效率和时间片有很大关系。因为每次进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太,进程切换太频繁,在进程切换上就会花过多时间。
时间片轮转算法的效率和时间片的大小有很大关系。因为每次进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太,进程切换太频繁,在进程切换上就会花过多时间。
#### 2.3 多级反馈队列
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/042cf928-3c8e-4815-ae9c-f2780202c68f.png)
设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权越高的队列中,为每个进程所规定的执行时间片就越小。
1. 设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权越高的队列中,为每个进程所规定的执行时间片就越小。
当一个新进程进入内存后,首先将它放入第一队列的末尾,按 FCFS 原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入下一个队列的队尾。
2. 当一个新进程进入内存后,首先将它放入第一队列的末尾,按 FCFS 原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入下一个队列的队尾。
仅当前 i -1 个队列均空时,才会调度第 i 队列中的进程运行
3. 仅当前 i -1 个队列均空时,才会调度第 i 队列中的进程。
优点:实时性好,适合运行短作业和长作业。
优点:实时性好,同时适合运行短作业和长作业。
#### 2.4 短进程优先