高效与精细的结合--Linux的进程管理.pdf

第 卷 第 期 A 文献标识码 I T6L 76 28 L J6 7 8 676 LJ Q Q656 8J6 6 82 K 797863 R28J 2 Q6 6 Q6 8 2 86 6L8 6 89 2KJ8 Q 8 3 8 8J6 Q656 36 8 0 L 3 86 7L26 L6 1J6 3 K636 8 0 L677 27 23 8 8 L 3 6 8 2 C2 D 6 82 K 797863 RJ2LJ 3 2 9 L 72787 0 678 S 27J2 K L 76 7R28LJ2 K L 76 Q 6 Q2 K L 76 1J KJ 972 K 8J6 Q68 2 7 0 8J676 L 767 Q 8J KJ 8J6 6 Q2 K 0 7 36 723 6 7 L6 L Q67 28 S67 2 8 8J6 6002L26 L9 Q 3682L 7 63S Q26Q 2 8J6 L 76 0 Q672K 2 K Q 6 2P2 K 2 C2 D 8 9 2 0 C2 D L677 EFG 7R2LJ 6 Q 进程与进程管理 进程是拥有一定资源并能独立运行的一个基本 单位 也正是由于引入了进程的概念 现代操作系统 中程序的并发执行才成为可能 因而是否能对进程 进行有效的控制和管理 对于一个操作系统来说是 至关重要的 处理机的管理是现代操作系统的一个重要功 能 其主要任务就是合理的分配处理机资源 并对其 进行有效的控制和管理 处理机的分配和运行是以 进程为单位的 故对处理机的管理实际上可以归结 为对进程的管理 C2 D 与 C2 D 的进程 C2 D 操作系统是一个多用户 多任务的操作系 统 它是 4 2D 的兼容产品 而且是 4 2D 的延续和发 展 是 4 2D 各种版本的集大成者 如果说 4 2D 是一 个 微内核 那么 C2 D 就是一个 宏内核 更为 值得注意的是 C2 D 是一个自由软件 人们可以自 由的得到 C2 D 的可执行程序及源代码 这就给我 们研究和分析操作系统提供的极大的方便 C2 D 系统中的进程有自己的特点 它至少具备 四个要素 一段可供其执行的程序 一些最基本的资源 如进程专用的系统堆栈 空间 内核中有一个 8 7UV78 L8 数据结构即操作系 统理论中的进程控制块标识其存在 独立的存储空间 除前面讲的系统空间堆栈 收稿日期 例如当需要从父进程复制可写页面时 本来是 应该在内存里给子进程分配一个空闲的内存页面 然后再从父进程的页面将内容复制过来 并为之建 立映射 但正如前面所讲 复制过来的页面子进程 并不一定用 特别是当只有 读访问 没有 写访 问 时 只要保证父进程从此不再写这个页面 子进 程就完全可以通过复制指针来共享该页面 所以 6 8 46 8 4 中 关键的代码 有 2A F3 A 3 72 B 即任务状态 段 它是保存一个进程重要信息的特殊段 通过切 换 F 指针 也就是寄存器 F 的内容 由 OEP 的硬 件来实现进程的切换 L 硬切换的大致过程是这样的 首先将处理器中 各寄存器的当前值自动保存到 F 所指定的 F 中 然后 下一进程 F 的选择子被装入 F 这样 F 就指向新的 F 了 最后从 F 所指向的 F 中 取出各寄存器的值送到处理器的各寄存器中 显而 易见这种做法看起来是简单的 简单到只要一条 Q E 指令或 O GG 指令就可以完成切换 早期 G BHI 确实采用此法 但现在已经放弃 而采取了软 切换的办法 软切换的过程是在内核完成 由于每 个 OEP 初始化后永远只对应一个任务状态段 F 通过改变任务状态段中的堆栈段寄存器 的内容 和堆栈指针寄存器 E 的内容 就可从逻辑上实现 切换 例如从进程 切换到进程 R 的过程在调度程 序中的结构可用图 L 来简单示意 图 L 调试程序中进程切换示意图 这个切换过程的主要工作就是堆栈的切换 是 由宏操作 E 保存到 E 9 进 程描述符 从 T UF 的进程描述符中恢复 E 把 E 9 下次的返回点保存到 E 9 进程描 述符 从 T UF 的进程描述符中取出返回点 并压 入 T UF 的堆栈 进入函数 E 到原结构 E 切换了堆栈3 14 5 617 8 9 61 3 1 2 4 5 13 14 5 13 其中函数 4 的主要工作就是将 ABB 中内核空间 级 堆栈指针换成 14 4 6 数据结构和系统空间堆栈所在 的两个页面 在进程终止过程中这两个页面不是进 程自己释放的 而是通过调用 1 函数 回收相应资源 真正结束进程 此种安排第一可以由父进程将子进程的 4 4 6 数据结构中的一些有用的统计信息保存起来 不致丢失 第二更重要的是 系统一旦进入多进程状 态 任何一个时刻都需要一个 当前进程 存在 如 若不然 在系统调用另一个进程投入运行之前 子进 程就将自己的 4 4 6 数据结构和系统空间堆栈 释放 那就会有一个无 当前进程 的空隙 若此时 出现一个不可屏蔽中断或异常 就会出现问题了 故子进程的 4 4 6 数据结构和系统空间堆栈必 须要保存到另一个进程开始运行之后才能释放 这 样由父进程来释放它们就很合理 而且也简化了程 序 否则调度程序 4 13 1 就要多考虑好多情况 可见设计者在进程终止过程中的安排也是相当稳妥 合理的 Q 结束语 本文从三处细节分析了 在进程管理过程 中的精打细算 既让系统能高效运行 又能面面俱 到 其实这种精妙之处在 的结构和源代码设 计中随处可见 有时令人不得不由衷的佩服设计者 的高超技艺 由于 的结构和源代码都是完全 开放的 仔细对其进行研究对于我国自行设计和开 发具有自主知识产权的操作系统有着重要的现实意 义 参考文献 略 RS 万方数据 高效与精细的结合 Linux的进程管理高效与精细的结合 Linux的进程管理 作者 石鲁生 Shi Lusheng 作者单位 宿迁学院计算机系 江苏 宿迁 223800 刊名 塔里木大学学报 英文刊名 JOURNAL OF TARIM UNIVERSITY 年 卷 期 2005 17 3 本文链接

