unix进程管理机制

本文深入探讨了进程的引入原因,UNIX中程序的定义及进程映像的基本结构,阐述了进程调度信息及其运行状态,详细解释了进程的存储管理与调度管理,并分析了进程的不同状态与管理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        1     进程的引入原因:
       描述多道程序在并发系统中的执行过程。由于动态特性,即使相同的程序功能,每次运行时的动态特性不同,因此引入新的有机整体(包括程序功等能,运行时的动态信息),称这个有机整体为进程。
进程是资源分配的单位。cpu按进程分配资源。
         2   unix中程序被定义为映像的执行。
    映像:存储器映像+cpu映像+打开文件的状态+现行目录,可以理解为程序和动态执行该程序时产生的各种信息的整合。
    cpu映像:
程序运行时各个寄存器的值
存储器映像:
进程控制块
进程执行的程序
进程运行时要使用的数据
进程运行时使用的工作区
当一个进程暂时退出处理机时,它的cpu印象就成为存储器映像的一部分,所以,提及,进程映像时一般指其存储器映像。
     进程控制块:
基本控制块proc和扩充控制块user两部分
proc---记录进程状态,优先数等直接和进程调度有关的信息,常驻内存,不管对应的进程是否运行,系统都要查询和修改这些信息。
user---当进程处于运行状态时,才查询和处理这些信息,当进程不再处理机上时,该进程的user结构到可能被交换到外存,当进程被调度运行时再交换入内存。
     进程执行的程序
进程执行的程序,即进程共享的正文段text(多个进程共享的可重入程序和常数)
     进程运行时使用的数据
外部变量,局部变量,非共享正文段等
     进程运行时使用的工作区
包括核心态下的工作区(线核心栈)和用户态下的工作区(用户栈)核心栈主要用于保护现场和中断,用户栈用于参数传递。

 

共享正文段text虽然也属于进程映像非常驻部分,但是否在内存中与共享它的各个进程情况有关,单独分开存储,数据栈,用户栈,核心栈存储地址连续。

进程映像的基本结构如下图:


          3    进程调度信息
描述一个进程是否在内存中,是否正在使用处理机,使用处理机的程度
操作系统进行进程调度时使用proc中的进程调度信息。
过程: 首先操作系统唤醒等待事件消失的进程,被唤醒进程的proc的p-wchan(等待原因,即睡眠原因,当原因消失,唤醒因该原因而正在睡眠的进程)被置换为yes,p-stat置为ready。
然后操作系统检查所有p-stat为ready态的进程,根据进程优先数,操作系统确定最高优先权的进程运行。
选中运行进程后,根据p-flag值确定进程是否在内存,若不在内存,查看是否有足够大的空闲内存调入该进程的正文段,如果没有,则根据淘汰法调出某些正文段,直到有足够大的空闲内存,接下来操作系统根据p-addr和p-size将正文段调入,最后系统运行选中的进程。


          4   进程的存储管理

核心态下的虚拟地址空间:

0·5存放unix代码,6页存放现在运行进程的ppda区,当然进程运行中还需要用到pcb,其中proc可通过ppda中的user找到

用户态下的虚拟地址空间:

逻辑上分为:共享正文段、数据段、用户栈,当然实际运行中还需要pcb其中的proc常驻内存,选择运行进程时,通过p-addr找到ppda,进程运行时ppda已经在核心态下的虚空间第6页

实际上,内存空间中各个进程映像分布如图所示,操作系统代码总是常驻内存的最低端,从0地址开始向高地址延生,而输入输出总是占用物理空间的最后1也

                                5  进程调度管理

运行状态:

SRUN指执行态和就绪态

p-stat=SRUN

睡眠状态:

进程等待事件的发生相当于封锁状态

暂停状态:

比较特殊的睡眠状态,用于父子进程的跟踪机构

僵尸状态:

SIDL:

父进程创建子进程时处于的特殊状态

 

