上一页 1 2 3 4 5 6 7 8 ··· 25 下一页
摘要: 一.基础 用户线程状态 RUNNING,线程当前正在某个CPU上运行 RUNABLE,线程还没有在某个CPU上运行,但是一旦有空闲的CPU就可以运行 SLEEPING,这节课不介绍, 一. 定时器中断线程切换 防止个别程序长时间占有线程导致其他线程饿死,通过定时器中断定时释放线程资源 定时器中断是由 阅读全文
posted @ 2024-04-21 00:20 INnoVation-V2 阅读(29) 评论(0) 推荐(0)
摘要: 一.寄存器 1.通用寄存器 2.特殊寄存器 stvec(Supervisor Trap Vector) 内核在这里写入trap处理程序的地址;RISC-V会跳转到stvec中的地址来处理trap,xv6的stvec就是trampoline page的起始地址 sepc 发生trap时,RISC-V将 阅读全文
posted @ 2024-04-21 00:19 INnoVation-V2 阅读(396) 评论(0) 推荐(0)
摘要: 一.设置中断 1.start.c\start() // 默认所有trap在机器模式下处理 // 这里将trap的处理托管给Supervisor mode w_medeleg(0xffff); w_mideleg(0xffff); // 设置SIE寄存器接收外部,软件和定时器中断, w_sie(r_s 阅读全文
posted @ 2024-04-21 00:18 INnoVation-V2 阅读(63) 评论(0) 推荐(0)
摘要: 5.系统调用如何安全地获取参数 直接传递给kernel数据的地址(指针)?, 内核和用户的页表不同,不能直接访问用户地址 可能会传递内核内存地址,直接访问就是安全漏洞 因此内核不能使用普通指令从用户提供的地址加载或存储。 内核实现了一些函数,可以安全地在用户提供的地址之间传输数据。 fetchstr 阅读全文
posted @ 2024-04-21 00:18 INnoVation-V2 阅读(22) 评论(0) 推荐(0)
摘要: 系统调用跳转流程 以write()系统调用为例 1. 用户态 调用write() 跳转到usys.s\write #include "kernel/syscall.h" write: li a7, SYS_write ecall ret SYS_write的定义在kernel/syscall.h中 阅读全文
posted @ 2024-04-21 00:18 INnoVation-V2 阅读(51) 评论(0) 推荐(0)
摘要: xv6启动流程 xv6内核地址空间 1 Riscv开机 riscv在启动时,pc被默认设置为0X1000,之后经过以下几条指令,跳转到0x80000000 在第一个shell,打开xv6 gdb模式make qemu-gdb 打开第二个shell,进行调试riscv64-unknown-elf-gd 阅读全文
posted @ 2024-04-21 00:18 INnoVation-V2 阅读(324) 评论(0) 推荐(0)
摘要: 第二章 2.1、xv6代码结构 代码主要有三个部分组成: kernel: 我们可以ls kernel,里面包含了所有的内核文件。因为XV6是一个宏内核结构,这里所有的文件会被编译成一个叫做kernel的二进制文件,然后这个二进制文件会被运行在kernel mode中。 use: 基本上是运行在use 阅读全文
posted @ 2024-04-21 00:17 INnoVation-V2 阅读(41) 评论(0) 推荐(0)
摘要: Lab: mmap (hard) 一、要求 只要求实现mmap功能的子集,即对文件进行内存映射 mmap说明 void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); map:成功时, 返回map的虚 阅读全文
posted @ 2024-04-21 00:16 INnoVation-V2 阅读(115) 评论(0) 推荐(0)
摘要: 1. Large files (moderate) xv6中,一个block大小为1024b,块编号需要4b表示,所以一个块最多容纳256个块编号。 当前 xv6 单个文件最多有12个直接块和一个间接块,一个间接块最多放置256个块,一共268个块。 目标:单个文件增大到65803个块,即需要增加一 阅读全文
posted @ 2024-04-21 00:16 INnoVation-V2 阅读(19) 评论(0) 推荐(0)
摘要: 第八章 文件系统 xv6文件系统类似于Unix的文件、目录和路径名,并将数据持久化到virtio磁盘上。文件系统解决以下难题: 文件系统需要磁盘上的数据结构来表示目录和文件名称树,记录保存每个文件内容的块的标识,记录磁盘的哪些区域是空的。 文件系统必须支持崩溃恢复(crash recovery)。如 阅读全文
posted @ 2024-04-21 00:15 INnoVation-V2 阅读(41) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 25 下一页