From 0a76772b7930426bd62187a79d9a20c90ffb52fa Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Tue, 20 Mar 2018 16:44:26 +0800 Subject: [PATCH] auto commit --- notes/计算机操作系统.md | 57 +++++++++++++----- pics/5f5ef0b6-98ea-497c-a007-f6c55288eab1.png | Bin 0 -> 30720 bytes 2 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 pics/5f5ef0b6-98ea-497c-a007-f6c55288eab1.png 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 0000000000000000000000000000000000000000..a3ea0a24dd977d368f4898802258acd15b4d2db5 GIT binary patch literal 30720 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 Z0$+oD^yam^c$ug{!2jR>|8MO7{{cW??=}Dc literal 0 HcmV?d00001