【操作系统xv6】学习记录1

前置说明:
git-v9版本:git clone https://github.com/mit-pdos/xv6-public/tree/xv6-rev9
bili:https://www.bilibili.com/video/BV15r4y1z75F
深圳大学罗秋明老师的课程
我自己用的wsl2的ubuntu18 无桌面版本 make qemu-nox

bug

起初在双系统的ubuntu20桌面版上运行,前面都很好,make qemu时load disk走不动了,但是运行2022版没问题,但和罗老师的视频不匹配,就回到了v9上,后来用阿里云的centos,因为不支持虚拟化,用不了。
然后就回到了wsl2的ubuntu18上
来来回回折腾环境一天,猫了个咪的!!

启动

启动,进入xv6-public的目录执行

justin@DESKTOP-NIK28BI:/mnt/d/code/vc6/xv6-public-xv6-rev9$ make qemu-nox
退出:ctrl+A  然后按 x退出
1+0 records out
512 bytes copied, 0.000731004 s, 700 kB/s
dd if=kernel of=xv6.img seek=1 conv=notrunc
350+1 records in
350+1 records out
179440 bytes (179 kB, 175 KiB) copied, 0.0676181 s, 2.7 MB/s
qemu-system-i386 -nographic -drive file=fs.img,index=1,media=disk,format=raw -drive file=xv6.img,index=0,media=disk,format=raw -smp 2 -m 512
xv6...
cpu1: starting
cpu0: starting
sb: size 1000 nblocks 941 ninodes 200 nlog 30 logstart 2          inodestart 32 bmap start 58
init: starting sh
$ QEMU: Terminated

在这里插入图片描述
文件类型:1目录 2普通文件 3设备文件
ctrl + p 可以看到当前已经启动的进程信息

$ 1 sleep  init 80103ecf 80103f67 801047c8 80105739 801055db
2 sleep  sh 80103e93 801002aa 80100f6c 80104ac2 801047c8 80105739 801055db

在这里插入图片描述

justin@DESKTOP-NIK28BI:/mnt/d/code/vc6/xv6-public-xv6-rev9$ addr2line -e kernel 80103e13
/mnt/d/code/vc6/xv6-public-xv6-rev9/proc.c:334

shell 进程 在读缓冲器,因为键盘没有输入,读不到,所以就sleep了。

调试xv6

启动gdb sever, 切记因为我没有桌面,所以用make qemu-nox-gdb, 有桌面的可以:make qemu-gdb
用的tcp协议26000端口

justin@DESKTOP-NIK28BI:/mnt/d/code/vc6/xv6-public-xv6-rev9$ make qemu-nox-gdb
*** Now run 'gdb'.
qemu-system-i386 -nographic -drive file=fs.img,index=1,media=disk,format=raw -drive file=xv6.img,index=0,media=disk,format=raw -smp 2 -m 512  -S -gdb tcp::26000

再来一个客户端
在这里插入图片描述

justin@DESKTOP-NIK28BI:/mnt/d/code/vc6/xv6-public-xv6-rev9$ gdb -silent kernel
Reading symbols from kernel...done.
warning: File "/mnt/d/code/vc6/xv6-public-xv6-rev9/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file addadd-auto-load-safe-path /mnt/d/code/vc6/xv6-public-xv6-rev9/.gdbinit
line to your configuration file "/home/justin/.gdbinit".
To completely disable this security protection addset auto-load safe-path /
line to your configuration file "/home/justin/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:info "(gdb)Auto-loading safe path"
(gdb)

等待客户端输入命令了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/312203.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python统计分析——协方差和pearson相关系数

参考资料:用python动手学统计学 使用数据见代码: dic{"x":[18.5,18.7,19.1,19.7,21.5,21.7,21.8,22.0,23.4,23.8],"y":[34,39,41,38,45,41,52,44,44,49] } cov_datapd.DataFrame(dic) 变量x、y的协方差Cov(x,y)的计算公式如下&am…

中文字符占用字节即相关原理(实现中文(中英混合)字符串的反转)

