进程的定义
进程: 一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。
进程的组成
一个进程应该包括:
- 程序的代码;
- 程序处理的数据;
- 程序计数器中的值,指示下一条将运行的指令;
- 一组通用的寄存器的当前值,堆、栈;
- 一组系统资源(如打开的文件)
总之,进程包含了正在运行的一个程序的所有状态信息。
进程与程序的联系
- 程序是产生进程的基础
- 程序的每次运行构成不同的进程
- 进程是程序功能的体现
- 通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
进程与程序的区别
- 进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行,进程有核心态/用户态
- 进程是暂时的, 程序的永久的:进程是一个状态变化的过程,程序可长久保存
- 进程与程序的组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)
进程的特点
●动态性:可动态地创建、结束进程;
●并发性:进程可以被独立调度并占用处理机运行;并发并行
●独立性:不同进程的工作不相互影响;
●制约性:因访问共享数据/资源或进程间同步而产生制约。
进程的生命期管理:
进程创建
引起进程创建的3个主要事件:
- 系统初始化时;
- 用户请求创建一个新进程;
- 正在运行的进程执行了创建进程的系统调用;
进程运行
内核选择一个就绪的进程, 让它占用处理机并执行(调度算法)
进程等待
在以下情况下,进程等待(阻塞) :
1请求并等待系统服务,无法马上完成.
2启动某种操作,无法马上完成
3需要的数据没有到达
进程只能自己阻塞自己,因为
只有进程自身才能知道何时需
要等待某种事件的发生。
进程唤醒
唤醒进程的原因:
- 被阻塞进程需要的资源可被满足
- 被阻塞进程等待的事件到达
- 将该进程的PCB插入到就绪队列
进程只能被别的进程或操作系统唤醒。
进程结束
在以下四种情形下,进程结束:
正常退出( 自愿的)
错误退出(自愿的)
致命错误(强制性的)
被其他进程所杀(强制性的)
进程状态变化模型
进程的三种基本状态:
进程在生命结束前处于且仅处于三种基本状态之一 不同系统设置的进程状态数目不同。
运行状态(Running):当一个进程正在处理机.上运行时。
就绪状态(Ready):一个进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行.
等待状态(又称阻塞状态Blocked): 一个进程正在等待某-事件而暂
停运行时。如等待某资源,等待输入/输出完成。
进程挂起
Why ?合理且充分地利用系统资源。
进程在挂起状态时,意味着 进程没有占用内存空间。处在挂起状态的
进程映像在磁盘.上。
挂起状态
阻塞挂起状态(Blocked- suspend) :进程在外存并等待某事件的出现;
就绪挂起状态(Ready- suspend) :进程在外存,但只要进入内存,即可运行
挂起(Suspend) :把一个进程从内存转到外存 可能有以下几种情况:
●阻塞到阻塞挂起:没有进程处于就绪状态或就绪进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程;
●就绪到就绪挂起:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先就绪进程时,系统会选择挂起低优先级就绪进程;
●运行到就绪挂起:对抢先式分时系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到就绪挂起状态;
●阻塞挂起到就绪挂起:当有阻塞挂起进程因相关事件出现时,系统会把阻塞挂起进程转换为就绪挂起进程。
状态队列
由操作系统来维护一组队列,用来表示系统当中所有进程的当前状态
不同的状态分别用不同的队列来表示(就绪队列、各种类型的阻塞队列)
每个进程的PCB都根据它的状态加入到相应的队列当中,当一个进程的状态发生变化时,它的PCB从一个状态队列中脱离出来,加入到另外一个队列。.