进程的概念、组成与特征

Q: 什么是进程?
A: 进程是程序的一次执行过程,是动态的。同一个程序多次执行会对应多个进程。
补充细节:例如,多个QQ进程可以同时运行。

Q: 进程和程序的区别是什么?
A: 程序是静态的,指的是存放在磁盘里的可执行文件,是一系列的指令集合。进程是动态的,是程序的一次执行过程。
补充细节:程序就像是一栋房屋的建筑蓝图,而进程则是根据蓝图建造房屋的过程。

Q: 进程的组成部分有哪些?
A: 进程由 PCB、数据段、程序段组成。
补充细节:PCB用于操作系统管理进程,数据段存储进程运行时使用的数据,程序段存储程序的指令序列。

Q: 什么是 PCB?
A: PCB 是进程控制块,是操作系统用来管理进程的数据结构,包含进程 ID(PID)、进程所属用户 ID(UID)、分配给进程的资源信息、进程运行情况等。
补充细节:PCB 相当于进程的身份证,记录了进程的所有重要信息,操作系统通过 PCB 来管理和控制进程。

Q: PCB 的作用是什么?
A: PCB 是操作系统用来区分和管理不同进程的关键信息,它记录了进程的各种属性和状态。
补充细节:例如,通过 PCB,操作系统可以知道进程的 ID、状态、优先级、资源使用情况等信息。

Q: 什么是程序段?
A: 程序段是存放程序指令序列的内存区域。
补充细节:程序段是进程执行指令的场所,包含了程序的所有指令。

Q: 什么是数据段?
A: 数据段是存放程序运行过程中产生的数据和变量的内存区域。
补充细节:数据段用来存放进程运行时使用的各种数据,例如变量、数组、结构体等。

Q: 什么是进程实体?
A: 进程实体是由 PCB、程序段、数据段组成的静态数据结构,可以理解为进程在动态执行过程中某一个时刻的快照。
补充细节:进程实体是进程在某一个时刻的状态的静态描述,它包含了进程的所有信息,但它不是进程本身。

Q: 进程实体和进程的区别是什么?
A: 进程实体是进程在某一个时刻的状态的静态描述,而进程是进程实体的运行过程,是动态的。
补充细节:进程实体就像是一张照片,而进程则是拍摄照片的过程。

Q: 进程是进程实体的运行过程,这句话是什么意思?
A: 进程实体是进程在某一时刻的状态的静态描述,而进程则是根据进程实体的信息,在 CPU 上动态执行指令的过程。
补充细节:就像我们根据照片可以了解一个人,但照片本身并不能代替这个人一样,进程实体只是进程的信息,而进程才是真正执行程序的过程。

Q: 进程的特征有哪些?
A: 进程具有动态性、并发性、独立性、异步性、结构性等特征。
补充细节:这些特征是进程的本质属性,体现了进程的动态性和复杂性。

Q: 什么是进程的动态性?
A: 进程是动态地产生、变化和消亡的。
补充细节:进程的生命周期是动态的,它可以被创建、运行、阻塞、唤醒、终止等。

Q: 什么是进程的并发性?
A: 多个进程实体可以并发执行。
补充细节:并发是指多个进程同时运行,但它们并非真正同时执行,而是交替执行,由于时间片轮转调度机制,给用户的感觉是同时执行的。

Q: 什么是进程的独立性?
A: 进程是能够独立运行、独立获得资源、独立接受调度的基本单位。
补充细节:每个进程都有自己的独立的地址空间,可以独立运行,不受其他进程的影响。

Q: 什么是进程的异步性?
A: 各进程按各自独立的、不可预知的速度向前推进。
补充细节:异步性是指进程的执行速度是不可预知的,每个进程都按照自己的速度运行,可能快,可能慢,这会导致进程之间的执行顺序难以预测。

Q: 什么是进程的结构性?
A: 进程由程序段、数据段、PCB 组成。
补充细节:结构性是指进程是由多个部分组成的,每个部分都有自己的功能,例如程序段存储指令,数据段存储数据,PCB 存储进程信息。

进程的状态、状态间的转换和组织方式

Q: 进程有哪些状态?
A: 进程有五种状态:创建态、就绪态、运行态、阻塞态、终止态。
补充细节:这五种状态描述了进程从创建到终止的整个生命周期。

