Linux的进程管理技术文档.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux的进程管理技术文档

PAGE 1 PAGE 14 第二章 Linux的进程管理 Linux是一个多任务多用户操作系统, 一个任务(task)就是一个进程(process)。每一个进程都具有一定的功能和权限,它们都运行在各自独立的虚拟地址空间。 在Linux中,进程是系统资源分配的基本单位,也是使用CPU运行的基本调度单位。 §2.1 Linux进程概述 一.Linux进程的组成 存放在磁盘上的可执行文件的代码和数据的集合称为可执行映象(Executable Image)。 当一个程序装入系统中运行时,它就形成了一个进程。 进程是由正文段(text)、用户数据段(user segment)和系统数据段(system segment)组成的一个动态实体。 正文段中存放着进程要执行的指令代码,具有只读的属性, 用户数据段是进程在运行过程中处理数据的集合,它们是进程直接进行操作的所有数据, 以及进程使用的进程堆栈。 系统数据段存放着进程的控制信息。其中包括进程控制块PCB。 进程控制块PCB是名字为task_struct的数据结构,它称为任务结构体 任务结构体中容纳了一个进程的所有信息,是系统对进程进行管理和控制的有效手段,是系统实现进程调度的主要依据。 当一个进程被创建时,系统就为该进程建立一个task_struct任务结构体。当进程运行结束时,系统撤消该进程的任务结构体。 进程的任务结构体是进程存在的唯一标志。 Linux在内存空间中开辟了一个专门的区域存放所有进程的任务结构体。 在操作系统的内核空间设置了一个task数组,该数组的每一个元素是一个指向任务结构体的指针,所以task数组又称为task向量。 struct task_struct *task[NR_TASKS] = {init_task}; #define NR_TASKS 512 全局变量nr_tasks,记录着系统中存在的进程数目。 int nr_tasks = 1; 二.Linux进程的状态 运行态:进程正在使用CPU运行的状态。处于运行态的进程又称为当前进程(current process)。 可运行态:进程已分配到除CPU外所需要的其它资源,等待系统把CPU分配给它之后即可投入运行。 等待态:又称睡眠态,它是进程正在等待某个事件或某个资源时所处的状态。 等待态进一步分为可中断的等待态和不可中断的等待态。处于可中断等待态的进程可以由信号(signal)解除其等待态。处于不可中断??待态的进程,一般是直接或间接等待硬件条件。 它只能用特定的方式来解除,例如使用唤醒函数wake_up()等。 暂停态:进程需要接受某种特殊处理而暂时停止运行所处的状态。通常进程在接受到外部进程的某个信号进入暂停态,例如,正在接受调试的进程就处于这种状态。 5.僵死态:进程的运行已经结束,但它的任务结构体仍在系统中。 三.核心态和用户态 Linux的进程处理机上运行时,处理机提供了两种不同的的执行状态, 核心态(kernel mode)和用户态(user mode)。 核心态又称系统态,它具有较高的特权,能执行所有的机器指令,包括由操作系统执行的特权指令,能访问所有的寄存器和存储区域,能直接控制所有的系统资源。 Linux在执行内核程序时是处于核心态下。 用户态是进程的普通执行状态,在用户态下进程具有较低的特权, 只能执行规定的机器指令,不能执行特权指令。进程在用户态下只能访问进程的存储空间。在用户态下进程不能与系统硬件相互作用,不能访问系统资源。 四.进程空间和系统空间 系统为每个进程分配一个独立的虚拟地址空间(虚拟内存)。进程的虚拟地址空间被分做两个部分,用户空间和系统空间。 用户进程本身的程序和数据(可执行映象)映射到用户空间中。进程空间中还有进程运行用户程序时使用的堆栈,称为进程堆栈。 系统对这个进程进行控制和管理的信息,如进程控制块等,也映射到进程空间。 内核堆栈也在进程空间中。 内核被映射到所有进程的系统空间中。它们只允许在具有较高特权的核心态下访问。进程运行在特权较低的用户态下时,不允许它直接访问系统空间。 进程只能通过系统调用(system call)转换为核心态后,才能访问系统空间。 一个进程在运行过程中,总是在两种执行状态之间不断地转换。 五.进程上下文和系统上下文 把系统提供给进程的处于动态变化的运行环境总和称为进程上下文。系统中的每一个进程都有它自己的上下文。 进程因时间片用完或因等待某个事件而阻塞时,进程调度需要把CPU的使用权从当前进程交给另一个进程,这个过程称为进程切换(procdss switching)。 进程的切换又称为上下文切换(context switching).。 在系统内核为用户进程服务,例如进程执行一个系统调用时,

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档