进程与线程

1、基本概念:

进程:程序在一个数据集上的一次运行过程。是操作系统资源分配的基本单位。

          进程又被细化为线程。也就是一个进程下有多个能独立运行的更小单位。进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。

线程:是进程中的一个实体。是被操作系统独立调度和执行的基本单位。一个进程包含一个或多个线程。

进程是执行实体,是资源分配的基本单位;而线程是处理机调度的基本单位。


2、进程


2.1  进程概念的主要两点:


       第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。

       第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。


2.2 进程特征: 

        动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

  并发性:任何进程都可以同其他进程一起并发执行

  独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;

  异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进

  结构特征:进程由程序、数据和进程控制块三部分组成。

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


2.3 进程的状态

      进程执行时的间断性,决定了进程可能具有多种状态。事实上,运行中的进程可能具有以下三种基本状态。

  1)就绪状态(Ready):

  进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。

  2)运行状态(Running):

  进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。

  3)阻塞状态(Blocked):

  由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理机分配给该进程,也无法运行。

             

  

                                     进程状态的转换

进程状态五态模型:
运行状态(Running)当一个进程正在处理机上运行时。
就绪状态(Ready)一个进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行.
等待状态又称阻塞状态(Blocked)一个进程正在等待某一事件而暂停运行时。如等待某资源,等待输入/输出完成。
创建状态(NEW)一个进程正在被创建,还没被转到就绪状态之前的状态。
结束状态(Exit)一个进程正在从系统中消失时的状态,这是因为进程结束或由于其他原因所导致。

 

                                                 

                                                        状态变化图


3、线程

3.1 线程的引入

    (1)创建进程。由于每个进程拥有自己独立的地址空间和资源,系统在每创建一个进程时,必须为之分配其所必需的,除处理机以外的内存资源。

    (2)撤销进程。系统在撤销进程的时候,必须先对这些资源进行回收,然后再撤销PCB结构。

    (3)进程切换。在对进程进行切换时,由于要保留当前进程的CPU环境,和设置新选中进程的CPU环境,从而要花费不少时间。

    (4)一个进程同一时刻只做一件事情 。有了多个控制线程以后,可以把进程设计成同一时刻能做不止一件事,每个线程处理各自独立的任务。


3.2 线程特征

    (1)线程的执行状态包括运行,就绪和等待。

    (2)进程中的所有线程共识所属进程的内存和地址资源。

    (3)拥有自己的线程控制块和执行栈,寄存器。


3.3 线程属性

       在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。线程具有以下属性。

  1)轻型实体

  线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源,比如,在每个线程中都应具有一个用于控制线程运行的线程控制块TCB,用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器堆栈

  2)独立调度和分派的基本单位。

  在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小。

  3)可并发执行。

  在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行。

  4)共享进程资源。

  在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。


4、线程和进程的区别:

        线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。线程的运行中需要使用计算机的内存资源和CPU。

  通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系统资源的利用率和吞吐量。

  因而近年来推出的通用操作系统都引入了线程,以便进一步提高系统的并发性,并把它视为现代操作系统的一个重要指标。

①、在调度方面,线程是调度和指派的基本单位,而进程是资源拥有的基本单位。在同一进程中,线程的切换不会引起进程切换。在不同的进程中进行线程切换,如一个进程内的线程切换到另一个进程中的线程时,将会引起进程切换。 

②、在拥有资源方面,线程不拥有系统资源,但可以访问其隶属进程的系统资源,从而获得系统资源。 进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。 

③、在并发性方面,在引入线程的操作系统中,不仅进程之间可以并发执行,而且同一进程内的多线程之间也可并发执行,从而使操作系统具有更好的并发性,大大提高系统的吞吐量。

④、调度切换的系统开销方面,进程切换时的时空开销很大,但线程切换时,只需保存和设置少量寄存器内容,因此开销很小。

另外通信方面,进程间通信IPC,而线程通信由于同一进程内的多个线程共享进程的相同地址空间,线程间可以直接读写进程数据段(如全局变量)来进行通信。因此,多线程之间的同步与通信非常容易实现,甚至无须操作系统内核的干预

在多线程OS中,进程不是一个可执行的实体





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值