1.为什么引入进程

我们知道,最早出现的OS系统是单道批处理系统,由于它是顺序执行程序的,即一个一个地按先到先执行的顺序依次执行。
作业运行过程中如果发生I/O请求,高速的CPU便需要等待低速的I/O操作完成,导致CPU资源利用率和系统吞吐量降低
操作系统之(一篇文章让你轻松搞定:什么是进程和线程)

而后为了缓解这个矛盾,人们引入了多道批处理系统,该系统让程序宏观上并发执行,即在一道程序发起I/O请求时CPU不再选择等待I/O完全运行结束,而是当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序,用户既不能了解自己程序的运行情况,也不能控制计算机【英文万一有其中一道程序根本不会占用CPU资源,但是系统还是会给它分配了同等的资源,所以根本不能达到人工控制】
操作系统之(一篇文章让你轻松搞定:什么是进程和线程)
再然后就诞生了分时操作系统,把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时停止运行,把处理器让给其他作业使用,等待下一轮再继续运行;将程序分成一小片一小片的,这个进程执行一点,那个进程执行一点。虽然在内部进程的执行是一段一段的,但是CPU的速度很快的(速度都是纳秒级别的),所以我们是感受不到进程执行过程中的停顿
操作系统之(一篇文章让你轻松搞定:什么是进程和线程)
上面的简单操作系统通过一些系统指令去操作程序,然而程序本身也是一组指令的集合,指令操作指令,这是一个静态的概念,无法描述程序在内存中的执行情况,即我们无法从程序的字面上看出它何时执行,何时停顿,也无法看出它与其它执行程序的关系

多道程序在执行时,需要共享系统资源,从而导致各程序在执行过程中出现相互制约的关系,程序的执行表现出间断性的特征.这些特征都是在程序的执行过程中发生的,是动态的过程

程序这个静态概念已不能如实反映程序并发执行过程的特征.**为了深刻描述程序动态执行过程的性质,**人们引入“进程(Process)”概念.

2.进程究竟是什么?进程的定义和属性:

从理论角度看,是对正在运行的程序过程的抽象

从实现角度看,是一种数据结构,目的在于清晰地刻划动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序.

进程的定义总结为一句话:一个执行中的程序的实例

进程提供给应用程序的关键抽象:
①进程是一个独立的逻辑控制流,它提供一个假象,好像我们的程序独占地使用处理器。
②进程是一个私有的地址空间,它提供一个假象,好像我们的程序独占地使用存储器系统。

有点难以理解,那是因为没了解它的狭义和广义定义:

狭义定义:进程就是一段程序执行过程

广义定义【官方定义】:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

仔细看就会发现,进程的目的是在于清晰地刻画动态系统的内在规律,进而才能有效管理和调度进入计算机系统主存储器运行的程序

特征:

**动态性:**进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
**并发性:**任何进程都可以同其他进程一起并发执行
**独立性:**进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
**异步性:**由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进

结构特征:进程由**程序、数据和进程控制块【PCB】**三部分组成;

注意:多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;
但是执行过程中,程序不能发生改变。

3.进程的控制和管理

进程的三种基本状态

**1. 就绪状态:**进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。
   **2. 运行状态:**进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以 执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。
   **3. 阻塞状态:**由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生 前即使把处理机分配给该进程,也无法运行。
   操作系统之(一篇文章让你轻松搞定:什么是进程和线程)
操作系统之(一篇文章让你轻松搞定:什么是进程和线程)

相关文章: