




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章进程与线程 本章目录 2 1进程的概念 2 1 1多道程序设计环境下的程序特点 2 1 2进程的定义 2 2进程的管理 2 2 1进程控制块 2 2 2进程控制块队列 2 4 3Linux进程的生存过程 2 2 3进程控制的系统调用命令 2 1 3进程的状态及状态变迁 2 3线程 2 3 1线程的概念 2 3 2线程的实现 2 3 3线程与进程的关系 2 4Linux的进程 2 4 1Linux进程 2 4 2Linux的几种链接信息 2 1进程的概念 2 1 1 多道程序设计环境下的程序特点 单道程序设计环境下的程序特点 1 资源的独占性 程序A 程序B 程序C 时间 4 2 3 4 2 4 5 3 3 0 4 6 9 14 18 20 23 26 30 图例 打印机输出CPU执行 执行的顺序性 结果的再现性 多道程序设计环境下的程序特点 2 程序A 时间 0 4 6 9 12 15 17 13 18 22 程序B 程序C 执行的并发性 宏观上 在内存的多个程序都按自己程序规定的操作步骤向前推进 微观上 CPU在任何时刻只执行一个程序 它们轮流占用CPU 交替地执行着 相互的制约性 内存里的多个程序共享系统中的资源 相互间必然有各种制约 一种是 间接制约关系 另一种是 直接制约关系 程序P1调用echo 函数 getchar 接收到从键盘输入的字符x 在将其存于变量chin后被中断 程序P1从断点恢复执行 此时由于P2调用了echo chin里原先的x被y所覆盖 于是 在屏幕上显示的是y 而不是x 程序P1调用echo 函数 getchar 接收到从键盘输入的字符x 然后在屏幕上显示出字符x 状态的多变性 诸多程序在运行过程中有着各种制约关系 致使内存中每一个程序的状态总在不断的变化之中 时而获得CPU处于运行状态 时而由于输入 输出或申请某种资源未得到满足而只好挂起来等待 它们走走停停 停停走走 交替式地向前推进 直至终点 例2 1 在多道程序设计环境下 结果再现性 被打破的简单例子 voidecho chin getchar chout chin putchar chout 执行顺序1 程序P2调用echo 函数 getchar 接收到从键盘输入的字符y 然后在屏幕上显示出字符y 1 2 执行顺序2 1 2 3 程序P2获得CPU使用权 调用echo 函数 从头做到尾 屏幕上显示字符y 返回目录 2 1 2进程的定义 1 进程的定义 进程是程序的一次运行活动 进程的运行活动是建立在某个数据集合之上的 进程要在获得资源的基础上从事自己的运行活动 所谓 进程 是指一个程序在给定数据集合上的一次执行过程 是系统进行资源分配和运行调度的独立单位 可从三个方面来描述进程 1 2 3 例2 2 驼峰溜放控制过程中的进程 驼峰 到达场 编组场 溜放中的一勾车 雷达测速 测长 道岔 轨道电路 一列新货车 一列解体货车 缓行器 1 2 3 4 5 6 7 8 股道号 溜放中的一勾车 扳道岔程序 缓行器控制程序 雷达测速程序 雷达测长程序 巡回检测程序 2 进程与程序的关系 进程是一个动态的概念 强调的是程序的一次 执行 过程 程序则是一组有序指令的集合 在多道程序设计环境下 它不涉及 执行 是一个静态的概念 不同进程可执行同一个程序 由进程的定义可知 区分进程的条件一是所执行的程序 二是数据集合 即使多个进程执行相同的一个程序 只要它们运行在不同的数据集合上 它们就是不同的进程 每个进程都有自己的生命期 进程的本质是程序的一次执行过程 当系统要完成某项工作时 它就 创建 一个进程 以便执行事先编写好的 完成该工作的那段程序 程序执行完毕 完成预定的任务后 系统就 撤消 这个进程 收回它所占用的资源 一个进程创建后 系统就感知到它的存在 一个进程撤消后 系统就无法再感知到它 于是从创建到撤消 这个时间段就是一个进程的 生命期 进程之间具有并发性 在一个系统中 同时会存在多个进程 与它们对应的多个程序同时在系统中运行 轮流占用CPU和各种资源 这正是多道程序设计的初衷 说明这些进程在系统中并发执行着 进程间会相互制约 由于进程是系统中资源分配和运行调度的单位 因此在对资源共享和竞争中 必然会相互制约 影响了各自向前推进的速度 通常 系统进程运行在核心态 用户进程运行在用户态 不过 在微内核模式下 只有那些执行基本功能程序的进程 运行在核心态 那些执行非基本程序的进程 则以各种服务的形式运行在用户态 系统进程与用户进程都要使用系统中的各种资源 它们都是资源分配与运行调度的独立单位 但系统进程的使用级别 应该高于用户进程 也就是说 在双方出现对资源的竞争时 系统进程有优先获得资源 优先得到运行的权利 只有这样 才能保证计算机系统高效 有序的工作 系统进程直接管理软 硬件资源的有关活动 而用户进程则不得插手资源管理 在需要使用资源时 必须向系统提出申请 由系统统一调度与分配 系统进程间的相互关系由操作系统负责协调 以利于增加系统的并行性 提高资源的整体利用率 用户进程间的相互关系由用户自己 在程序中 安排 不过 操作系统会向用户提供一定的协调手段 以系统调用命令的形式 3 系统进程与用户进程 在多道程序设计系统中 既有操作系统程序 又有用户程序 因此整个系统中存在着两类进程 一类是系统进程 一类是用户进程 操作系统中用于管理系统资源的那些可以并发执行的程序 构成了一个个系统进程 它们提供系统的服务 分配系统的资源 而可以并发执行的用户程序段 形成一个个用户进程 它们是操作系统的服务对象 是系统资源的实际享用者 系统进程与用户进程的主要区别 1 2 3 4 返回目录 终止 进程或正常结束 或因某种原因被强制结束 这时 系统正在为其进行善后处理 阻塞 进程正在等待某事件 如I O完成 的发生 在事件到来之前 即使把CPU分配给这个进程 它也无法运行 阻塞状态有时也被称为等待状态 运行 进程获得CPU正在被执行中 若系统只有一个CPU 那么任何时候系统中最多只有一个进程处于运行状态 就绪 进程已具备运行的条件 只要有机会获得CPU 它就可以投入运行 创建 进程正在初创时期 操作系统还没把它列入可执行的进程行列 2 1 3 进程的状态及状态变迁 1 进程的基本状态和状态变迁 就绪 提交 运行 阻塞 终止 调度 撤销 超时 事件发生 等待事件 三种最基本的状态 创建 进程的五种状态 1 2 3 4 5 进程状态的变迁 进程从一个状态改变成另一个状态 称为进程状态的 变迁 箭头上的文字 是引起状态变迁的原因 并不是所有的进程状态之间都可发生变迁 可能的变迁为 创建 就绪 就绪 运行 运行 就绪 运行 阻塞 阻塞 就绪 运行 终止 就绪 挂起 进程在辅存 只要被激活 进程就可以调入内存 如果获得CPU就可以投入运行 2 对进程状态更细致的划分 就绪 挂起 就绪 激活 运行 阻塞 终止 调度 撤销 超时 事件发生 等待事件 挂起 阻塞 挂起 激活 挂起 事件发生 创建 提交 提交 挂起 若内存中现有的进程都在等待I O的完成 CPU只能空闲运转 这无疑是对系统资源的一种浪费 使用磁盘与内存间的交换技术 可达到提高CPU利用率的目的 新增两个状态 1 2 阻塞 挂起 进程在辅存等待事件的发生 只要被激活 进程就可以调入到内存里去等待事件的发生 处于这两种状态的进程 表示它们是在辅存而不是内存 只有通过 激活 才可以使这些进程的状态变迁为 就绪 或 阻塞 从而进入内存 这时 比较重要的变迁是 阻塞 阻塞 挂起 阻塞 挂起 就绪 挂起 就绪 挂起 就绪 就绪 就绪 挂起 创建 就绪 创建 就绪 挂起 阻塞 挂起 阻塞 运行 就绪 挂起 返回目录 进程控制块里包括四种基本信息 标识信息 现场保护区信息 调度信息以及管理信息 程序代码及与代码相关联的数据集合 是组成一个进程的实体 但它们都是静态文本 无法反映进程的各种动态特征 2 2进程的管理 2 2 1进程控制块 1 进程控制块 为便于管理和控制进程的执行 为随时刻画进程的动态特性 为反映进程间的相互关系 操作系统用一个与进程有关的数据结构来完成这样的任务 这个数据结构被称为 进程控制块 PCB 它由操作系统创建和管理 标识信息 现场保护区信息 调度信息 管理信息 进程标识符 进程名 进程标识数 PID 家族关系 父进程 家族关系 子孙进程 通用寄存器 指令计算器 程序状态字 PSW 用户栈指针 进程状态 进程优先数 级 权 等待原因 队列指针 程序存放位置 资源使用历史 打开的文件 数据存放位置 由于进程控制块PCB里包含着一个进程所需要的所有信息 因此它是操作系统中最重要的一种数据结构 进程的PCB是系统感知一个进程实际存在的唯一实体 2 进程的三个组成部分 操作系统中进程由三个部分组成 称为 进程映像 1 2 3 程序 进程将要执行的程序 数据 用户空间中的可修改部分 如数据 堆栈 可修改程序 进程控制块PCB 记录操作系统管理 控制进程所需要的数据信息 进程映像的表示 PCB PCB PCB1 PCB2 程序 程序 程序 数据集合 数据集合 数据集合1 数据集合2 a b c 3 进程间的切换 进程P0 进程P1 操作系统 中断或系统调用 保护现场到PCB0 从PCB1现场保护区获取现场信息 中断或系统调用 保护现场到PCB1 从PCB0现场保护区获取现场信息 执行 执行 执行 被打断的断点x 从断点x恢复执行 被打断的断点y 返回目录 PCB中可以有多个队列指针 以反映进程间的不同关系 比如用另一个指针反映出进程间的家族关系 还可以有就绪 挂起队列 阻塞 挂起队列等 队列最后一个PCB的 队列指针 里 放队列结束标志 如 1 操作系统要为每个队列设置一个头指针 通过它及队列中各PCB里的队列指针 可以得到该队列里的所有进程的PCB 2 2 2进程控制块队列 操作系统是通过PCB来管理系统中的进程的 最常用的办法是根据进程所处状态的不同 通过PCB中的链接指针 形成各种管理队列 运行队列头指针 就绪队列头指针 PCB PCB PCB PCB PCB 1 阻塞队列1头指针 PCB PCB 1 阻塞队列2头指针 PCB PCB PCB PCB 1 PCB 队列指针 a 带有队列指针的PCB b 由PCB组成的各种队列 几点说明 1 2 3 4 返回目录 按系统所采用的调度算法 将其PCB排入就绪队列或就绪 挂起队列 调用创建进程原语后 系统中出现一个新的进程 就会感知到这个进程的存在 一个进程创建 或 派生 另一个进程 前者称为父进程 后者称为子进程 2 2 3进程控制的系统调用命令 在执行期间不能被打断 不能被分割的程序段 在操作系统里称作 原语 原子操作 或 不可分割的操作 有关进程控制的系统调用命令都是以原语的形式出现的 1 创建进程原语 屏蔽中断 申请一个PCB 分配一个标识 填写PCB 将进程置为就绪或就绪 挂起状态 到相应队列排队 开中断 不能被分割的整体 创建进程原语程序主要应该完成的工作 1 为新进程申请一个PCB 2 为新进程分配一个唯一的标识 3 根据创建者提供的信息 填写进程控制块PCB里的各项内容 4 创建进程原语的图中 屏蔽中断 及 开中断 两个操作 是为了保证整个执行流程不被分割而设置的 也就是说 这四项工作必须作为一个整体一次执行完毕 中间不能被别的操作打断 这是原语的要求 2 撤消进程原语 调用撤消进程原语后 一个原来在系统里存在的进程就消失了 系统再也不会感知到它的存在 撤消进程原语应该完成的工作 1 2 根据进程标识 找到相应的PCB 若该进程正在运行 则立即终止运行 3 释放该进程使用的所有资源 如程序 数据所占用的存储空间等 4 若有子孙进程 终止它们 释放资源 归还所占用的PCB空间 3 阻塞进程原语 在生命期里 进程走走停停 停 的原因 就是为等待某个事件的发生而被阻塞 调用阻塞原语后 一个原来处于运行的进程变为阻塞状态 操作系统将会重新对CPU进行分配 阻塞进程原语应该完成的工作 1 2 停止进程的运行 将CPU的运行现场保护到该进程PCB的现场保护区 3 把进程的状态由运行修改为阻塞 并到相关的阻塞队列里排队 转向操作系统的进程调度程序 将CPU分配给另外一个进程使用 4 唤醒进程原语 当所等待的事件发生以后 进程就应该被唤醒 让其去参与对CPU的竞争 调用唤醒进程原语后 一个进程又可以 走 了 唤醒进程原语应该完成的工作 1 2 将进程从相应的阻塞队列上摘下来 3 把进程的状态由阻塞修改为就绪 并到就绪队列里排队 转向操作系统的进程调度程序 将CPU分配给另外一个进程使用 5 挂起进程原语 当系统为了获得所需的内存空间 在主 辅存之间交换进程时 进程才会有挂起状态 挂起进程原语应该完成的工作 1 2 得到需要挂起的进程的PCB 将其从相应队列里摘下 3 申请位于辅存上的交换区空间 将进程映像的部分或全部写入交换区 并将交换区地址记入该进程PCB 根据进程原先的状态 把其状态修改为阻塞 挂起 或就绪 挂起 4 系统收回进程所占用的内存空间 通过对驼峰溜放控制过程的简略描述 理解进程控制原语的应用 激活是针对处于 阻塞 挂起 或 就绪 挂起 状态的进程实行的操作 由于它是挂起的 逆 操作 因此激活进程的原因就与挂起的原因相关 每股道是一个 进路 对任何一个道岔 知道所来勾车的进路编码 就能知道当前道岔应该是往左扳动还是往右扳动 6 激活进程原语 激活进程原语应该完成的工作 1 2 得到需要激活的进程的PCB 将其从相应队列里摘下 3 申请所需要的内存空间 将存放在辅存交换区里的进程映像读入该内存区域 根据进程状态修改为阻塞或就绪 把PCB排入相应的管理队列 4 释放所占用的辅存交换区 勾车进入方向 勾车出清方向 勾车出清方向 道岔 轨道电路 轨道电路 轨道电路 勾车进路表 例2 4 1 对每个道岔 都装有 轨道电路 硬设施 当一勾车的第一对车轮从进入方向压到轨道电路时 它会发一个消息给计算机 当这一勾车的最后一对车轮从出清方向压到轨道电路时 它也会发一个消息给计算机 2 3 系统为每一个道岔开设一张勾车进路表 保存所来勾车的进路编码 返回目录 2 3 1线程的概念 2 3线程 1 引入线程的原因 进程的两个属性 做法是将进程的两个属性拆开来 进程只作为 资源拥有者 调度和运行 则赋予线程 这样 CPU的利用率能得到更多的提高 使系统的效率得到更充分地发挥 1 2 进程是系统资源分配的单位 进程是系统调度运行的单位 资源分配和调度运行彼此间是独立的 为提高进程的并发执行程度 减少系统在进程切换时所花费的开销 就出现了与进程管理相关联的更高级的概念 线程 a 单进程 单线程 b 单进程 多线程 c 多进程 每个进程一个线程 d 多进程 每个进程多个线程 在引入线程的操作系统中 线程是进程中的实体 实施CPU分配时 是把CPU分配给进程中可以并发执行的线程 因此 如果把进程理解为是操作系统在逻辑上需要完成的一个任务 那么线程则是完成该任务时可以并发执行的多个子任务 进程和线程之间的各种关系 2 线程的定义 所谓 线程 是指进程中实施处理机调度和分配的基本单位 有了线程后 人们有时就把原先的进程称为 重载进程 把线程称为 轻载进程 3 线程的状态 由于在进程内的线程共享程序和资源 因此创建线程无需进行资源分配 比创建一个进程要顺利和快捷得多 这也使得撤消线程比撤消一个进程所花费的时间短 引入线程的好处 1 同一进程里线程间的切换是在进程的地址空间里进行 因此比进程间不同地址空间中的切换开销要少得多 2 进程里的线程可以随时访问该进程拥有的所有资源 无需做任何切换工作 3 同一进程中的诸多线程共享内存区域和文件 因此它们之间可以直接进行通信 不必通过系统内核 4 创建 创建一个新进程时 同时就为该进程建立一个主线程 它可以再创建其他线程 新线程被排在就绪队列中 阻塞 当线程等待一个事件时 它将被阻塞 CPU转而去执行另一个就绪线程 线程阻塞引起的是同进程中线程间的调度和CPU分配 进程的阻塞引起的是不同进程间的重新调度和CPU分配 唤醒 当线程等待的事件发生时 该线程由阻塞转为就绪 插入到就绪队列中 返回目录 2 3 2线程的实现 1 用户级线程方法 若有关线程的管理工作都是由运行在用户空间的应用程序完成 那么这样的线程称为 用户级线程 完成线程管理的应用程序 称为 线程库 它将被系统中的所有用户程序共享使用 2 这时 用户程序被创建成为一个由内核管理的进程 与这个进程相对应的线程则在用户空间里运行 内核级线程方法 线程库 用户空间 内核空间 P 进程 线程 由于一切活动都是针对一个进程发生的 并且都发生在用户空间里 系统感知不到这些活动的存在 系统内核仍然是以进程为单位管理和调度进程 指定其所处的状态 用户空间 内核空间 P 进程 运行在用户态的线程 管理在核心态的线程 若有关线程管理的所有工作都是由内核完成的 用户空间里没有任何进行线程管理的程序 只是向应用程序提供相应的系统调用和应用程序编程接口 以便用户程序可以创建 执行 撤消线程 那么这样的线程称为 内核级线程 3 组合方法 采用这种方法 用户程序的所有线程都在一个进程内 内核为该进程以及内部的每一个线程 深色圆圈 维护上下文信息 调度在内核基于线程架构的基础上完成 线程运行则在用户空间进行 组合方法中 同一进程中的多个线程可以分配到不同处理器上并行地运行 这意味着一个会引起阻塞的系统调用不必阻塞整个进程 这样组合式的管理方法 会综合用户级线程与内核级线程管理方法的优点 减少它们的缺点 在组合式方法中 线程的创建在用户空间里完成 线程的调度等工作 是通过线程库来进行 一个用户程序中的多个用户级线程 被映射到一些内核级线程上 内核级线程可把同一进程中的多个线程调度分配到不同处理器中 若进程中的一个线程被阻塞 内核可调度同一进程中的另一个线程投入运行 而不是整个进程都被阻塞 内核级线程的另一个优点是内核程序本身也可使用多线程技术 用户空间 内核空间 P2 进程 用户级线程 内核级线程 P1 线程库 内核级线程在同一个进程里进行线程切换时 是在内核模式下进行的 这相比用户级线程 就会显得复杂一些 所花费的时间要多一些 返回目录 调度切换 不同进程间的调度切换 系统要花费很大的开销 比如 要从这个地址空间转到那个地址空间 要保护现场等 同一进程的线程间的切换 无须转换地址空间 从而减少了系统的开销 通信关系 不同进程间的通信 必须使用操作系统提供的进程通信机制 同一进程各个线程间的通信 可以直接通过访问共享的进程地址空间来实现 地址空间 不同进程的地址空间是相互独立的 而同一个进程中的各个线程共享着同一个用户地址空间 两个堆栈指针 一个指向用户栈 线程在用户态下时 使用自己的用户栈 一个指向系统栈 线程在核心态下运行时 使用系统栈 2 3 3线程与进程的关系 1 线程与进程的关系 线程控制块 TCB 的三部分内容 1 一个唯一的线程标识 2 3 一个私用的现场保护区 存放现场保护信息 如处理机的各种寄存器内容 和其他与线程有关的信息 PCB 数据 程序 用户栈 系统栈 寄存器 单线程进程模型 进程 PCB 数据 程序 用户栈 系统栈 寄存器 TCB1 用户栈 系统栈 寄存器 TCB2 用户栈 系统栈 寄存器 TCB3 线程1 线程2 线程3 进程 多线程进程模型 进程和线程的几点不同 1 2 3 一个管理窗口系统的进程 提供显示器上有关窗口的各种操作 窗口写 移动窗口 改变窗口尺寸等的程序 进程拥有的资源是物理显示器 如图所示 三个窗口线程都将共享着进程的资源 使用同一个程序来把信息写到显示器的某一部分上 每一个线程的执行独立于其他线程 例2 7 窗口线程 窗口进程 三个窗口 显示器 处理机管理的新含义 2 调度 引入线程后 进程是资源的拥有者 线程是处理机调度和分配的单位 在同一进程内 线程的切换不引起进程的切换 由一个进程中的线程切换到另一个进程中的线程时 就要引起进程间的切换 并发 引入线程后 不仅进程之间可以并发执行 而且一个进程内的多个线程之间也可以并发执行 因此系统具有了更好的并发性 进而使系统的资源利用率和吞吐率大大提高 资源 引入线程后 进程内的所有线程共享该进程拥有的全部资源 线程只有很少一些运行时必需的资源 如程序计数器 一组寄存器和堆栈等 开销 创建和撤消进程时 系统要做资源的分配和回收工作 进程间进行切换时 系统要为其保存现场信息 将原进程内容调出至辅存 将新进程内容调入内存等 同一进程内的线程有相同地址空间 它们间的切换不涉及存储器管理方面的操作 返回目录 系统调用接口 进程通过它进入Linux内核 并得到所提供的各种特定服务 用户进程 用户应用程序是运行在Linux内核上的一个庞大的软件集合 当一个用户程序在操作系统上运行时 它就成为一个进程 在Linux里常把进程称为 任务 2 4Linux的进程 2 4 1Linux进程 Linux内核 1 Linux内核 指的是所有Linux发布版本的核心程序 整个系统由四个部分组成 1 系统调用接口 内核子系统 硬件 进程1 进程2 进程n 用户进程 Linux内核 进程调度 存储管理 虚拟文件系统 网络 进程间通信 2 3 Linux内核 它负责管理和使用系统中的各种资源 如内存空间 磁盘空间 磁盘上的文件 以及启动并运行程序等 Linux内核并发地运行多个进程 并使各种进程公平 合理地使用各种资源 保证进程之间互不干扰地安全运行 4 硬件 这是安装Linux时需要的所有可能的物理设备 是支撑Linux运行的硬件环境 比如CPU 内存储器 磁盘 网络硬件等 Linux的进程控制块 2 Linux中 把传统的进程控制块PCB称为进程描述符 用于记录每个进程所做的事情 每个PCB都是一个task struct的结构式数据类型 Linux系统中的进程 由四个部分组成 内核栈 PCB task struct结构 8KB 52个字节 高地址 低地址 内核栈的增长方向 8140个字节 1 一段可执行的程序 2 一个专用的系统栈空间 用来保存中断现场信息和进程进入内核模式后执行子程序 函数 嵌套调用的返回现场信息 3 进程控制块PCB task struct结构 4 独立的存储空间 每个进程的系统栈和PCB间存在着紧密关系 为了节省存储空间 Linux把每个进程的PCB和内核栈存放在一起 共占有8KB的内存区 Linux的进程状态及其变迁 3 可运行状态 当一个进程正在被CPU执行 或已经准备就绪随时可由调度程序调度执行 则称该进程处于 可运行 状态 1 2 可中断等待状态 当一个运行进程需等待某事件的发生 等待时允许由其他进程通过发信号而唤醒 那么就把它的状态由 可运行 变迁为 可中断的等待 在所等待的事件或信号到来时 进程的等待结束 状态变迁为 可运行 不可中断等待状态 这是一种与 可中断的等待 类似的状态 只是在等待期间不能被信号打断 3 4 暂停状态 当运行进程接到暂停执行的信号 比如程序正在接受调试 时 其状态就由 运行 变迁成为 暂停 创建一个进程 TASK RUNNING 可运行状态 时间片到 调度 TASK UNINTERRUPTIBLE 不可中断等待状态 TASK INTERRUPTIBLE 可中断等待状态 TASK STOPPED 暂停状态 TASK ZOMBIE 僵死状态 占有CPU运行 等待事件发生 等待事件或信号发生 等待的事件已发生 等待的事件或信号已发生 收到暂停信号 进程被终止 收到结束暂停信号 5 僵死状态 由于某种原因进程已被终止执行 正在归还资源 但其PCB还没有释放 这时的进程就处于僵死状态 Linux的进程标识符 4 进程标识符 在Linux进程的PCB里 字段pid存放进程标识符 用来唯一地标识进程 用户标识符 在Linux里 每个用户都有一个唯一的数字与之对应 称为用户标识符 它存放在进程PCB的字段uid里 Linux将用户划分成组 每个用户可分属一个或多个用户组 组由一个唯一的数字来标识 称为组标识符 组标识符存放在进程PCB的字段gid里 返回目录 2 4 2Linux的几种链接信息 进程链表 1 Linux启动时 创建了一个非常特殊的进程 它的名字是init 进程标识符PID为1 每个进程的PCB里有两个task struct型指针字段 作用是 prev task 向前指针 指向链表中本进程前面的那个进程的PCB next task 向后指针 指向链表中本进程后面的那个进程的PCB init进程的PCB next task prev task 进程1的PCB next task prev task 进程2的PCB next task prev task 进程3的PCB next task prev task 进程n的PCB next task prev task 系统中的所有进程 可运行 队列 2 PCB里有名为prev run和next run的两个task struct型指针字段 作用是 prev run 向前指针 指向链表中本进程前的那个 可运行 状态进程的PCB next run 向后指针 指向链表中本进程后的那个 可运行 状态进程的PCB 为提高调度时的查找速度 Linux是以优先级为依据建立 可运行 队列的 Linux进程优先级的允许范围从0到139 因此系统总共维护着140个 可运行 的队列 利用散列表pidhash里的pidhash next和pidhash pprev 以及进程PCB里的字段pidhash next和pidhash pprev 就能基于散列表的索引值形成一个个进程PCB的双向链表 PID散列链表 2 为了加快查找过程 理想的做法是通过某个函数 利用进程的PID值算出进程PCB所在的位置 这实际上就是所谓的散列技术 Linux引入了散列技术 并利用链地址法来处理PID冲突 即如果两个不同的PID计算出的PCB在散列表的索引值相同 冲突 那么就把这两个PCB组成链表链接在一起 pidhash next pidhash pprev pidhash pprev pidhash next pidhash next pidhash pprev pidhash next pidhash pprev pidhash next pidhash pprev pidhash next pidhash pprev pidhash散列表 0 199 散列表的一个元素 进程的PCB 进程的PCB 进程的PCB 进程的PCB 为实现PID散列链表 Linux开辟了名为pidhash的数组作为散列表 该表的每个元素由两个task struct型指针组成 pidhash next指向pidhash散列表里该索引值链表中的下一个PCB pidhash pprev指向pidhash散列表里该索引值链表中的前一个PCB 4 进程家族关系链 p opptr 指向初始父进程的指针 创建进程的进程称为父进程 被创建的进程称为子进程 如果一个进程创建了若干个子进程 那么这些子进程之间就是兄弟关系 Linux的PCB里专门有反映进程间关系的task struct型指针字段 p pptrr 指向父进程的指针 p cptr 指向最新子进程的指针 p ysptr 指向弟进程的指针 p osptr 指向兄进程的指针 P0 P1 P2 P3 P4 指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 38403.3-2025皮革和毛皮防霉剂的测定第3部分:气相色谱-质谱法(甲醇萃取)
- GB 21342-2025焦炭单位产品能源消耗限额
- 护理职业安全
- 关+于“三极模式”信息传播格局探微
- 商务西服培训体系构建
- 运输租凭合同协议书
- 车站票款分成协议书
- 买卖车合同正规协议书
- 饭店欠款转让协议书
- 车辆相撞事故协议书
- SAP-TM运输管理模块操作手册(S4系统)
- 断亲协议书模板
- 2023-2024学年山东省青岛市西海岸新区6中英语七年级第二学期期末学业质量监测试题含答案
- 水利安全生产风险防控“六项机制”右江模式经验分享
- 《在竞争中双赢》教学设计 心理健康八年级全一册
- 中外美术评析与欣赏智慧树知到期末考试答案章节答案2024年湖南大学
- 《电力设备典型消防规程》(DL 5027-2015)宣贯
- MOOC 企业文化与商业伦理-东北大学 中国大学慕课答案
- (2024年)小学体育篮球规则课件
- 如何提高自身的网络安全意识
- 中医学理论体系的形成和发展
评论
0/150
提交评论