程序和进程和线程的区别是什么?

进程是操作系统资源分配的基本单位,线程是任务调度执行基本单位(CPU的基本调度单位),程序是静态的指令集合,而进程是运行中的指令集合。 进程:程序的一次执行,

答法1:
进程间切换代价大,线程间切换代价小

进程拥有资源多,线程拥有资源少

多个线程共享进程的资源

进程是分配资源的基本单位,而线程是独立运行和调度的基本单位。

任意时刻,一个CPU只能运行一个进程,进程获得资源后进行分配,由不同的线程来执行和协作。

进程的内存空间一般是独立的,而线程的内存空间一般是共享的,线程间的同步是为了防止竞争(因同时修改导致数据的不一致),所以要使用互斥锁,防止多个线程同时读写某一块内存区域。 还有的内存区域只允许固定个数的线程进入,就要使用信号量,防止线程之间产生冲突。

互斥锁止允许一个线程进入临界区,而信号量允许多个线程同时进入临界区。

答法2:
a地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中
Socket和Streams支持不同主机上的两个进程IPC。

c.调度和切换:线程上下文切换比进程上下文切换要快得多。

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

程序:

程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的有序集合。

程序(这里和前边指的是包含了线程,进程,程序的抽象概念)有顺序执行(顺序性,只有前一操作结束后才能执行后续操作;封闭性,程序一旦运行,其执行结果不受外界因素的影响;可再现性,输入条件相同,其结果一定相同),并发执行(间断性,失去封闭性,不可再现性,总体来说就是虽然提高了效率,但程序输出的结果变得不可预料,结果不光和输入有关还和cpu有关),并行执行(相互独立,异步)三种方式。

应用程序(这里指的是进程,例如迅雷,QQ,浏览器等)之间一般是并发执行的,一个线程(比如java程序,一个主方法就是一个线程)内是顺序执行的,多个线程(比如java程序,通过主方法创建其余thread对象,从而让jvm创建多个线程,这里要知道jvm本身就是一个程序,一个进程)之间可以顺序也可以并发执行。

进程:

进程是程序的一次执行过程。

进程具有五个基本特征:动态性(一是体现在 进程是程序这个静态实体的执行过程;二是体现在进程由创建而产生,由调度而执行,由得不到资源而暂停执行,由撤销而消亡,这是一个生命周期), 并发性(多个进程存在于内存中,可以在一段时间内同时运行),独立性,异步性,结构性(进程由程序段,数据段,进程控制块PCB三部分组成,这三部分统称为“上下文”) 进程三种基本状态:就绪状态(除了处理器,也就是cpu外已分配到所有必要资源,只要获得cpu就能执行,系统里有就绪队列),等待状态(因发生某些事件而无法执行时,释放cpu,进入等待队列,等事件结束后进入就绪队列),执行状态(已获得cpu,程序正在执行)

进程和程序的区别:

(1)程序是永存的,是静态的,本身只是一组有序指令的集合,保存在硬盘上,除非手动删除掉,否则永远存在;进程是暂时的,是动态的,进程是程序在数据集上的一次执行,有创建有撤销,具备生命周期,存在是暂时的;

(2)进程(运行中的程序)能并发执行,而程序(静态实体)不能并发执行(程序并不能单独执行,只有将程序加载到内存中,系统为他分配资源后才能够执行,这种运行中的程序称之为进程)。
(3)进程和程序不是一一对应的:
一个程序可对应多个进程(即多个进程可执行同一程序,一个程序运行在不同数据集上就构成了不同进程,比如***QQ);一个进程可以执行一个或几个程序(最典型的例子就是几乎所有程序都需要显卡驱动进程支持)

线程:线程是进程的一个实体。

线程也具有动态性(也具备生命周期),并发性,拥有自己的线程控制块TCB,一个线程可创建另一个线程(例如java主方法创建多个thread线程对象),在同一进程内各线程共享同一地址空间(即所属进程的内存空间),一个进程的线程在另一进程内不可见。 相对进程而言,线程是一个更加接近于执行体的概念,进程在执行过程中拥有独立的内存单元,而线程自己基本上不拥有系统资源,也没有自己的地址空间,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和线程栈)。

线程和进程的区别:

答法3:
1.从底层来说,进程=cpu加载上下文+cpu执行+cpu保存上下文,线程=(在共享进程的上下文的基础下,将程序的实现分为多个程序段来执行,每个程序段就被称为线程),也就是说线程和进程都是cpu工作时间段的描述,只不过线程的cpu工作时间段小,进程的cpu工作时间段大。

2.在同一进程中的不同线程共享相同的地址空间,而不同的进程则在内存中有独立的地址空间。因此线程可以读写同样的数据结构和变量,便于线程之间的通信。相反,进程间通信(IPC)很困难且消耗更多资源。

3.一个线程死掉就等于整个进程死掉,而一个进程死掉,由于保护机制,其他进程不受影响,所以多进程的程序要比多线程的程序健壮(稳定)。
4.一个进程可包含多个线程,线程属于进程。
5.线程是调度(获得的cpu的所有权)的基本单位,进程是资源分配的基本单位。

