Skip to content

Commit 6c805ac

Browse files
add
1 parent 69e660f commit 6c805ac

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

lec3/p2-osviewrv.md

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ backgroundColor: white
4646
<!-- 主要说明x86, arm由于兼容性,历史原因,导致设计实现复杂,riscv简洁/灵活/可扩展,便于学习掌握并用于写OS -->
4747
![w:1150](figs/mainstream-isas.png)
4848

49+
<!-- “encoding”通常指的是指令编码(instruction encoding) 决定了指令的结构和执行方式-->
50+
4951
---
5052
##### 主流CPU比较
5153
* 由于兼容性和历史原因,导致x86和ARM的设计实现复杂
@@ -399,8 +401,9 @@ OS通过硬件隔离手段(三防)来保障计算机的安全可靠
399401
- ``sret`` 监管者模式返回
400402
- ``wfi`` 等待中断 (wait for interupt)
401403
- ``sfence.vma`` 虚拟地址屏障(barrier)指令,用于虚拟内存无效和同步
402-
- <!--修改页表时,修改上下文时,刷新同步-->
403-
404+
<!--修改页表时,修改上下文时,刷新同步
405+
它确保在页表更新或进程切换后,CPU 不会使用过期的地址映射信息
406+
-->
404407
- 很多其他的系统管理功能通过读写控制状态寄存器来实现
405408

406409
注:``fence.i``是i-cache屏障(barrier)指令,非特权指令,属于 “Zifencei”扩展规范,用于i-cache和d-cache一致性
@@ -840,18 +843,11 @@ mtvec & stvec 寄存器
840843
---
841844
##### S-Mode中断/异常的硬件响应
842845

843-
**硬件执行内容**
844-
845-
hart 接受了中断/异常,并需要委派给 S-Mode,那么硬件会原子性的经历下面的状态转换
846+
**硬件执行内容**:hart 接受了中断/异常,并需要委派给 S-Mode,那么硬件会原子性的经历下面的状态转换
846847

847848
1. **发生中断/异常的指令PC**被存入 sepc, 且 PC 被设置为 stvec
848849
2. scause 设置中断/异常**类型**,stval被设置为出错的地址/异常**相关信息**
849850
3. 把 sstatus中的 SIE 位置零,**屏蔽中断****SIE位之前的值**被保存在 SPIE 位中
850-
851-
852-
---
853-
##### S-Mode中断/异常的硬件响应
854-
855851
4. **发生例外前的特权模式**被保存在 sstatus 的 SPP(previous privilege) 域,然后设置当前特权模式为S-Mode
856852
5. **跳转**到stvec CSR设置的地址继续执行
857853

@@ -914,6 +910,17 @@ hart 接受了中断/异常,并需要委派给 S-Mode,那么硬件会原子
914910
- PPN 字段保存了**根页表的物理页号**
915911
![w:900](figs/satp.png)
916912

913+
<!--
914+
ASID 是一个唯一标识符,用于区分不同进程的虚拟地址空间。每个进程在使用其页表进行内存访问时都会有一个对应的 ASID。
915+
916+
ASID 使得 TLB 能够同时缓存多个进程的地址映射,而无需在每次上下文切换时清空整个 TLB。
917+
918+
ASID 减少了 TLB 刷新需求
919+
920+
如果没有 ASID,每次进程上下文切换后,必须完全刷新 TLB,因为同一虚拟地址可能指向不同的物理地址。这是因为 TLB 缓存的是虚拟到物理地址的映射,没有额外的信息来区分不同进程的映射。
921+
922+
频繁的 TLB 刷新会导致显著的性能开销。这是因为新的内存访问将无法命中已缓存的 TLB 条目,导致更多时间花费在查找和加载新的映射上。
923+
-->
917924
---
918925
##### S-Mode虚存机制
919926

0 commit comments

Comments
 (0)