Q: 进程的五种状态中,哪些是基本状态?
A: 进程的三种基本状态是运行态、就绪态、阻塞态。
补充细节:这三种状态是进程在运行过程中最常见的状态,它们之间可以相互转换。

Q: 详细描述进程的五种状态。
A: - 创建态:进程正在被创建,操作系统分配资源、初始化 PCB。
补充细节:在这个状态下,操作系统为进程分配必要的资源,例如内存、文件等,并初始化 PCB,准备让进程进入就绪态。

  • 就绪态:进程已创建完成,具备运行条件,但没有空闲 CPU。
    补充细节:在这个状态下,进程已经准备好了运行,但由于没有空闲的 CPU,所以不能立即运行。
  • 运行态:进程正在 CPU 上运行。
    补充细节:在这个状态下,进程获得了 CPU 的使用权,正在执行指令。
  • 阻塞态:进程等待某个事件发生,无法继续执行,进入阻塞态。
    补充细节:在这个状态下,进程因为需要等待 I/O 操作完成、信号量资源、其他进程的响应等事件而无法继续运行,所以进入了阻塞态,等待事件发生。
  • 终止态:进程执行结束,操作系统回收资源,删除 PCB。
    补充细节:在这个状态下,进程已经完成了它的任务,操作系统回收了进程使用的资源,并删除了 PCB,进程正式结束。

Q: 进程的状态之间是如何转换的?
A: 进程状态转换图是一个五状态模型,也称为丁字裤模型。
补充细节:状态转换图可以帮助我们理解进程在不同状态之间的转换关系。

Q: 进程状态转换图中有哪些转换关系?
A: - 创建态 就绪态

  • 就绪态 运行态
  • 运行态 就绪态
  • 运行态 阻塞态
  • 阻塞态 就绪态
  • 运行态 终止态
    补充细节:这些转换关系描述了进程在不同状态之间的流动,例如进程从创建态进入就绪态,从就绪态进入运行态,从运行态进入阻塞态等。

Q: 进程从运行态转换到阻塞态的原因是什么?
A: 进程从运行态转换到阻塞态是因为它主动请求等待某个事件,例如等待 I/O 操作完成。
补充细节:例如,当进程需要读取磁盘上的数据时,它会发出 I/O 请求,并进入阻塞态,等待 I/O 操作完成。

Q: 进程从阻塞态转换到就绪态的原因是什么?
A: 进程从阻塞态转换到就绪态是因为它等待的事件发生了,例如 I/O 操作完成。
补充细节:例如,当进程等待的磁盘读取操作完成时,它会从阻塞态转换到就绪态,等待 CPU 的分配。

Q: 进程从运行态转换到就绪态的原因是什么?
A: 进程从运行态转换到就绪态的原因有两种:时间片用完,或者有更高优先级的进程进入就绪队列。
补充细节:时间片用完是指操作系统分配给进程的 CPU 时间用完后,进程会从运行态转换到就绪态,等待下次调度。更高优先级的进程进入就绪队列是指当有优先级更高的进程进入就绪队列时,操作系统会剥夺当前正在运行的进程的 CPU 时间,将其转换到就绪态。

Q: 如何将进程组织起来?
A: 进程的组织方式主要有两种:链接方式和索引方式。
补充细节:这两种方式都是用来管理进程的,它们各有优缺点。

Q: 什么是链接方式?
A: 链接方式是操作系统管理多个队列,每个队列包含对应状态的进程 PCB。
补充细节:每个队列都使用链表来存储相应的进程 PCB,每个 PCB 指向下一个 PCB,这样就可以形成一个链表,方便操作系统对进程进行管理。

Q: 什么是索引方式?
A: 索引方式是操作系统为每个状态的进程建立索引表,每个表项指向一个 PCB。
补充细节:每个索引表都包含了对应状态的进程的 PCB 的指针,操作系统可以通过索引表快速找到需要的进程。

进程控制

Q: 什么是进程控制?
A: 进程控制是指实现进程的状态转换。
补充细节:进程控制是操作系统管理进程的核心功能,通过进程控制,操作系统可以创建、终止、阻塞、唤醒、切换进程等。

