当前位置: 首页 > news >正文

MIT 6.1810: xv6 book Chapter5: Page faults 笔记

RISC-V在下列情况发生缺页中断:1.使用未被映射的虚拟地址;2.映射的PTE_V为0;3.映射的perm位禁止了对应操作(WRXU)
RISC-V区分了下列三种缺页:1. load 加载页错误;2. store 存储页错误;3.instructions 指令页错误
scause存储了缺页的种类,stval存储了不能被翻译的地址
在RISC-V中,13 - load page fault, 15 - store page fault, 12 - instructions page fault, 8 - ecall

利用页表和缺页中断,可以实现:
1.写时复制,在父进程和子进程间共享内存
2.内存映射文件,将文件内容放在进程的地址空间内,触发缺页中断时读取文件块
3.惰性内存分配(xv6实现)

Lazy allocation

优点:
1.惰性分配允许应用申请大量内存,内核却不必为申请的内存中不使用的页做任何事
2.将短时间分配大量物理页,均摊到很长一段时间内每次分布少量物理页
缺点:
1.缺页中断导致的额外的用户/内核切换(solutions:每次缺页中断分配一批连续页;特化entry/exit代码)
2.若触发缺页中断时内存不足,只能杀死应用而非返回error

Real world: Copy-On-Write(COW) fork

子进程在复制父进程内存时,创建子进程的PTE指向与父进程相同的物理页,将所有物理页都映射为只读,父进程和子进程可以读取同一段物理内存
当一方要写入物理内存时,因为PTE_W被设为0,触发缺页中断
内核会分配一个新的物理页,将原来物理内存的内容复制进去,并将其映射为可读写,使PTE对应到这个新的物理页
这样就可以写入物理内存了

COW需要一种引用计数机制来记录每个页是否能被释放
e.g. 一个进程产生一个存储页错误,但这个物理页引用计数为1,只被当前进程页表引用,则不需要复制,直接修改PTE权限

Real world: Demand paging

xv6中,exec会在应用开始前将应用的代码段和数据段复制到内存中
现代操作系统,则会建立页表项,将其设为invalid,使用时触发缺页中断分配物理页
当物理内存满时,需要通过换出内存中的一个页来保证能从磁盘中换入一个页
此时缺页处理延迟会很大

http://www.jsqmd.com/news/952293/

相关文章:

  • 告别LabelImg!用ArcGIS Pro给遥感影像打标签,效率提升不止5倍
  • 2026年食堂承包性价比排名,靠谱的食堂承包公司推荐 - mypinpai
  • 别再用API硬连AI工具了!信贷中台智能编排引擎(IPA)上线72小时内完成OCR/NLP/评分卡全链路自治闭环
  • 告别‘炼丹’:用计算图可视化理解逻辑回归的梯度下降
  • 从Redis缓存到RPC调用:深入理解Java序列化在分布式系统里的核心作用
  • 为什么92%的AI转正试点失败?3个被低估的技术断点,及HR与IT联合攻坚SOP
  • 2026 年跨境行业全新变局,亚马逊、tiktok、Shopee、速卖通迎来合规整改。 - Zhou6
  • 期货实盘委托成交持仓对不上:天勤排查顺序与字段对照
  • AI辅助开发新思路:让快马平台生成你想象不到的sweezy cursors炫酷效果
  • 从BP生成到招股书定稿,AI如何压缩IPO周期68%?一线保荐人亲授5个不可逆的提效节点
  • 告别按键!用STM32F4和PAJ7620手势传感器做个隔空切歌播放器(附完整代码)
  • 别再只用KL散度了!用Wasserstein距离(推土机距离)解决GAN训练中的梯度消失问题
  • MATLAB环境下IF脉冲神经元动态仿真包:含可运行代码、脉冲检测模块与实操录像
  • 从电枢电压到转子转角:手把手拆解直流电机数学模型,附Simulink仿真验证
  • 广州黄金回收哪家靠谱推荐,24小时营业的推荐,上门变现速度快的推荐 - 花生花生1
  • 告别PHP 5!CentOS 7下用Remi仓库一键升级PHP 8.2(附Apache/Nginx重启命令)
  • 保姆级教程:用Hugging Face Transformers库快速上手TabTransformer(PyTorch版)
  • 2026世界杯最核心变化晋级规则与淘汰赛结构彻底调整冷门概率大增
  • 从收音机到手机:高频小信号放大器设计避坑指南(基于Multisim仿真分析)
  • 002、Zephyr RTOS核心特性与优势
  • 广州哪家回收黄金严格按照上海黄金交易所金价结算?金小福黄金回收 - 花生花生1
  • 欧盟Chat Control提案与社交机器人隐私风险分析
  • 别再暴力穷举了!用Python+PuLP库5分钟搞定整数规划(附投资组合实战代码)
  • 别再只用PCA了!粗糙集在风控模型特征工程中的实战应用与避坑指南
  • 除了SCI和EI,搞计算机的你还得知道IEEE Xplore和ACM DL怎么用:四大文献库实战检索与论文追踪教程
  • 影刀RPA店群自动化运维实战:Python协同异常聚类与根因定位系统设计
  • 告别黑盒!用开源OpenRAM在28nm工艺上玩转自定义SRAM编译器
  • 从Arduino到射频模块:手把手教你为不同项目搭配合适的滤波器(RC/LC实战指南)
  • 手把手教你用Dell服务器主板自带SATA控制器组Raid(无阵列卡版)
  • 用 LLM 做自动化测试,结果 AI 自己修改了数据库生产数据——沙箱没做好