如有不对欢迎指正。 目录 一.ASCLL字符和中文字符 1.使用无符号数表示的原因(对于中文字符): 2.但是并不是所有情况都是用无符号数(以下目前只是猜测,如有问题欢迎指正) : 1. 什么时候使用无符号数表示: 2. 不需要使用的情况: …

全渠道客服系统推荐:选型指南与最佳实践分享

售后服务是影响客户满意度的最直接的因素。有些企业不注重产品的售后服务,不仅是对客户的伤害,更是对企业品牌的损害。所以,做好售后服务对于企业来讲至关重要。 企业谈到做好售后服务,少不了一款好用的客服系统工具。其中&#…

【开源】基于Vue+SpringBoot的毕业生追踪系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登陆注册模块2.2 学生基本配置模块2.3 就业状况模块2.4 学历深造模块2.5 信息汇总分析模块2.6 校友论坛模块 三、系统设计3.1 用例设计3.2 实体设计 四、系统展示五、核心代码5.1 查询我的就业状况5.2 初始化就业状况5.…

【VRTK】【VR开发】【Unity】17-创建立体UI

【背景】 游戏无法忽略的一个要素就是UI界面,本篇开始介绍VRTK这方面的能力。 VR游戏的UI和传统电视游戏UI的不同之处在于,VR游戏的UI必须融合在VR的游戏空间内,而传统电视游戏的UI则可以位于游戏画面的上层,位于屏幕的特定位置,比如表示人物血量等的图示等。不同于传统的…

jmeter的常用功能及在测试中的基本使用和压测实战

Jmeter基础功能 了解Jmeter的常用组件 元件:多个类似功能组件的容器(类似于类) 一:Test Plan(测试计划) 测试计划通常用来给测试的项目重命名,使用多线程脚本运行时还可以配置线程组运行方式…

uniapp的css样式图片大小截图展示

目录 截取图片前截取图片后第一种方式&#xff1a;代码第二种方式&#xff1a;代码最后 截取图片前 截取图片后 第一种方式&#xff1a;代码 <view class"swiper-box-img"><image class"swiper-box-img-img" :src"item.file_path" mod…

Xline command 去重机制(一)—— RIFL 介绍

为什么要对 command 去重&#xff1f; 在一个接收外部 command 的系统中&#xff0c;通常一个 command 至少要执行一次&#xff0c;我们称其为 at-least-once semantics。如果一个 command 执行失败&#xff0c;系统内部经常会实现一套重试结构来尝试恢复这个问题&#xff0c;…

09|链(下):想学“育花”还是“插花”?用RouterChain确定客户意图

09&#xff5c;链&#xff08;下&#xff09;&#xff1a;想学“育花”还是“插花”&#xff1f;用RouterChain确定客户意图 任务设定 首先&#xff0c;还是先看一下今天要完成一个什么样的任务。 这里假设咱们的鲜花运营智能客服 ChatBot 通常会接到两大类问题。 鲜花养护…

C1189#error: WinSock.h has already been included解决方案

最近在做项目移植过程中遇到这个报错&#xff0c;解决了半天。简单记录下解决方案&#xff0c;以供给大家提供一个思路。 原因&#xff1a; 在工程中使用了Boot库之后&#xff0c;使用了socket、tcp相关的头文件&#xff0c;在其他地方还是包括了头文件<windows.h>&…

分布式【4. 什么是 CAP?】

什么是 CAP&#xff1f; C 代表 Consistency&#xff0c;一致性&#xff0c;是指所有节点在同一时刻的数据是相同的&#xff0c;即更新操作执行结束并响应用户完成后&#xff0c;所有节点存储的数据会保持相同。 A 代表 Availability&#xff0c;可用性&#xff0c;是指系统提…

啊哈c语言——4.10、for隆重登场(一起来找茬)

下面这段代码是求12345678910的值。其中有4个错误&#xff0c; 快来改正吧&#xff01; 改正后&#xff1a; #include <stdio.h> #include <stdlib.h> int main( ) {int i, sum;sum1;for(i1; i<10;i){sumsum*i;}printf("%d", sum);system("paus…