MIT6.828_HW8_User-level threads

这篇博客详细介绍了如何完成MIT6.828课程的用户级线程作业,包括线程切换的实现、uthread.c和uthread_switch.S的使用,以及如何使用gdb进行调试和测试。作业要求实现用户级线程包,使得线程可以在两个之间交替运行,并打印相应的状态信息。
摘要由CSDN通过智能技术生成

Homework: User-level threads

在此作业中,您将通过实现代码来执行线程之间的上下文切换,从而完成一个简单的用户级线程包。

Switching threads

下载utherad.cuthread_switch.S 到你的xv6目录,并在xv6Makefile中_forktest之后添加如下规则:

_uthread: uthread.o uthread_switch.o
$(LD) $(LDFLAGS) -N -e main -Ttext 0 -o _uthread uthread.o uthread_switch.o $(ULIB)
$(OBJDUMP) -S _uthread > uthread.asm

每行开头的空白字符应当是tab而非空格,在Makefile中UPROGS下定义一系列用户程序的下方添加_uthread,运行xv6,然后从xv6 Shell中运行utherad,xv6内核会打印一个线程发生页面错误的故障信息。
我们的工作是实现thread_switch.S,实现并编译运行后我们会看到类似下方的输出(确保是在CPUS=1的情况下运行):

~/classes/6828/xv6$ make CPUS=1 qemu-nox
dd if=/dev/zero of=xv6.img count=10000
10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值