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