操作系统原理知识
第二章
这种差别主要在于处理机运行状态的变化和栈的变化。(用户程序)发生系统调用时,处理机由用户态进入核心态、由用户栈切换为核心栈;而程序调用时,运行状态和栈不发生变化。
中断向量:为处理方便,一般为系统中每个中断信号位编制一个相应的中断处理程序,并把这些程序的入口地址放在特定的主存单元中,称为中断向量。所有中断向量一般连续存放,称为中断向量表。
中断向量的内容:在x86 CPU的保护模式下,中断向量称为中断门,主要包括一个段选择子和一个段内偏移。
中断的处理过程:如果中断前处于用户态,则中断的处理过程一般如下。首先,CPU会保存中断现场、切换到核心栈和核心态,并跳转到中断处理程序去执行;然后,中断处理程序会进一步保存现场、进行中断处理、恢复现场,再执行中断返回指令,该指令恢复CPU保存的中断现场、切换回用户态和用户栈。
第三章
如果使用轮转法,进程的运行进度表如下:
时长: 2 1 2 1 2 2 2 2 1 2 2
进程: 1 2 3 4 5 1 5 1 5 1 1
进程的周转时间:进程1到5分别为19秒、3秒、5秒、6秒、15秒。
进程的等待时间:进程1到5分别为9秒、2秒、3秒、5秒、10秒。
平均等待时间是5.8秒。
如果使用SPF法,进程的运行进度表如下:
时长: 1 1 2 5 10
进程: 2 4 3 5 1
进程的周转时间:进程1到5分别为:19秒、1秒、4秒、2秒、9秒。
进程的等待时间:进程1到5分别为:9秒、0秒、2秒、1秒、4秒。
平均等待时间是3.2秒。
如果使用非剥夺优先级调度法,进程的运行进度表如下:
时长: 1 5 10 2 1
进程: 2 5 1 3 4
进程的周转时间:进程1到5分别为:16秒、1秒、18秒、19秒、6秒。
进程的等待时间:进程1到5分别为:6秒、0秒、16秒、18秒、1秒。
平均等待时间是8.2秒。
具有最短平均等待时间的算法是SPF。
一个进程可能经历五种基本状态:创建状态(New)、就绪状态(Ready)、运行状态(Running)、阻塞状态(Blocked)、结束状态(Exit)。状态转换图如下所示:
各状态之间的变迁时机为:
创建→就绪:当进程被创建完成、一切就绪、准备运行时。
就绪→运行:当处于就绪状态的进程被进程调度程序选中后。
运行→结束:当进程指示它已经完成或者因错流产时。
运行→就绪:处于运行状态的进程在其运行过程中,分给它的处理机时间片用完而让出处理机;或者在可剥夺的操作系统中,当有更高优先级的进程就绪时。
运行→阻塞:当进程请求某样东西且必须等待时。
阻塞→就绪:当进程要等待事件到来时。
第四章
1.Need的内容为:
2.系统是处于安全状态。至少有安全序列P1,P3,P4,P2,P5
。部分分析过程如下图:
其它也可以的安全序列有:
P1,P3, P4, P5, P2 | P1,P3, P2, P4, P5 |
---|
3.进程2请求0 4 2 0
,不可以立即得到满足。
(如果将题目中的1,5,1,0
改为1,5,2,0
,则可以,因为至少有安全序列P1,P3,P2,P4,P5。部分分析过程如下图:
其它也可以的安全序列有:P1, P3, P4, P2, P5
。)
任务间的同步关系和一种并发划分如下图所示:
设P1,P2,P3三个进程分别运行A-B-D-F-G、C、E-H,程序如下:
semaphore ac=0, ae=0, cd=0, ef=0, fh=0; (1分)
int main() {
parbegin
p1();
p2();
p3();
parend
} (2分)
void p1() {
A(); V(ac); V(ae); B(); P(cd);
D(); P(ef); F(); V(fh); G();
} (3分)
void p2() {
P(ac); C(); V(cd);
} (2分)
void p3() {
P(ae); E(); V(ef); P(fh); H();
}