前言
在学习js其他知识时,有时候会涉及到进程的问题,但是操作系统知识薄弱的我,没有办法跳过关于进程的知识,所以卡在了这里,那就顺便介绍一下我所理解的进程和线程吧!
CPU,进程以及线程之间的关系
图解三者之间的关系
由上图可以看出,他们是相互包含关系,即一个CPU中含有多个进程,一个进程又含有多块内存空间,一个内存空间中有多个线程。
ps:每个进程中的内存空间都是共享的,也就是该进程中的线程可以出现在它的任何内存空间中。
实例理解:学校分级结构
我们可以把某个学校当成是一个CPU,学校里的学院就是进程,一个学院中肯定有教室,办公室,会议室以及厕所等,这些就可以看做是内存空间,那么这个学院的学生就是线程(假设学院的学生是在学院内活动)。
在同一个学院中的学生可以在学院的任何公共区域活动,对应的是一个进程中的每个线程都共享内存空间,不是说每个内存空间固定的就是那些线程。
ps:从某些角度讲,这个例子并不是很合适,但是可以用来理解他们三个之间的关系。
同步和异步的区别
注意:同步和异步是针对进程而言
- 同步:进程在执行某个请求时,如果该请求需要一段时间后才返回信息时,进程会一直等待该信息返回后才进行下一步操作。生活中的例子就是,和别人打电话的过程。
- 异步:针对上面的说法,就是不等请求返回信息,直接执行后面的操作,信息返回后再接着处理。例子就是发短信。
串行,并行和并发的区别
注意:串行,并行和并发是针对线程而言
- 串行:和进程中的同步类似,都是只有一个操作执行完成后,才会进行下一个操作,否则一直处于等待状态
- 并行处理:指的是同一时间段可以同时处理多个线程,重点是要同时,即需要多个CPU处理器
- 并发处理:指在同一个时间段多个程序都可以处于开始运行和运行完毕之间的状态,不一定要同时
总结
这里面的知识如果深究的话有很多,这篇文章旨在帮助理解前端会涉及的一些关于进程的概念,几乎所有的概念我都通过图示表示了,如果有错误欢迎指正!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。