实验文档 概述 这次实验主要实现Lazy allocation的功能,即进程在动态分配内存的时候先不分配,等到要用到发生缺页中断的时候再实际分配,核心是实现缺页中断的处理。xv6的文档介绍了三种缺页中断的应用,第一为Copy on write,即fork的时候先不复制内存,等到要用到发生缺页中断的时...
2021年1月2日实验文档 概述 这次实验内容比较分散,总体来说难度不是太高。 内容 Backtrace 要求在内核中对程序的调用栈进行遍历,输出每一级调用的返回地址。首先我们分析Riscv的栈帧结构,查看call.asm中main函数的汇编代码: void main(void) { 1c: 1141 addi sp...
2021年1月1日实验文档 概述 这次实验主要涉及虚拟内存的管理,重点是和页表相关的操作。个人觉得难点主要还是在调试方面,因为一旦写到什么非法内存或者哪里内存泄漏了,基本只能抓瞎。我也是参考了github上别人的代码才最终完成了实验。 内容 Print a page table 这个任务比较简单,只要仿照freewa...
2020年12月31日实验文档 概述 实验二主要涉及对系统函数调用过程的理解以及尝试自己手动添加系统调用。首先需要大致了解一下xv6系统调用的过程,这里以fork为例: 根据这个过程,就很容易完成本次实验了。 内容 trace 该实验需要打印其他系统调用的信息。根据上面的分析和文档说明,首先需要给user.h、usys....
2020年12月31日实验文档 概述 实验一主要涉及调用系统调用函数,这些系统调用函数基本都是符合POSIX规范的,和操作系统本身关系较小,在调试的时候也可以先把程序在外部的Linux下跑通然后再放进xv6中运行。 内容 sleep 基本没什么特别的内容,按说明的做就行了。 #include "kernel/types....
2020年12月31日背景 由于网络原因,在下载视频之前我们往往会希望能够先生成一些视频的缩略图,大致浏览视频内容,再确定是否应花时间下载。如何能够快速得到视频多个帧的缩略图的同时尽量少的下载视频的内容,是一个值得研究的问题。 思路 众所周知,不考虑音频、字幕的话,视频是由多个图像帧拼接而成的,因此我们的目标也就是尽量只...
2020年9月13日依赖图: 代码: @startuml skinparam defaultFontName 微软雅黑 skinparam defaultFontSize 15 skinparam monochrome true skinparam shadowing false frame 二进制转十进制 { (二转...
2020年9月6日背景 最近在QQ群里看见别人发一张图,缩略图看着是一个样子,但打开大图以后却发现是另一张图,仔细观察这两张图发现缩略图是白色背景,大图是黑色背景,结合缩略图所在的对话框是白色的,打开大图的UI是黑色的,很容易猜到应该是依靠透明度实现的功能,因此研究了一下怎么用代码通过将两张图片混合来构造出满足要求的...
2020年8月17日背景 字符图片,即纯使用字符构造出一幅图片。关于这个,网上的教程和程序已经非常多了,都是使用不同复杂程度的字符模拟图片的灰度(比如字符'@'就比字符','复杂,但是我要做的是像这样的:(原图是星之卡比)...
2020年8月17日背景 众所周知,Unity3D支持自定义后处理效果,实现过程有三步: 添加着色器,在着色器里书写后处理代码; 添加材质,把材质和着色器绑定; 给相机添加脚本,重写其OnRenderImage方法,将材质传入Graphics.Blit方法中。 但是在做最近的一个项目时,我使用了Unity3D的官方后处...
2020年7月14日