Q: 如何实现进程控制?
A: 使用原语来实现进程控制。
补充细节:原语是操作系统提供的特殊指令,可以保证指令的原子性,即不可中断的执行。

Q: 什么是原语?
A: 原语是一种特殊的程序,执行具有原子性,不可中断。
补充细节:原子性是指原语的执行过程是不可分割的,要么完全执行,要么一点也不执行,不会出现执行到一半被中断的情况。

Q: 如何实现原语的 “原子性”?
A: 使用关中断和开中断指令实现原语的原子性。
补充细节:关中断指令可以阻止 CPU 检查中断信号,开中断指令可以恢复 CPU 检查中断信号。

Q: 关中断指令的作用是什么?
A: 关中断指令阻止 CPU 检查中断信号,直到执行开中断指令。
补充细节:关中断指令可以保证原语的执行过程不会被中断,从而保证原语的原子性。

进程控制相关的原语

Q: 创建进程原语的步骤有哪些?
A: 创建进程的步骤包括:申请 PCB、分配资源、初始化 PCB、将 PCB 插入就绪队列。
补充细节:这些步骤保证了新进程的创建过程能够顺利完成。

Q: 撤销原语的步骤有哪些?
A: 撤销进程的步骤包括:找到进程的 PCB、剥夺 CPU、终止子进程、回收资源、删除 PCB。
补充细节:这些步骤保证了进程的终止过程能够顺利完成,并释放进程占用的资源。

Q: 阻塞原语的步骤有哪些?
A: 阻塞进程的步骤包括:找到进程的 PCB、保存进程现场、设置进程状态为阻塞态、将 PCB 插入等待队列。
补充细节:这些步骤保证了进程进入阻塞态的过程能够顺利完成,并保存进程的运行状态。

Q: 唤醒原语的步骤有哪些?
A: 唤醒进程的步骤包括:从等待队列中找到 PCB、设置进程状态为就绪态、将 PCB 插入就绪队列。
补充细节:这些步骤保证了进程从阻塞态转换到就绪态的过程能够顺利完成。

Q: 切换原语的步骤有哪些?
A: 切换进程的步骤包括:保存当前进程的运行环境、将 PCB 移入相应队列、选择另一个进程执行,更新其 PCB、恢复新进程的运行环境。
补充细节:这些步骤保证了进程之间切换的过程能够顺利完成,并保持进程的运行状态。

进程间通信(IPC)

Q: 什么是进程通信?
A: 进程通信是指两个进程之间产生数据交换。
补充细节:进程通信是并发编程中非常重要的概念,它允许不同的进程之间相互传递信息,协同工作。

Q: 为什么进程通信需要操作系统的支持?
A: 进程通信需要操作系统支持,因为进程拥有独立的内存地址空间,无法直接访问其他进程的内存。
补充细节:操作系统提供了进程间通信的机制,例如共享内存、消息传递、管道等,允许进程之间进行数据交换。

Q: 进程间通信的常见方式有哪些?
A: 进程间通信的常见方式有三种:共享存储、消息传递、管道通信。
补充细节:这三种方式各有优缺点,适用于不同的场景。

方式一:共享存储

Q: 什么是共享存储?
A: 共享存储是指进程可以申请一片共享存储器,多个进程可以访问该区域。
补充细节:共享存储提供了一种直接访问其他进程数据的机制,可以提高进程通信的效率。

Q: 共享存储的两种方式是什么?
A: 共享存储的两种方式是基于存储区的共享和基于数据结构的共享。
补充细节:这两种方式各有优缺点,适合不同的场景。

Q: 基于存储区的共享的特点是什么?
A: 基于存储区的共享方式是操作系统划分一块共享存储区,进程控制数据形式和位置,速度快。
补充细节:这种方式允许进程自由地组织数据,但是需要进程自己管理数据的一致性。

Q: 基于数据结构的共享的特点是什么?
A: 基于数据结构的共享方式是共享空间只允许存放特定格式的数据,速度慢,限制多。
补充细节:这种方式限制了数据的类型和结构,但保证了数据的一致性,比较容易管理。

方式二:消息传递

Q: 什么是消息传递?
A: 消息传递是指进程间的数据交换以格式化的消息为单位,通过发送消息和接收消息两个原语进行数据交换。
补充细节:消息传递是一种间接访问其他进程数据的机制,可以保证数据的一致性。

