通俗易懂地讲解为什么引入进程和进程
来源:网络收集 点击: 时间:2024-05-051、进程的引入
程序就是指令运行的集合体,CPU是按照指令顺序不断运行的,一般芯片上电后,从Reset的中断指令处开始运行。一般编写裸机程序为顺序执行的程序,其特点:具有封闭性和可再现性。但是,程序的顺序执行是低效的,举个例子,加入程序顺序执行到一个软件等待过程,则等待过程中,CPU指令是空转的,因此从时间上来看,指令执行是低效的。
现实中,程序往往是并发执行和进行资源地共享,从而导致各程序在执行过程中出现相互制约的关系,程序的执行表现出间断性的特征。这些特征都是在程序的执行过程中发生的,是动态的过程,而传统的程序本身是一组指令的集合,是一个静态的概念,无法描述程序在内存中的执行情况,即我们无法从程序的字面上看出它何时执行,何时停顿,也无法看出它与其它执行程序的关系,因此,程序这个静态概念已不能如实反映程序并发执行过程的特征。为了深刻描述程序动态执行过程的性质,人们引入“进程(Process)”概念。

2、进程的概念:
进程的概念是60年代初首先由麻省理工学院的MULTICS系统和IBM公司的CTSS/360系统引入的。
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。

3、操作系统引入进程的概念的原因:
从理论角度看,是对正在运行的程序过程的抽象;
从实现角度看,是一种数据结构,目的在于清晰地刻划动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。
4/64、进程的特征
动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
结构特征:进程由程序、数据和进程控制块三部分组成。

