我的教科书中提到了以下句子:
在支持它们的操作系统上,操作系统正在调度内核级线程 - 而不是进程。
我理解CPU调度,但这句话没有意义。是否意味着调度程序根据特定算法将CPU分配给内核级线程?
是不是还安排了内核级进程?或者它们不存在于支持内核级线程的操作系统中?
答案 0 :(得分:2)
在操作系统上下文中引用线程和进程时,Process表示具有自己的内存空间的线程,而Thread表示与其他线程共享其内存空间的线程。
因此,进程上下文切换的成本高于线程上下文切换,因为在切换进程上下文时存在更高的开销。
答案 1 :(得分:2)
正如您引用的文字所暗示的那样,答案取决于具体的操作系统。但是,对术语的一点定义可能有助于使事情更清晰。
<强>程序强> 程序是执行特定作业的一系列指令。这通常作为一个或多个可执行文件遇到,包括主应用程序和它使用的任何库。
在嵌入式系统中,当制造设备时,程序将“嵌入”在电子设备中*,例如, ASIC,微控制器,FPGA和其他设备。
<强>过程强> 进程是程序的执行实例。可能有多个程序实例同时运行,例如当您使用相同的文字处理程序打开多个文档时。
每个进程都有自己的内存和至少一个执行线程。当您启动一个进程时,该进程的主线程将在加载程序时启动。
<强>发强> 线程(或任务)是处理器必须执行的指令序列,以实现程序的特定目标。
在多任务操作系统中,进程可能会运行许多任务。所有任务与父进程共享相同的内存。因此,与在进程之间切换相比,在进程内的任务之间切换相当容易(这可能涉及通过磁盘上的交换文件交换进程的内存!)
计划强> 根据需要执行的操作,操作系统将调度所需的线程或等待执行它们的线程。这可能涉及改变当前的过程,但通常(希望)它不会。因此,线程被安排,而进程则没有。
*某些嵌入式设备包含一个“Bootloader”,允许程序在制造完成后进行更改。