首页 > 其他分享 >xv6踩坑笔记

xv6踩坑笔记

时间:2024-09-28 13:34:20浏览次数:5  
标签:bd kalloc malloc return void 笔记 xv6 kmem

lazy allocation

test pgbug: FAILED

在系统调用函数(如sys_pipe)中,检测到致命错误(例如访问非法内存)时,不能直接用p->killed = 1,而是要return -1。

mmap

scause 0x000000000000000d (load page fault)
sepc=0x0000000080007bb0 stval=0x0000000000000000
PANIC: kerneltrap

gdb调试了一波,发现在使用bd_malloc时跳入kerneltrap
明明实验三的时候还可以用bd_malloc,怎么现在用不了了?
看了一下代码,发现实验三中,kalloc的定义是这样的:

void *
kalloc(void)
{
  return bd_malloc(PGSIZE);
}

然后实验九中是这样的:

void *
kalloc(void)
{
  struct run *r;

  acquire(&kmem.lock);
  r = kmem.freelist;
  if(r)
    kmem.freelist = r->next;
  release(&kmem.lock);

  if(r)
    memset((char*)r, 5, PGSIZE); // fill with junk
  return (void*)r;
}

所以实验九中不能用bd_malloc(吐血

标签:bd,kalloc,malloc,return,void,笔记,xv6,kmem
From: https://www.cnblogs.com/searchstar/p/18437469

相关文章

  • numpy学习笔记
    官方文档:https://numpy.org/doc/stable/numpy.array从pythonlist创建np.array([1,2,3])从多个pythonlist创建一维数组如果是确定数量的list,可以用np.concatenate:a=[1,2,3]b=[4,5,6]np.concatenate((a,b))输出:array([1,2,3,4,5,6])来源:https://stac......
  • 量子计算机学习笔记
    qubit经典的bit的状态空间为2,要么是0,要么是1。但是qubit可以同时是0和1,其状态空间可以看作是一个半径为1的球面,如下图Blochsphere所示。图片来源:https://en.wikipedia.org/wiki/Bloch_sphere可见,与直觉不同,它有两个自由度。为了简化,将其记为下面的形式:图片来源:http://www......
  • 系统集成项目管理工程师笔记1 - 第一章 信息化发展
    基础知识第一章信息化发展1.1信息与信息化1.1.1信息基础信息物质、能量以及其属性的标示的集合,是确定性的增加。以物质介质为载体,传递和反映世界各种事物存在方式、运动状态等的表征。信息不是物质,也不是能力。以一种普遍形式,表达物质运动规律,在客观世界中大量存在、产......
  • 可视化对话树编辑笔记
    在制作RPG甚至AVG的时候,我们要涉及大量的文本编辑,这个时候不可视化的界面会大大提升项目的维护成本(非常好脚本,使我AVG项目崩溃),所以我们需要自己创建一个文本编辑界面。而在涉及对话的时候,这个叫做对话树的结构具有不错的性质,对话树是一个简单的多叉树结构,但节点被分为CP......
  • SpringBoot笔记
    类的封装类的封装//使用注解自动生成Setter、Getter、toString、无参构造函数、全参构造函数@Data@NoArgsConstructor@AllArgsConstructorpublicclassEmp{privateIntegerid;//IDprivateStringusername;//用户名privateStringpassword;//密码......
  • 笔记篇 SSH密钥泄露&&提权&&溢出&&服务发现
    首先启动我们的靶机和KALI(需要靶机环境请在本篇留言或私信作者)首先在KALI输入ifconfig查看网段此处为80网段接着输入netdiscover -r 192.168.80.1/24 <IP/子网掩码>除去192.168.80.1网关和192.168.80.2我们对剩下的进行ping检测192.168.80.254丢包192.168.80.......
  • prometheus学习笔记之node-export
    1.安装node-exportk8s各node节点使⽤⼆进制或者daemonset⽅式安装node_exporter,⽤于收集各k8snode节点宿主机的监控指标数据,默认监听端⼝为9100wgethttps://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gztarxfno......
  • JavaSE笔记_dai01
    标识符(一)标识符的命名规则1.由字母、数字、下划线、$组成,不能由数字开头2.严格区分大小写3.不能使用系统保留字4.参考驼峰命名法(二)标识符的命名规范1.见名知意2.参考驼峰命名法3.类、接口:都首字母大写,其他单词小写4.常量:全部大写,用下划线分割5.方法、变量:首字母小写,后......
  • Flask学习笔记(二)
    目录1.遇到的问题2.知识点2.1ORM模型2.1.1 ORM模型映射到增删改查2.1.2数据库外键2.1.3创建一个数据库表2.1.4通过外键关系查找2.1.5更新数据库结构2.2请求上下文和应用上下文2.2.1请求上下文2.2.2应用上下文3.开启Debug模式1.遇到的问题1.sqlalchemy.......
  • 前端功能页面展示笔记(一)
    同域:协议域名和端口号相同解决跨域问题 CORS(app)   fromflask_corsimportCORSapp=Flask(__name__)CORS(app)@app.route('/',methods=['GET'])defgenerate_images():配置路由后面要紧跟调用的函数通过this.images调用的数据一定要存在于data()中声明后端......