1.进程的定义
程序:指令序列
早期计算机(只支持单道程序)
CPU、内存、I/O等系统资源都为一个程序服务
这个阶段同一个时间段内,内存中只会存在和一个程序有关的相关数据,
包括程序段(代码本身)可以只存在低地址部分
和数据段(处理的数据 eg:变量)可以只存在高地址部分
后来多道程序技术:
这个阶段同一个时间段内,内存中会有多个程序有关的相关数据,
为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念
进程控制块(PCB)进程存在的唯一标志
用来描述操作系统各种信息
记录PID、进程所属用户ID(UID)
给进程分配了哪些资源(如:分配了多少内存、正在使用哪些I/O设备、正在使用哪些文件)
记录进程的运行情况(如:CPU使用时间、磁盘使用情况、网络流量使用情况等)
程序代码存放的位置
进程实体(进程映像)包括 PCB、程序段、数据段
一般情况,我们把创建一个进程实体简称为进程,
eg:
创建进程,实质上就是创建进程实体中的PCB,
撤销进程,实质上就是撤销进程实体中的PCB
进程的定义(动态)
1.进程是程序的一次执行过程
2.进程是一个程序及其数据在处理机上顺序执行时所发生的活动
3.进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单元。
4.进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单元
(注:进程实体有时可以和进程互换,但是严格意义上,进程实体是静态的,进程是动态的)
2.进程的组成
1.进程(进程实体)是由程序段,数据段,PCB三部分组成。
程序段:存放的代码(程序运行本身需要的)
数据段:存放程序运行过程中处理的各种数据 (程序运行本身需要的)
3.进程的组织
一个系统中,通常有数百上千个PCB,为了能有效管理,应该用恰当的方式把这些PCB组织起来。
进程的组成——进程内部
进程的组织——多个进程之间的组织方式
进程的组织方式
4. 进程的特征
动态性:进程是程序的一次执行过程,是动态地产生、变化和消亡的。(最基本特征)
并发性:内存中有多个进程实体,各进程可以并发执行
独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位
异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题。
结构性:每个进程都会配置一个PCB,结构上看,进程由程序段、数据段、PCB组成。
5.进程的状态
进程是程序的一次执行,执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,所以进程的状态是会变化的。为了方便对各个进程的管理,操作系统需要将进程合理地划分为集中状态。
进程的三种基本状态:
运行态(Running):占有CPU,并在CPU上执行
(特殊:单核CPU,每一时刻只有一个进程运行态,双核——2)
就绪态(Ready):已经具备运行条件,但由于没有空闲的CPU,而暂时不能执行
(拥有了除了处理机之外的所有资源)
阻塞态(Waiting/Blocked 又称:等待态):因等待某一事件而暂时不能运行
(欠好多资源,cpu很昂贵,其他准备好,才能cpu)
进程的另外两种状态:
创建态(New 新建态)
操作系统需要完成创建进程。
操作系统为该进程分配所需的内存空间等系统资源,并为其创建、初始化PCB
终止态(Terminated 结束态)
进程运行结束(或者bug),分配资源回收,需要撤销进程
6.进程状态的转换
(注意:箭头)
运行态——>阻塞态 是一种进程自身做出的主动行为
阻塞态——>就绪态 不是进程本身能控制的,被动行为
7.进程控制
概念:进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
(进程控制可以简单理解为控制进程状态转换)
用原语实现进程控制,
原语的特点是执行期间不允许中断,只能一气呵成。这种不可中断的操作即原子操作
原语采用 “关中断指令”和“开中断指令”实现
(个人理解,就像做数学运算的括号,先算括号里面的,保证括号里面一气呵成)
开关中断指令权限非常大,原语必然运行在核心态
原语主要做三件事:
1.更新PCB信息
a.所有进程控制原语一定都会修改进程状态标志
b.剥夺当前运行进程的CPU使用权必然需要保存其运行环境
c.某进程开始运行前必然要恢复运行环境
2.将PCB插入合适队列
3.分配/回收资源