程序、进程、线程的区别联系与优缺点

程序

是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码。

进程

概念:程序的一次执行过程,或是正在运行的一个程序。
说明:进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域。

补充:

  • 在操作系统中可以有多个进程在运行,可对于CPU来说,同一时刻,一个CPU只能运行一个进程,但在某一时间段内,CPU将这一时间段拆分成更短的时间片,CPU不停地在各个进程间游走,这就给人一种并行的错觉,像CPU可以同时运行多个进程一样,这就是伪并行。

线程

概念:进程可进一步细化为多个线程,是一个程序内部的一条执行路径。
说明:线程作为CPU调度和执行的单位。

补充:

  1. 一个进程中的多个线程共享同一个进程中的结构:方法区、堆。
  2. 每个线程,拥有自己独立的:栈、程序计数器,线程切换的开销小。

进程的特点

  1. 动态性:可动态地创建和结束进程
  2. 并发性:可以被独立的调度并占用处理机并发运行
  3. 独立性:不同进程的工作不相互影响
  4. 制约性:因访问共享资源或进程间同步而产生制约

并行与并发

并行: 多个CPU同时执行多个任务。比如:多个人同时做不同的事。
并发: 一个CPU(采用时间片)同时执行多个任务。比如:秒杀、多个人做同一件事。

程序与进程的联系

  1. 程序是产生进程的基础
  2. 程序的每次运行产生不同的进程
  3. 进程是程序功能的体现
  4. 通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序

程序与进程的区别

  1. 进程是动态的,程序是静态的:程序是有序代码的集合,进程是程序的执行。
  2. 进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存。
  3. 进程和程序的组成不同:进程的组成包括程序、数据和进程控制块(进程状态信息)。

使用线程的原因

因为要并发编程,在许多情形中同时发生着许多活动,而某些活动有时候会被阻塞,通过将这些活动分解成可以准并行运行的多个顺序流程是必须的,而如果使用多进程方式进行并发编程,进程间的通信也很复杂,并且维护进程的系统开销较大:创建进程时分配资源建立PCB,撤销进程时回收资源撤销PCB,进程切换时保存当前进程的状态信息。所以为了使并发编程的开销尽量小,所以引入多线程编程,可以并发执行也可以共享相同的地址空间。并行实体拥有共享同一地址空间和所有可用数据的能力,这是多进程模型所不具备的能力。

线程的好处

  • 可以多个线程存在于同一个进程中

  • 各个线程之间可以并发的执行

  • 各个线程之间可以共享地址空间和文件等资源

  • 线程比进程更轻量级,创建线程撤销线程比创建撤销进程要快的多,在许多系统中,创建一个线程速度是创建一个进程速度的10-100倍。

  • 如果多个线程是CPU密集型的,并不能很好的获得更好的性能,但如果多个线程是IO密集型的,线程存在着大量的计算和大量的IO处理,有多个线程允许这些活动彼此重叠进行,从而会加快整体程序的执行速度。

线程的缺点

  • 一旦一个线程崩溃,会导致其所属进程的所有线程崩溃。

  • 由于各个线程共享相同的地址空间,那么读写数据可能会导致竞争关系,因此对同一块数据的读写需要采取某些同步机制来避免线程不安全问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线程进程都是操作系统中的基本概念,它们之间的区别如下: 1. 定义:进程是资源分配的最小单位,是程序在执行时的一个实例;线程进程中的一个执行单元,是CPU调度的最小单位。 2. 资源占用:进程拥有独立的内存空间、文件描述符、信号处理等系统资源,而线程共享进程的资源。 3. 创建和销毁:创建和销毁进程的代价比线程大,因为进程需要分配和释放独立的资源,而线程的创建和销毁代价相对较小。 4. 通信:由于线程共享进程的资源,因此线程之间的通信更加方便,而进程之间的通信则需要更为复杂的机制,如管道、消息队列、共享内存等。 优缺点进程的优点: 1. 稳定性高,一个进程崩溃不会影响其他进程的运行。 2. 安全性高,各个进程之间相互独立,不会相互干扰。 3. 灵活性高,可以使用多进程来实现多任务处理,每个进程处理不同的任务,可以充分利用多核CPU。 进程的缺点: 1. 资源消耗较大,创建进程需要分配独立的内存空间和系统资源,销毁进程需要释放这些资源。 2. 进程间通信较为复杂,需要使用IPC机制,如管道、消息队列、共享内存等。 线程的优点: 1. 资源消耗较小,创建和销毁线程的代价相对较小。 2. 线程间通信较为方便,可以直接访问进程中的共享变量。 3. 响应速度快,线程的切换比进程的切换快。 线程的缺点: 1. 稳定性较差,一个线程崩溃可能会影响整个进程。 2. 安全性较差,线程之间共享进程的资源,需要使用同步机制来保证线程安全。 3. 可能会出现死锁和竞争条件等并发问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值