网上看到的linux内存的59问,虽然对其答案并不完全认同,但是这些问题的确是把基础知识点都囊括了:
1、如何知道计算机内存布局?内存空间有多少?
2、何时去探明内存布局?由谁去探明呢?
3、kernel会加载到何处呢?由什么决定它的位置?
4、kernel映像如何隐匿自己的位置?
5、探知的e820表如何处理?
6、内存是连续的吗?
7、处理完毕的e820表如何管理?
8、启动之时内存如何映射的?
9、保护模式是怎样的?相比实模式有何特点?
10、页保护模式是怎样的?
11、页面映射有何作用?都有什么好处
12、x86支持的映射模式都有哪些形式?如何分级的?
13、内核如何处理多样式的页映射
14、面对NUMA等复杂内存环境如何处理?
15、内核页表如何建立?
16、内核态进程虚拟地址与物理内存的映射关系?
17、用户态进程虚拟内存与物理内存的关系如何?
18、内存管理框架如何构造?
19、Kernel内存空间如何划分?
20、64位地址空间如何划分?
21、内存分配空间如何实现不可预测性?
22、物理内存是如何管理的?怎么分配的?
23、Buddy管理算法所处的位置?在什么地方体现?
24、内存碎片化了怎么办?
25、如何为驱动应用预留大块连续内存?
26、LRU如何运作?
27、内存回收是如何运作的?
28、相同的内存浪费内存空间了?
29、页面空间监测手段有什么
30、如何降低页面分配的可预测性?
31、如何防范内存泄密?
32、如何查看Buddy管理算法下的内存类型信息?
33、小块内存空间如何分配管理?
34、SLUB如何管理内存的?
35、如何查看slab信息?
36、如何防范slab空闲链表的攻击?
37、SLUB分配如何防止被预判?
38、kmalloc和kfree如何实现的?
39、kernel的内存泄漏如何定位?
40、kernel有内存检测机制吗?
41、支离破碎的内存如何得到大块连续内存?
42、如何查看vmalloc信息?
43、Percpu内存空间如何管理的?
44、从proc接口还可以看到什么?
45、容器的内存如何管理?
46、内核如何防范信息外泄?
47、物理内存页面耗尽了如何处理?
48、内核代码段如何进行自我防护?
50、kernel程序空间能否再压榨?
51、面向用户态程序,内核提供了哪些内存分配接口?
52、brk接口实现了什么?
53、mmap接口实现了什么?
54、用户态内存如何管理?
55、glibc对brk和mmap如何使用?
56、如何查看进程内存映射信息?
57、如何查看进程内存占用实际情况?
58、如何查看进程内存片段映射详情?
59、如何查看进程内存映射汇总信息?