2014-11-05 114 views
0

我的课本提到了下面的句子:CPU调度和内核级线程

在支持它们的操作系统,它是内核级线程 - 而不是进程 - 正在由操作系统调度。

我理解CPU调度,但这句话没有意义。这是否意味着调度程序根据特定的算法将CPU分配给内核级线程?

是否还安排了内核级进程?或者它们不存在于支持内核级线程的操作系统中?

+1

请参阅http://stackoverflow.com/questions/9305992/linux-threads-and-process/9306150#9306150 – paxdiablo 2014-11-05 12:16:39

回答

2

正如您引用的文本所暗示的,对此的答案取决于具体的操作系统。但是,对这些术语的一点定义可能有助于使事情变得更清楚。

程序 程序是执行特定作业的指令序列。这经常遇到一个或多个可执行文件,包括主应用程序和它使用的任何库。

在嵌入式系统中,当设备制造时,程序将“嵌入”在电子器件中,例如, ASIC,微控制器,FPGA和otehr设备。

处理 进程是程序的执行实例。可能同时运行一个程序的多个实例,例如使用相同的文字处理程序打开多个文档时。

每个进程都有自己的内存和至少一个执行线程。当你启动一个进程时,该进程的主线程在程序加载时启动。

线程 线程(或任务)是处理器必须执行的指令序列,以实现程序的特定目标。

在多任务操作系统中,一个进程可能有许多任务正在运行。所有任务与父进程共享相同的内存。一个进程内的任务间的切换是相当容易的,与流程之间的切换相比(这可能涉及通过一个交换文件在磁盘上的交换过程的记忆!)

调度 根据需要做什么,操作系统将安排需要或等待需要的线程。这可能涉及改变当前的过程,但通常(希望)它不会。因此,线程被调度,进程不是。

*一些嵌入式设备包括一个'Bootloader',它允许程序在制造后被更改。

2

当涉及操作系统上下文中的线程和进程时,进程意味着一个拥有自己的内存空间的线程,线程表示一个线程与其他线程共享内存空间。

因此,进程上下文切换的成本比线程上下文切换更高,因为在切换进程上下文时存在更高的开销。