进程与线程的区别

进程:

  • 狭义定义:进程是正在运行的程序的实例。
  • 广义定义:进程是一个具有一定独立功能 的程序关于某个数据集合的一次运行活动。
  • 它是操作系统动态执行的基本单元,在传统的操 作系统中,进程既是基本的分配单元,也是基本的执行单元。进程是一个实体,进程是一个 “执行中的程序”
进程的特点:
  • 并发性:任何进程都可以同其他进程一起并发执行 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
  • 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预 知的速度向前推进
结构特征:
  • 进程由程序、数据和进程控制块三部分组成。 多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得 到不同的结果;但是执行过程中,程序不能发生改变

线程:

  • 线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。
  • 线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥 有的全部资源。线程可以创建和撤消线程,从而实现程序的并发执行。一般,线程具有就绪阻塞运行三种基本状态。
  • 有时候,线程也称作轻量级进程。就象进程一样,线程在程序中是独立的、并发的执行 路径,每个线程有它自己的堆栈、自己的程序计数器和自己的局部变量。但是,与分隔的进 程相比,进程中的线程之间的隔离程度要小。它们共享内存、文件句柄和其它每个进程应有 的状态。
线程的基本操作:
  • 派生:线程在进程内派生出来,它即可由进程派生,也可由线程派生。
  • 阻塞(Block):如果一个线程在执行过程中需要等待某个事件发生,则被阻塞。 激活(unblock):如果阻塞线程的事件发生,则该线程被激活并进入就绪队列。
  • 调度(schedule):选择一个就绪线程进入执行状态。
  • 结束(Finish):如果一个线程执行结束,它的寄存器上下文以及堆栈内容等将被释放。

二者的区别:

  1. 地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
  2. 通信:进程间通信 IPC,线程间可以直接读写进程数据段(如全局变量)来进行通 信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
  3. 调度和切换:线程上下文切换比进程上下文切换要快得多。
  4. 在多线程 OS 中,进程不是一个可执行的实体。

补充了解:

  • 一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线 程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序 执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提 供多个线程执行控制。
  • 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。 但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分 配。这就是进程和线程的重要区别。
  • 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行 资源分配和调度的一个独立单位.线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行 中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程 共享进程所拥有的全部资源.
  • 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.进程 和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路 径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于 整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程, 不能用进程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值