xv6_2025_实验3:page_tables
要开始实验,切换到 PGTBL 分支: 123git fetchgit checkout pgtblmake clean Inspect a user-process page table
xv6_2025实验2:_system_calls
123git fetchgit checkout syscallmake clean Using gdb1.Looking at the backtrace output, which function called syscall?方法1:通过GDB验证 1234567891011# 启动调试make qemu-gdb# 在另一个终端 b :break c:continue bt:backtracegdb-multiarch kernel\kerneltarget remote localhost:26000(gdb) b syscall (gdb) c# 在 xv6 shell 中执行一个命令,如 ls(gdb) bt# 查看调用栈 方法2:通过源码验证 123# 查看 trap.c 中的 usertrap 函数cd ~/xv6/xv6-labs-2025grep -n "syscall()" kernel/trap.c 在 xv6 中,系统调用的完整调用链是这样的: 用户程序执行 ecall 指令 ↓uservec (汇编陷阱入口) ...
xv6实验1:Unix_utilities
做该实验前建议先去xv6-labs-2025/user/user.h里看一下有哪些函数,有个映象 Sleep要实现sleep,直接调用pause即可,(有些文章使用的是sleep,版本更新后使用的其实是pause) 123456789101112#include "kernel/types.h"#include "user/user.h"int main(int argc, char *argv[]) { if (argc != 2) { fprintf(2, "Usage: sleep <seconds>\n"); exit(1); } int seconds = atoi(argv[1]); pause(seconds); exit(0);} 然后在makefile里修改 123456789101112131415161718192021UPROGS=\ $U/_cat\ $U/_echo\ $U/_forktest\ $U/_grep\ $...
如何在hexo中插入图片
网上找了很多方案,但是很多都随着版本更新不能用了,因此自己写了一个方案 先看结果: 本地文件是这样的 博客是这样的 首先搞明白原理:直接在Markdown中使用标签 ![]{% asset_img photo.jpg 描述 %}是可以让图片正常在博客显示的,但是这样在写的时候很不方便,因此需要额外配置让我们在Markdown中写的转化为Hexo可以识别的标签格式。 这是我的Hexo版本 将_config.yml文件作如下修改: 1234post_asset_folder: true #将flase改为turemarked: #这三行是hexo-renderer-marked工具要求的,现在直接一起修改 prependRoot: true postAsset: true 这样修改以后在创建新的Markdown文件时会在source/_post文件夹下生成同名文件夹,该文件夹用来储存图片 接下来修改Typora的设置 在左上角文件->偏好设置->图像,进行如下设置 这会让我们在复制图片到typora时把图片...
从0学Linux驱动
嵌入式linux驱动本文主要参考b站up主:一口Linux HELLOWORLD驱动编写程序编写步骤: 确定主设备号 定义自己的 file operations结构体 实现对应的 open/read/write等函数,填入file_operations 结构体 把 file operations结构体告诉内核:注册驱动程序 谁来注册驱动程序啊?得有一个入口函数:安装驱动程序时,就会去调用这个入口函数 有入口函数就应该有出口函数:卸载驱动程序时,就会去调用这个出口函数 其他完善:提供设备信息,自动创建设备节点 设备号:主设备号+次设备号 函数:MKDEV(a,b)可返回设备号,a为主设备号,b为次设备号 rc = alloc_chrdev_region(&devid, 0, 1, "hello"); 用于分配设备号,主设备号由内核动态分配,此设备号由自己设计 ,该代码中次设备号从0开始,共1个设备号,名称为hello。 在ubantu虚拟机中跑驱动程序用echo指令确保架构设置和没有交叉编译,使用 unset ARCH 和 ...
