




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章进程与存储管理示例 6 1Linux进程和存储管理简介 6 1Linux进程和存储管理简介LINUX系统的核心部分 静 的文件系统和 动 的进程控制系统 文件系统主要用来存放 管理那些暂时不被处理机执行的程序和数据 它为程序和数据文件分配空间 控制文件存取和为用户检索信息 进程控制系统为将要执行的程序和数据文件分配内存空间 并负责进程调度 控制并发进程的执行速度和分配必要的资源 以及负责进程通信和内存管理等 LINUX的进程控制系统与文件系统之间通过数据结构和函数调用来互相作用 LINUX中的主要进程在一个已安装好LINUX系统的操作系统中 启动电源意味着系统引导程序开始系统自举 引导在外存硬盘中的操作系统核心进入内存 0 进程 idle进程启动LINUX系统 设置和初始化各种数据结构与表格 建立控制LINUX系统内核运行的控制进程 1 进程 init进程建立控制终端进程与Shell进程 用户交互进程 运行 LINUX系统初始化过程LINUX系统在初始过程中的运行如图6 1所示 图中 当系统创建了1 进程之后 1 进程将会调用相应的终端管理进程 为LINUX系统的不同终端创建相应的终端管理进程和Shell进程 从而使每个终端上的用户都可以在Shell的管理下交互使用LINUX系统 图6 1Linux系统中各进程的关系 进程运行所处状态LINUX操作系统的0 进程在核心态下运行 而1 进程以及由1 进程衍生的其他进程都可在用户态和核心态两种执行模式下执行 在不同的执行模式下执行时 同一进程使用不同的堆栈和不同的管理数据结构 在两种不同模式下执行的程序不能互相访问各自的堆栈 它们之间的参数传递往往需要借助通用寄存器等硬件 两态之间的主要区别是 用户态下的进程能存取它们自己的指令与数据 但不能存取核心指令和数据 然而 核心态下的进程能存取核心和用户地址 另外 某些机器的指令是特权指令 在用户态下执行会引起错误 只能在核心态下执行 0 进程的功能0 进程是LINUX系统中唯一只在核心态下执行的进程 它有三种功能 除了在初始化时创建1 进程之外 还负责调度分配处理器以及负责进程交换 LINUX进程的核心态和用户态之间的转换靠中断以及硬件设置等方法完成 当用户进程由用户态转向核心态执行时 需要依靠中断int0 x80指令来实现 在核心态执行的进程通过iret指令回到用户态 它们之间的关系如图6 2所示 图6 2Linux进程的核心态与用户态之间的转换 进程控制逻辑模块系统在逻辑上由四个模块组成 即与文件系统的接口部分 进程本身的控制部分 包括进程的创建 进程调度和进程的撤消等 第三部分是进程间控制部分 包括进程间的互斥 同步和通信等 第四部分是存储管理部分 进程调度的时机 1 每秒钟一次的时间片结束发生时钟中断时 对那些优先级大于某个常数的进程进行重新计算 2 当前执行进程请求系统调用后 从中断和陷阱总控程序返回当前执行的用户态时 重新计算当前执行进程的优先级 引起进程调度的4种情况 1 当前执行进程申请内存等系统资源未得到满足 从而自己调用sleep过程 放弃处理机进入睡眠状态 2 为了与其他并发进程保持同步 调用了wait或stop过程等 从而主动放弃了处理机而进入睡眠状态 3 当系统发现系统中某进程的优先级已高于当前执行进程的优先级时 系统设置一个名叫runrun的调度标志 但是 系统并不在runrun标志刚被设置时就开始调度 它要等待到系统在核心态下的程序执行完毕 由核心态转入用户态时 也就是在中断陷入总控处理程序结束之前的瞬间 检查runrun标志并进行调度 4 当前进程调用exit 自我终止时 6 2Linux进程结构 6 2 1进程的概念 1 一个进程是对一个程序的执行 2 一个进程的存在意味着存在一个task struct结构 它包含着相应的进程控制信息 3 一个进程可以生成或消灭进程 4 一个进程是获得和释放各种系统资源的基本单位 6 2 2进程的虚拟地址结构 在80 x86平台中 每个进程拥有一个4GB的虚拟空间 其中0 3GB的空间供用户使用 用户进程可以对其直接访问 3 4GB的地址空间称为核心地址空间 Linux将用户进程的所有地址空间信息保存在一个名为mm struct的数据结构中 该信息保存在进程描述符中 Linux的进程由逻辑段组成 一个进程的虚拟地址空间被分成若干个虚拟区域来存放逻辑段 区是进程虚拟空间上的一段连续区域 它是被共享 保护以及进行内存分配和地址变换的独立实体 正文 数据和栈分别存放于各自的区中 虚拟区域命名vmarea 简写为VMA 6 2 3进程上下文 Linux的进程上下文是由正文段 也就是CPU执行指令的集合 核心数据结构 和有关寄存器的内容与数据段组成 1 进程上下文的基本结构进程上下文的各个部分按照一定的规则分布在进程虚拟空间的不同位置上 对于不同的机器和硬件结构 进程上下文的分布规则不同 例如 在80 x86上 其虚拟地址空间划分为进程空间和系统空间两大部分 其寻址范围为232个单元 即4G字节 其中 虚拟空间的低位地址的半部分 0 231 1 是进程虚拟空间 其余为所有进程共享的系统空间 操作系统核心程序占据这个区 图6 3进程空间结构 用户栈 核心栈在函数调用时的变化用户栈含有在用户态下执行时函数调用的参数 局部变量及其他数据 图6 4给出了执行copy程序时用户栈和核心栈的变化例 图6 4的左侧描述了当由main argc argv 过程调用copy old new 过程copy old new 更进一步调用库函数write 来调用write的内部结构 系统调用使用专门的陷阱指令trap 执行trap指令将产生一个中断 使得进程的执行模式由用户态转换为核心态 然后 用户态执行转变为核心程序执行 并使用核心栈 图6 4执行copy程序时用户栈和核心栈的变化 2 进程上下文的组成部分进程上下文由task struct结构 用户栈和核心栈的内容 用户地址空间的正文段 数据段 硬件寄存器的内容和页表等组成 6 2 4进程的状态和状态转换 一个进程的生命期是由一组状态来刻画的 这些状态是进程task struct结构的一部分 图6 5进程状态转换图 6 3进程控制 6 3 1Linux启动及进程树的形成LINUX系统的自举过程是读一个磁盘的引导块 文件系统的第0块 并将其装入内存 在核心装入内存后 系统开始执行启动过程start kernel 启动过程start kernel 首先初始化系统内部数据结构 例如 构造空闲缓冲区 初始化区结构 页表项等 随后 进程0的作用就转变为idle进程 只有在系统中没有任何进程可以被执行的时候才会得到调度 在创建和设置好进程0的环境之后 系统就作为进程0执行并调用fork过程创建新进程1 即init进程 它是一个既可在核心态 又可在用户态运行的进程 它的正文代码由调用系统调用exec执行程序 etc init 的代码组成 进程1负责初始化所有新的用户进程 进程1调用exec执行 etc init 程序后 为每个终端生成一个子进程 然后等待用户在终端上注册 图6 6进程树的形成 6 3 2进程控制 1 进程的创建 图6 7fork流程图 2 执行一个文件的调用当父进程使用fork创建了子进程之后 子进程继承了父进程的正文段和数据段 从而限制了子进程可以执行的程序规模 系统调用exec引出另一个程序 它用一个可执行文件的副本覆盖调用进程的正文段和数据段 并以调用进程提供的参数转去执行这个新的正文段程序 系统调用exec 包含六种不同的调用格式 但它们都完成同一工作 即把文件系统中的可执行文件调入并覆盖调用进程的正文段和数据段之后执行 有关exec的各种系统调用的区别主要在参数处理方法上 这些系统调用使用不同的输入参数 环境变量和路径变量 这里 系统调用execvp 和execlp 在程序中经常用到 其调用格式是 execvp argp 或execlp arg0 arg1 char 0 其中 是要执行的文件名指针 argp是输入参数序列的指针 而0则是参数序列的结束标志 例 用execlp调用实现一个shell的基本处理过程 利用fork exec可实现一个shell的基本功能 用户输入命令后 按以下步骤执行用户命令 图6 11 1 利用fork 创建子进程 2 利用exec 启动命令程序 3 利用wait 父进程和子进程同步 图6 8shell执行过程 用C语言实现的程序例如下 include stdio h main charcommand 32 char prompt while printf s prompt gets command NULL if fork 0 execlp command command char 0 elsewait 0 3 进程的终止系统调用exit rv 自我终止当前进程 使其进入SZOMB僵死状态 等待父进程进行善后处理 exit调用将导致释清除task struct结构之外的所有资源 并清除进程上下文 父进程在收到子进程的信息rv和有关子进程的时间信息之后 将释放子进程的task struct结构并将有关时间信息加到自己的task struct结构的有关项中去 6 4Linux进程调度 LINUX系统的调度与交换都是进程0的两个部分 它们由schedule 过程实现 事实上 因此 有时也把进程0称为调度进程 6 4 1进程调度 1 调度原理LINUX系统的进程调度采用多级反馈轮转调度法 RoundRobinwithMultipleFeedback LINUX的进程调度按时间片计算优先级 并按优先级的高低来调度进程 抢占处理机 因此 LINUX系统的进程调度是基于时间片加优先级的 2 调度的时机第一种情况 处理机在执行完核心程序之后向用户态转换之前的瞬间 检查各就绪进程的优先级进行调度的方法 Need resched 1则执行调度 第二种情况 当进程状态发生变化时 直接调用调度进程进行调度 3 调度标识的设置UNIX中有三个关于调度和交换用的调度标识 它们是runrun runin和runout runrun标识是要求处理机调度程序进行调度的标识 由唤醒原语wakeup setrun及优先级设置过程setpri在发现某进程的优先级高于当前进程的优先级时 设置runrun标识 另外 每隔一秒一次的时钟中断处理中也将检查各就绪态进程的优先级而设置runrun标识 只要设置了该标识 在中断陷阱程序结束之前 系统就会调用swtch过程调度具有最高优先级的进程执行 runin和runout标识是用于就绪进程换入换出内存的 runin表示内存无足够空间换入一个外存就绪态进程 设置runin标识也意味着内存中无适当的进程可以换出 runout标识与runin相反 它表示外存交换区中无适当的进程可以调入内存 Linux只使用一个调度标志need resched 该标志保存在进程的进程描述符中 下面两种情况置1 当处于运行态的进程的时间片耗尽时当进程被唤醒 而它的优先级别比正在运行的当前进程的优先级高 4 调度策略与优先数的计算动态优先数调度策略 适用普通进程 在LINUX系统中 优先数越大优先级越低 调度策略从内存就绪队列中选取优先数最大的进程投入执行 采用下式计算各进程的优先数 weight counter priority nice先来先服务调度策略和轮转法调度策略适用于实时进程 5 调度的实现进程调度是由schedule 过程实现的 这里主要讲述schedule 的执行过程 schedule 过程实质上是完成一个进程之间的上下文切换过程 它的执行分为两个阶段 第一阶段进程选择 第二阶段进程切换 6 5进程通信 Linux中的进程通信分为三个部分 低级通信 管道通信和进程间通信IPC interprocesscommunication 近年来 Linux的改进版中又加入了计算机间通信 网络通信 用的TCP IP协议并提供了相应的系统调用接口 6 5 1Linux的低级通信LINUX的低级通信主要用来传递进程间的控制信号 实现传递控制信号的方法有两种 一种是利用文件锁 另一种是利用软中断信号实现同一用户的诸进程之间的通信 目的是通知对方发生了异步事件 Linux中有30个软中断信号和31个实时软中断信号32 63 软中断信号作用见图6 10 图6 10Linux软中断信号 6 5 2进程间通信IPC IPC是Linux的一个核心程序包 它负责完成System 进程之间的大量数据传送工作 在IPC包被开发出来之前 通信只能利用pipe来传递大量数据 而pipe只有调用pipe的进程的子孙后代才能使用它进行通信的缺点 虽然有名管道能使非同族进程之间相互通信 但它们不能复用一个有名管道以便为多对通信进程提供私用通道 也就是说 有名管道不能识别其通信伙伴 也不能有选择地接收信息 IPC核心程序包解决了这些弱点 UNIXIPC软件包分三
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化展览活动组织服务协议
- 2025员工劳动合同补充协议
- 2024年锤纹助剂项目资金筹措计划书代可行性研究报告
- 2024年LNG气化设备资金申请报告代可行性研究报告
- 智能物流时代2025年多式联运信息平台优化与产业链协同创新报告
- 2025年文化遗产数字化保护与文化遗产数字化保护技术应用创新报告
- 金融行业人工智能伦理争议与监管应对策略分析报告
- 2025年年托育行业市场突围建议及需求分析报告
- 金融行业审计报告:2025年人工智能算法在审计数据挖掘中的应用
- 2025年中国数码录音笔业市场调查研究及投资前景预测报告
- 2025江西德安万年青环保有限公司市场部区域经理招聘4人笔试历年参考题库附带答案详解
- 怀特海《教育的目的》读书分享
- 普通货物道路运输安全生产管理制度
- 2025年校长职级考试题及答案
- 统借统还资金管理办法
- 国家能源集团采购管理规定及实施办法知识试卷
- 2025年广西继续教育公需科目考试试题和答案
- 风电安全生产事故的心得体会
- 2024年广州市南沙区社区专职招聘考试真题
- 健康体检服务投标方案投标文件(技术方案)
- 山东医药技师学院招聘笔试真题2024
评论
0/150
提交评论