如果一个进程只有一个线程,那么一次只能执行单个线程指令。这种单一控制线程使得进程一次只能执行一个任务。比如用户不能在同一进程中,既输入字符,又检查拼写错误。

目前操作系统拓展了进程的概念,允许进程具有多个执行线程,从而一次执行多个任务。

这个特性特别有利于多核系统,在多核系统中,多个线程可以并行的运行。

在支持线程的系统中,扩展了PCB以包含每个线程的信息。系统中还需要其他的更改来支持线程。

在Linux中,进程控制块(PCB)是以C结构体task struct来表示的。

进程的父进程就是创建该进程的进程

在Linux 内核中所有的进程是使用一个双向链表来表示的,双向链表的数据是task_struct。内核保存一个current指针,指向当前系统中正在执行的进程。

为了说明内核是如何为指定的进程操作task_struct其中的一个字段的,我们假定系统要更改正在运行的进程的状态,使得它变成一个新的值:new_state.如果当前current指针整指向的是正在执行的进程,它的状态会像下面这样被改变:

current->state = new state;

results matching ""

    No results matching ""