”xv“ 的搜索结果

xv6 系统调用

标签:   c语言

     在编译时,会生成如下代码(user/usys.S)是来自于文件名,如果文件不叫sleep.c而是shuijiao.c,那么则输出。在user文件夹下,创建sleep.c。ecall是ricsv提供的特殊指令,用于系统调用进入内核。定义了一个数组,其...

     在 qemu 中,调试 xv6 应用层程序 启动 xv6 内核 $ make qemu-gdb 在另外一个窗口中,启动 gdb $ gdb 在 gdb 窗口中,调试应用层程序 (gdb) c (gdb) file /your_xv6_source_path/user/_ls (gdb) b /your_xv6...

【xv6】03 page table

标签:   c++

     一些操作系统(比如 Linux)会通过在用户空间和内核之间共享只读区域来加速特定的系统调用。这可以消除系统调用的消耗。这里只要求对getpid()加速。当每个进程被创建时,可以在USYSCALL上映射一个只读页。...

     该函数其实就是把在内核地址 src 开始的 len 大小的数据拷贝到用户进程 pagetable 的虚地址 dstva 处,所以 sys_sysinfo 函数实现里先用 argaddr 函数读进来我们要保存的在用户态的数据 sysinfo 的指针地址,然后再...

     简要介绍一下xv6中增加系统调用的方法和步骤。 本文情景:xv6系统中,不自带Linux下的ps命令,不能直观查看各个进程的状态。为此,需要新增一个系统调用sys_cps(),通过它查看进程,将进程名,pid和优先级打印...

     xv6实验的gdb调试启动方式有一点不一样 首先需要在Makefile文件中加入 gdb: riscv64-unknown-elf-gdb kernel/kernel 在终端中输入make qemu-gdb,然后卡住到一个界面,记住tcp号为25000 打开另一个终端2,切换到...

     这是一个xv转换成flv的小程序可以支持批量转换,但是唯一的缺点就是批量转换的时候总文件名长度有限,这个在使用的时候需要注意

xv6的sleep和wakeup

标签:   xv6    同步

     xv6的睡觉锁,用的时候都是acquire和release包起来,保证互斥。中间可以sleep,睡觉过程中,放弃锁,别人可以进入临界区。醒来又要获得锁(因为又重新进入临界区了)。 wakeup和Semaphore的signal()操作不一样,不会...

10  
9  
8  
7  
6  
5  
4  
3  
2  
1