进程和线程是什么?什么是进程什么是线程

2025-03-06 08:50:02 0

进程和线程是什么?什么是进程什么是线程

本文目录

进程和线程是什么

首先来一句概括的总论:进程和线程都是一个时间段的描述,是CPU工作时间段的描述。

下面细说背景:CPU+RAM+各种资源(比如显卡,光驱,键盘,GPS, 等等外设)构成我们的电脑,但是电脑的运行,实际就是CPU和相关寄存器以及RAM之间的事情。

一个最最基础的事实:CPU太快,太快,太快了,寄存器仅仅能够追的上他的脚步,RAM和别的挂在各总线上的设备完全是望其项背。那当多个任务要执行的时候怎么办呢?轮流着来?或者谁优先级高谁来?不管怎么样的策略,一句话就是在CPU看来就是轮流着来。

一个必须知道的事实:执行一段程序代码,实现一个功能的过程介绍 ,当得到CPU的时候,相关的资源必须也已经就位,就是显卡啊,GPS啊什么的必须就位,然后CPU开始执行。这里除了CPU以外所有的就构成了这个程序的执行环境,也就是我们所定义的程序上下文。当这个程序执行完了,或者分配给他的CPU执行时间用完了,那它就要被切换出去,等待下一次CPU的临幸。在被切换出去的最后一步工作就是保存程序上下文,因为这个是下次他被CPU临幸的运行环境,必须保存。

串联起来的事实:前面讲过在CPU看来所有的任务都是一个一个的轮流执行的,具体的轮流方法就是:先加载程序A的上下文,然后开始执行A,保存程序A的上下文,调入下一个要执行的程序B的程序上下文,然后开始执行B,保存程序B的上下文。。。。进程和线程就是这样的背景出来的,两个名词不过是对应的CPU时间段的描述,名词就是这样的功能。

  • 进程就是包换上下文切换的程序执行时间总和 = CPU加载上下文+CPU执行+CPU保存上下文

  • 线程是什么呢?进程的颗粒度太大,每次都要有上下的调入,保存,调出。如果我们把进程比喻为一个运行在电脑上的软件,那么一个软件的执行不可能是一条逻辑执行的,必定有多个分支和多个程序段,就好比要实现程序A,实际分成 a,b,c等多个块组合而成。那么这里具体的执行就可能变成:

    程序A得到CPU =》CPU加载上下文,开始执行程序A的a小段,然后执行A的b小段,然后再执行A的c小段,最后CPU保存A的上下文。

    这里a,b,c的执行是共享了A的上下文,CPU在执行的时候没有进行上下文切换的。这里的a,b,c就是线程,也就是说线程是共享了进程的上下文环境,的更为细小的CPU时间段。到此全文结束,再一个总结:进程和线程都是一个时间段的描述,是CPU工作时间段的描述,不过是颗粒大小不同。

什么是进程什么是线程

进程是系统中正在运行的一个程序,程序一旦运行就是进程。线程是进程的一个实体,是进程的一条执行路径。 进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等。

程序,进程和线程的区别

程序并不能单独执行,只有将程序加载到内存中,系统为他分配资源后才能够执行,这种执行的程序称之为进程,也就是说进程是系统进行资源分配和调度的一个独立单位,每个进程都有自己单独的地址空间。所以说程序与进程的区别在于,程序是指令的集合,是进程运行的静态描述文本,而进程则是程序在系统上顺序执行时的动态活动。但是进程存在着很多缺陷,主要集中在两点: (1).进程只能在同一时间干一件事情,如果想同时干两件事或多件事情,进程就无能为力了。 (2).进程在执行的过程中如果由于某种原因阻塞了,例如等待输入,整个进程就会挂起,其他与输入无关的工作也必须等待输入结束后才能顺序执行。为了解决上述两点缺陷,引入了线程这个概念。线程是进程的一个实体,也是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,有时又被称为轻权进程或轻量级进程,相对进程而言,线程是一个更加接近于执行体的概念,进程在执行过程中拥有独立的内存单元,而线程自己基本上不拥有系统资源,也没有自己的地址空间,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),线程的改变只代表了 CPU 执行过程的改变,而没有发生进程所拥有的资源变化。除了CPU 之外,计算机内的软硬件资源的分配与线程无关,但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。进程和线程的主要差别在于操作系统并没有将多个线程看作多个独立的应用,来实现进程的调度和管理以及资源分配。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些,对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程,每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口,但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

