diff --git a/Operate-System/0-summary-ex.md b/Operate-System/0-summary-ex.md index e2a506e..a940c75 100644 --- a/Operate-System/0-summary-ex.md +++ b/Operate-System/0-summary-ex.md @@ -90,6 +90,26 @@ $D.$充分利用内存 解:$B$。正是分时系统的特点同时性、及时性、交互性代表了其目标是快速响应用户,也正是不能完全满足这个目标才出现了实时操作系统。 +**例题** 下列说法中,正确的是()。 + +Ⅰ.分时系统的时间片固定,因此用户数越多,响应时间越长 + +Ⅱ.$UNIX$是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统分类,属于分时操作系统 + +Ⅲ.中断向量地址是中断服务例行程序的入口地址 + +Ⅳ.中断发生时,由硬件保护并更新程序计数器($PC$),而不是由软件完成,主要是为了提高处理速度 + +$A.$Ⅰ、Ⅱ + +$B.$Ⅰ、Ⅲ + +$C.$Ⅲ、Ⅳ + +$D.$仅Ⅳ + +解:$A$。Ⅰ选项正确,分时系统中,响应时间与时间片和用户数成正比。Ⅱ选项正确。Ⅲ选项错误,中断向量本身是用于存放中断服务例行程序的入口地址,因此中断向量地址就应是该入口地址的地址。Ⅳ选项错误,中断由硬件保护并完成,主要是为了保证系统运行可靠、正确。提高处理速度也是一个好处,但不是主要目的。综上分析,Ⅱ、Ⅳ选项错误。 + ### 实时操作系统 **例题** ()不是设计实时操作系统的主要追求目标。 diff --git a/Operate-System/1-process-management-ex.md b/Operate-System/1-process-management-ex.md index 2a4eb01..f854402 100644 --- a/Operate-System/1-process-management-ex.md +++ b/Operate-System/1-process-management-ex.md @@ -276,7 +276,7 @@ P4|5|4|2 #### 多级反馈队列 -**例题** 各进程到达就绪队列的时间、需要的运行时间如下表所示。使用多级反馈队列调度算法,分析进程运行状态。 +**例题** 各进程到达就绪队列的时间、需要的运行时间如下表所示。使用多级反馈队列调度算法,就绪队列使用时间片轮转调度算法,分析进程运行状态。 进程|到达时间|运行时间 :--:|:-----:|:------: @@ -285,13 +285,15 @@ P2|2|4 P3|4|1 P4|5|4 +解: + 设置多级就绪队列,各级队列优先级从高到低,时间片从小到大。 -新进程到达时先进入第1级队列,按$FCFS$原则排队等待被分配时间片。 +新进程到达时先进入第$1$级队列,按$FCFS$原则排队等待被分配时间片。 若用完时间片进程还未结束,则进程进入下一级队列队尾。如果此时已经在最下级的队列,则重新放回最下级队列队尾。 -只有第k级队列为空时,才会为k+1级队头的进程分配时间片。 +只有第$k$级队列为空时,才会为$k+1$级队头的进程分配时间片。 被抢占处理机的进程重新放回原队列队尾。 @@ -303,15 +305,15 @@ P4|5|4 2|2|2 3|1|4 -$0$时首先$P1$进入第一级队列,此时$P1$优先级为$4$,时间片为$1$,所以$P1$会运行$1$个时间片。 +$0$时首先$P1$进入第一级队列,此时$P1$优先级为$3$,时间片为$1$,所以$P1$会运行$1$个时间片。 -$1$时$P1$余下$6$,没有运行完,进入第二级队列的队尾。 +$1$时$P1$余下$6$,没有运行完,进入第二级队列的队尾继续运行一个时间片。 $2$时$P2$进入第一级队列,优先级更高,所以$P1$被剥夺处理机,此时$P1$还余下$5$,回退第二级队列,$P2$开始运行。 $3$时$P2$运行一个时间片后余下$3$,加入第二级队列队尾。此时第二级队列头部为$P1$,所以$P1$开始运行。 -$4$时$P3$进入第一级队列,优先级更高,所以$P1$被剥夺处理机,此时$P1$还余下$4$,回退第二级队列。 +$4$时$P3$进入第一级队列,优先级更高,所以$P1$被剥夺处理机,此时$P1$还余下$4$,回退第二级队列,有$P2$、$P1$。 $5$时$P4$进入第一级队列,此时$P3$也正好运行完,处理机交给$P4$。 @@ -328,3 +330,17 @@ $13$时$P2$处理完,$P1$占有处理机。 $15$时$P1$处理完,$P4$占有处理机。 $16$时$P4$处理完,全部结束。 + +**例题** 系统采用二级反馈队列调度算法进行进程调度。就绪队列$Q_1$采用时间片轮转调度算法,时间片为$10ms$;就绪队列$Q_2$采用短进程优先调度算法;系统优先调度$Q_1$队列中的进程,当$Q_1$为空时系统才会调度$Q_2$中的进程;新创建的进程首先进入$Q_1$;$Q_1$中的进程执行一个时间片后,若未结束,则转入$Q_2$。若当前$Q_1$,$Q_2$为空,系统依次创建进程$P_1$,$P_2$后即开始进程调度,$P_1$,$P_2$需要的$CPU$时间分别为$30ms$和$20ms$,则进程$P_1$,$P_2$在系统中的平均等待时间为()。 + +$A.25ms$ + +$B.20ms$ + +$C.15ms$ + +$D.10ms$ + +解:$C$。$0ms$时刻$P1$开始运行。$10ms$时刻$P1$停止,余下$20ms$进入$Q2$,$P2$进入$Q1$运行。$20ms$时刻$P2$停止,余下$10ms$,进入$Q2$,而$Q1$空,开始运行$Q2$中的进程,而$P2$余下$10ms$小于$P1$余下的$20ms$,短进程优先,所以$P2$继续开始运行。$30ms$时刻$P2$完成,$P1$运行。$50ms$时刻$P1$运行完成。 + +所以综上$P1$等待$30-10=20ms$,而$P2$等待$10-0=10ms$。平均等待时间为$(20+10)\div2=15ms$。 diff --git a/Operate-System/1-process-management.md b/Operate-System/1-process-management.md index 89c8725..641ada6 100644 --- a/Operate-System/1-process-management.md +++ b/Operate-System/1-process-management.md @@ -384,6 +384,16 @@ + $PS$。 + $MFQ$。 + |先来先服务|短作业优先|高响应比优先|时间片轮转|多级反馈队列 +:----:|:--------:|:--------:|:----------:|:----:|:---------: +能否是可抢占|否|能|能|能|队列内算法不一定 +能否是不可抢占|能|能|能|否|队列内算法不一定 +优点|公平,实现简单|平均等待时间最少,效率最高|兼顾长短作业|兼顾长短作业|兼颐长短作业,有较好的响应时间,可行性强| +缺点|不利于短作业|长作业会饥饿,估计时间不易确定|计算响应比的开销大|平均等待时间较长,上下文切换浪费时间|无 +适用于|无|作业调度,批处理系统|无|分时系统|通用 +默认决策模式|非抢占|非抢占|非抢占|抢占|抢占 + + #### 算法评价指标 + $CPU$利用率:$CPU$忙碌时间占总时间的比例。其中利用率=$CPU$忙碌(运行)时间÷进程运行总时间。 @@ -415,7 +425,7 @@ + 缺点:排在长作业(进程)后面的短作业需要等待很长时间,带权周转时间很大,对短作业来说用户体验不好。 + 即$FCFS$算法对长作业有利,对短作业不利。 + 不能作为分时系统和实时系统的主要调度策略。 - + 利于$CPU$繁忙型作业,不利于$I/O$繁忙型作业。 + + 利于$CPU$繁忙型作业,不利于$I/O$繁忙型作业(即适用于长作业类型)。 + 是否会导致饥饿:不会。 #### 短作业优先 @@ -515,7 +525,7 @@ + 算法思想:对时间片轮转调度算法和优先级调度算法的折中权衡,动态调整进程优先级和时间片大小。 + 算法规则: 1. 设置多级就绪队列,各级队列优先级从$1$到$k$依次递减,时间片从小到大依次变大一倍。 - 2. 新进程到达时先进入第$1$级队列队尾,按$FCFS$原则排队等待被分配时间片,若用完时间片进程还未结束,则进程进入下一级队列队尾如果此时已经是在最下级的队列,则重新放回该队列队尾。 + 2. 新进程到达时先进入第$1$级队列队尾,按$FCFS$原则排队等待被分配时间片,若用完时间片进程还未结束,则进程进入下一级队列队尾。如果此时已经是在最下级的队列,则重新放回该队列队尾。若是被剥夺,则回退到该队列队尾。 3. 只有第$k$级队列为空时,才会为$k+1$级队头的进程分配时间片,当又有新进程进入优先级较高的队列则立刻抢占给更够优先级的进程。 + 用于作业/进程调度:用于进程调度。 + 是否可抢占:抢占式的算法。在$k$级队列的进程运行过程中,若更上级的队列($1\sim k-1$级)中进入了一个新进程,则由于新进程处于优先级更高的队列中,因此新进程会抢占处理机,原来运行的进程放回$k$级队列队尾。 @@ -527,6 +537,8 @@ + 可灵活地调整对各类进程的偏好程度,比如$CPU$密集型进程、$I/O$密集型进程(拓展:可以将因$I/O$而阻塞的进程重新放回原队列,这样$I/O$型进程就可以保持较高优先级) + 是否会导致饥饿:会。 +各就绪队列的调度算法也可能不是时间片调度算法而是别的,但是基本上都是差不多的计算方式。 + ## 进程同步与互斥 ### 进程同步与互斥的基本概念