X86计算机启动时,cpu首先处于实模式;开机时,CS=0xFFFF,IP=0x0000,寻址0Xffff0(ROM BIOS映射区),这个区程序检查键盘显示器硬盘等硬件;接着将磁盘0磁道0扇区读入0x7C00处,此时设置CS=0x07C0,IP=0x0000。
2、操作系统工作步骤:计算机工作原理是取址执行。一开始操作系统是在磁盘上,需要将其从磁盘载入内存中,才能取址执行。读操作系统由引导扇区上的程序完成(bootsect.s),该程序分段读取:首先读入setup.s;接着调用13号中断,把systerm.s部分读入,此时操作系统读入内存中。
3、多个进程如何组织?:用PCB放在不同队列中,用状态推进这多个进程,进行状态转换。多进程如何交替?:当启动磁盘读写时,pCur状态变为阻塞状态,接着被放入阻塞队列,然后执行schedual()函数,这个函数很重要!
Schedule(){
pNew=getNext(ReadyQueue); //调度
seitch_to(pCur,pNew)
}
操作系统依靠PCB感知进程,PCB(进程控制块)是进程实体的一部分,是操作系统中最重要的记录型数据结构。
4、活动就绪:进程在主存且可被调度的状态;静止就绪:进程在辅存而不能被直接调度的状态,只有当主存中没有活跃的就绪进程或者该静止就绪进程具有更高的优先级,系统会将其调到主存并转为活动就绪。
活动睡眠:进程在主存中的阻塞状态,一旦等待事件产生便进入活动就绪状态;静止睡眠:进程在辅存中的阻塞状态,一旦等待事件产生就进入静止就绪状态。
若进程正处于执行状态时,因终端请求而暂停下来以便研究其运行情况,这时进程应转为静止就绪状态;若进程已处于睡眠状态,则此时应转为静止睡眠状态。
5、竞争临时资源为什么会产生死锁?
临时资源:这是指由一个进程产生,被另一个进程使用,短时间后便无用的资源,故也称为消耗性资源,如硬件中断、信号、消息、缓冲区内的消息等,它也可能引起死锁。例如,SI,S2,S3是临时性资源,进程P1产生消息S1,又要求从P3接收消息S3;进程P3产生消息S3,又要求从进程P2处接收消息S2;进程P2产生消息S2,又要求从P1处接收产生的消息S1。如果消息通信按如下顺序进行:
P1: ···Relese(S1);Request(S3); ···
P2: ···Relese(S2);Request(S1); ···
P3: ···Relese(S3);Request(S2); ···
并不可能发生死锁。但若改成下述的运行顺序:
P1: ···Request(S3);Relese(S1);···
P2: ···Request(S1);Relese(S2); ···
P3: ···Request(S2);Relese(S3); ···
则可能发生死锁。
6、虚拟存储管理的调页技术有:中断请求调页,预调页技术;调度算法有:LRU算法、CLOCK算法、FIFO算法。