linux进程管理 pdf,高效与精细的结合--Linux的进程管理.pdf相关推荐

  1. 《Linux内核设计与实现》读书笔记 第三章 进程管理

    第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...

  2. Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)

    转自:http://blog.csdn.net/gatieme/article/details/51383272 日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Linux- ...

  3. tableau linux无网络安装_四十二、Linux网络管理,软件安装,进程管理总结

    「@Author: Runsen」 1.⽹络管理 1.1 网络状态查看 在Linux中经常使用ifconfig,route和netstat查看网络状态,它们就是. net-tools工具,下面我来使用 ...

  4. Linux下怎么使用任务管理器和真人接口源码出售进程管理

    大家都知道在Windows下怎么使用任务管理器来管理进程,真人接口源码出售[企鹅21717-93408]那么在linux下呢? 今天简单介绍一下怎么在linux使用任务管理器管理进程,让我们的linu ...

  5. Linux_进程管理详解《鸟哥的Linux私房菜》学习笔记(极其详细,看完这篇就够了)

    前言 当一个程序被载入到内存中运行,那么在内存中的那个程序就被称为进程(process).进程是操作系统上非常重要的概念, 所有系统上面跑的数据都会以进程的形态存在. 那么系统的进程有哪些状态?不同的 ...

  6. 红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理)丨epoll丨c/c++linux服务器开发丨linux后台开发

    红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理) 视频讲解如下: 红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理)丨epoll丨c/c++linux服务器开 ...

  7. linux每个进程的地址空间大小,别再说你不懂 Linux 内存管理了,10 张图给你安排的明明白白...

    原标题:别再说你不懂 Linux 内存管理了,10 张图给你安排的明明白白 转自:LemonCode 过去的一周有点魔幻,有印象的有三个新闻:天猫总裁绯闻事件,蘑菇街裁员,不可能打工的周某也放出来了. ...

  8. 嵌入式成长轨迹27 【Linux应用编程强化】【中嵌第二阶段】【进程管理】

    补充 成长轨迹19 进程操作 成长轨迹21 多线程编程 中的一些概念 不同之处:进程概念.进程基本状态(这里是最起码的状态).信号量机制 一 进程的基本概念 1  程序的顺序执行和并发执行 1).程序 ...

  9. 【Linux 内核】进程管理 ( Linux 中进程的 CPU 资源调度 | 进程生命周期 | 创建状态 | 就绪状态 | 执行状态 | 阻塞状态 | 终止状态 | 进程生命周期之间的转换 )

    文章目录 一.Linux 中进程的 CPU 资源调度 二.进程生命周期 三.进程生命周期之间的转换 一.Linux 中进程的 CPU 资源调度 Linux 操作系统 是 多任务系统 , 可以 同时运行 ...

最新文章

  1. 输入引脚时钟约束_Happy Design in Vivado 系列:时序分析入门三板斧(一):创建时钟...
  2. 写给NLP研究者的编程指南
  3. 2021年图灵奖,花落高性能计算先驱、田纳西大学教授Jack Dongarra
  4. CAAI白皮书丨中国人工智能创新应用白皮书(附下载)
  5. 如何提高python的运行效率_几个提升Python运行效率的方法之间的对比
  6. JVM 参数及各部分含义(转)
  7. SSM进出帐账单正负显示
  8. Junit 测试之 Spring Test
  9. mysql之触发器trigger
  10. python:数据库连接操作入门
  11. 零基础入门深度学习(4) - 卷积神经网络
  12. The word is not correctly spelled问题
  13. 如何通过 Apple Watch 解锁 Mac
  14. Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte
  15. 一、Java入门基础
  16. android gif 卡顿,Android SketchImageView 加载Gif图片,解决界面不流畅卡顿问题
  17. 遗传算法 matlab 详解,遗传算法的Matlab实现讲解
  18. matlab随机抽样模拟,随机抽样一致性算法(matlab)
  19. 显卡的测试软件是什么,你的显卡是什么水平,用这个软件就知道了
  20. vue在开发环境怎么兼容ie_vue 配置兼容ie浏览器

热门文章

  1. BaseAdapter封装 实现万能适配器
  2. C# winform 多线程中创建等待窗体
  3. 计算机组成原理,P函数,深入浅出计算机组成原理学习笔记:第五讲
  4. 计算机复试专业课笔试,2017年杭州电子科技大学计算机考研复试经验分享,复试专业课笔试题真题回忆!...
  5. 剑指offer(21)栈的压入、探出序列
  6. cmd背景换成老婆(冰冰)
  7. mongdb mysql geospatial 比较_MongoDB的地理位置查询,以及和mysql的使用对比
  8. django 打开的html css_Django分页完整示例
  9. 23种设计模式详解_太厉害了,清华大牛一个坦克项目就把23种设计模式给抽丝剥茧了...
  10. oracle和mysql的安装教程_客户端安装和配置(1) - Oracle 10g 安装图解教程_数据库技术_Linux公社-Linux系统门户网站...