程序和进程和线程的区别是什么?相关推荐

  1. 进程和线程的区别是什么

    进程和线程的区别是什么?有什么关系?相信大家对于进程都很熟悉了吧,而线程相对于进程而言,是一个更加接近于执行体的概念,为了让大家更好的了解进程和线程,下面给大家介绍进程和线程的区别和联系. 进程 进程 ...

  2. linux 中线程是什么意思,Linux中进程与线程的区别是什么

    Linux中进程和线程的区别是什么?我相信很多没有经验的人对此无能为力.因此,本文总结了问题产生的原因及解决方法.希望你能通过这篇文章解决这个问题. Linux中进程和线程的对比与区别 1.概念 进程 ...

  3. linux中的进程与线程,linux中进程和线程的区别是什么

    linux中进程和线程的区别是:1.一个程序至少有一个进程,一个进程至少有一个线程:2.线程的划分尺度小于进程:3.进程在执行过程中拥有独立的内存单元,而多个线程共享内存. 进程与线程的定义 (推荐学 ...

  4. Java的知识点25——程序、进程与线程 || 线程的创建和启动

    程序.进程与线程 进程的特点:动态性.并发性.独立性 并发和并行的区别 并发:多个CPU同时执行多个任务 并行:一个CPU(采用时间片)同时执行多个任务 注:很多多线程是模拟出来的,真正的多线程是指有 ...

  5. 程序、进程、线程之间的区别

    1.   .net的公共语言运行时(CLR)能够区别两种不同类型的线程:前台线程和后台线程.前台线程与后台线程的区别: 应用程序必须运行完所有的前台线程才可以退出.而对于后台线程,应用程序则可以不考虑 ...

  6. linux知识(一) 程序、进程与线程

    linux知识(一) 程序.进程与线程 程序 进程 程序如何变成进程? 线程 线程与进程 fork和创建新线程的区别 优点 程序 程序:程序是已编译好的二进制文件,存储在磁盘中,不占用系统资源 程序包 ...

  7. 线程知识点(一)—— 程序、进程、线程之间的区别与联系、Java的线程状态和生命周期

    1 程序.进程.线程之间的区别与联系 三者之间的形象化理解: * 程序:代码实现了功能,就是程序,是静态的: * 进程:执行中的程序就是进程,是动态的: * 线程:进程内的一个执行单元,也是进程内的可 ...

  8. 爬虫:程序_进程_线程_多线程(案例多线程下载壁纸)

    目录 前言 一.什么是程序_进程_线程? 二.实现多线程的方法 继承方式实现多线程 为什么要是用类的方式创建线程: 线程的一些常用方法: 三.多线程访问全局变量的安全性问题: 什么是线程安全: 四.解 ...

  9. Linux--进程和计划任务管理 理论干货+实操(程序,进程,线程之间关系的详解,静态与动态查看进程方式,控制进程的 方式,一次性任务与周期性任务的设置)

    文章目录 前言 一:程序,进程,线程之间的关系 1.1:进程概述 1.2:应用程序,进程和线程的关系 1.2.1:程序和进程的关系 1.2.2:进程和线程的关系 二:查看进程 2.1:静态查看 ps命 ...

最新文章

  1. 关于学习Python的一点学习总结(46->属性访问)
  2. 在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决
  3. c莫比乌斯函数_代佳璇缘起一条莫比乌斯环,我爱上了难缠的数学!
  4. python 调用c++
  5. android用户界面-组件Widget-常用组件
  6. 学JS的心路历程 -函式(三)this
  7. 在java web工程中jsp页面中使用kindeditor
  8. 科技论文----论搜索引擎现状及发展趋势
  9. php怎么选择路径,利用php+mcDropdown实现文件路径可在下拉框选择
  10. 吴恩达 深度学习 编程作业(2-3)- TensorFlow Tutorial
  11. 韩信点兵问题(C语言)
  12. Android xml 画上半圆 矩形,Android 半圆矩形的实现
  13. int int int * int**的区别、联系和用途
  14. tf.to_bfloat16
  15. 生产日期当天算一天吗,保质期算当天吗 保质期最后一天算过期吗
  16. 基于深度学习的两种信源信道联合编码
  17. 解读LM79测试项目及LM80的区别
  18. 奥塔在线:Centos7下NTP服务的详细部署说明
  19. 《西河大鼓——杨家将(定计)》(唱词文本)
  20. | UML(Jude)

热门文章

  1. 【ChatGPT4】王老师零基础《NLP》(自然语言处理)第一课
  2. request与response的用法
  3. nalu格式annex-B和avcc
  4. Java中如何保证线程安全性
  5. 报名进行时!邀您一起海外社媒会话跨境直播,实地探访MCN机构
  6. CSS中的透明度设置
  7. 搬运工-白嫖-docker
  8. js根据name获取所有的值
  9. Opencv实现hwc到chw(归一化、减均值、除方差)重磅封装版
  10. 循序渐进理解RTFM算法