多线程的执行效率一定高于单线程吗

恰恰相反,多线程的执行效率一定低于单线程

多线程的目的并不在于提供CPU的执行效率,而且在于多个事务的准并行处理。

准并行的涵义在于并不是同时的,单核的CPU一个时刻只能执行一条机器指令。

多线程是将CPU的PC指针运行分解为非常小的时间片,将这些时间片分配在不同的进程,不同的线程之间运行。

这样CPU就不至于长时间堵塞在某一些事务中,导致其它事务没有办法处理。

比如某个软件在进行大数据的收发或者运算时,需要刷新显示界面以及人机交互。

假设数据的收发或者运算需要数秒时间,如果用单线程,在做数据处理的几秒时间内,没办法显示人机交互,则用户在界面上做操作,程序就没有任何响应。

如果用多线程,在数据处理线程处理了一段时间之后,CPU的指针暂停执行数据线程程序,转去执行界面处理程序,则用户做操作时,程序不至于没有响应。

采用多线程之后,由于线程本身创建和切换的开销,采用多线程不会提高程序的执行速度,反而会降低速度

进程和线程是什么?什么是进程什么是线程

本文编辑:admin

本文相关文章:


VC++中如何用多线程?VC++多线程的参数问题

VC++中如何用多线程?VC++多线程的参数问题

本文目录VC++中如何用多线程VC++多线程的参数问题vc 多线程,单步调试VC++中如何用多线程你说的是MFC吗?MFC可以用AfxBeginThread函数创建线程,可以把ThreadProc声明为类的静态成员函数,你会单线程下载页面,

2025年3月30日 07:00

完成端口与线程池的问题?为什么完成端口是win

完成端口与线程池的问题?为什么完成端口是win

本文目录完成端口与线程池的问题为什么完成端口是winIOCP是什么完成端口,到底一个CPU 建几个线程完成端口的重叠I/O完成端口与线程池的问题1、一般式cpu个数的2倍+2。2、select可以传入参数进行组合,包括FD_READ、FD_

2025年3月30日 01:20

java线程(如何学习Java多线程)

java线程(如何学习Java多线程)

本文目录如何学习Java多线程java多线程同时执行一个方法的时候为什么number和number2最后的值会不一样如何学习Java多线程JAVA中的多线程使用十分广泛,很多的JAVA框架都使用到了多线程,比如spring,mybatis,

2025年3月25日 12:20

ccriticalsection(MFC多线程写文件出现数据混乱)

ccriticalsection(MFC多线程写文件出现数据混乱)

本文目录MFC多线程写文件出现数据混乱ccriticalsection 用法 为什么是未定义标识符MFC多线程写文件出现数据混乱写文件很快的不太极端追求高实时性,不需要开新线程去写,可能还因为创建新线程还花更多的开销另外多线程执行顺序确实不

2025年3月6日 05:30

java 多线程面试(面试问 关于JAVA多线程,从哪些方面回答呢)

java 多线程面试(面试问 关于JAVA多线程,从哪些方面回答呢)

本文目录面试问 关于JAVA多线程,从哪些方面回答呢java 线程面试题java面试中经常被问到的问题有哪些java多线程runnable和thread的区别 面试题面试的时候都会问到多线程的问题,但实际很多项目并不会涉及到,那么java中

2025年2月19日 18:00

更多文章:


js代码优化(如何通过优化JS代码来适合网站优化)

js代码优化(如何通过优化JS代码来适合网站优化)

本文目录如何通过优化JS代码来适合网站优化代码优化是如何实现的js里怎么用循环优化代码如何优化js代码站内优化代码怎么优化JS代码为什么越优化越慢javascript优化有哪些如何优化javascript性能优化如何通过优化JS代码来适合网

