多任务系统分为2类:
- 非抢占式多任务系统,需要进程主动让出(yield)系统资源
- 抢占式多任务系统,如Linux,调度程序决定何时停止运行某个进程
多任务系统分为2类:
进程是处于执行期的程序,在内核中通常称为任务task
。进程描述符存放在内核的任务队列(task list)双向链表中,链表的每一项是一个task_struct
结构体,每个task_struct
在32位机器上大约占1.7KB内存。
// linux/sched.h
struct task_struct{
unsigned long state;
int prio;
unsigned long policy;
struct task_struct *parent;
struct list_head tasks;
pid_t pid;
// ...
}