Q: 消息传递的两种方式是什么?
A: 消息传递的两种方式是直接通信方式和间接通信方式。
补充细节:这两种方式各有优缺点,适合不同的场景。

Q: 直接通信方式的特点是什么?
A: 直接通信方式是发送进程指明接收进程的 ID,速度快,但需要知道对方的 ID。
补充细节:这种方式效率高,但需要提前知道对方的 ID,比较适合进程之间已知关系的场景。

Q: 间接通信方式的特点是什么?
A: 间接通信方式使用信箱作为中间实体进行信息传递,速度慢,但不需要知道对方的 ID。
补充细节:这种方式更灵活,不需要提前知道对方的 ID,比较适合进程之间关系不确定的场景。

方式三:管道通信

Q: 什么是管道通信?
A: 管道是一个特殊的共享文件,只能单向传输数据。
补充细节:管道是进程间通信的一种特殊方式,它可以实现进程之间的数据传输,但只能单向传输。

Q: 管道通信的特点有哪些?
A: 管道通信的特点有:半双工通信、互斥访问、写满时写进程阻塞、读空时读进程阻塞、数据读出后消失。
补充细节:这些特点决定了管道通信的适用场景和使用方式。

线程的概念与特点

Q: 什么是线程?
A: 线程是程序执行流的最小单位,是轻量级的进程。
补充细节:线程可以理解为进程中的一个执行单元,它可以独立执行,但共享进程的资源。

Q: 引入线程的原因是什么?
A: 引入线程的原因是提高系统并发度,在一个进程内可以处理多个任务。
补充细节:线程可以使一个进程同时执行多个任务,例如,一个文本编辑器可以同时进行文本编辑、拼写检查和语法分析等任务。

Q: 线程和进程的区别是什么?
A: 线程是 CPU 调度的基本单位,进程是资源分配的基本单位。
补充细节:线程是 CPU 调度和执行的最小单位,而进程则是操作系统分配资源的最小单位。

Q: 引入线程后,进程内线程切换有什么变化?
A: 进程内线程切换不需要切换进程环境,开销更小。
补充细节:线程切换只涉及到线程上下文信息的切换,而进程切换则需要切换整个进程的环境,包括地址空间、资源等,因此线程切换的开销更小。

Q: 线程有哪些属性?
A: 线程的属性包括:线程是处理机调度的单位、多 CPU 计算机中各线程可占用不同的 CPU、线程组成(线程 ID、线程控制块)、线程状态(就绪态、阻塞态、运行态)、线程不拥有系统资源,共享进程的资源、线程通信无需操作系统干预、同进程线程切换不引起进程切换,不同进程线程切换引起进程切换、线程切换开销(同进程线程切换开销小,不同进程线程切换开销大)。
补充细节:这些属性体现了线程的特点,例如,线程是 CPU 调度的基本单位,所以操作系统会为线程分配 CPU 时间片;线程之间共享进程的资源,所以线程可以访问进程的内存空间、文件等。

线程的实现方式和多线程模型

Q: 线程的实现方式有哪些?
A: 线程的实现方式主要有两种:用户级线程和内核级线程。
补充细节:这两种实现方式各有优缺点,适合不同的场景。

方式一:用户级线程

Q: 什么是用户级线程?
A: 用户级线程是由线程库实现的,操作系统无法感知。
补充细节:用户级线程的管理由应用程序负责,操作系统并不知道线程的存在。

Q: 用户级线程的优点是什么?
A: 用户级线程的优点是线程切换在用户空间完成,开销小,效率高。
补充细节:用户级线程的切换不需要涉及到系统调用,因此效率更高。

Q: 用户级线程的缺点是什么?
A: 用户级线程的缺点是一个线程阻塞会导致整个进程阻塞,并发度不高,不能在多核处理机上并行运行。
补充细节:当一个用户级线程阻塞时,其他用户级线程也不能运行,因为它们共享同一个内核级线程,因此并发度不高。

方式二:内核级线程

Q: 什么是内核级线程?
A: 内核级线程是由操作系统支持的,操作系统可以感知。
补充细节:内核级线程的管理由操作系统负责,操作系统知道线程的存在,并提供线程管理的机制。

