著名开源实验小记
文章平均质量分 94
charlie114514191
我是一个普通的嵌入式软件程序员,喜欢研究Linux(应用层跟内核从都有粗浅的涉略),单片机,操作系统和计算机体系架构等内容,目前是一枚普通的本科生。
笔者是一个朴素的开源主义者,我坚信代码和知识没有壁垒,也不应该有壁垒所在,任何人都应该平等的获取到所有的知识。笔者力所能及的将自己的代码项目开源到Github
笔者的github:https://github.com/Charliechen114514
笔者的私人博客(旧):https://charliechen114514.github.io/
笔者的私人博客(新):https://www.charliechen114514.tech/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MIT实验实验 Trap部分
寄存器 s0 包含指向当前堆栈框架的指针(它实际上指向堆栈上保存的返回地址的地址加 8)。一个有用的事实是,分配给每个内核堆栈的内存由单个页面对齐的页面组成,因此给定堆栈的所有堆栈帧都位于同一页面上。请注意,返回地址位于距堆栈帧的帧指针的固定偏移量 (-8) 处,而保存的帧指针位于距帧指针的固定偏移量 (-16) 处。一旦您的回溯工作正常,请从 kernel/printf.c 中的 panic 中调用它,以便在内核崩溃时看到内核的回溯。在 main 的汇编代码中,对函数 f 的调用在哪里?原创 2025-01-21 15:04:37 · 674 阅读 · 0 评论 -
MIT实验 页表(实验部分)
具体的,我们先分配普通的page,直到虚拟地址对齐到了2MB的位置上,然后我们尽可能多的分配superpage,最后有可能还会剩下一些需要分配的内存,但是不足一个superpage,或者我们已经没有superpage可供分配了,我们继续分配普通的page,直到满足用户需求。在新页面的生命周期中,需要完成一些事情。这个题的难点在于Virtual Address如何获取的问题,实际上,页表的项目在这里是连续的,意味着最简单的办法是直接取到偏移量OFFSET来直接得到virtual address的偏移地址。原创 2024-12-28 13:45:08 · 1747 阅读 · 0 评论 -
MIT实验笔记冲刺3:页表操作(理论部分)
这个实验将重点放到了我们的页表上,实际上,页表在我们上一个实验的最后一个小实验那里就已经遇到了,17的计算跟页表的结构息息相关。下面我们来看看页表这个东西。它属于操作系统保护和隔离机制的一个重要的角色。通过该机制,操作系统为每个进程提供自己的私有地址空间和内存。页表确定内存地址的含义以及可以访问物理内存的哪些部分。它们允许 xv6 隔离不同进程的地址空间并将它们多路复用到单个物理内存上。页表是一种流行的设计,因为它们提供了一个间接级别,允许操作系统执行许多技巧。原创 2024-12-28 08:36:59 · 1237 阅读 · 0 评论 -
MIT实验笔记冲刺2 实验部分
下面就是实验的部分,Lab2中的实验有两个。一个是syscall implementations,另一个则是利用未抹除的内存内容来读取上一个内存留下的东西。原创 2024-12-26 12:04:34 · 1253 阅读 · 0 评论 -
MIT实验笔记冲刺2 理论部分
xv6 中的隔离单元(与其他 Unix 操作系统一样)是进程。进程抽象可防止一个进程破坏或监视另一个进程的内存、CPU、文件描述符等。它还可以防止进程破坏内核本身,这样进程就无法破坏内核的隔离机制。内核必须小心地实现进程抽象,因为有缺陷或恶意的应用程序可能会诱骗内核或硬件做一些坏事(例如,绕过隔离)。内核用于实现进程的机制包括用户/管理员模式标志、地址空间和线程的时间分片。为了帮助实施隔离,进程抽象为程序提供了一种幻觉,即它拥有自己的私有机器。原创 2024-12-23 13:19:26 · 1132 阅读 · 0 评论 -
MIT S6081 2024 Lab 1 | Operating System | Notes
笔者最近打算小小的开始重新温习一下MIT实验,打牢自己操作系统的知识基础。原创 2024-12-18 20:00:01 · 1490 阅读 · 0 评论
分享