2025年3月26日 14:30

怎么样做表格零基础(零基础学做表格要掌握哪些)

怎么样做表格零基础(零基础学做表格要掌握哪些)

本文目录零基础学做表格要掌握哪些怎么样做表格零基础零基础学做表格要掌握哪些其实任何的学习,掌握知识点背后的规律和规则,就能灵活使用,解决各种难题。所以对于Excel函数,我们只要熟知输入Excle函数公式时要注意的问题,构建函数学习的整体框

2025年2月19日 11:00

row是什么意思翻译(英语Row.Knees,ribs,knees怎么翻译)

row是什么意思翻译(英语Row.Knees,ribs,knees怎么翻译)

本文目录英语Row.Knees,ribs,knees怎么翻译row row row row your boat 的中文翻译Row, row,row your boat中文翻译find 3 in a row是什么意思中文翻译英语Row.Kne

2025年2月20日 07:50

绿色资源网破解版下载(红包猎手为什么总要收费怎样才能做到永久VIP)

绿色资源网破解版下载(红包猎手为什么总要收费怎样才能做到永久VIP)

本文目录红包猎手为什么总要收费怎样才能做到永久VIP绿色资源网很多破解游戏为什么没有破解谁能给个ps下载地址要绿色网站的,破解版的红包猎手为什么总要收费怎样才能做到永久VIP不需要,激活一次就可以了,如果显示未授权,重启一下手机就可以包猎手

2025年3月3日 16:40

androidlistview(android 中listview是怎么用的)

androidlistview(android 中listview是怎么用的)

本文目录android 中listview是怎么用的android ListView用法和属性android 中listview 的用法android listview 控件在什么位置android listview怎么更新数据androi

2025年4月3日 10:30

excel vba 教程(Excel怎么用VBA)

excel vba 教程(Excel怎么用VBA)

本文目录Excel怎么用VBAexcel怎么使用vba代码隐藏行Excel怎么用VBA操作步骤/方法1.打开电脑上的Excel新进一个空白工作蒲。2.右键点击下方菜单栏中的sheet1,选择查看代码。3.在这里就可以打开VBA的界面,即可使

2025年4月2日 08:30

log函数运算公式换底公式(log换底公式是什么)

log函数运算公式换底公式(log换底公式是什么)

本文目录log换底公式是什么log函数加减运算log换底公式是对数函数的换底公式是什么log换底公式是什么log换底公式是:loga(N)=logb(N)/logb(a)。证明:loga(N)=x,则a^x=N,两边取以b为底的对数,log

2025年3月27日 05:40

attribute的意思(attribute是什么意思及反义词)

attribute的意思(attribute是什么意思及反义词)

本文目录attribute是什么意思及反义词attribute和property在英语里有什么区别feature和attribute的区别attribute和property的区别什么是Attributeattribute是什么意思及反义词

2025年2月10日 11:50

flex教程(flex2中文云端怎么用/flex2中文云端源/flex2中文云端源使用图文教程)

flex教程(flex2中文云端怎么用/flex2中文云端源/flex2中文云端源使用图文教程)

本文目录flex2中文云端怎么用/flex2中文云端源/flex2中文云端源使用图文教程java+flex项目如何下手,步骤和思路(详细点)哪位高手帮忙解决下多谢flex4 推荐教程想要学flex,请大家帮忙flex教程给推荐个82flex

2025年3月18日 17:00

atmosphere期刊(如何写cover letter)

atmosphere期刊(如何写cover letter)

本文目录如何写cover letteratmosphere-basel 是sci期刊吗温室效应 期刊论文atmosphere期刊难吗如何写cover letter写好Cover letter需要做到如下几步:1、逻辑要清晰COVER LET

2025年3月29日 22:20

table array(在Excel中vlookup函数中table_array问题)

table array(在Excel中vlookup函数中table_array问题)

本文目录在Excel中vlookup函数中table_array问题table,array,分别是什么意思vlookup函数中的table array是4个英文字母代表什么含义函数vlookuP中Table_array 为ts是什么意思ta