译者序 前言 第1章 系统概貌 1.1 历史 1.2 系统结构 1.3 用户看法 1.3.1 文件系统 1.3.2 处理环境 1.3.3 构件原语 1.4 操作系统服务 1.5 关于硬件的假设 1.5.1 中断与例外 1.5.2 处理机执行级 1.5.3 存储管理 1.6 本章小结 第2章 内核导言 2.1 UNIX操作系统的体系结构 2.2 系统概念介绍 2.2.1 文件子系统概貌 2.2.2 进程 2.3 内核数据结构 2.4 系统管理 2.5 本章小结 2.6 习题 第3章 数据缓冲高速缓冲 3.1 缓冲头部 3.2 缓冲池的结构 3.3 缓冲的检索 3.4 读磁盘块与写磁盘块 3.5 高速缓冲的优点与缺点 3.6 本章小结 3.7 习题 第4章 文件的内部表示 4.1 索引节点 4.1.1 定义 4.1.2 对索引节点的存取 4.1.3 释放索引节点 4.2 正规文件的结构 4.3 目录 4.4 路径名到索引节点的转换 4.5 超级块 4.6 为新文件分配索引节点 4.7 磁盘块的分配 4.8 其他文件类型 4.9 本章小结 4.10 习题 第5章 文件系统的系统调用 5.1 系统调用Open 5.2 系统调用read 5.3 系统调用write 5.4 文件和记录的上锁 5.5 文件的输入/输出位置的调整lseek 5.6 系统调用close 5.7 文件的建立 5.8 特殊文件的建立 5.9 改变目录及根 5.10 改变所有者及许可权方式 5.11 系统调用stat和fstat 5.12 管道 5.12.1 系统调用pipe 5.12.2 有名管道的打开 5.12.3 管道的读和写 5.12.4 管道的关闭 5.12.5 例 5.13 系统调用dup 5.14 文件系统的安装和拆卸 5.14.1 在文件路径名中跨越安装点 5.14.2 文件系统的拆卸 5.15 系统调用link 5.16 系统调用unlink 5.16.1 文件系统的一致性 5.16.2 竟争条件 5.17 文件系统的抽象 5.18 文件系统维护 5.19 本章小结 5.20 习题 第6章 进程结构 6.1 进程的状态和状态的转换 6.2 系统存储方案 6.2.1 6.2.2 页和页表 6.2.3 内核的安排 6.2.4 u 6.3 进程的上下文 6.4 进程上下文的保存 6.4.1 中断和例外 6.4.2 系统调用的接口 6.4.3 上下文切换 6.4.4 为废弃返回(abortive return)而保存上下文 6.4.5 在系统和用户地址空间之间拷贝数据 6.5 进程地址空间的管理 6.5.1 的上锁和解锁 6.5.2 的分配 6.5.3 附接到进程 6.5.4 大小的改变 6.5.5 的装入 6.5.6 的释放 6.5.7 与进程的断接 6.5.8 的复制 6.6 睡眠 6.6.1 睡眠事件及其地址 6.6.2 算法sleep和wakeup 6.7 本章小结 6.8 习题 第7章 进程控制 7.1 进程的创建 7.2 软中断信号 7.2.1 软中断信号的处理 7.2.2 进程组 7.2.3 从进程发送软中断信号 7.3 进程的终止 7.4 等待进程的终止 7.5 对其他程序的引用 7.6 进程的用户标识号 7.7 改变进程的大小 7.8 Shell程序 7.9 系统自举和进程init 7.10 本章小结 7.11 习题 第8章 进程调度和时间 8.1 进程调度 8.1.1 算法 8.1.2 调度参数 8.1.3 进程调度的例子 8.1.4 进程优先权的控制 8.1.5 公平共享调度 8.1.6 实时处理 8.2 有关时间的系统调用 8.3 时钟 8.3.1 重新启动时钟 8.3.2 系统的内部定时 8.3.3 直方图分析 8.3.4 记帐和统计 8.3.5 计时 8.4 本章小结 8.5 习题 第9章 存储管理策略 9.1 对换 9.1.1 对换空间的分配 9.1.2 进程的换出 9.1.3 进程的换入 9.2 请求调页 9.2.1 请求调页的数据结构 9.2.2 偷页进程 9.2.3 页面错 9.2.4 在简单硬件支持下的请求调页系统 9.3 对换和请求调页的混合系统 9.4 本章小结 9.5 习题 第10章 输入输出子系统 10.1 驱动程序接口 10.1.1 系统配置 10.1.2 系统调用与驱动程序接口 10.1.3 中断处理程序 10.2 磁盘驱动程序 10.3 终端驱动程序 10.3.1 字符表Clist 10.3.2 标准方式下的终端驱动程序 10.3.3 原始方式下的终端驱动程序 10.3.4 终端探询 10.3.5 建立控制终端 10.3.6 间接终端驱动程序 10.3.7 注册到系统 10.4 流 10.4.1 流的详细的示例 10.4.2 对流的分析 10.5 本章小结 10.6 习题 第11章 进程间通信 11.1 进程跟踪 11.2 系统V IPC 11.2.1 消息 11.2.2 共享存储 11.2.3 信号量 11.2.4 总的评价 11.3 网络通信 11.4 套接字 11.5 本章小结 11.6 习题 第12章 多处理机系统 12.1 多处理机系统的问题 12.2 主从处理机解决方法 12.3 信号量解决方法 12.3.1 信号量定义 12.3.2 信号量实现 12.3.3 几个算法 12.4 Tunis系统 12.5 性能局限性 12.6 习题 第13章 分布式UNIX系统 13.1 卫星处理机系统 13.2 纽卡斯尔连接 13.3 透明型分布式文件系统 13.4 无存根进程的透明分布式模型 13.5 本章小结 13.6 习题 附录A 系统调用 参考文献 索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值