Q: 内核级线程的优点是什么?
A: 内核级线程的优点是一个线程阻塞不会影响其他线程,并发能力强,可以在多核处理机上并行运行。
补充细节:内核级线程是操作系统调度的基本单位,因此可以实现真正的并发,一个线程阻塞不会影响其他线程的运行。

Q: 内核级线程的缺点是什么?
A: 内核级线程的缺点是线程管理开销大,需要切换到核心态。
补充细节:内核级线程的切换需要涉及到系统调用,因此开销更大。

Q: 用户级线程和内核级线程可以结合在一起吗?
A: 用户级线程和内核级线程可以结合在一起,形成三种多线程模型:一对一模型、多对一模型、多对多模型。
补充细节:这三种模型是将用户级线程和内核级线程进行组合,以实现更好的性能和效率。

一对一模型

Q: 什么是一对一模型?
A: 一对一模型是一个用户级线程映射到一个内核级线程。
补充细节:在这种模型中,每个用户级线程都有一个对应的内核级线程,因此并发能力强。

Q: 一对一模型的优点是什么?
A: 一对一模型的优点是并发能力强,可以在多核处理机上并行运行。
补充细节:由于每个用户级线程都有一个对应的内核级线程,因此可以利用多核处理器的优势,实现真正的并行。

Q: 一对一模型的缺点是什么?
A: 一对一模型的缺点是线程管理开销大。
补充细节:由于每个用户级线程都需要一个内核级线程,因此线程管理的开销比较大。

多对一模型

Q: 什么是多对一模型?
A: 多对一模型是多个用户级线程映射到一个内核级线程。
补充细节:在这种模型中,多个用户级线程共享同一个内核级线程,因此线程切换开销小。

Q: 多对一模型的优点是什么?
A: 多对一模型的优点是线程切换开销小,效率高。
补充细节:由于多个用户级线程共享同一个内核级线程,因此线程切换只需要在用户空间进行,不需要涉及到系统调用,效率更高。

Q: 多对一模型的缺点是什么?
A: 多对一模型的缺点是一个线程阻塞会导致整个进程阻塞,并发度不高,不能在多核处理机上并行运行。
补充细节:当一个用户级线程阻塞时,其他用户级线程也不能运行,因为它们共享同一个内核级线程,因此并发度不高。

多对多模型(前两种的结合版,弥补缺陷)

Q: 什么是多对多模型?
A: 多对多模型是 n 个用户级线程映射到 m 个内核级线程上。
补充细节:这种模型结合了一对一模型和多对一模型的优点,可以实现更好的性能和效率。

Q: 多对多模型的优点是什么?
A: 多对多模型的优点是克服了一对一模型开销太大和多对一模型并发度不高的缺点。
补充细节:多对多模型可以根据实际情况调整用户级线程和内核级线程之间的映射关系,以实现最佳的性能和效率。

线程的状态与转换

Q: 线程有哪些状态?
A: 线程有三种基本状态:就绪态、运行态、阻塞态。
补充细节:这三种状态描述了线程在运行过程中最常见的状态,它们之间可以相互转换。

Q: 线程的状态之间是如何转换的?
A:

  • 运行态 阻塞态:线程主动请求等待某个事件。
  • 运行态 就绪态:时间片用完,或者有更高优先级的线程进入就绪队列。
  • 就绪态 运行态:线程被调度程序选中。
  • 阻塞态 就绪态:等待的事件发生。
    补充细节:这些转换关系描述了线程在不同状态之间的流动。

线程的组织与控制

Q: 什么是 TCB?
A: TCB 是线程控制块,类似于进程的 PCB,包含线程标识符、程序计数器、通用寄存器、堆栈指针、线程运行状态、优先级等信息。
补充细节:TCB 是用来管理线程的数据结构,它记录了线程的所有重要信息。

Q: 什么是线程表?
A: 线程表是将多个 TCB 组织起来,可以按照线程状态进行分类管理。
补充细节:线程表方便操作系统对线程进行管理,例如,可以根据线程的状态快速找到需要的线程。

处理机调度的概念、层次

Q: 什么是调度?
A: 调度是指根据某种规则决定处理任务的顺序。
补充细节:调度是操作系统中一个重要的功能,它决定了哪些任务先执行,哪些任务后执行。

