6.中断向量内的处理器状态字应当标明管态还是目态?为什么?
答:应当标明是管态。该状态由系统初始化程序设置,这样才能保证中断发生后进入操作系统规定的中断处理程���。
7.系统如何由目态转换为管态?如何由管态转换为目态?
答:目态程序被中断时,现行PSW被压入系统栈,中断向量PSW被送人寄存器。由于后者状态位为管态,系统状态由目态转换为管态。
当处于管态的中断处理程序执行完且没有嵌套中断时,将系统栈中的PSW弹出送人寄存器。由于后者状态位为目态,即实现了由管态到目态的转换。
8.中断与程序并发之间的关系是什么?
答:中断是程序并发的前提条件。如果没有中断,操作系统不能获得系统控制权,也就无法按照调度算法对处理器进行重新分配,一个程序将一直运行到结束而不会被打断。
9.根据用途说明“栈”和“堆”的差别。
答:栈是一块按后进先出(Last In First Out,LIFO)规则访问的存储区域,用来实现中断嵌套和子程序嵌套(保存调用参数和返回断点)。堆虽然是一块存储区域,但是对堆的访问是任意的,没有后进先出的要求,堆主要用来为动态变量分配存储空间。
10.何谓系统栈?何谓用户栈?系统栈有何用途?用户栈有何用途?
答:系统栈是内存中属于操作系统空间的一块固定区域,其主要用途为:(1)保存中断现场,对于嵌套中断,被中断程序的现场信息被依次压人系统栈,中断返回时逆序弹出:(2)保存操作系统子程序之间相互调用的参数、返回值、返回点,以及子程序(函数)的局部变量。
用户栈是用户进程空间中的一块区域,用于保存用户进程的子程序之间相互调用的参数、返回值、返回点,以及子程序(函数)的局部变量。
11.为何无法确定用户堆栈段的长度?
答:用户堆栈段的长度主要取决于两个因素:(1)用户进程(线程)中子程序(函数)之间的嵌套调用深度;(2)子程序参数和局部变量的数量及类型;(3)动态变量的使用。这些在进程(线程)运行前无法确定,由此导致用户堆栈段的长度无法预先准确确定。
……