进程、线程、程序的概念与区别

一、程序、进程、线程的概念:

1.程序:是指一组指示计算机或其他具有信息处理能力装置执行动作或做出判断的指令,通常用某种程序设计语言编写,运行于某种目标计算机体系结构上。

2.进程:是计算机中的软件程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,是系统分配资源和调度的基本单位,也就是说进程可以单独运行一段程序。

3.线程:是进程中的一个实体,是被系统独立调度和分派的基本单位,是CPU调度和分派的最小基本单位,线程自己不拥有操作系统资源,但是该线程可与同属进程的其他线程共享该进程所拥有的全部资源。

4.进程是程序的实体,而线程又是进程的实体。进程又是线程的容器。

二、程序、进程、线程三者区别如下:

1.程序:程序并不能单独执行,是静止的,只有将程序加载到内存中,系统为其分配资源后才能够执行。

2.进程:程序对一个数据集的动态执行过程,一个进程包含一个或者更多的线程,一个线程同时只能被一个进程所拥有,进程是分配资源的基本单位。进程拥有独立的内存单元,而多个线程共享内存,从而提高了应用程序的运行效率。

3.线程:线程是进程内的基本调度单位,线程的划分尺度小于进程,并发性更高,线程本身不拥有系统资源,但是该线程可与同属进其他线程共享该进程所拥有的全部资源。每一个独立的线程,都有一个程序运行的入口、顺序执行序列和程序的出口。

4.进程、线程区别

1.一个进程可以包含至少一个线程,一般来说也就是主线程,而一个线程只能属于一个进程;
2.进程拥有独立的内存,而线程没有独立的资源空间, 只是暂时存储在计数器,寄存器,栈中,同一个进程间的线程可以共享资源。
3.将代码放入到代码区之后,进程产生,但还没执行,我们所说的执行一般是是主线程main函数开始执行。
4.进程比线程更加消耗资源
5.进程对资源的保护要求高,而线程要求不高
6.进程是处理器这一层面的抽象,而线程是进程的基础上进一步并发的抽象
7.同一个进程下,一个线程的挂掉,会导致整个进程的挂掉,而进程之间不会相互影响
8.总的来说:我们都知道程序不能单独运行,只有将它放入内存中,分配资源才能运行,程序是指令的集合,而进程是程序的一次执行活动,属于动态概念
9.我们可以打个比方:进程相当于某一个大型项目,世界上可能有人同时在做这个项目,有其独特的方式;而线程就相当于这个项目下的一些程序员,多个程序员去完成这一个项目肯定要比一个人完成快的多,也就是能在同一时间操作。

5.每个应用程序都使用一块内存区域,这个内存区域可以称为一个进程,内存区域中是需要执行代码的,具体执行代码就是线程去执行的。 注意:进程只是负责开辟内存空间的,线程才是负责执行代码逻辑的执行单元。

三、多进程、多线程的区别如下:

1.多进程:每个进程互相独立,不影响主程序的稳定性,某个子进程崩溃对其他进程没有影响,通过增加CPU可以扩充软件的性能,可以减少线程加锁/解锁的影响,极大提高性能。缺点是多进程逻辑控制复杂,需要和主程序交互,需要跨进程边界,进程之间上下文切换比线程之间上下文切换代价大。

2.多线程:无需跨进程,程序逻辑和控制方式简单,所有线程共享该进程的内存和变量等。缺点是每个线程与主程序共用地址空间,线程之间的同步和加锁控制比较麻烦,一个线程的崩溃会影响到整个进程或者程序的稳定性。

四、互斥锁、信号量

1.互斥锁:同一个进程下,当某个线程使用进程的共享资源时,其他线程必须等待该线程结束
2.信号量:进程拥有同一时间最大访问数量

五、单线程和多线程

线程:是进程中的一个执行控制单元,执行路径。
一个进程中至少有一个线程在负责控制程序的执行。
一个进程中如果只有一个执行路径,这个程序称为单线程程序。
一个进程中如果有多个执行路径时,这个程序就称为多线程程序。

单线程和多线程有什么区别呢? 
举一个火车站卖票的例子。 
一个窗口卖票的时候效率就太低了,如果同时有上百个窗口卖票,这个时候效率就高了。
多线程最明显的效率就是提高执行效率。 多线程的出现可以有多条执行路径,让多部分代码可以同时执行,来提高效率。

参考地址:

https://www.csdn.net/tags/OtDaUgwsNzg5NzEtYmxvZwO0O0OO0O0O.html
https://www.yisu.com/zixun/246171.html

  • 11
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
进程线程是操作系统中的两个基本概念,它们都是用来执行程序的执行单元,但在一些方面有着明显的区别。 1. 进程(Process): - 进程程序在执行过程中的一个实例。 - 每个进程都有自己的独立内存空间,包括代码段、数据段和堆栈段。 - 进程之间相互独立,拥有各自的资源,通信需要通过进程间通信(IPC)机制。 - 进程拥有自己的进程控制块(PCB),用于描述进程的状态、资源和调度信息。 2. 线程(Thread): - 线程进程中的一个执行单元。 - 多个线程可以共享同一个进程的内存空间,包括代码段、数据段和堆栈段。 - 线程之间共享进程的资源,如打开的文件、信号处理等。 - 线程线程控制块(TCB)来描述,每个线程有自己的栈和寄存器上下文。 区别: 1. 资源占用:每个进程都有独立的内存空间和系统资源,而线程共享进程的资源。 2. 创建销毁开销:创建或销毁进程线程开销大,因为进程需要分配独立的内存空间和系统资源,而线程只需要创建线程控制块。 3. 切换开销:进程切换的开销较大,需要保存和恢复整个进程的上下文,而线程切换只需要保存和恢复线程的上下文。 4. 通信和同步:进程间通信需要使用进程间通信机制,如管道、消息队列等。线程间通信和同步相对容易,可以使用共享内存、信号量、互斥量等机制。 总结: 进程线程都是用于执行程序的执行单元,但进程是资源分配的基本单位,线程是CPU调度的基本单位。多线程比多进程更轻量级,线程之间的切换开销更小,但进程之间相互独立,安全性更高。在实际应用中,需要根据具体需求选择使用进程还是线程

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值