Q: 调度的三个层次是什么?
A: 调度的三个层次是高级调度、低级调度、中级调度。
补充细节:这三个层次分别对应不同的调度目标和管理对象。

高级调度

Q: 什么是高级调度?
A: 高级调度(作业调度)是从外存的作业后备队列中挑选一个作业调入内存。
补充细节:高级调度主要负责将外存中的作业加载到内存中,以便进行执行。

低级调度

Q: 什么是低级调度?
A: 低级调度(进程调度)是从就绪队列中选取一个进程,分配处理机。
补充细节:低级调度主要负责将就绪队列中的进程分配到 CPU 上运行。

中级调度

Q: 什么是中级调度?
A: 中级调度(内存调度)是将内存中不重要的进程调出到外存,并在需要时重新调入内存。
补充细节:中级调度主要负责管理内存空间,将不重要的进程暂时调出到外存,以便为其他进程腾出空间。

Q: 三层调度的联系和对比是什么?
A:

  • 高级调度:外存 内存,面向作业。
  • 中级调度:外存 内存,面向进程。
  • 低级调度:内存 CPU,面向进程。
    补充细节:这三个层次的调度分别对应不同的任务和目标,它们相互配合,共同完成操作系统的调度工作。

补充知识:进程的挂起态与七状态模型

Q: 什么是挂起态?
A: 挂起态是进程暂时调到外存等待的状态。
补充细节:挂起态是进程的一种特殊状态,它表示进程暂时被调出到外存,等待合适的时机再调入内存。

Q: 挂起态分为几种?
A: 挂起态分为两种:就绪挂起和阻塞挂起。
补充细节:就绪挂起是指进程被调出到外存,但已经准备好了运行,只需要调入内存就可以继续执行;阻塞挂起是指进程被调出到外存,并且处于阻塞状态,需要等待某个事件发生才能继续执行。

Q: 什么是七状态模型?
A: 七状态模型是将进程状态扩展为七种:创建态、就绪态、运行态、阻塞态、终止态、就绪挂起、阻塞挂起。
补充细节:七状态模型更详细地描述了进程在运行过程中的各种状态,可以帮助我们更深入地理解进程的管理。

调度的目标(调度算法的评价指标)

Q: 调度的目标是什么?
A: 调度的目标是提高系统的性能和效率,使系统能够更好地满足用户的需求。
补充细节:不同的调度算法有不同的目标,例如,一些算法侧重于提高 CPU 利用率,另一些算法侧重于减少响应时间。

Q: 调度算法的评价指标有哪些?
A: 调度算法的评价指标包括:CPU 利用率、系统吞吐量、周转时间、等待时间、响应时间。
补充细节:这些指标可以用来衡量调度算法的性能和效率。

CPU 利用率

Q: 什么是 CPU 利用率?
A: CPU 利用率是 CPU 处于忙碌的时间占总时间的比例。
补充细节:CPU 利用率越高,表示 CPU 被利用得越多,系统效率越高。

系统吞吐量

Q: 什么是系统吞吐量?
A: 系统吞吐量是单位时间内完成作业的数量。
补充细节:系统吞吐量越高,表示系统在单位时间内处理的任务越多,系统效率越高。

周转时间

Q: 什么是周转时间?
A: 周转时间是作业从提交到完成的时间间隔。
补充细节:周转时间越短,表示作业完成得越快,用户体验越好。

Q: 平均周转时间如何计算?
A: 平均周转时间是各作业周转时间之和除以作业数。
补充细节:平均周转时间可以反映系统整体的处理能力。

Q: 带权周转时间如何计算?
A: 带权周转时间是作业周转时间除以作业实际运行时间。
补充细节:带权周转时间可以更准确地反映系统的处理能力,因为它考虑了作业的运行时间。

Q: 平均带权周转时间如何计算?
A: 平均带权周转时间是各作业带权周转时间之和除以作业数。
补充细节:平均带权周转时间可以反映系统整体的处理能力,因为它考虑了所有作业的运行时间。

等待时间

Q: 什么是等待时间?
A: 等待时间是进程 / 作业处于等待处理机状态的时间之和。
补充细节:等待时间越短,表示进程 / 作业被阻塞的时间越短,用户体验越好。

响应时间