5、进程与程序的关系
程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。
进程更能真实地描述并发,而程序不能;进程是由程序和数据两部分组成的。
进程具有创建其他进程的功能,而程序没有。
同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程。也就是说同一程序可以对应多个进程。
操作系统的特征是并发和共享。
6/65、进程的影响
在多道程序环境下,程序的并发执行代替了程序的顺序执行,并发执行破坏了程序的封闭性和可再现性,使得程序和计算不再一一对应。此外,并发执行又导致了资源共享和资源竞争,这造成了各并发执行的程序间可能存在相互制约的关系。因此,并发执行的程序已不再处于一个封闭的系统中,从而出现了许多新的特征,即独立性、并发性、动态性以及并发程序相互间的制约性。程序这个静态概念已经无法真实地反映并发程序执行的特征,所以我们需要一个能够描述并发程序执行过程且用来共享资源的基本单位——进程,即“可以并发执行的程序在一个数据集合上的一次执行过程。”
影响:多个程序能并发执行,提高了资源利用率和系统吞吐量。
为什么会产生线程?1/2背景:在操作系统中一直都是以进程作为能拥有资源和独立运行的基本单位.后来人们又提出了比进程更小的能独立运行的基本单位-线程(Threads),试图通过它来提高系统内程序并发执行的程序,从而进一步提高系统的吞吐量.后来多处理机系统得到迅速发展,线程能比进程更好的提高程序的并发执行程序,充分发挥多处理机的优越性。
如果说:在操作系统中引入进程的目的,是为了使多个程序能并发执行,以提高资源的利用率和系统的吞吐量,那么在操作系统中再引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。
进程的两个基本属性:1,进程是一个可拥有资源的独立单位;2,进程同时又是一个可独立调度和分派的基本单位。所以进程才能成为一个独立运行的基本单位.从而也就构成了进程并发执行的基础,然而,为了能并发执行,系统还必须进行一下一系列的操作:
1、创建进程
系统在创建一个进程时,必须为它分配其所必须的,除处理器以外的所有资源,如:内存设备,I/O设备,以及相应的PCB。
2、撤销进程
系统在撤销进程时,又必须先对其所占有的资源执行回收操作,然后在撤销PCB。
3、进程切换
对进程进行切换时,由于要保留当前进程的CPU环境和设置新选中进程的CPU环境,因而须花费不少的时间。
换言之:由于进程是一个资源的拥有者,因而在创建,撤销,切换中,系统必须为之付出较大的时空开销。正因如此,在系统中所设置的进程,其数目不宜过多,进程切换的频率也不宜过高,这也就限制这并发程度的进一步提高。
2/2那么如何能使多个程序更好的并发执行同时又尽量减少系统的开销?
我们的先辈们一直在苦苦探寻着。后来,不少学者发现能不能:将进程的上述两个属性分开,由操作系统分开处理亦即对于作为调度和分配的基本单位,不同时作为拥有资源的单位,以做到"轻装上阵",而对于拥有资源的基本单位,又不对其进行频繁的切换。正是在这种思想的指导下:形成了线程的概念。
随着VLSI技术和计算机体系结构的发展,出现了对称多处理机(SMP)计算机系统。它为提高计算机的运行速度和系统吞吐量提供了良好的硬件基础。但要使多个CPU很好的协调运行,充分发挥它们的并行处理能力,以提高系统性能,还必须配置性能良好的多处理机OS,但利用传统的进程概念和设计方法,已难以设计出适合于SMP结构的计算机系统的OS。因为进程"太重",致使实现多处理机环境下的进程调度,分派,切换时,都需要花费较大的时间和空间开销。如果在OS中引入线程,以线程作为调度和分派的基本单位,则可以有效的改善多处理机系统的性能。因此,一些主要的OS(UNIX、Windows)都进一步对线程技术做了开发,使之适用于SMP的计算机系统。
线程与进程的比较1/1线程具有许多传统进程所具有的特征:又称为轻型进程或进程元,相应的传统进程称为重型进程,传统进程相当于只有一个线程的任务。在引入线程的操作系统中,通常一个进程都拥有若干个线程,至少也有一个线程。我们可以从调度性,并发行,系统开销,拥有资源等方面进行比较。
1、调度性
在传统的操作系统中,作为拥有资源的基本单位和独立调度,分派的基本单位都是进程。但是在引入线程的操作系统中,则把线程作为调度和分派的基本单位,而进程作为资源拥有的基本单位。把传统进程的两个属性分开,使线程基本上不拥有资源,这样线程便能轻装前进,从而可显著的提高系统的并发程度。在同一进程中,线程的切换不会引起进程的切换,但是,从一个进程中的线程切换到另一个进程中的线程使,将会引起进程的切换。
2、并发行
在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间也是可以并发执行的,使得操作系统具有更好的并发行,从而更加有效的提高系统资源的利用率和系统的吞吐量。例如:在一个未引入线程的单CPU操作系统中,若仅设置一个文件服务进程,当该进程由于某种原因而被阻塞时,便没有其它的文件服务进程来提高服务。在引入线程的操作系统中,则可以在一个文件服务进程中设置多个服务线程。当第一个线程等待时,文件服务进程中的第二个线程可以继续运行,以提供服务。同理,这样的方法可以显著的提高文件服务的质量和系统的吞吐量。
3、拥有资源
不论是传统的操作系统,还是引入了线程的操作系统.进程都可以拥有资源.是系统中拥有资源的一个基本单位。一般而言,线程自己不拥有系统资源(也有一点儿必不可少的资源),但它可以打开访问其隶属进程的资源,即一个进程的代码段,数据段,及所拥有的系统资源,如:已经打开的文件,I/O设备等,可以供该进程中所有线程所共享。
4、系统开销
在创建或撤销进程时,系统都有为之创建和回收进程控制块,分配和回收资源,如内存空间和I/O设备等,操作系统所付出的开销明显大于线程创建或撤销时的开销.类似的,在进程切换时,涉及到当前进程CPU环境的保存及新被调度运行进程的CPU环境的设置,而线程的切换则仅需保存和设置少量的寄存器内容,不涉及到存储器管理方面,所以就切换代价而言,进程也是远高于线程的.此外,由于一个进程中的多个线程具有多个相同的地址空间,在同步和通信的实现方面线程也比较容易.在一些操作系统中,线程的切换,同步和通信都无须内核的干预。
线程的属性1/1在多线程OS中,通常是一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费开销最小的实体.线程具有以下属性:
1、轻型实体。线程中的实体基本上不拥有系统资源,只是有一点是必不可少的,能保证其独立运行的资源.如:在每个线程中都应具有一个用于控制线程运行的线程控制块TCB,用于指示被执行指令序列的程序计数器,保留局部变量,少数状态参数和返回地址等的一组寄存器和堆栈。
2、独立调度和分配的基本单位
在多线程OS中,线程是能独立运行的基本单位,因为也是独立调度和分配的基本单位.由于线程很轻,因此线程的切换非常迅速且开销小
3、可并发执行.一个进程中的多个线程可以并发执行,甚至允许在一个进程中的所有线程都能并发执行;同样,不同进程中的线程也能并发执行。
4、共享进程资源.在同一个进程中的各个线程都可以共享该进程所拥有的资源.这首先表现在所有线程都具有相同的地址空间(进程的地址空间).这意味着线程可以访问可以访问该地址空间中的每一个虚地址.此外,还可以访问进程所拥有的已打开文件,定时器,信号量机构等。
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.ff371.cn/art_680423.html