diff --git a/notes/计算机操作系统.md b/notes/计算机操作系统.md index 42a2d317..131b1c13 100644 --- a/notes/计算机操作系统.md +++ b/notes/计算机操作系统.md @@ -15,7 +15,7 @@ * [三、死锁](#三死锁) * [死锁的必要条件](#死锁的必要条件) * [死锁的处理方法](#死锁的处理方法) -* [四、存储器管理](#四存储器管理) +* [四、内存管理](#四内存管理) * [虚拟内存](#虚拟内存) * [分页与分段](#分页与分段) * [页面置换算法](#页面置换算法) @@ -447,7 +447,7 @@ void philosopher(int i) { } ``` -为了防止死锁的发生,可以两个条件: +为了防止死锁的发生,可以设置两个条件: 1. 必须同时拿起左右两个筷子; 2. 只有在两个邻居都没有进餐的情况下才允许进餐。 @@ -664,7 +664,9 @@ Linux 中管道通过空文件实现。 - 假若找到这样一行,将该进程标记为终止,并将其已分配资源加到 A 中。 - 重复以上两步,直到所有进程都标记为终止,则状态时安全的。 -# 四、存储器管理 +如果一个状态不是安全的,也需要拒绝进入这个状态。 + +# 四、内存管理 ## 虚拟内存 @@ -714,27 +716,35 @@ Linux 中管道通过空文件实现。 ## 页面置换算法 -在程序运行过程中,若其所要访问的页面不在内存而需要把它们调入内存,但是内存已无空闲空间时,系统必须从内存中调出一个页面到磁盘对换区中,并且将程序所需要的页面调入内存中。页面置换算法的主要目标是使页面置换频率最低(也可以说缺页率最低)。 +在程序运行过程中,如果要访问的页面不在内存中,就发生缺页中断从而将该页调入内存中。此时如果内存已无空闲空间,系统必须从内存中调出一个页面到磁盘对换区中来腾出空间。 -### 1. 最佳(Optimal) +页面置换算法的主要目标是使页面置换频率最低(也可以说缺页率最低)。 + +### 1. 最佳 + +> Optimal 所选择的被换出的页面将是最长时间内不再被访问,通常可以保证获得最低的缺页率。 -是一种理论上的算法,因为无法知道一个页面多长时间会被再访问到。 +是一种理论上的算法,因为无法知道一个页面多长时间不再被访问。 举例:一个系统为某进程分配了三个物理块,并有如下页面引用序列:

-进程运行时,先将 7, 0, 1 三个页面装入内存。当进程要访问页面 2 时,产生缺页中断,会将页面 7 换出,因为页面 7 再次被访问的时间最长。 +开始运行时,先将 7, 0, 1 三个页面装入内存。当进程要访问页面 2 时,产生缺页中断,会将页面 7 换出,因为页面 7 再次被访问的时间最长。 -### 2. 先进先出(FIFO) +### 2. 先进先出 + +> FIFO 所选择换出的页面是最先进入的页面。 该算法会将那些经常被访问的页面也被换出,从而使缺页率升高。 -### 3. 最近最久未使用(LRU, Least Recently Used) +### 3. 最近最久未使用 + +> LRU, Least Recently Used 虽然无法知道将来要使用的页面情况,但是可以知道过去使用页面的情况。LRU 将最近最久未使用的页面换出。 @@ -744,27 +754,39 @@ Linux 中管道通过空文件实现。

-### 4. 时钟(Clock) +### 4. 时钟 -Clock 页面置换算法需要用到一个访问位,当一个页面被访问时,将访问位置为 1。 +> Clock + +需要用到一个访问位,当一个页面被访问时,将访问位置为 1。 首先,将内存中的所有页面链接成一个循环队列,当缺页中断发生时,检查当前指针所指向页面的访问位,如果访问位为 0,就将该页面换出;否则将该页的访问位设置为 0,给该页面第二次的机会,移动指针继续检查。 +

+ # 五、设备管理 ## 磁盘调度算法 -当多个进程同时请求访问磁盘时,需要进行磁盘调度来控制对磁盘的访问。磁盘调度的主要目标是使磁盘的平均寻道时间最少。 +当多个进程同时请求访问磁盘时,需要进行磁盘调度来控制对磁盘的访问。 -### 1. 先来先服务(FCFS, First Come First Served) +磁盘调度的主要目标是使磁盘的平均寻道时间最少。 + +### 1. 先来先服务 + +> FCFS, First Come First Served 根据进程请求访问磁盘的先后次序来进行调度。优点是公平和简单,缺点也很明显,因为未对寻道做任何优化,使平均寻道时间可能较长。 -### 2. 最短寻道时间优先(SSTF, Shortest Seek Time First) +### 2. 最短寻道时间优先 + +> SSTF, Shortest Seek Time First 要求访问的磁道与当前磁头所在磁道距离最近的优先进行调度。这种算法并不能保证平均寻道时间最短,但是比 FCFS 好很多。 -### 3. 扫描算法(SCAN) +### 3. 扫描算法 + +> SCAN SSTF 会出现饥饿现象。考虑以下情况,新进程请求访问的磁道与磁头所在磁道的距离总是比一个在等待的进程来的近,那么等待的进程会一直等待下去。 @@ -772,7 +794,9 @@ SCAN 算法在 SSTF 算法之上考虑了磁头的移动方向,要求所请求 当一个磁头自里向外移动时,移到最外侧会改变移动方向为自外向里,这种移动的规律类似于电梯的运行,因此又常称 SCAN 算法为电梯调度算法。 -### 4. 循环扫描算法(CSCAN) +### 4. 循环扫描算法 + +> CSCAN CSCAN 对 SCAN 进行了改动,要求磁头始终沿着一个方向移动。 @@ -785,3 +809,4 @@ CSCAN 对 SCAN 进行了改动,要求磁头始终沿着一个方向移动。 - [进程间的几种通信方式](http://blog.csdn.net/yufaw/article/details/7409596) - [Operating-System Structures](https://www.cs.uic.edu/\~jbell/CourseNotes/OperatingSystems/2_Structures.html) - [Processes](http://cse.csusb.edu/tongyu/courses/cs460/notes/process.php) +- [Inter Process Communication Presentation[1]](https://www.slideshare.net/rkolahalam/inter-process-communication-presentation1) diff --git a/pics/5f5ef0b6-98ea-497c-a007-f6c55288eab1.png b/pics/5f5ef0b6-98ea-497c-a007-f6c55288eab1.png new file mode 100644 index 00000000..a3ea0a24 Binary files /dev/null and b/pics/5f5ef0b6-98ea-497c-a007-f6c55288eab1.png differ