Q: 什么是响应时间?
A: 响应时间是从用户提交请求到首次产生响应的时间。
补充细节:响应时间越短,表示系统对用户的请求响应越快,用户体验越好。

进程调度的时机、切换与过程调度方式

Q: 什么是进程调度?
A: 进程调度是从就绪队列中选择一个进程分配处理机。
补充细节:进程调度是操作系统中一个重要的功能,它决定了哪些进程先执行,哪些进程后执行。

Q: 进程调度发生的时机有哪些?
A: 进程调度发生的时机可以分为主动放弃和被动放弃。
补充细节:主动放弃是指进程主动放弃 CPU 的使用权,被动放弃是指操作系统剥夺进程的 CPU 使用权。

Q: 主动放弃的时机有哪些?
A: 主动放弃的时机包括进程正常终止、异常终止、主动请求阻塞。
补充细节:进程正常终止是指进程执行完毕,主动退出运行;异常终止是指进程在运行过程中发生错误,被操作系统强制终止;主动请求阻塞是指进程需要等待某个事件发生,主动放弃 CPU 的使用权。

Q: 被动放弃的时机有哪些?
A: 被动放弃的时机包括时间片用完、有更紧急的任务、有更高优先级的进程进入就绪队列。
补充细节:时间片用完是指操作系统分配给进程的 CPU 时间用完后,操作系统会剥夺进程的 CPU 使用权;有更紧急的任务是指系统中出现了需要优先处理的任务,操作系统会剥夺当前进程的 CPU 使用权;有更高优先级的进程进入就绪队列是指当有优先级更高的进程进入就绪队列时,操作系统会剥夺当前正在运行的进程的 CPU 使用权。

深入理解对于临界区的调度与切换

Q: 什么是临界资源?
A: 临界资源是同一时间段内只允许一个进程使用的资源。
补充细节:临界资源是指那些不能被多个进程同时访问的资源,例如打印机、文件等。

Q: 什么是临界区?
A: 临界区是访问临界资源的代码段。
补充细节:临界区是指进程中访问临界资源的那段代码,它需要保证在任何时候只有一个进程能够访问临界资源。

Q: 内核程序临界区和普通临界区有什么区别?
A: 内核程序临界区是访问内核数据结构的代码段,不能进行进程调度,而普通临界区是访问普通临界资源的代码段,可以进行进程调度。
补充细节:内核程序临界区是操作系统内核用来管理系统资源的代码段,如果在内核程序临界区中进行进程调度,可能会导致系统崩溃,因此不能进行进程调度;而普通临界区是用户程序用来访问系统资源的代码段,在普通临界区中进行进程调度不会导致系统崩溃,因此可以进行进程调度。

两种进程调度方式(非剥夺调度、调度方式)

Q: 进程调度的两种方式是什么?
A: 进程调度的两种方式是非剥夺调度方式和剥夺调度方式。
补充细节:这两种调度方式各有优缺点,适合不同的场景。

Q: 非剥夺调度方式的特点是什么?
A: 非剥夺调度方式只允许进程主动放弃处理机。
补充细节:非剥夺调度方式是指进程一旦获得了 CPU 的使用权,就会一直占用 CPU,直到它主动放弃 CPU 的使用权,例如,进程执行完毕、发生错误、等待 I/O 操作等。

Q: 剥夺调度方式的特点是什么?
A: 剥夺调度方式允许进程主动放弃处理机,也允许系统被动剥夺处理机。
补充细节:剥夺调度方式是指进程可以主动放弃 CPU 的使用权,也可以被操作系统强制剥夺 CPU 的使用权,例如,时间片用完、有更紧急的任务、有更高优先级的进程进入就绪队列等。

进程调度的切换与过程

Q: 狭义的进程调度和广义的进程调度有什么区别?
A: 狭义的进程调度是从就绪队列中选择一个进程,而广义的进程调度包含选择进程和进程切换两个步骤。
补充细节:狭义的进程调度是指操作系统选择一个进程来运行,而广义的进程调度则是指操作系统选择一个进程来运行,并且将 CPU 的使用权从当前运行的进程切换到新选择的进程。

