面试题:从用户输入网址到看到整个页面,中间发生了哪些事情
http请求阶段
http响应阶段
(Request请求:DNS解析。TCP的三次握手和四次挥手。http和https的区别(HTTP2))
。浏览器渲染阶段
(响应阶段:http状态码,304缓存,http报文) 服务端向浏览器发送源代码(字符串 html)【在浏览器sourcses下可看】
浏览器拿到代码后再内存条中开辟出一块栈内存。用来给代码的执行提供环境;同时分配一个主线程去一行行的解析和执行代码 进栈执行(执行完一行出栈继续进栈执行第二行,当浏览器遇到link script img等请求后,都会开辟全新的线程去加载资源文件,浏览器是多线程的,js是单线程的,是右浏览器分配额外线程)
- 浏览器渲染阶段
- 进程 打开的应用程序(饭店)
- 线程 程序的每个事情(多个服务员)
- 栈内存 执行环境供我们执行代码
现代操作系统比如mac ,unix,linux,window等,都是支持多任务的操作系统
- 单核cpu执行多任务:操作系统轮流然各个任务交替执行,任五1至此那个0.01s,切换到任五2,执行0.01s,切换任务3
。。。。犹豫cpu的执行速度实在太快了,我们感觉就像所有任务同时执行一样
- 多核cpu执行多任务:真正的并行执行多任务只能在多cpu中实现,但是由于任务数量远远多于cpu的核心数量,所以操作系统也会自动把
很多任务轮流调度到每个核心上执行
有些进程还远不止同时干一件是,要同时干多件事情,就需要同时运行多个字任务,我们把进程内的这些字任务称为 '线程'
多个线程可以同时执行,多线程的执行方式和多进程的执行方式是一样的,也是有操作系统在多个线程之间快速切换,让每个线程都短暂的交替运行,看起来就像是同时执行一样
浏览器内核:?
渲染阶段