From a92d704ad6ecff3e75f743a29b3e1351e3939f8e Mon Sep 17 00:00:00 2001 From: Didnelpsun <2675350965@qq.com> Date: Tue, 25 Oct 2022 22:50:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../4-central-processing-unit.md | 20 ++++++++++++++----- Operate-System/2-memory-management.md | 18 +++++++++++++++-- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/Computer-Organization/4-central-processing-unit.md b/Computer-Organization/4-central-processing-unit.md index 876f5e4..21677e2 100644 --- a/Computer-Organization/4-central-processing-unit.md +++ b/Computer-Organization/4-central-processing-unit.md @@ -96,6 +96,8 @@ ### 指令周期 +#### 指令周期定义 + + 指令周期:$CPU$从主存中每取出并执行一条指令所需的全部时间: + 取指周期:取指、分析。 + 执行周期。 @@ -110,20 +112,27 @@ 5. 判断是否有中断。 6. 若有则进入中断周期,结束后进入下一条指令的指令周期。 7. 若无则直接进入下一条指令的指令周期。 -+ $CPU$访存的四种性质,可以设置四位二进制位作为标志触发器: - + 取指令$FE$:取指周期。 - + 取地址$IND$:间址周期。 - + 存取操作数或结果$EX$:执行周期。 - + 存程序断点$INT$:中断周期。 注意:中断周期中的进栈操作是将$SP$减$1$,这和传统意义上的进栈操作相反,原因是计算机的堆栈中都是向低地址增加,所以进栈操作是减$1$而不是加$1$。 +#### 标志触发器 + +为了区别不同的工作周期,$CPU$内设了四个标志触发器,以一状态位为有效: + ++ 取指令$FE$:取指周期。 ++ 取地址$IND$:间址周期。 ++ 存取操作数或结果$EX$:执行周期。 ++ 存程序断点$INT$:中断周期。 + +#### 相关周期区别 + 四种周期: + 指令周期:$CPU$从主存中每取出并执行一条指令所需的全部时间。指令周期可变。 + 时钟周期:通常称为节拍或$T$周期,它是$CPU$操作的最基本单位。时钟周期不变。 + $CPU$周期也称机器周期:一个机器周期包含若干时钟周期。是$CPU$进行一次操作的时间。由于$CPU$内部操作的速度较快,而$CPU$访问一次存储器的时间较长,因此机器周期通常由存取周期来确定,往往是通过一次总线事务访问一次主存或$I/O$的时间。机器周期可变。 + 存取周期:指存储器进行两次独立的存储器操作(连续两次读或写操作)所需的最小间隔时间。存取周期往往为固定值。 ++ 机器周期:通过一次总线事务访问一次主存或 $I/O$的时间定为一个机器周期。所以机器周期往往与访存周期相等。 ### 数据流 @@ -187,6 +196,7 @@ + 对所有指令都选用相同的执行时间来完成。 + 指令之间串行执行。 + 指令周期取决于执行时间最长的指令的执行时间。 + + 执行周期内控制信号不变。 + 缺点:对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度。 + 优点:实施简单,只用程序计数器$PC$就能实现。 2. 多指令周期: diff --git a/Operate-System/2-memory-management.md b/Operate-System/2-memory-management.md index 07f7877..ba337b4 100644 --- a/Operate-System/2-memory-management.md +++ b/Operate-System/2-memory-management.md @@ -641,7 +641,9 @@ + 系统缺少足够的对换区空间:凡是不会被修改的数据都直接从文件区调入,由于这些页面不会被修改,因此换出时不必写回磁盘,下次需要时再从文件区调入即可。对于可能被修改的部分,换出时需写回磁盘对换区,下次需要时再从对换区调入。 + $UNIX$方式:运行之前进程有关的数据全部放在文件区,故未使用过的页面,都可从文件区调入。若被使用过的页面需要换出,则写回对换区,下次需要时从对换区调入。 -### 抖动(颠簸现象) +### 虚拟存储补充 + +#### 抖动(颠簸现象) + 刚刚换出的页面马上又要换入内存,刚刚换入的页面马上又要换出外存,这种频繁的页面调度行为称为抖动,或颠簸。 + 产生抖动的主要原因是进程频繁访问的页面数目高于可用的物理块数(分配给进程的物理块不够)。所以需要合适的物理块数量。 @@ -649,8 +651,20 @@ + **所有**的页面置换算法都可能存在抖动。 + 可以撤销部分进程来减缓抖动。 -### 工作集 +#### 工作集 + 窗口尺寸就是驻留集的大小,约束工作集大小,工作集大小小于等于窗口尺寸,实际应用中,操作系统可以统计进程的工作集大小,根据工作集大小给进程分配若干内存块。如窗口尺寸为$5$,经过一段时间的监测发现某进程的工作集最大为$3$,那么说明该进程有很好的局部性,可以给这个进程分配$3$个以上的内存块即可满足进程的运行需要。 + 驻留集大小不能小于工作集大小,否则会产生抖动现象。 + 基于局部性原理可知,进程在一段时间内访问的页面与不久之后会访问的页面是有相关性的。因此,可以根据进程近期访问的页面集合(工作集)来设计一种页面置换算法――选择一个不在工作集中的页面进行淘汰。 + +#### 内存映射文件 + +将磁盘文件的全部或部分内容与进程虚拟地址空间的某个区域建立映射关系,便可以直接访问被映射的文件,而不必执行文件$I/O$操作,也无须对文件内容进行缀存处理。这种特性非常适合用来管理大尺寸文件。 + +#### 虚拟存储性能 + ++ 页面大小:页面大:缺页率低,页表项占用少——页面小:内部碎片少,利用率高。 ++ 分配给进程的物理块数:合理数量的物理块。 ++ 页面置换算法。 ++ 写回磁盘频率:系统中建立一个已修改换出页面的链表,一起写回,减少访存。 ++ 程序局部化。