嵌入式操作系统
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3.2 进程、线程与任务

一般情况下,描述操作系统的任务管理机制时存在三种说法。

进程 所谓进程,是一个动态的概念。一个可执行模块(可执行文件)被操作系统加载到内存,分配资源,并加入到就绪队列后,就形成了一个进程。一般情况下,进程有独立的内存空间(比如在典型的PC操作系统中,如果目标CPU是32位则一个进程就有独立的4GB的虚拟内存空间),如果不通过IPC机制,进程之间是无法交互任何信息的,因为进程之间的地址空间是独立的,不存在重叠的部分。

线程 一般情况下,线程是CPU可感知的最小的执行单元,一个进程往往包含多个线程,这些线程共享进程的内存空间,线程之间可以直接通过内存访问的方式进行通信,线程之间共享同进程的全局变量,但每个线程都有自己的堆栈和硬件寄存器。

任务 概念同线程类似,但与线程不同的是,任务往往是针对没有进程概念的操作系统来说的,比如嵌入式操作系统。这些操作系统没有进程的概念,或者说整个操作系统就是一个进程,这种情况下,任务便成了操作系统中最直接的执行单位。另外一种说法就是,任务往往是一个无限循环,操作系统启动时,任务随之启动,然后一直运行到操作系统结束为止。

目前情况下在Hello China的实现中是没有进程概念的,却存在多个执行线索,因此,用任务来描述这些执行线索是最合适的。但考虑到这些执行线索并不一定是无限循环,而是与通用操作系统的线程概念一致,可以根据需要创建,运行结束后自动销毁,因此我们也以“线程”来称呼系统中的执行线索,为了区别通用操作系统中普通的用户线程(用户进程中的线程),我们把Hello China中的执行线索叫做“核心线程(Kernel Thread)”,或简称为“线程”。