MIT-6.s081-OS lab lazy: xv6 lazy page allocation

MIT-6.s081-OS mid-term quiz 2019 背景:修改free和bd_free,增加一个参数size,size是p指向的内存块的字节数。修改之后,buddy allocator的调用者要负责在返回块的时候指明块的大小。假设程序员调用free时传入的size始终是正确的 问:修改后,还需要保留split数组吗 ... 阅读详情

代码:https://github.com/RedemptionC/xv6-riscv-6s081/tree/lazy

本实验要实现的是lazy allocation

很多时候,一个进程可能使用sbrk申请了大量的内存,但是其中的大部分并没有使用,造成了浪费

我们要做的是修改sbrk的实现,sbrk不分配物理内存,just remember which addresses are allocated

当进程第一次试图使用任何内存时,产生一个page fault,再让kernel分配内存,清零,映射

本实验涉及了第三章和第四章的内容,所以要看的还是挺多的

分析:因为我们没有实际分配内存(建立pte),所以用户程序访问对应地址时就会page fault,也就是一个来自用户空间的trap(异常)

根据第四章,page fault(trap)时,硬件会做这些事:

禁用中断(clear sie bit in sstatus)

把pc复制到sepc

保存当前mode到sstatus的spp bit

设置scause为trap的原因

设置模式为supervisor

把stvec的值设为pc(stvec保存trap handler的地址)

从pc执行(执行trap handler)

