【操作系统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.rhkb.cn/news/228248.html

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

相关文章

matlab列优先与高维矩阵重构

由于matlab在列化a(:)以及reshape(a)等操作中是列优先的,所以要重构出新的高维度矩阵,通常要把reshape和permute结合起来使用。 先到 http://caffe.berkeleyvision.org/ 下载 训练好的model bvlc_reference_caffenet.caffemodel; 更多caffe使用也请参看…

分布式【雪花算法】

雪花算法 背景:在分布式系统中,需要使用全局唯一ID,期待ID能够按照时间有序生成。 **原理:**雪花算法是 64 位 的二进制,一共包含了四部分: 1位是符号位,也就是最高位,始终是0&am…

Python数值型字符串校验(try异常拦截解析)

从键盘输入一行字符串,编写Python代码判定字符串是python“合法”数值。 (笔记模板由python脚本于2023年12月25日 18:00:52创建,本篇笔记适合熟悉Python符串基本数据类型的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.py…

docker +gitee+ jenkins +maven项目 (一)

jenkins环境和插件配置 文章目录 jenkins环境和插件配置前言一、环境版本二、jenkins插件三、环境安装总结 前言 现在基本都是走自动化运维,想到用docker 来部署jenkins ,然后jenkins来部署java代码,做到了开箱即用,自动发布代码…

【42页动态规划学习笔记分享】动态规划核心原理详解及27道LeetCode相关经典题目汇总

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推荐--…

DevOps持续交付之容器化CICD流水线

DevOps持续交付 随着DevOps⼤规模化的落地和应⽤,持续集成以及持续交付已经是⼀种常态的。CI指的是持续集成,使⽤的开源⼯具是Jenkins,CD指的是持续交付和持续部署,⼀个完整的软件开发⽣命周期为: 主要流程可以具体为: 构建阶段…

【K8S 部署】基于kubeadm搭建Kurbernetes集群

目录 一、基本架构 二、环境准备: 三、安装部署 1、所有节点安装docker 2、、所有节点安装kubeadm,kubelet和kubectl 3、配置网络--flannel 4、测试 pod 资源创建 四、安装部署与k8s集群对接的Harbor仓库 五、Dashboard安装部署: 一、基本架构…

mac 生成 本地.ssh

输入下面命令行 ssh-keygen 默认回车得到下面的 Generating public/private rsa key pair. Enter file in which to save the key (/Users/{用户名}/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has be…

论文阅读——SG-Former

SG-Former: Self-guided Transformer with Evolving Token Reallocation 1. Introduction 方法的核心是利用显著性图,根据每个区域的显著性重新分配tokens。显著性图是通过混合规模的自我关注来估计的,并在训练过程中自我进化。直观地说,我们…

文件监控-IT安全管理软件

文件监控和IT安全管理软件是用于保护企业数据和网络安全的工具。这些工具可以帮助企业监控文件的变化,防止未经授权的访问和修改,并确保数据的安全性和完整性。 一、具有哪些功能 文件监控软件可以实时监控文件系统的活动,包括文件的创建、修…

C++继承与派生——(8)多继承

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 苦难和幸福一样,都是生命盛…

接入Cloudflare后Nginx和Django获取用户真实IP的办法

可以用Nginx的real_ip的相关命令来实现这个需求。 01-real_ip命令集详解 real_ip命令的使用分为两个步骤: 01-1-设置从哪些代理IP获取真实IP 第1个步骤:通过set_real_ip_from命令设置从哪些代理IP请求获取真实的IP,比如下面的命令: set_real_ip_from…

深入解析泛型

一、泛型的诞生 在C#1 中我们还没有泛型的时候我们收集数据通常需要使用到数组,或者使用封装好的数组集合Hashtable ArrayList。 举个例子: 我们在读取文件的时候就会需要一个数组来储存读取的数据的内容 但我们并不知数据的具体长度也就无法在声明的…

信息安全概论考试题目

文章目录 一、计算题二、网络安全协议应用(30 分)三、材料分析(15 分)四、系统安全配量(共 15 分) 一、计算题 1、Playfair 算法属于经典对称加密方式。曾经在相当长的一段时期内,Playfair算法被认为是一种牢不可破的加密方法。现有明文 introduction to informati…

python使用openpyxl操作excel

文章目录 前提读取已有excel创建一个excel工作簿对象创建excel工作簿中的工作表获取工作表第一种:.active 方法第二种:通过工作表名获取指定工作表​​​​​​第三种:.get_sheet_name() 修改工作表的名称数据操作写入数据按单元格写入通过指…

Java 基础学习(十九)网络编程、反射

1 Socket编程 1.1 Socket编程概述 1.1.1 Socket简介 在网络编程中,Socket(套接字)是一种抽象概念,它用于在不同计算机之间进行通信。Socket可以看作是一种通信的端点,可以通过Socket与其他计算机上的程序进行数据传…

2021-06-21 C51的模拟羽毛球游戏设计

缘由C51的模拟羽毛球游戏设计求解_嵌入式-CSDN问答 #include "REG52.h" sbit K2 P1^6; sbit K1 P1^7; bit k1; unsigned char code SmZiFu[]{63,6,91,79,102,109,125,7,127,111,128};//0-9. unsigned char Js0,fen0;//中断计时 unsigned int miao8,dfj0,dfy0; voi…

计算机科学速成课【学习笔记】(2)——电子计算机

本集课程B站链接 2. 电子计算机-Electronic Computing_哔哩哔哩_bilibili2. 电子计算机-Electronic Computing是【计算机科学速成课】[40集全/精校] - Crash Course Computer Science的第2集视频,该合集共计40集,视频收藏或关注UP主,及时了…

FA模板制作流程

1、FA模板制作的流程(完整复制模板制作) 总结: FA完整复制云桌面模板流程: 1、安装一个全新的Windows,挂载并安装tools 2、关闭防火墙、启动administrator本地超管用户 3、挂载FusionAccess_WindowsDesktop_Instal…

SpringBoot实用篇

SpringBoot实用篇 1、热部署 什么是热部署? 所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。对于Java应用程序来说,热部署就是在运行时更新Java类文件。 热部署有什么用? 节约时间,热…