2025年2月25日 08:20

translational oncology(Stanford 医学院招AI相关postdoc是哪个老师)

translational oncology(Stanford 医学院招AI相关postdoc是哪个老师)

本文目录Stanford 医学院招AI相关postdoc是哪个老师translational research是什么意思Translational Oncology 影响因子是SCI收录吗translational oncology 是什么

2025年3月9日 08:50

asp编程需要什么系统要装什么软件吗?编程语言的ASP

asp编程需要什么系统要装什么软件吗?编程语言的ASP

本文目录asp编程需要什么系统要装什么软件吗编程语言的ASP怎么样用ASP 编程ASP 编程中参数传递的几种方法ASP编程和C语言哪个简单各个编程语言都有哪些“黑点”ASP.net 用什么编程软件编写比较好asp 的开发工具有那些ASP软件

2025年2月25日 22:40

oracle官网地址(oracle数据库的jdbc驱动在哪下载最好是具体的网址)

oracle官网地址(oracle数据库的jdbc驱动在哪下载最好是具体的网址)

本文目录oracle数据库的jdbc驱动在哪下载最好是具体的网址求oracle数据库下载地址好的话追加50分谢谢如何查询鉴别Oracle证书真伪和网上验证地址如何查询Oracle授权的WDP中心呐要官方授权,最好是从Oracle官方网站上能

2025年3月15日 08:20

内存溢出异常(电脑软件使用某一程序,有时会报 内存溢出错误out of memory)

内存溢出异常(电脑软件使用某一程序,有时会报 内存溢出错误out of memory)

本文目录电脑软件使用某一程序,有时会报 内存溢出错误out of memorypython如何处理内存溢出内存溢出和创建小数组的溢出异常问题,怎么解决内存溢出错误怎么解决电脑软件使用某一程序,有时会报 内存溢出错误out of memory

2025年2月16日 21:50

源码汇app下载安卓晒(汇编源码下载)

源码汇app下载安卓晒(汇编源码下载)

本文目录汇编源码下载如何破解安装软件的源代码android记账软件的汇总源码怎么实现汇编源码下载附件源码是我学习汇编语言些的源码,有详细的注释如何破解安装软件的源代码根据楼主的要求:楼主想要破解软件,建议楼主 下载IDA PRO 反汇编工具

2025年2月24日 06:20

算天数的软件(什么软件可以记录天数)

算天数的软件(什么软件可以记录天数)

本文目录什么软件可以记录天数有一种软件,它的天数会自己一天一天的加的,就是你要计算你和谁处了多长时间的,哪种软件叫什么记天数的软件是什么计算天数的软件叫什么很火记情侣天数的软件是什么什么软件可以记录天数回答1、倒数日APP倒数日是凡跃计算机

2025年3月22日 04:10

while语句循环的结构(while循环结构的语法和执行顺序是什么)

while语句循环的结构(while循环结构的语法和执行顺序是什么)

本文目录while循环结构的语法和执行顺序是什么for, while,do-while循环语句的各个特点JAVA中关于while循环的用法while循环结构的语法和执行顺序是什么语法:while(判断条件){执行语句},先判断是否满足判断条

2025年3月26日 14:20

related videos(related videos是什么意思)

related videos(related videos是什么意思)

本文目录related videos是什么意思Related Videos是什么意思JAVA的问题:给你一个数组A,数组A中有五个无序的元素,例int A[]={5,3,1,4,2}; 再给你个数组B,把数组A的致伤 名词解释 relate

2025年2月11日 19:50

表格制作教程入门视频免费(电脑上怎么制作表格视频教程)

表格制作教程入门视频免费(电脑上怎么制作表格视频教程)

本文目录电脑上怎么制作表格视频教程WPS表格制作视频教程制作表格教程基础入门+视频教程电脑上怎么制作表格视频教程回答你好 打开Excel,双击新建一个Excel表格。2、选中要新建表格的区域,单击鼠标右键,选择“设置单元格格式”。3、在弹出

2025年3月10日 05:10

近期文章

本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索