34. 内存乱序产生的原因是什么?
____
若程序在执行时的实际内存访问顺序和程序代码制定的访问顺序不一致,会出现内存乱序访问
通常情况程序次序不等于内存次序,从而产生内存乱序访问
35. 请简述FENCE.I指令与SFENCE.VMA指令的作用和使用场景。
--------
FENCE.I指令用于在同一个CPU中高速缓存指令与预取指令之间的同步原语。简单来说是确保在存储指令对CPU可见的同时,也保证预取指令对CPU可见
简单的实现刷新本地CPU的指令高速缓存和指令流水线,复杂一些的实现可以为每个未命中的数据指令高速缓存做缓存移植性的监听
SFENCE.VMA指令为了保证内存操作的正确执行,约束它们的内存访问顺序
36. 什么是进程上下文切换?对于RISC-V处理器来说,进程上下文切换需要保存哪些内容?保存到哪里?
——————
从一个进程切换到next进程
需要保存的上下文包括S0-S11寄存器、SP寄存器、ra寄存器的值,把它们保存到Netx进程的task_struct->cup_context中,然后从next进程的task_struct->cpu_context中恢复处理器中这些寄存器的值
37. 假设调度器通过switch_to()函数把进程A切换到进程B,那么进程B是否在切换完成之后,马上执行线程B的回调函数呢?
_______
需要为刚调度出去的内核线层A做一些收尾工作
|