1677_MIT 6.828 xv6中增加CPU alarm

文章详细描述了如何在Unix操作系统中添加alarm系统调用的过程,包括修改进程数据结构、初始化处理、添加宏定义、更新系统调用查询表、编写汇编代码和用户层面的接口。作者提到了一个可能的bug,并分享了测试结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         前面把课程要求做了一个简单的翻译,从课程的要求说明中其实已经能够得到很多的提示。这个alarm的功能,其实有点类似回调函数的概念,触发的条件是中断计数器。但是,这个触发逻辑是软件实现的。

         首先,得实现一个alarm的系统调用。有了之前date的添加经历,这个还是很容易的。

         首先为了能够实现这样的触发机制,这里对进程的数据结构做了一定的修改。

         接着,这里增加了一个初始化的处理。其实,这里也埋下了一个bug,那就是如果是这么初始化的话,只要是OS运行的时间足够长,这个alarm其实一定会触发。我考虑的方式是直接增加一个初始化的使能参数,而网络上参考了一下其他人的设计其实大部分设计都是采用了带有符号的数据类型初始化的时候给一个负值。我自己已经调试完了基本的功能,这个暂时不去改了。

         接下来,增加这个宏定义。

         与之对应的,增加这个系统调用的查询表。

         增加汇编代码中的调用entry。

         User.h中增加系统调用接口的声明。

         接下来是系统调用的实现。这样,系统调用的基本框架就实现了。接下来,准备测试的用户代码。

         为了能够生成alarmtest的系统应用,需要修改makefile。

         Makefile中增加如上的配置。这样,最后生成的系统镜像中在文件系统中会带有这个可执行文件。这样,一个基本的框架就实现了,具体的alarm的触发还得继续设计。按照提示,这个需要在trap中做处理。

         这里的判断条件信息在要求附加的提示信息中都已经给出来了,如果上面的alarmticks具有正负号的话,的确是能够保证这里不会出现误触发。

         最后进行编译以及测试,测试的结果如上,alarm的信息已经出现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值