• 进程与线程


    进程

    1、概念:进程就是正在运行的程序,它会占用对应的内存区域,由CPU进行执行与计算。

    2、进程的特点

    • 独立性
      进程是系统中独立存在的实体,它可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间,在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间
    • 动态性
      进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合,程序加入了时间的概念以后,称为进程,具有自己的生命周期和各种不同的状态,这些概念都是程序所不具备的
    • 并发性
      多个进程可以在单个处理器CPU上并发执行,多个进程之间不会互相影响.

    线程

    线程是操作系统OS能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。
    一个进程可以开启多个线程,其中有一个主线程来调用本进程中的其他线程。
    我们看到的进程的切换,切换的也是不同进程的主线程
    多线程可以让同一个进程同时并发处理多个任务,相当于扩展了进程的功能。

    进程与线程的区别与联系

    进程是资源分配的最小单位,线程是CPU调度的最小单位。
    我们做一个简单的比喻,进程比喻火车,线程比喻车厢.

    • 第一、我们线程是在进程下行进的,单纯的车厢是无法运行的,一辆火车可以有多个车厢
    • 第二、一个进程可以包含多个线程,一辆火车里面有多节车厢
    • 第三、不同进程间数据很难共享,一辆火车上的乘客很难换到另一辆火车上,比如只能通过站点换乘
    • 第四、同一个进程下,同一个进程很容易共享资源,a车厢换到b车厢就比较容易
    • 第五、进程要比线程消耗更多计算机资源,采用多辆火车相较于多个车厢更消耗资源
    • 第六、我们进程间不会相互影响,一个线程挂掉将导致整个进程挂掉,一列火车不会影响到另一辆火车,但是如果一辆火车中间一个车厢着火将影响所有车厢

    浏览器的进程

    浏览器有多线程的,也有单线程的 火狐是单线程,chorme是多线程的 每打开一个浏览窗口都是一个进程。浏览器的运行一定是多线程的。

    浏览器的四大进程

    **浏览器进程:**浏览器的主进程,只有一个
    **第三方插件进程:**每种类型的插件对应一个进程,只有使用插件时,才创建
    GPU(graphics processing unit 图形处理器)进程:负责整个页面的渲染,实现3D效果,只有一个
    渲染进程:核心任务是将html、css、js转成用户可以进行交互的网页

    浏览器的线程

    渲染进程包含的线程:

    GUI渲染线程:负责渲染界面,解析html和css,构建DOM树,CSSOM树,渲染树,和绘制页面,重绘和回流也是在该线程执行
    js引擎线程:一个tab页面只有一个js引擎线程(单线程),负责解析和执行js,他和GUI渲染线程是互斥的,页面渲染遇到script标签就会停止渲染,交给js引擎线程,浏览器之所以遇到script标签就先执行js代码,是因为js的内容可能会影响到dom树的结构,不至于发生页面混乱。
    计时器线程:指的是setTimeout和setInterval,因为js引擎线程是单线程的,如果出现阻塞,会发生计时不准,所以需要单独的线程完成计时器的工作
    异步http请求线程:XMLHttpRequest连接后浏览器开的一个线程,如果请求有回调函数,异步线程就会将回调函数加入到异步队列中,等待js引擎空闲执行
    事件触发线程:主要用来控制事件循环,比如js执行遇到计时器,Ajax异步请求等,就会将对应任务添加到事件触发线程中

  • 相关阅读:
    进程/线程/PCB
    (shorthand) pixelNeRF: Neural Radiance Fields from One or Few Images
    【分布式系统】经典面试题总结-史上最全面试题思维导图总结(2022最新版)
    Android ImageView详解
    1-5 AUTOSAR数据交换文件ARXML
    小文一篇,说说:where、:has和:is的特殊性吧
    数据运算——逻辑运算
    Ubuntu 20.04 server永久关闭swap
    竞赛选题 疲劳驾驶检测系统 python
    【第二章 数据的表示和运算】d1
  • 原文地址:https://blog.csdn.net/qq_40992225/article/details/126322806