linux学习—进程,程序和线程的解释及区别

前言:本篇博客主要包含三个部分,分别为:

  1. 程序,进程和线程的详解
  2. 程序,进程和线程的特征
  3. 进程和线程的区别

ps:本篇博客是博主查看众多相关博客和有关章节的书籍,对其进行总结,会尽可能用最简洁的话语和说明讲清楚这几个知识点。
1.程序:什么是程序呢,一句话来讲就是:程序是一种包含可执行代码的静态文件。
2.进程:进程由程序产生,是动态的,是一个运行着的,要占用系统运行资源的基本单位。
3.线程:定义如下在这里插入图片描述
举个例子来说:qq代码文件就是程序,电脑打开qq的过程就是进程实现的过程,qq中的多个聊天窗口就是线程。
总结:简单可以理解来说,进程由程序产生,线程由进程产生,进程是系统分配资源的基本单位,进程是cpu调度和分派的基本单元。程序的运行最终是cpu通过调用线程来实现的。

二:程序,进程,线程的特征
程序:
静态性,本身就是一种静态文件。
非独立性:程序不可以独自运行,所以也就没有了异步性和并发性。
永久性:程序是永久性的,但进程是暂时性的。
进程:在这里插入图片描述
线程:
独立性:和进程一样,都是可以独立运行的
并发性:各个进程之间也是可以并发进行的,但进程之间是互不影响的,倘若一个进程出现问题,则其他的进程不会被影响,但线程因为共享一个进程拥有的资源,所以当一个线程停止时,其他的线程也就不运行了。
线程是比进程还小的可以独自运行的基本单位

三: 进程和线程的区别:
1.进程是系统分配资源的基本单位,线程是系统调度和分派的基本单位。
2.系统产生一个进程消耗的资源远远大于产生一个线程的资源,这也就是为什么线程出现的原因了。
3.进程占用的系统资源比进程多。
4.进程,独立运行互不影响,但线程之间因为共享一个进程的资源,所以是当一个线程坏掉的时候,其他线程也会停止。
5.线程之间通信更方便,同一个进程下,线程共享全局变量,静态变量等数据,进程之间的通信需要以通信的方式(IPC)进行(但多线程程序处理好同步与互斥是个难点)。
6.进程对资源保护要求高,开销大,效率相对较低,线程资源保护要求不高,但开销小,效率高,可频繁切换;
7.CPU切换一个线程比切换进程花费小。

总结:简单来说,程序至少有一个进程,进程至少有一个线程。也就是当一个程序要运行时,基本流程会是这样,先将程序加载到内存中,这个时候就会形成进程,系统会分配给进程资源和地址空间,线程之间又会共享进程的资源,最后,系统对线程进行调度和分派,实现程序的运行。

有什么问题,欢迎留言交流!

Guess you like

Origin blog.csdn.net/weixin_44431280/article/details/99295677