面试题答案
一键面试对处于不同状态进程的影响
- 运行态进程:
- 如果非周期性任务优先级高于当前运行的周期性任务,操作系统可能会进行任务切换。即暂停当前运行态的周期性任务,将其放入就绪队列(保存其上下文,如寄存器值、程序计数器等),然后将新就绪的非周期性任务调度到CPU上运行。
- 如果非周期性任务优先级低于当前运行态的周期性任务,该运行态任务会继续执行,不受影响,新就绪的非周期性任务被放入就绪队列等待调度。
- 阻塞态进程:阻塞态进程是因为等待I/O操作、信号量等资源而暂停执行的。非周期性任务变为就绪状态不会直接影响阻塞态进程,阻塞态进程继续等待其所需资源,只有当它们等待的资源可用时,才会从阻塞态转变为就绪态。
操作系统为保证任务调度实时性采取的措施
- 优先级调度:
- 实时操作系统通常采用基于优先级的调度算法。在非周期性任务完成I/O操作变为就绪态后,操作系统会根据其优先级与就绪队列中其他任务(包括周期性任务)比较。如果非周期性任务优先级高,会优先调度它运行,确保关键的非周期性任务能及时执行。
- 对于周期性任务,通常会分配相对较高且稳定的优先级,以保证其按周期执行。但对于一些紧急的非周期性任务,如硬件中断相关的任务,会赋予更高优先级,确保及时响应。
- 抢占式调度:
- 实时操作系统大多支持抢占式调度。当新的非周期性任务就绪且优先级高于当前运行任务时,操作系统会立即暂停当前运行任务,将CPU资源分配给新就绪的高优先级非周期性任务。这保证了高优先级任务能够及时获得CPU资源,满足实时性要求。
- 时间片调度改进:
- 在支持时间片轮转调度的实时操作系统中,对于周期性任务会分配适当的时间片,保证其周期性执行。当非周期性任务变为就绪态时,如果优先级高,会中断当前任务(即使时间片未用完)。对于非周期性任务自身,如果其运行时间较长,可能会被分配较短时间片,执行完时间片后回到就绪队列,避免长时间占用CPU影响其他任务实时性。
- 资源分配与管理:
- 为保证任务调度实时性,操作系统会合理管理资源。例如,当非周期性任务变为就绪态时,确保其所需资源(如内存、文件描述符等)已提前分配或能快速分配,避免因资源等待再次进入阻塞态,影响实时性。同时,对于周期性任务所需资源,也会进行预分配或合理的资源预留,防止被非周期性任务过度占用导致错过周期。
- 调度算法优化:
- 采用适合实时系统的调度算法,如最早截止时间优先(EDF)算法,根据任务的截止时间来调度任务。非周期性任务变为就绪态后,系统会根据其截止时间和其他任务(包括周期性任务)的截止时间,计算任务的调度顺序,优先调度截止时间近的任务,以保证任务都能在截止时间内完成,满足实时性要求。