进程的定义和特征
进程的定义
为了使参与并发执行的每个程序(含数据)都能独立运行,在操作系统中必须为之配置一个专门的数据结构,称为进程控制块(PCB)。系统利用PCB来描述进程的基本情况和活动过程,进而控制和管理进程。这样,由程序段、相关的数据段和PCB三部分便构成进程实体(又称进程映像)。一般情况下,我们把进程实体就称为进程,例如,所谓创建进程,就是创建进程实体中的PCB;而撤销进程,实质上就是撤销进程的PCB。
对于进程的定义,从不同的角度可以有不同的定义,比较经典的定义有:
- 进程是程序的一次执行。
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
- 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
在引入进程实体的概念后,我们可以把传统OS中的进程定义为:“进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。”
进程的特征
进程和程序是两个截然不同的概念,除了进程具有程序所没有的PCB外,还具有下面一些特征:
- 动态性。进程的实质是进程实体的执行过程,因此,动态性就是进程的最基本的特征。动态性还表现在:“它由创建而产生,由调度而执行,由撤消而消亡。”可见,进程实体有一定的生命期,而程序则只是一组有序指令的集合,并存放于某种介质上,其本质并不具有活动的含义,因而是静态的。
- 并发性。是指多个进程实体同存于内存中,且能在一段时间内同时运行。引入进程的目的也是为了使其进程实体能和其它进程实体并发执行。因此,并发性是进程的另一重要特征,同时也成为OS的重要特征。而程序(没有建立PCB)是不能参与并发执行的。
- 独立性。在传统的OS中,独立性是指进程实体是一个能独立运行、独立获得资源和独立调度的基本单位。凡未建立PCB的程序都不能作为一个独立的单位参与运行。
- 异步性。是指进程是按异步方式运行的,即各自独立的、不可预知的速度向前推进。
进程的三种状态
- 就绪状态
- 执行状态
- 阻塞状态
线程
如果说,在OS中引入进程的目的是为了使多个程序能并发执行,以提高资源利用率和系统吞吐量,那么,在操作系统中再引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。
由于进程是一个资源的拥有者,因而在创建、撤销和切换中,系统必须为之付出较大的时空开销。这就是限制了系统中所设置进程的数目,而且进程切换也不宜过于频繁,从而限制了并发程序的进一步提高。
线程和进程的比较
由于线程具有许多传统进程所具有的特征,所有又称之为轻型进程或进程元,相应地,把传统进程称为重型进程。它相当于只有一个线程的任务。
- 调度的基本单位
在引入线程的OS中,把线程作为调度和分派的基本单位,因而线程是能独立运行的基本单位。当线程切换时,仅需保存和设置少量寄存器内容,切换代价远低于进程。在同一进程中,线程的切换不会引起进程的切换,但从一个进程中的线程切换到另一个进程中的线程时,必然就会引起进程的切换。
- 并发性
在引入线程OS中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行,甚至允许在一个进程中的所有线程都能并发执行。同样,不同进程中的线程也能并发执行。这使得OS具有更好的并发性,从而提高系统资源的利用率和系统吞吐量。
- 拥有资源
线程本身并不拥有系统资源,而是仅有一点必不可少所的、能保证独立运行的资源。
- 独立性
- 系统开销
在Solaris 2OS中,线程的创建要比进程快30倍,而线程上下文切换要比进程快5倍
- 支持多处理机系统
在多处理机系统中,对于传统的进程,即单线程进程,不管有多少处理机,该进程只能运行在一个处理机上。但对于多线程进程,就可以将一个进程中的多个线程分配到多个处理机上,使它们并行执行,这无疑将加速进程的完成。因此,现代多处理机OS都无一例外地引入了多线程。
线程的三种状态和三种状态之间的转换和进程是一样的。
线程控制块TCB
如同每个进程有一个进程控制块一样,系统也为每个线程配置了一个线程控制块TCB,将所有用于控制和管理线程的信息记录在线程控制块中。
协程
协程,英文Coroutines,是一种比【线程】更加【轻量级】的存在。
正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。
最重要的是,【协程】不是被操作系统【内核】所管理的,而完全是由【程序】所控制(也就是在【用户态】执行)
这样带来的好处就是:
性能得到了很大的提升,不会像线程切换那样消耗资源。
欢迎大佬前来补充~