拓展(可以跳过) 通过ctrl + p查看进程信息(由proc.c文件中的procdump()内核函数实现)。可以看到sleep进程后面跟着一串数字,是调用栈中关于函数调用的地址。例如 1sleepinit 80103e27 80103ec7 80104879 80105835 8010564f 2sleepsh 80103dec 801002ca 80100f9c 80104b62 80104879 80105835 8010564f 打开另一个终端,...
我试过在windows下用gdb调试xv6也是可以的,也需要修改Makefile,大概有两种方法:(1)修改-O0后编译,然后在运行xv6之后按Ctrl P,即可输出调用栈地址,可以查kernel.asm或者用addr2line查询这个十六进制数字是对应哪个文件哪一行(2)或者用make qemu-gdb启动。如果不成功,可能要改Makefile,改成-gdb:tcp:127.0.0.1:2550...
在XV6中没有ps命令,而是使用Ctrl+p来查看正在运行的进程。 2|0sleep (easy) 这一个就是仿照已有的程序调用一下sleep的系统调用就行了。 在Unix系统里面,默认情况下0代表stdin,1代表stdout,2代表stderr。这3个文件描述符在进程创建时就已经打开了的(从父进程复制过来的),可以直接使用。而分配文件描述符的时候是...
xv6没有ps命令,但是可以输入ctrl-p可以看到进程的信息,一个是init,一个是sh.如果在终端输入ls命令,能看到输出。退出qemu: Ctrl-a x。从github中下载xv6代码。大多数都是可以直接运行的命令。 操作系统 git github ls命令 原创 暮色_年华 7月前 71阅读 ...
退出qemu:按下Ctrl-a+x。(先同时按下Ctrl和a,松开后再按x) 自我评分: Exercise 2 sleep 为xv6实现UNIX程序sleep;sleep应暂停用户指定的tick数。tick是xv6内核定义的时间概念,即定时器芯片的两次中断之间的时间。你的解决方案应该在文件user/sleep.c中。
intkbdgetc(void){staticuint shift;//shift用bit来记录控制键,比如shift,ctrlstaticuchar*charcode[4]={normalmap,shiftmap,ctlmap,ctlmap};//映射表uint st,data,c;st=inb(KBSTATP);if((st&KBS_DIB)==0)//输出缓冲区未满,没法用指令in读取return-1;data=inb(KBDATAP);//从输出缓冲区读数据if(dat...
xv6没有ps命令,但是可以输入ctrl-p可以看到进程的信息,一个是init,一个是sh.如果在终端输入ls命令,能看到输出。退出qemu: Ctrl-a x。从github中下载xv6代码。大多数都是可以直接运行的命令。 操作系统 git github ls命令 原创 暮色_年华 7月前 71阅读 xv6...
即成功编译,并在qemu里启动了xv6终端。 xv6没有exit命令退出终端,可以使用【Ctrl+A(放开)C】退出到qemu,或者用【Ctrl+A(放开)X】中止qemu的模拟。 可以用【Ctrl+P】查看进程列表发布于 2023-09-19 14:07・IP 属地北京 内容所属专栏 mit6.S081/xv6操作系统学习 什么计算机科学与技术,网瘾罢了 订阅专栏 ...
定时器中断。 设备中断。 本文主要讲解设备中断。 整体结构 处理器结构 处理器上包含cpu、高速缓存、寄存器、boot rom、中断控制器等。PLIC(Platform-Level Interrupt Control中断控制器),用来管理设备中断,并将中断路由给指定的cpu核进行响应,CLINT是定时器中断。处理中断的具体流程如下: ...
xv6没有ps命令,但是如果输入Ctrl-p,内核会打印每个进程的信息。现在紧接着尝试输入,我们可以看到两行:一行是init,一行是sh。如果需要退出qemu,键入 Ctrl-a x即可.sleep实验目的为xv6实现UNIX程序sleep。 实现的sleep应当按用户指定的ticks数暂停,其中tick是xv6内核定义的时间概念,即定时器芯片两次中断之间的时间。