进程的概念
在我小时候,刚刚接触电脑的时候,只会在浏览器中输入 4399
搜索小游戏玩一玩,到后来,我学会了安装游戏,然后知道安装完成之后,找到对应的 .exe
的图标就可以运行游戏。
好,那么什么时候是程序? 程序就是我们下载好安装包之后,点击安装,然后需要选择安装目录,最后在我的电脑
中对应的磁盘位置就能找到这个程序。
在程序安装好之后,它是存储在磁盘上的,并且它是静态的,程序也就是一系列的指令集合。
那什么是进程? 我们来一起看看下图:
在我们程序安装好之后,运行所安装的程序,如果是你 windows
系统可以使用任务管理器
查看,如果你是使用的 Mac
系统,可以使用活动监视器
来查看进程。
当我们运行一个软件之后,我们就能看到在进程管理中看到多了一条刚刚运行的软件,然后我们在退出这个软件,又会发现进程管理中对应的软件不见了。
这个说明进程它是动态
的,进程是程序的一次执行过程,它随着程序的启动:创建、运行、销毁, 同一个程序多次执行会对应多个进程,
那既然同一个程序,可以执行多次,并且对应不同的进程,那么操作系统它是如何来区分的?
也可以换句话来说,进程它是由什么东西组成的? 我们接着往下看
进程的组成
我们先来看一个问题:操作系统是这些进程的管理者,他要怎么区分各个进程:
首先,当进程被创建的时候,操作系统会为该进程分配一个唯一的、不重复
的一个号码,这个号码叫做 PID
(process ID 进程ID),如下图:
通过上图我们可以看到,操作系统要记录每一个进程的 PID、进程对应的所属用户是谁。
还要记录这些进程分配了哪些资源,比如分配了多少内存、该进程读写了磁盘数据等等
还要记录每一个进程运行情况,比如 CPU 的使用时间、磁盘使用情况,网络流量使用情况等等。
那么以上这些信息,操作系统是如何来保存的呢?
在操作系统中,有一个数据结构叫做:PCB (Process control block),即进程控制块,操作系统需要对各个并发运行的进程进行管理,但凡管理时所需要的信息,都会放在 PCB 当中。
我们再来看下图,PCB 由哪几块组成:
进程不仅仅只有 PCB 中一些管理的数据,我们再来看看一个程序的执行过程:
首先由我们的写的程序代码,编译成可执行的文件,当我们运行可执行文件的时候,操作系统是需要把运行的程序放入到内存当中,程序其实也就是一些指令,然后由 CPU 来执行这些指令。 在程序的执行过程中,会产生一些动态数据,这些数据也是需要被保存起来的。
所以在进程当中,不仅仅只有 PCB ,还有 程序段、数据段,这三个部分组成 进程实体
。
进程的特征
那么进程有哪些特征呢?
动态性:进程是程序的一次执行过程,是动态的产生、变化和消亡的。
并发性:内存中有多个进程实体,各进程可并发执行。
独立性:进程是能独立的运行、独立获取资源、独立接口调用的基本单位。
异步性:各进程各自独立、不可预知的速度向前推进,操作系统要提供进程同步机制来解决异步问题。
结构性:每个进程都会配置一个 PCB,结构上看,进程由程序段、数据段、PCB 组成。