进程
进程的模型
一个进程是正在执行的程序实例,包括程序计数器、寄存器和变量的当前值。以进程的角度来看,它拥有CPU,但实际上各个进程共享CPU。
在多道程序设计系统中,各个进行会进行快速的切换,每个进行获得几十到几百毫秒的cpu控制时间。但实际上在某个瞬间,cpu中仅运行一个程序。这被称作伪并行。只有在多处理器系统中,各个程序才能实现真正的并行。
多道程序设计系统:内存被分为多块,每块一个作业。当一个作业阻塞时,会调用另外一个作业。
进程的切换
每个进程独立运行,都有自己的一个逻辑程序计数器,但系统中只有一个物理程序计数器。所以每个程序运行时,会将自己的逻辑程序计数器载入到物理程序计数器中;而当程序暂停运行(或结束运行)时,会将物理程序计数器中的值保存到相应进程的逻辑程序计数器中。
通过以上操作,各个进程看起来是独立的,并且独自占有cpu。
核心思想是:每个进程可以看作是某种活动,它有程序、输入、输入和状态。单个处理器可以被多个进程共享,处理器通过进程调度程序来决定各个进程的运行和停止。
创建与终止
创建
- 系统初始化时。
- 程序调用创建进程的系统调用。
- 用户创建了一个新的进程。
- 一个批处理作业的初始化。
系统初始化
在系统初始化时,系统会创建一系列进行,这些进程分为前台进程和后台进程。前台进程直接与用户进行交互,其他进程为后台进程。
还有另外一类进程叫做守护进程,守护进程在系统自举时启动,在系统关闭时终止。
系统调用创建进程的系统调用
一个程序会使用系统调用来创建一些进程来辅助工作。
用户创建新的进程
用户双击桌面图片或者在linux中运行命令都会创建一些新的进程。
批处理作业的初始化
在大型机的批处理作业程序中,当程序认为有足够的资源运行另一个作业时,会创建一个进程来执行。
终止
进程有如下几种终止的方式:
- 正常退出(自愿)
- 出错退出(自愿)
- 严重错误(非自愿)
- 被其他进程杀死(非自愿)
进程在顺利执行完毕后,会正常退出。
进程在发现了错误,在给出错误的参数之后,会出