• 操作系统、浏览器与js之间的一些概念与联系


    浏览器、操作系统与JavaScript语言的一些知识

    进程与线程

    参考文章:
    阮一峰的网络日志--进程与线程的简单解释

    进程的介绍

    进程(process): 当有应用程序需要启动时,操作系统就会自动启动一个或多个进程来维持整个应用程序的运行,应用程序是运行在进程的线程中的

    进程中的数据是不能够直接共享的

    线程的介绍

    线程(thread): 是进程内的最小单位,同时也是CPU最小的调度单元

    一个进程中, 多个线程内的数据可以共享,但是为了数据的一致性和防止同时操作内存,就会涉及各种锁的概念,这里不过多介绍(其实因为我不会...)

    进程与线程的关系:

    • 一个进程必然有一个线程, 这个线程成为主线程
    • 一个进程可以有多个线程

    这里还要简单介绍一个概念: 线程池(thread pool),它作为一个容器用于保存多个线程,实现线程的反复利用

    比较单线程与多线程

    单线程优点: 代码编写相对简单,不轻易涉及到锁的概念

    单线程缺点: 执行效率低

    多线程优点: 有效地提升CPU的利用率

    多线程缺点:

    • 创建多线程需要有额外的开销
    • 线程间的转换也需要有额外的开销
    • 维持线程同步容易遇到死锁与状态同步问题

    JavaScript是单线程语言

    JavaScript是单线程语言,但是在HTML5中的Web Workers可以多线程运行,但是Web Workers中的子线程不能操作DOM,同时子线程必须受控于主线程,所以本质上JavaScript仍然是一门单线程语言

    浏览器内核

    不同浏览器会使用不同的内核(引擎),内核的好快直接影响的就是浏览器的运行速度

    内核是由多个模块组成的:

    • JS引擎模块: 负责js程序的编译与运行
    • html,css文档解析模块
    • DOM/CSS 模块: 负责DOM/CSS 在内存中的相关处理
    • 布局与渲染模块: 负责将解析好的文档树和效果绘制到浏览器页面中
    • 定时器模块: 负责定时器的管理
    • 事件相应模块: 负责各种事件的管理
    • 网络请求模块: 负责http、ajax等网络请求
  • 相关阅读:
    JMS API学习总结(一)
    java读取properties配置文件
    如何创建并运行java线程
    JS
    JS
    JS
    JS
    IE
    JS
    JS
  • 原文地址:https://www.cnblogs.com/fitzlovecode/p/Miscellaneous-talk.html
Copyright © 2020-2023  润新知