重学NodeJS

多进程与多线程

Nodejs 是单线程通过指的是他的JavaScript代码执行逻辑是单线程模型异步非阻塞的,但实际上Nodejs本身是一个复杂的多线程架构,其架构图简易如下

最上层:JavaScript应用层,以单线程模型运行

中间层:负责搭建JavaScript与底层内核C/C++沟通的桥梁

最下层:NodeJs真正的核心,其中Libuv提供了跨平台,线程池,事件池,异步IO,网络开销等底层的机制

进程和线程

进程

运行一个可执行文件,这个文件会装载在内存中,CPU会执行程序中的每条指令,运行中的程序即是进程(Process)

进程是可中断,多个程序交替执行,在一段时间内能执行多个进程,这样就是并发

进程的状态

进程中主要是用PCB(process control block)数据结构来描述的,其中包含各种信息,以链表的形式连接在一起,进程的控制中存在创建、终止、阻塞、唤醒等几种过程去完成进程的状态切换

进程的上下文切换

各个进程之间是共享CPU资源的,在不同的进程之间需要切换,让不同的进程在CPU执行,从一个进程执行切换到另一个进程,即进程的上下文切换

CPU的信息中包括CPU寄存器和程序计数器

流与网络

安全