概述
一、进程的描述
进程:是系统中占用处理机及争夺其它系统资源的实体;程序必须在进程中运行;进程运行必须有栈用于保存现场。
进程的引入:
- 为了能实现同一作业的作业步并发
- 在作业某作业步等I/O时,另一逻辑上可并发作业步能使用CPU运行
- 引入进程后,逻辑上课并发的作业步在不同的进程中运行,处理机能在进程间切换
进程的定义:是有独立功能的程序关于某个数据集合的一次运行活动
进程的特点:
- 动态性:可动态创建、结束,也可以是精灵进程(即开机就创建、关机才消失的进程,一般是一些服务进程)
- 并发性:可以被调度轮流占用处理机运行
- 独立性:一个进程有自己独立的空间,互不打扰
- 制约性:因访问共享数据或进程间同步而产生制约
进程与程序的区别:
- 相同的程序可以在两个以上的进程中运行(如创建多个进程运行相同浏览器)
- 程序文件(永远)存放在磁盘中,运行时读入内存;而进程是在运行期间动态创建的(要有操作系统才可以,关机了进程就没有了)
- 程序只有程序语句及有初值数据变量和无初值数据变量;而进程一般有要处理的输入数据
二、进程的组成:管理进程的PCB表+进程映像
1、包括:
- 执行的程序及处理的数据,及存放程序和数据的内存空间
- 执行程序用的栈(含核心栈与用户栈)
注意理解:逻辑上可以理解为
每一进程都有一个‘栈’,但实际运行上看
一部分在‘核心栈’一部分在‘用户栈’。如之前提到的内核程序寄存在用户进程中运行,就是利用了用户进程的核心栈。
- 进程管理描述信息及运行要用的其他系统资源
3、进程控制块PCB:系统管理控制进程运行用的数据结构。其包含的信息包括:
- 进程标识信息:如本进程的标识(进程号)、本进程的产生者标识(父进程标识)、进程所属用户标识
- 处理机状态信息保存区(链式结构):其实质就是核心栈。保存进程进入操作系统内核的运行现场信息:
通用寄存器:数据、地址寄存器控制和状态寄存器:如程序计数器(PC)、处理机状态字(PS)
- 进程控制信息:
调度和进程状态信息:用于操作系统调度进程占用处理机的信息进程间通讯信息:为支持进程间的通讯相关的消息队列、消息等,这些信息在接收方的进程控制块中存储管理信息:包含有描述进程映像存储空间的数据结构进程所用资源:说明由进程打开、使用的系统资源。如打开的文件等链接信息:如就绪进程链等
三、进程的创建、结束、等待的系统调用
“进程创建”处理过程:


“进程结束”处理过程

“进程等待”系统调用:是进程之间的一种同步

四、进程的状态及变化
1、进程的5种状态
- 创建状态(New):进程正在被创建
- 就绪状态(Ready):进程获得了除了处理机之外的一切所需资源,万事俱备只缺处理机
- 运行状态(Running):进程正在处理机上运行
- 阻塞/等待状态(Blocked):进程正在等待某个资源(如打印机、独占式资源)或等待I/O完成而暂停运行
- 结束状态(Exit):进程正在从系统中消失时的状态,这是因为进程结束或其它原因流产所导致
2、状态变化的情形






3、挂起状态(suspend)

因为挂起状态的设立时为了节约内存空间。那么上图中,首先应该是让那些需要等待事件的“等待/阻塞状态”从内存中释放,变成“等待/阻塞挂起”状态。如果内存还不够用,再考虑将“就绪状态”的进程从主存中挪到磁盘中去,变成“就绪挂起”状态。
现代的操作系统随着虚存技术的发展,主存基本够用,所以不怎么需要考虑“挂起状态”了。
最后
以上就是乐观铃铛为你收集整理的操作系统学习笔记(3)——进程描述与进程状态变化的全部内容,希望文章能够帮你解决操作系统学习笔记(3)——进程描述与进程状态变化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复