【操作系统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 add
        add-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 add
        set 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)

等待客户端输入命令了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据模型设计

数据模型设计,可以理解为数据库中的表结构设计。 我们在设计器中创建的数据模型,也称为实体。我们将前端页面中传过来的数据保存到对应的实体中,即为将前端数据保存到了数据库中。 1 、实体与枚举的创建 1 .1 创建供应商 supplier实体 在左…

旁挂二层隧道转发小实验

WLAN配置 旁挂二层隧道转发 1.基础配置: SW1: system-view vlan batch 100 to 101interface GigabitEthernet 0/0/1 port link-type trunk port trunk pvid vlan 100 //打上管理VLAN的100标签 port trunk allow-pass vlan 100 101interface GigabitEthernet 0/…

蓝桥杯C/C++程序设计——单词分析

题目描述 小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出…

mount -a 出错任然重启问题

问题来源 在磁盘分区挂载过后,为了创建的新分区的能够永久挂载,我们常常会在/etc/fstab下写下配置文件,使其永久挂载。但是该配置一旦写错,就面临这死机问题,为此,以下操作针对该问题进行 解决方案&#x…

WSL使用VsCode运行cpp文件

文章目录 缘起主要步骤参考 缘起 今天在阅读《C20设计模式-可复用的面向对象设计方法(原书第2版)》的时候,遇到代码想要运行一下,于是决定使用wsl下的vscode配置cpp的环境。 主要步骤 1.安装gcc和g编译器 打开命令行输入wsl&am…

linux驱动(一):led

本文主要探讨210的led驱动相关知识。 驱动 操作系统驱动硬件的代码,驱动上层是系统调用API,下层是硬件 宏内核:内核整体上为一个过程实现,运行在同一地址空间,相互调用简单高效 微内核:功能为独立过程,过程间通过IPC通信 …

从实际工作情况,介绍嵌入式(MCU)软件开发常用(通用)工具

目录 前言 1、代码阅读及编辑工具(VSCode、Understand) 2、代码对比工具(Beyond Compare) 3、代码仓库相关工具(Git、SVN、Tortoise) 4、文本编辑器(Notepad) 5、电脑文件搜索工…

使用递归实现深拷贝

文章目录 为什么要使用递归什么深拷贝具体实现基础实现处理 函数处理 Symbol处理 Set处理 Map处理 循环引用 结语-源码 为什么要使用递归什么深拷贝 我们知道在 JavaScript 中可以通过使用JSON序列化来完成深拷贝,但是这种方法存在一些缺陷,比如对于函数…

「Kafka」生产者篇

「Kafka」生产者篇 生产者发送消息流程 在消息发送的过程中,涉及到了 两个线程 ——main 线程和Sender 线程。 在 main 线程中创建了 一个 双端队列 RecordAccumulator。 main线程将消息发送给RecordAccumulator,Sender线程不断从 RecordAccumulator…

<软考高项备考>《论文专题 - 37 采购管理(2) 》

2 过程1-规划采购管理 2.1 问题 4W1H过程做什么记录项目采购决策、明确采购方法,及识别潜在卖方的过程作用:确定是否从项目外部获取货物和服务,如果是,则还要确定将在什么时间、以什么方式获取什么货物和服务为什么做为如何采购…

移动端开发框架mui代码在安卓模拟器上运行(HbuilderX连接到模拟器)

开发工具 HBuilder X 3.8.12.20230817 注意:开发工具尽量用最新的或较新的。太旧的版本在开发调试过程中可能会出现莫名其妙的问题。 1、电脑下载安装安卓模拟器 我这里使用的是 夜神模拟器 ,也可以选择其他安卓模拟器 夜神模拟器官网:夜神安…

idea实现Java连接MySQL数据库

1.下载MySQL并安装 首先如果没有mysql的需要先下载MySQL,可以看这个教程: Mysql超详细安装配置教程(保姆级)_mysql安装及配置超详细教程-CSDN博客 2.下载mysql 的jdbc驱动 官网:MySQL :: Download Connector/J 解压并将驱动jar包导入id…

ThinkPad T14s Gen3,ThinkPad X13 Gen3(21BS,21BQ,21BR,21BN)原装出厂Win11系统

lenovo联想ThinkPad系列T14s/X13 Gen3笔记本电脑原装Windows11预装OEM系统镜像 链接:https://pan.baidu.com/s/1yhRMIjlkFvt86aLioOoNOA?pwdfrsp 提取码:frsp 原厂系统自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志、Office办公软件、联想…

内网常规攻击路径

点击星标,即时接收最新推文 随着网络技术的发展,企业内部网络架构的变化,网络设备多样性的增加,面对内网攻击,防御体系逐渐阶梯化,通过不同维度的防御联动,将攻击拒之门外。对于突破网络边界后进…

Rust学习笔记000 安装

安装命令 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh $ curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh info: downloading installerWelcome to Rust!This will download and install the official compiler for the Rust programming la…

Goodbye2023, Hello 2024!

2023的所有比赛结束了,以后 xcpc 相关的比赛应该都和我没啥关系了,可能只打打蓝桥天梯了,等到明年的时候估计很多算法的东西也都忘记了吧,彻底退休了。打铁人不配叫退役,也不敢公开这篇文章,只敢在没人看的…

【算法】数论---欧拉函数

什么是欧拉函数? 对于正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目,记作φ(n) φ(1)1 当m,n互质时,φ(mn)φ(m)∗φ(n) 一、求一个正整数的欧拉函数---(先对它分解质因数,然后套公式&#xf…

2024新年贺词:从“第一次”到“每一次”,锐意进取,未来可期

从“第一次”到“每一次”:锐意进取,未来可期! 2023年,对和数来讲,是很不平凡的一年。在这一年里,我们共同创造并见证了很多个“第一次”。2023年8月,SHANHAI国际版正式在泰国上线。第一次“出…

LLM之RAG实战(九)| 高级RAG 03:多文档RAG体系结构

在RAG(检索和生成)这样的框架内管理和处理多个文档有很大的挑战。关键不仅在于提取相关内容,还在于选择包含用户查询所寻求的信息的适当文档。基于用户查询对齐的多粒度特性,需要动态选择文档,本文将介绍结构化层次检索…

python+opencv实现图片/短视频一键去水印

目录 0 前言1 准备工作2 读取图片或视频3 添加回调获取鼠标绘制水印区域4 调用opencv函数5 绘制蒙版主循环6 去水印主循环总结 0 前言 在制作ppt个人文章或者分享图片过程中,经常会遇到一些带有水印的情况,不少人都希望能够去除这些水印,提高…