一般并不是用户自己编写的。此外还有调试程序、字处理程序等工具软件。 4. 什么是进程上下文?进程上下文包括哪些成分?哪些成分对目态程序是可见的? 答:进程是在操作系统支持下运行的,进程运行时操作系统需要为其设置相应的运行环境,如系统堆栈、地址映射寄存器、打开文件表、PSW与PC、通用寄存器等。 在UNIX System V中,将进程的物理实体与支持进程运行的物理环境合称为进程上下文(process context),进程上下文包括三个组成部分: ·用户级上下文。是由用户进程的程序块、用户数据块(含共享数据块)和用户堆栈组成的进程地址空间。 ·系统级上下文。包括进程控制块、内存管理信息、进程环境块,以及系统堆栈等组成的进程地址空间 ·寄存器上下文。由程序状态字寄存器、各类控制寄存器、地址寄存器、通用寄存器、用户堆栈指针等组成。 其中用户级上下文和部分寄存器上下文对目态程序是可见的。 5. 进程一般具有哪三个主要状态?举例说明状态转换的原因。 答:进程在其生存期内可能处于如下三种基本状态之一: (1) 运行态(Run): 进程占有处理机资源,正在运行。 显然,在单处理机系统中任一时刻只能有一个进程处于此种状态; (2) 就绪态(Ready): 进程本身具备运行条件,但由于处理机的个数少于可运行进程的个数,暂未投入运行。 即相当于等待处理机资源 (3) 等待态(Wait): 也称挂起态(Suspended)、封锁态(Blocked)、睡眠态(Sleep)。 进程本身不具备运行条件,即使分给它处理机也不能运行。 进程正等待某一个事件的发生,如等待某一资源被释放,等待与该进程相关的I/O传输的完成信号等。 进程的三个基本状态之间是可以相互转换的。具体地说,当一个就绪进程获得处理机时,其状态由就绪变为运行;当一个运行进程被剥夺处理机时,如用完系统分给它的时间片、出现更高优先级别的其它进程,其状态由运行变为就绪;当一个运行进程因某事件受阻时,如所申请资源被占用、启动I/O传输未完成,其状态由运行变为等待;当所等待事件发生时,如得到申请资源、I/O传输完成,其状态由等待变为就绪。 6. 有几种类型进程队列?每类各应设置几个队列? 答:通常,系统中的进程队列分为如下三类: (1) 就绪队列:整个系统一个。所有处于就绪状态的进程按照某种组织方式排在这一队列中,进程入队列和出队列的次序与处理机调度算法有关。在某些系统中,就绪队列可能有多个,用以对就绪进程分类,以方便某种调度策略的实施。 (2) 等待队列:每个等待事件一个,当进程等待某一事件时,进入与该事件相关的等待队列中;当某事件发生时,与该事件相关的一个或多个进程离开相应的等待队列,进入就绪队列。 (3) 运行队列:在单CPU系统中只有一个,在多CPU系统中每个CPU各有一个,每个队列中只有一个进程,指向运行队列头部的指针被称作运行指示字。 7. 线程控制块TCB中一般应包含那些内容? 答:一般TCB中的内容较少,因为有关资源分配等多数信息已经记录于所属进程的PCB中.TCB中的主要信息包括线程标识、线程状态、调度参数、现场、链接指针,其中现场信息主要包括通用寄存器、指令计数器PC以及用户栈指针.对于操作系统支持的线程,TCB中还应包含系统栈指针。 8. 同一进程中的多个线程有哪些成分是共用的,哪些成分是私用的? 答:同一进程中的多个线程共享进程获得的主存空间和资源,包括代码区、数据区、动态堆空间。线程的私有成分包括: ·线程控制块; ·一个执行栈; ·运行时间一动态分给线程的寄存器。(这句话我读不懂) 9. 比较用户级线程与系统级线程间在以下方面的差别和各自的优缺点。 (1) 创建速度;(2)切换速度;(3)并行性;(4)TCB的存储位置 答:用户级线程由系统库支持。线程的创建和撤销,以及线程状态的变化都由库函数控制并在目态完成,与线程相关的控制结构TCB保存在目态空间并由运行系统维护。由于线程对操作系统不可见,系统调度仍以进程为单位,核心栈的个数与进程个数相对应。 用户级别线程的优点在于:(1)线程不依赖于操作系统,可以采用与问题相关的调度策略,灵活性好; (2)同一进程中的线程切换不需进入操作系统,因而实现效率较高。 缺点在于:(1)同一进程中的多个线程不能真正并行,即使在多处理机环境中;(2)由于线程对操作系统不可见,调度在进程级别,某进程中的一个线程通过系统调用进入操作系统受阻,该进程的其它线程也不能运行。 核心级别线程通过系统调用由操作系统创建,线程的控制结构TCB保存于操作系统空间,线程状态转换由操作系统完成,线程是CPU调度的基本单位。另外由于系统调度以线程为单位,操作系统还需要为每个线程保持一个核心栈。 核心级线程的优点是并发性好,在多CPU环境中同一进程中的多个线程可以真正并行执行。核心级别线程的缺点是线程控制和状态转换需要进入操作系统完成,系统开销比较大。 10. 何谓作业? 何谓作业步?作业何时转为进程? 答:作业是早期批处理系统引入的一个概念。用户要求计算机系统为其完成的计算任务的集合称为作业,分时用户在一次登录后所进行的交互过程也常被看作一个作业。 一般来说,作业是比进程大的一个概念,一个作业通常包含多个计算步骤,作业中一个相对独立的处理步骤称为一个作业步。当作业被作业调度程序选中并调入内存时,将按作业步创建相应进程。作业步骤之间具有顺序或并发关系。一个作业步通常可以由一个进程来完成,这样一个作业在内存处理时通常与多个进程相对应,即作业与进程具有一对多的关系。 11. 分析作业、进程、线程三者之间的关系。 答:一个作业被调入内存执行时可能要为其创建多个进程,进程是资源分配的基本单位,一个进程可能对应若干个线程,线程是处理器调度的基本单位。 12. 何谓系统开销? 试举三个例子说明之。 答:运行操作系统程序,实现系统管理所花费的时间和空间称为系统开销。例如,操作系统的内核要占用内存空间,页面调度时需占用设备资源并消耗处理机时间,进程切换时也要占用处理器时间。 处理机调度 学习指导: 本章所述的“中断”包括trap、SVC、fault等所有非常规程序转移,中断使操作系统获得控制权,并为实施处理机切换和多道程序设计提供了必要条件。也正因为中断与处理机调度之间密不可分的关系,我们将中断与处理机调度作为一个独立的完整章来讲授。读者应当注意,中断响应后系统首先处理中断事件,然后才考虑处理机的重新分派;当有中断嵌套发生时,只有在返回至最上层中断处理程序时,系统才有可能考虑切换进程。 处理机调度算法的设计需要考虑系统的设计目标,而且通常算法设计不能复杂,否则会带来过大的系统开销,因为处理机切换发生非常频繁。也正因为此,通常将调度与上下文切换过程以汇编语言书写。 习题解答: 1.试说明下述概念之间的联系与差别: (1) 系统调用命令(2) 访管指令(3) 广义指令 答:访管指令由指令码和访管中断号两部分组成。即: SVC n─── ① 其中SVC(SuperVisor Call)为指令码,表明为访管指令; n为访管中断号,其值是一整数,具体表示何种访问要求。中断发生时,硬件中断装置将访管中断号n送入旧的程序状态字内的中断码字段,访管中断总控程序由系统堆栈中将其取出,并据此转入对应的服务程序。在实际使用时,用户程序与操作系统之间还需要相互传递参数和返回值。 如此,用户使用访管指令的一般形式为: 准备参数 SVC n 取返回值─── ② 根据具体访管要求约定,参数及返回值可以通过寄存器传递,也可以通过内存传递。 对于后者,操作系统必须能够访问进程空间。通常将②称为系统调用命令,它除访管指令外,还有准备参数和取返回值。为了使用方便,在高级语言中一般将其写为与过程调用相类似的形式,即: 返回值=系统调用名称(参数1,参数2,…,参数m);─── ③ 当然,编译程序会将③翻译成形如②的形式。其中系统调用名称对应①,不同的系统调用名称对应不同的整数n。在有的书中,也将③称为代表②的宏指令或广义指令。 2.为什么说中断是进程切换的必要条件,但不是充分条件? 答:假如在时刻T1与时刻T2之间发生了进程切换,则在时刻T1与时刻T2之间一定执行了处理机调度程序,而处理机调度程序是操作系统低层中的一个模块,运行于管态,说明在T1与T2时刻之间处理机状态曾由目态转换到管态。由于中断是系统由目态转换为管态的必要条件,所以在时刻T1与时刻T2之间一定发生过中断,也就是说,中断是进程切换的必要条件,然而中断不是进程切换的充分条件。 例如: 一个进程执行一个系统调用命令将一个消息发给另外一个进程,该命令的执行将通过中断进入操作系统,操作系统处理完消息的发送工作后可能返回原调用进程,此时中断未导致进程切换;也可能选择一个新的进程,此时中断导致了进程切换。 3.试分析中断与进程状态转换之间的关系。 答:进程状态转换是由内核控制的,如果一个进程的状态发生了改变,则在新旧状态之间一定发生了处理机状态由目态到管态的转换,而中断是处理机状态由目态转换到管态的必要条件,所以中断也是进程状态转换的必要条件。 4.中断发生时,旧的PSW和PC为何需要压入系统栈? 答:因为通常中断处理程序的最后一条指令是中断返回指令,该指令从系统栈顶弹出断点信息,如果未将PSW和PC压入系统栈,则中断返回指令弹出的不是中断前的断点信息,而是不确定的信息,这将导致系统处于不确定的状态,严重的情况会使系统崩溃。 采用栈结构的原因是中断可能发生嵌套,此时能保证以与中断相反的次序返回上层中断处理程序或返回目态。在某些硬件系统中,没有采用栈结构,中断发生时现场信息被送到系统空间指定单元,对每种中断硬件规定一个现场保存单元,这样处理的缺点是中断类型不能增加,
吉大操作系统习题集



