进程:
进程就是处于执行期的程序。但进程并不仅仅局限于一段可执行代码(Unix称其为代码段,text section)。实际上,进程就是正在执行的程序代码的实时结果。
线程:
执行线程,是在进程中活动的对象,内核调度的对象是线程不是进程。
①:在现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存。注意:在线程之间可以共享虚拟内存,但每个都拥有各自的虚拟处理器。
②:程序本身并不是进程,进程是处于执行期的程序以及相关的资源的总称。实际上,完全可能存在两个或多个不同的进程执行的是同一个程序。并且两个或两个以上并存的进程还可以共享许多诸如打开的文件,地址空间之类的资源。
在linux系统中,这通常是调用fork()系统的结果,该系统调用通过复制一个现有进程来创建一个全新的进程。
进程描述符及任务结构:内核把进程的列标存放在叫做任务队列的双向循环链表中。链表中的每一项都是类型为task_struct,称为进程描述符的结构,该结构定义在<linux/sched.h>文件中。进程描述符中包含一个具体进程的所有信息。