CPU实战知识--问答

CPU实战知识

  • 1.ARM64处理器中有两个页表基地址寄存器TTBR0和TTBR1,处理器如何使用它们?
  • 2.请简述ARM64处理器的4级页表的映射过程,假设页面粒度为4KB,地址宽度为48位。
  • 3.在L0~L2页表项描述符中,如何判断一个页表项是块类型还是页表类型?
  • 4.在ARM64 Linux内核中,用户空间和内核空间是如何划分的?
  • 5.在ARM64 Linux内核中,PAGE_OFFSET表示什么意思?
  • 6.KIMAGE_VADDR表示什么意思?
  • 7.TEXT_OFFSET表示什么意思?
  • 8.内核映像文件包含哪些段?这些段的作用是什么?在Sysmtem.map文件中它们分别使用哪些符号来表示段的开始和结束?
  • 9.请画出ARM64 Linux内核的内存布局。
  • 10.__pasymbol()宏和\_pa()宏有什么区别?
  • 11.在物理内存还没有线性映射到内核空间时,内核映像文件映射到什么地方?
  • 12.在ARM Linux内核中,kimage_voffset代表什么意思呢?
  • 13.在ARMv8架构中,高速缓存管理的PoC和PoU有什么区别?
  • 14.在ARMv8架构中,ASID是什么意思?有什么作用?
  • 15.在ARMv8架构中支持哪几种内存属性?它们都有哪些特点?
  • 16.在ARMv8架构中,高速缓存共享属性有内部共享(inner shareable)和外部共享(outer shareable),它们有什么区别?
  • 17.在ARMv8架构中,支持哪几条内存屏障指令?它们都有什么区别?
  • 18.加载-获取屏障原语与存储-释放屏障原语有什么区别?分别有什么作用?
  • 19.什么是一个段的加载地址和运行地址?
  • 20.从U-boot跳转到内核时,为什么指令高速缓存可以打开而数据高速缓存必须关闭?
  • 21.在Linux内核启动汇编代码中,为什么要建立恒等映射?
  • 22.在ARMv8架构中,在L0~L2页表项中包含了指向下一级页表的基地址,那么这个下一级页表基地址是物理地址还是虚拟地址?
  • 23.MMU可以遍历页表,Linux内核也提供了软件遍历页表的函数,如walk_pgd()、__create_pgd_mapping()、follow_page()等。从软件的视角,Linux内核的pgd_t、pud_t、pmd_t以及pte_t数据结构中并没有存储一个指向下一级页表的指针(即从CPU角度来看,CPU访问这些数据结构时是以虚拟地址来访问的),它们是如何遍历的呢?pgd_t、pud_t、pmd_t以及pte_t数据结构是u64类型的变量。

1.ARM64处理器中有两个页表基地址寄存器TTBR0和TTBR1,处理器如何使用它们?

答:
   

2.请简述ARM64处理器的4级页表的映射过程,假设页面粒度为4KB,地址宽度为48位。

答:
   

3.在L0~L2页表项描述符中,如何判断一个页表项是块类型还是页表类型?

答:
   

4.在ARM64 Linux内核中,用户空间和内核空间是如何划分的?

答:
   

5.在ARM64 Linux内核中,PAGE_OFFSET表示什么意思?

答:
   

6.KIMAGE_VADDR表示什么意思?

答:
   

7.TEXT_OFFSET表示什么意思?

答:
   

8.内核映像文件包含哪些段?这些段的作用是什么?在Sysmtem.map文件中它们分别使用哪些符号来表示段的开始和结束?

答:
   

9.请画出ARM64 Linux内核的内存布局。

答:
   

10.__pasymbol()宏和_pa()宏有什么区别?

答:
   

11.在物理内存还没有线性映射到内核空间时,内核映像文件映射到什么地方?

答:
   

12.在ARM Linux内核中,kimage_voffset代表什么意思呢?

答:
   

13.在ARMv8架构中,高速缓存管理的PoC和PoU有什么区别?

答:
   

14.在ARMv8架构中,ASID是什么意思?有什么作用?

答:
   

15.在ARMv8架构中支持哪几种内存属性?它们都有哪些特点?

答:
   

16.在ARMv8架构中,高速缓存共享属性有内部共享(inner shareable)和外部共享(outer shareable),它们有什么区别?

答:
   

17.在ARMv8架构中,支持哪几条内存屏障指令?它们都有什么区别?

答:
   

18.加载-获取屏障原语与存储-释放屏障原语有什么区别?分别有什么作用?

答:
   

19.什么是一个段的加载地址和运行地址?

答:
   

20.从U-boot跳转到内核时,为什么指令高速缓存可以打开而数据高速缓存必须关闭?

答:
   

21.在Linux内核启动汇编代码中,为什么要建立恒等映射?

答:
   

22.在ARMv8架构中,在L0~L2页表项中包含了指向下一级页表的基地址,那么这个下一级页表基地址是物理地址还是虚拟地址?

答:
   

23.MMU可以遍历页表,Linux内核也提供了软件遍历页表的函数,如walk_pgd()、__create_pgd_mapping()、follow_page()等。从软件的视角,Linux内核的pgd_t、pud_t、pmd_t以及pte_t数据结构中并没有存储一个指向下一级页表的指针(即从CPU角度来看,CPU访问这些数据结构时是以虚拟地址来访问的),它们是如何遍历的呢?pgd_t、pud_t、pmd_t以及pte_t数据结构是u64类型的变量。

答:
   

你可能感兴趣的:(Linux学习,linux)