首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

笔记 Lab10: Mmap | 文件内存映射

这是我自学 MIT6.S081 操作系统课程的 lab 代码笔记第十篇:Mmap。此 lab 大致耗时:6小时。...Lab 10: mmap (hard) 实现 *nix 系统调用 mmap 的简单版:支持将文件映射到一片用户虚拟内存区域内,并且支持将对其的修改写回磁盘。...这里涉及的操作系统基本概念是「虚存」,mmap 指令除了可以用来将文件映射到内存上,还可以用来将创建的进程间共享内存映射到当前进程的地址空间内。本 lab 只需实现前一功能即可。...由于需要对映射的页实行懒加载,仅在访问到的时候才从磁盘中加载出来,这里采用和 lab5: Lazy Page Allocation 类似的方式实现。具体请参考 lab5 笔记。...计算出来释放内存页的开始地址以及释放的个数后,调用自定义的 vmaunmap 方法(vm.c)对物理内存页进行释放,并在需要的时候将数据写回磁盘。

1.5K20

CS 144 Lab Zero -- 可靠的内存字节流

CS 144 Lab Zero -- 可靠的内存字节流 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab 0 对应的PDF: Lab Checkpoint 0: networking warmup...Lab 0 会省去Telnet部分内容。...所实现的字节流必须支持流量控制,以控制内存的使用。当所使用的缓冲区爆满时,将禁止写入操作。直到读者读取了一部分数据后,空出了一部分缓冲区内存,才让写者写入。...这是在内存中的有序可靠字节流,接下来的实验会让我们在不可靠网络中实现一个这样的可靠字节流,而这便是传输控制协议(Transmission Control Protocol,TCP) 以下是实现的代码:..." #include // Dummy implementation of a flow-controlled in-memory byte stream. // For Lab

27720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CSAPP lab

    CSAPP学习过程 这篇文章主要记录CSAPP书和lab的学习过程,具体某个lab的踩坑过程会分别附单独链接,本文主要是记录漫长的学习过程以及方便想学但是尚未开始学习的同学参考,以下是github的lab...image.png Todo Bilibili翻译课程 lecture 1-4 搭建实验环境 Data lab Bilibili翻译课程 lecture 5-9 Bomb lab Attack...lab 前置材料 一本CSAPP CSAPP的bilibili翻译课程 实验材料 参考经验贴1 参考经验贴2 我想做些什么 开设这个仓库是想记录我做CSAPP的lab的过程,也顺便将踩坑过程分享,帮助后人少走弯路...学习过程(以Lab为单位总结) 简单查阅别的学习经验后,大多数人的分享都说看书再多遍也不如做lab学到的多,lab是课程的精髓,我已经粗略的学过编译原理,计算机组成原理和操作系统,所以我会比较快速的过一遍网课然后开始...lab,目标3个月完成大多数的lab(也许有一些实在不感兴趣的lab会跳过) Timeline 2022-03-30 完成Datalab 2022-03-28 完成实验环境搭建 2022-03-27 完成

    1K10

    ucore-lab1

    实模式下的地址计算方式为16*段寄存器值+段内偏移地址,其CPU寻址方式为 寄存器寻址 立即数寻址 内存寻址 直接寻址。...在os_kernel_lab-master/labcodes/lab1/Makefile中,可以找到要分析的makefile。 makefile的结构如下: target......kipery这样解释: Intel早期的8086 CPU提供了20根地址线,但寄存器只有16位,所以使用段寄存器值 << 4 + 段内偏移值的方法来访问到所有内存,但按这种方式来计算出的地址的最大值为...A20控制打开后,内存寻址将不会发生回卷。 在当前环境中,所用到的键盘控制器8042的IO端口只有0x60和0x64两个端口。8042通过这些端口给键盘控制器或键盘发送命令或读取状态。...insl(0x1F0, dst, SECTSIZE / 4); } 即先waitdisk,等待磁盘,然后写入0x1f2~0x1f5,0x1f7,准备读取磁盘,磁盘准备好时再调用insl读取到内存

    1.9K30

    SeedLab——Spectre Attack Lab

    该攻击利用了现代处理器中存在的一种设计缺陷,使得恶意程序可以访问其本不应该具备权限的内存区域。 Spectre攻击的关键思想是利用处理器的乱序执行和分支预测机制。...攻击者通过精心构造的恶意程序,利用处理器的分支预测错误来访问其本应该受限的内存区域。攻击程序会在正常情况下无法执行的分支路径上放置一些恶意代码,然后通过观察处理器的缓存访问时间来推断出受限内存的内容。...CPU缓存是计算机CPU使用的一种硬件缓存,用于减少从主内存访问数据的平均成本(时间或能量)。从CPU缓存访问数据比从主内存访问要快得多。...如果数据不存在于缓存中(这称为缓存未命中),CPU将去主内存获取数据。后一种情况下所花费的时间要长得多。大多数现代CPU都具有CPU缓存。...volatile关键字用于告诉编译器不要对该变量进行优化,以避免将变量的值缓存在寄存器或优化访问,而是直接从内存地址读取变量。

    26520

    ucore-lab4

    ,不需为每个内核线程维护单独的内存空间 而用户进程需要维护各自的用户内存空间 练习0 填写已有实验 meld合并即可。...= NULL) { //LAB4:EXERCISE1 YOUR CODE /* * below fields in proc_struct need to be initialized...= 0) goto bad_fork_cleanup_proc; // 复制内存数据--数据 if (copy_mm(clone_flags, proc) !...请说明理由 见上文 challenge 实现支持任意大小的内存分配算法 这不是本实验的内容,其实是上一次实验内存的扩展,但考虑到现在的slab算法比较复杂,有必要实现一个比较简单的任意大小内存分配算法。...可参考本实验中的slab如何调用基于页的内存分配算法(注意,不是要你关注slab的具体实现)来实现first-fit/best-fit/worst-fit/buddy等支持任意大小的内存分配算法。

    51110

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    热门标签

    领券