为什么需要进程?
在没有操作系统之前,只能运行一个程序。不能同时运行多个程序,对于资源很是浪费。所以在有操作系统后,我们引入了进程这个概念,以此来提高资源的利用率。
进程是系统进行资源分配以及调度的最基本单位。
进程在多道程序同时在同一个物理设备运行的时候,起到了对这些程序进行隔离的作用,以此来保障这些程序正常运行。
进程能使计算机的资源得到更合理的运用,大幅提高资源利用率。
进程的实体
主存中的进程形态
在主存中,进程是一段连续存储的空间,名字叫进程控制快。里面有很多重要的数据:
1 标识符
标识符是每一个进程独一无二的标志,是每一个进程自己的名字,与名字不同之处就是标识符不会重复。类似于身份证。
2 状态
用来标记每一个进程正处于什么进程状态,如运行状态,就绪状态等等。
3 程序计数器
它的作用就是指向下一条该被执行的指令的地址,就是告诉计算机下一条他应该执行什么指令了。
4 内存指针
内存指针可能有好多,这些指针变量分别存放着某一个进程的代码,或者某一个进程的数据之类的地址。我们通过他们就可以看到代码或数据。
5 上下文数据
这是一个比较重要的区域,里面存放着进程在运行时处理器存储在寄存器或高速缓存里的数据。
6 IO状态信息
在linux系统中,我们所操作的所有的信息都是以文件的形式存在的,我们操作的磁盘,操作的内存,操作的文件都是以文件的形式存储在IO状态信息里面的。
7 记账信息
用来存储进程使用了多长时间处理器,以及时钟数总和等一些对于调试程序很有用的信息。
正是因为进程控制块(PCB)之中存在着进程当前的运行状态,以及控制进程运行的全部信息这样方便控制的信息,才使得进程成为能够独立运行的的基本单位。
PCB在操作系统在运行过程中会被经常读取,PCB被存放在系统专门开辟的PCB区域内。
进程与线程
一个进程中包含着一个或多个线程,线程是操作系统可以调度的最小单位,进程是操作系统可以调度的基本单位,这就是线程与进程在这方面的区别。
线程包含在进程内,是程序在运行线程被包含在进程内,他们本身没有资源,只与进程共享资源。程序在运行时,实际上工作的是线程而不是进程。在一个进程内部,可以并发多个线程。线程的系统开销小进程是通过进程间的通信进行通信的,而线程是通过同一个进程中的读写进行通信的。