用户使用计算机的接口是用户程序,进程管理是所有操作系统的心脏,linux也不例外。
一、进程
1.进程描述
进程是正在执行的程序代码的实时结果。为表示正在运行的程序,进程除了包含可执行程序代码,还需要包含其他资源:
进程包含的其他资源 |
---|
打开的文件 |
挂起的信号 |
内核内部数据 |
处理器状态 |
一个或多个具有内存映射的内存地址空间及一个或多个执行线程 |
存放全局变量的数据段 |
执行线程是进程中活动的对象,内核调度的对象是线程而不是进程。每个线程都拥有一个
独立的程序计数器 |
---|
进程栈 |
一组进程寄存器 |
进程提供两种虚拟机制:虚拟处理器和虚拟内存。虚拟处理器给进程一个假象,让进程觉得自己在独享处理器。线程之间可以共享虚拟内存,但每个都拥有各自的虚拟处理器。实际上,可能存在两个或多个不同的进程执行同一个程序,共享许多诸如打开的文件、地址空间之类的资源。
1.1 进程描述符及任务结构
内核把进程的列表存放在任务队列(task list)的双向循环链表中,链表项是类型为task_struct的进程描述符。
进程描述符包含的数据能完整地描述一个正在执行的程序:它