问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

进程和线程关系与区别

发布网友 发布时间:2022-04-21 04:56

我来回答

3个回答

懂视网 时间:2022-04-22 17:19

本篇文章给大家带来的内容是关于浏览器的进程与线程的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

进程

进程是cpu的资源分配的最小单位。

多进程:多进程指的是在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态。多进程带来的好处是明显的,比如你可以听歌的同时,打开编辑器敲代码,编辑器和听歌软件的进程之间丝毫不会相互干扰。

浏览器是多进程的,浏览器的进程主要包括以下几种:

  1. Browser进程:浏览器的主进程(负责协调,主控)

  2. 第三方插件进程:每种类型的插件对应一个进程,仅当使用该插件时才创建

  3. GPU进程:最多一个,用于3D绘制

  4. 浏览器渲染进程(内核):默认每个Tab页面一个进程,互不影响,控制页面渲染,脚本执行,事件处理等(有时候会优化,如多个空白tab会合并成一个进程)

在浏览网页时,同时打开几个新的页面, 这就要打开几个浏览窗口,但一旦开启十几个窗口,整个计算机就会越来越慢。

多进程浏览器的优点

避免页面渲染影响整个浏览器

避免第三方插件影响整个浏览器

多进程充分利用多核优势

方便使用沙盒模型隔离插件等进程,提高浏览器稳定性

通俗的讲,就是用户打开多个窗口,如果其中一个窗口崩掉了,也不会影响整个浏览器,其他的界面照样正常运行

