程序开发离不开操作系统的支持。要开发出一款性能高效、功能强劲的程序,加深对操作系统的认知是每个软件开发从业者不可避免的路子。而且,在,卷王不绝如缕!
现代CPU为了提升执行效率,减少CPU与内存的交互(交互影响CPU效率),一般在CPU上集成了多级缓存架构,常见的为三级缓存结构:
- 一级缓存(L1 Cache):分为数据缓存和指令缓存,逻辑核独占
- 二级缓存(L2 Cache):物理核独占,逻辑核共享
- 三级缓村(L3 Cache):所有物理核共享
其中有最为核心的两个常考点:
- :从
0x00000000 到 0xc0000000(PAGE_OFFSET) 的线性地址可由用户代码 和 内核代码进行引用的范围 - :从0xc0000000(PAGE_OFFSET)到 0xFFFFFFFFF的线性地址只
能由内核代码进行访问的内存范围。
在这个基础上我们可以知道:在 4 GB 的内存空间中,只有 3 GB 可以用于用户应用程序。进程与线程只能运行在用户方式(usermode)或内核方式(kernelmode)下。用户程序运行在用户方式下,而系统调用运行在内核方式下。在这两种方式下所用的堆栈不一样:用户方式下用的是一般的堆栈(用户空间的堆栈),而内核方式下用的是固定大小的堆栈(内核空间的对战,一般为一个内存页的大小),即每个进程与线程其实有两个堆栈,分别运行与与。
由内存的空间划分,对于CPU调度的基本单位–线程来说,也划分为:
- 内核线程模型:系统内核管理线程(KLT),内核保存线程的状态和上下文信息,线程阻塞不会引起进程阻塞。在多处理器系统上,多线程在多处理器上并行运行。线程的创建、调度和管理由内核完成,效率比ULT要慢,比进程操作快。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92165 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!