struct trapframe {
  /*   0 */ uint64 kernel_satp;   // kernel page table
  /*   8 */ uint64 kernel_sp;     // top of process's kernel stack
  /*  16 */ uint64 kern
xv6 6.S081 Lab4: lazy xv6 6.S081 Lab4: lazy写在前面实验介绍开始!打印页表实现Lazy Allocation修改sbrk()实现Lazy Allocation完善Lazy Allocation lazy代码在这里。我去,lazy改好多文件啊。不过相比于buddy allocator,自认为lazy还是好多了????。 写在前面 哈哈,老·写在前面了。在完成lazy的时候,一定要有Page的概念,说白了就是一个内存页,emmm,其实就是一片连续内存吧。另外,一定要理解lazy的思想:该分配Page时才分配, 阅读详情

相关推荐

Mit6.S081-实验5-xv6 lazy page allocation

Mit6.S081-实验5-xv6 lazy page allocation一、Eliminate allocation from sbrk()1,实验准备2,实验要求3,具体实现二、Lazy allocation1,实验要求2,具体实现3,执行效果二、Lazytests and Usertests1,实验要求2,具体实现3,执行效果 一、Eliminate allocation from sbrk() 1,实验准备 O/S可以跟page table hardware表演的众多小花招之一是用户空间堆内存的懒

code a better life~ 33万+

操作系统:操作系统(MIT 6.S081 2020年秋季)代码

MIT 6.S081操作系统2020秋季 课程网页: : 我们在课程中实施实验室实验。 我们还将实现讲义中的一些示例 以及讲座视频。 当文件来自分配时,文件名与分配中的文件名相同。 当它们是示例时,我们使用“ example_xxx”。

MIT6.S081-2020fall:麻省理工学院本科操作系统课程

MIT 6.S081 2020秋季 该存储库包含我对MIT 6.S081操作系统实验室的解决方案。 如何使用它 ? 首先,您需要通过以下方式克隆此存储库 git clone https: // github.com/PKUFlyingPig/MIT6.S081-2020fall.git 然后cd进入文件,您现在位于项目的master分支中,以查看我对特定实验室的回答,例如util,syscall ......,例如,您只需签入该分支即可 git checkout util 现在您在utils分支中,该分支包含我对特定实验室的解决方案。 如果您想获得原始实验室讲义的完整副本,只需访问并按照实验室指导进行操作即可。 另外,您可以在课程网站上观看课程视频。 希望您喜欢操作系统。 实验室报告 对于每个实验室,我都编写了一份有关实现的简短报告,解释了代码的重要部分以及如何逐步完成实验室。 (

通俗傻瓜式理清光栅化渲染和光线追踪渲染的原理

用通俗语言傻瓜式的讲清楚光栅渲染和光线追踪渲染的原理,方便没有相关理论基础的朋友理解入门。

qq_37366618的博客 2万+

WorkBuddy驱动SolidWorks实测:AI建模流程、参数化与许可排查指南

AI辅助三维建模正在改变工程师的重复劳动方式。其核心理念不是替代人的设计决策,而是通过AI智能体接管CAD软件中的草图绘制、特征创建、尺寸修改等高频操作,让工程师从繁琐的GUI交互中解放出来。在SolidWorks这类主流CAD平台上,这类AI助手的落地依赖环境稳定、需求描述清晰和参数化建模规范。通过将外径、孔距等关键尺寸定义为全局变量并用方程式驱动,可实现改一个数、模型自动更新的高效流程;同时,遇到“无法获得许可”等环境故障时,需要按服务状态、安全软件隔离、干净卸载的顺序排查。以WorkBuddy驱动So

weixin_28559803的博客 366

Windows 10下用Python 3搞定Android源码下载:最新repo工具避坑指南

本文详细介绍了在Windows 10系统上,使用Python 3和官方最新repo工具下载Android源码的完整流程。文章提供了从Git安装、环境配置到repo工具初始化、同步加速及常见错误排查的避坑指南,帮助开发者高效搭建稳定的源码下载环境。

weixin_29266749的博客 436

STM32驱动AD2S1210实现旋变解码与角度读取

旋转变压器作为一种耐高温、抗振动的角度传感器,在工业伺服、机器人关节和电动汽车电驱等场景中占据重要地位。其输出信号需要经过专用转换芯片处理才能被MCU高效使用。AD2S1210是一款典型的旋变数字转换器(RDC),内部采用Type II型跟踪环,将模拟SIN/COS信号实时解算为数字角度与速度,降低了处理器负担并提升抗干扰能力。本文基于STM32平台,详细介绍了AD2S1210的硬件接线、SPI通信配置、寄存器初始化流程,以及读取位置数据时的SAMPLE脉冲时序等关键实现。同时总结了常见故障如全FF、角度跳

weixin_34194829的博客 194

【PyGIS】ERA5降雨蒸散发数据预处理

ERA5-LAND降雨蒸散发数据预处理

```On Earth, Be Water, By Coding``` 3144

beegfs读取文件完整流程分析

读取小于512KB文件数据,小于1s 读取15MB文件数据,花费7秒。

wfzy的博客 833

HQChart实战教程54:Renko砖形K线图实现详解

Renko图(砖形图)起源于日本,只关注价格变动而忽略时间和成交量因素: 2.2 算法说明 初始化:使用第一根K线的收盘价创建第一个砖块 变动检测:计算当前价格与最后一个砖块的差值 砖块生成: 当价格变动≥砖块大小时,生成新砖块 当价格变动不足时,更新当前砖块的高低价 方向判断:根据价格变动方向确定砖块颜色 三、完整实现代码 四、Renko图的高级应用 4.1 动态砖块大小调整 4.2 Renko交易策略 三砖反转策略:趋势跟踪策略:本文详细介绍了Renko图的实现原理和在HQChart中的应

QQ_778132974的博客 872

光学测量仿真软件:Zygo_(5).Zygo的数据处理与分析方法

通过上述综合案例,我们可以看到Zygo中的数据处理与分析方法是如何一步一步应用于实际数据的。从数据导入到预处理,再到滤波、表面分析、缺陷检测和数据可视化,每一步都至关重要,最终确保了数据的准确性和可靠性。处理后的数据还可以导出为多种格式,便于在其他软件中进行进一步的处理或报告。希望这个案例能够帮助您更好地理解和应用Zygo中的数据处理与分析方法。

kkchenjj的博客 946

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: xv6 risc-v 虚拟内存 code walk through
下一篇: MIT-6.s081-OS lab cow: Copy-on-Write Fork for xv6
RedemptionC
博客等级 码龄11年 103粉丝 84原创
评论 26
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值