线程

  • 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;

  • 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号)。

  • 浏览器的渲染进程(浏览器内核),是多线程的,主要以下几大类:

    1. GUI线程

    2. Javascript引擎线程

    3. 事件触发线程

    4. 定时器线程

    5. 网络请求线程

    GUI线程

    负责渲染浏览器界面HTML元素,当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行。在Javascript引擎运行脚本期间,GUI渲染线程都是处于挂起状态的,也就是说被”冻结”了.

    Javascript引擎线程

    也可以称为JS内核,主要负责处理Javascript脚本程序,例如V8引擎。Javascript引擎线程理所当然是负责解析Javascript脚本,运行代码。

    Javascript是单线程的

    这是因为Javascript这门脚本语言诞生的使命所致:JavaScript为处理页面中用户的交互,以及操作DOM树、CSS样式树来给用户呈现一份动态而丰富的交互体验和服务器逻辑的交互处理。如果JavaScript是多线程的方式来操作这些UI DOM,则可能出现UI操作的冲突; 如果Javascript是多线程的话,在多线程的交互下,处于UI中的DOM节点就可能成为一个临界资源,假设存在两个线程同时操作一个DOM,一个负责修改一个负责删除,那么这个时候就需要浏览器来裁决如何生效哪个线程的执行结果。当然我们可以通过锁来解决上面的问题。但为了避免因为引入了锁而带来更大的复杂性,Javascript在最初就选择了单线程执行。

    GUI 渲染线程 与 JavaScript引擎线程互斥!

    由于JavaScript是可操纵DOM的,如果在修改这些元素属性同时渲染界面(即JavaScript线程和UI线程同时运行),那么渲染线程前后获得的元素数据就可能不一致了。因此为了防止渲染出现不可预期的结果,浏览器设置GUI渲染线程与JavaScript引擎为互斥的关系,当JavaScript引擎执行时GUI线程会被挂起,GUI更新会被保存在一个队列中等到引擎线程空闲时立即被执行。

    JS阻塞页面加载

    由于GUI渲染线程与JavaScript执行线程是互斥的关系,当浏览器在执行JavaScript程序的时候,GUI渲染线程会被保存在一个队列中,直到JS程序执行完成,才会接着执行。因此如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。

    定时触发器线程

    浏览器定时计数器并不是由JavaScript引擎计数的, 因为JavaScript引擎是单线程的, 如果处于阻塞线程状态就会影响记计时的准确, 因此通过单独线程来计时并触发定时是更为合理的方案。

    事件触发线程

    当一个事件被触发时该线程会把事件添加到待处理队列的队尾,等待JS引擎的处理。这些事件可以是当前执行的代码块如定时任务、也可来自浏览器内核的其他线程如鼠标点击、AJAX异步请求等,但由于JS的单线程关系所有这些事件都得排队等待JS引擎处理。

    异步http请求线程

    在XMLHttpRequest在连接后是通过浏览器新开一个线程请求, 将检测到状态变更时,如果设置有回调函数,异步线程就产生状态变更事件放到 JavaScript引擎的处理队列中等待处理。

    热心网友 时间:2022-04-22 14:27

    进程

        进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

    线程

        线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

    热心网友 时间:2022-04-22 15:45

    进程是指运行中的应用程序,每一个进程都有自己独立的内存空间。一个应用程序可以同时启动多个进程。例如对于IE浏览器程序,每打开一个IE浏览器窗口,就启动了一个新的进程。同样,每次执行JDK的java.exe程序,就启动了一个独立的Java虚拟机进程,该进程的任务是解析并执行Java程序代码。
    线程是指进程中的一个执行流程,有时也称为执行情景。一个进程可以由多个线程组成,即在一个进程中可以同时运行多个不同的线程,它们分别执行不同的任务。当进程内的多个线程同时运行时,这种运行方式称为并发运行。许多服务器程序,如数据库服务器和Web服务器,都支持并发运行,这些服务器能同时响应来自不同客户的请求。
    进程和线程的主要区别在于:每个进程都需要操作系统为其分配独立的内存地址空间,而同一进程中的所有线程在同一块地址空间中工作,这些线程可以共享同一块内存和系统资源,比如共享一个对象或者共享已经打开的一个文件。
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    八个月孕妇痔疮怎么办 怀孕痔疮严重怎么缓解 孕妇能割痔疮吗 孕37周痔疮严重怎么办 孕37周痔疮可以顺产吗 怀孕晚期痔疮严重怎么办 我打开网上邻居,里面变成空的了,以前打开就有“宽带连接”和“本地连 ... 单位有些电脑打开网上邻居没东西显示是为什么? 生产线称重 梦比优斯奥特曼第35集19:38秒时,希卡利站起来时的那个背景音乐是... 梦比优斯奥特曼中希卡利出现时的音乐 进程和线程之间的区别与联系? 进程和线程的区别以及联系 举例说明线程与进程的区别与联系 手机怎么清理缓存 怎么清理手机里的缓存 手机怎么清楚缓存 如何清除手机营业厅的缓存? 允许完全访问在哪里 上海商骞商业管理合伙企业(有限合伙)怎么样? 幽游白书出招表 现在重庆考驾照大概多少钱?有推荐的驾校吗? 考驾照除了4000学费,还有什么费 重庆市九龙坡区科目二金凤考场合场费是多少? 驾校考试费和场地费是不是同一个 重庆B2科三合场费多少?可以自己去买吗! 学车费用全包在里面,中间还要交钱吗? 考驾照合场费交几次 404 Not Found 重庆大学城科目二合场费多少? 科目二合场费用你们都是多少 线程和进程的区别联系 线程和进程的区别 线程与进程有什么区别,它们之间又有什么联系? 进程和线程的定义,区别与联系 线程和进程的区别? 线程和进程的区别是什么 程序,进程,线程三者之间的区别和联系 进程和线程之间的区别和联系 CPU的线程和进程的线程有什么区别和联系? 简述进程和线程的区别 进程和线程区别 程序、进程、线程、作业的区别和联系? 鎴戠殑镓嬫満鏉ョ湅杩囦简..是什么意思 404 Not Found 我的qq被人改密码,手机绑定也给改了,怎么办? 起名,女孩,2008年7月出生,属鼠,鼠喜木,五行缺木 我女儿姓邱属鼠2008/8/17(农历7/17)中午12:20点出生,算命说她五行缺木,希望大伙能帮忙取个带木的好名 五行缺木的女孩名字 属鼠 陈姓属鼠五行缺木的女孩好名字大全? 姓袁属鼠女孩缺木名字2020怎么取?