Q: 什么是进程切换?
A: 进程切换是一个进程让出处理机,另一个进程占用处理机的过程。
补充细节:进程切换是指操作系统将 CPU 的使用权从一个进程切换到另一个进程的过程,它涉及到保存当前进程的运行状态,恢复新进程的运行状态,以及更新相关的数据结构等操作。

Q: 进程切换的步骤有哪些?
A: 进程切换的步骤包括:保存当前进程的运行环境、恢复新进程的运行环境。
补充细节:保存当前进程的运行环境是指将当前进程的 CPU 寄存器、程序计数器、堆栈指针等信息保存到 PCB 中,以便下次恢复使用;恢复新进程的运行环境是指将新进程的 PCB 中保存的信息恢复到 CPU 寄存器、程序计数器、堆栈指针等位置,以便新进程继续运行。

调度器 / 调度程序(scheduler)

Q: 什么是调度器?
A: 调度器是负责进程调度工作的程序。
补充细节:调度器是操作系统的一个重要组件,它负责管理 CPU 的使用权,决定哪些进程可以运行,以及运行多长时间。

Q: 调度器工作的时机有哪些?
A: 调度器工作的时机包括:创建新进程、进程退出、运行进程阻塞、I/O 中断发生、非抢占式调度策略(只有运行进程阻塞或退出才触发调度程序)、抢占式调度策略(每个时钟中断或 k 个时钟中断会触发调度程序)。
补充细节:这些时机是指操作系统需要进行进程调度的情况,例如,当一个新的进程被创建时,操作系统需要将它加入到就绪队列中,并进行调度;当一个进程退出时,操作系统需要释放它的资源,并进行调度;当一个进程阻塞时,操作系统需要将它从运行态转移到阻塞态,并进行调度;当发生 I/O 中断时,操作系统需要处理中断请求,并进行调度;当使用非抢占式调度策略时,只有当当前运行的进程主动放弃 CPU 的使用权时,才会进行调度;当使用抢占式调度策略时,每隔一段时间就会进行调度,以便保证所有进程都能获得 CPU 的使用权。

Q: 调度单位是什么?
A: 调度单位是系统不支持线程时为进程,支持线程时为内核级线程。
补充细节:调度单位是指操作系统进行调度时的基本单位,系统不支持线程时,调度单位是进程,操作系统会为进程分配 CPU 时间片;系统支持线程时,调度单位是内核级线程,操作系统会为内核级线程分配 CPU 时间片。

理解闲逛进程

Q: 什么是闲逛进程?
A: 闲逛进程是当就绪队列为空时,调度程序会选中闲逛进程,让其上处理机运行。
补充细节:闲逛进程是一个特殊的进程,它的作用是用来占用 CPU 时间,防止 CPU 处于空闲状态。

Q: 闲逛进程的特性有哪些?
A: 闲逛进程的特性包括:优先级最低、执行零地址指令、能耗低。
补充细节:闲逛进程的优先级最低,是为了保证其他进程能够优先获得 CPU 的使用权;闲逛进程执行零地址指令,是因为零地址指令不需要访问内存,可以节省 CPU 时间;闲逛进程的能耗低,是为了降低系统的功耗。

调度算法

Q: 调度算法是什么?
A: 调度算法是指操作系统用来决定哪些进程应该被分配到 CPU 上运行的算法。
补充细节:不同的调度算法有不同的目标和策略,例如,一些算法侧重于提高 CPU 利用率,另一些算法侧重于减少响应时间。

批处理阶段的三种调度算法

Q: 批处理阶段的三种调度算法是什么?
A: 批处理阶段的三种调度算法是先来先服务算法(FCFS)、短作业优先算法(SFJ)、高响应比优先算法(HRRN)。
补充细节:这三种算法都是比较经典的调度算法,它们在批处理系统中有着广泛的应用。

先来先服务算法(FCFS)

Q: 什么是先来先服务算法(FCFS)?
A: FCFS 算法是按照作业 / 进程到达的先后顺序进行服务。
补充细节:FCFS 算法是最简单的调度算法,它遵循“先到先得”的原则。

Q: FCFS 算法是抢占式算法吗?
A: FCFS 算法是非抢占式算法。
补充细节:FCFS 算法是指进程一旦获得了 CPU 的使用权,就会一直占用 CPU,直到它主动放弃 CPU 的使用权,例如,进程执行完毕、发生