竞赛网站建设风险评估,muse 转 wordpress主题,重庆网站推广优化,wordpress默认login全部学习汇总#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 我觉得看了几个MIT的课程之后让我觉得我的大学四年有点浪费时光#xff0c;看起来MIT的课程的确是很有饱满度。 这里#xff0c;再整理一份课程中的作业要求。
… 全部学习汇总 GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 我觉得看了几个MIT的课程之后让我觉得我的大学四年有点浪费时光看起来MIT的课程的确是很有饱满度。 这里再整理一份课程中的作业要求。
家庭作业xv6 CPU alarm 在本练习中您将向xv6添加一个功能该功能在进程使用CPU时间时定期提醒进程。这对于那些想限制占用CPU时间的计算绑定进程或者对于那些想计算但又想采取一些周期性行动的进程来说可能很有用。更一般地说您将实现用户级中断/故障处理程序的原始形式例如您可以使用类似的方法来处理应用程序中的页面错误。 您应该添加一个新的alarm(interval, handler)系统调用。如果应用程序调用alarm(n, fn)那么在程序消耗的CPU时间的每n个“滴答”之后内核将导致调用应用程序函数fn。当fn返回时应用程序将从停止的位置恢复。在xv6中tick是一个相当任意的时间单位由硬件计时器生成中断的频率决定。 您应该将以下示例程序放在alarmtest.c中 该程序调用alarm10periodic要求内核每隔10次强制调用periodic然后挂起一段时间。在内核中实现alarm系统调用后alarmtest应该会产生如下输出 如果您只看到一个“alarm”请尝试将alarmtest.c中的迭代次数增加10倍。 提示您需要修改Makefile以便将alarmtest.c编译为xv6用户程序。 提示要放入user.h的正确声明是 提示您还必须更新syscall.h和usys.S以允许alarmtest调用报警系统调用。 提示您的sys_alarm应该将报警间隔和指向处理程序函数的指针存储在proc结构中的新字段中见proc.h。 提示这里有一个可用的sys_alarm 将其添加到syscall.c中并将SYS_ALARM的条目添加到该文件中的syscalls数组中。 提示您需要跟踪从上一次调用或直到下一次调用到进程的alarm处理程序已经传递了多少节拍为此您还需要在struct proc中添加一个新字段。您可以在proc.c中的allocproc中初始化proc字段。 提示每一次滴答声硬件时钟都会强制中断在trap中按T_IRQ0IRQ_TIMER处理你应该在这里添加一些代码。 提示只有当有进程在运行并且计时器中断来自用户空间时才需要操作进程的alarm信号你想要这样的东西 提示在您的IRQ_TIMER代码中当进程的alarm间隔到期时您希望让它执行其处理程序。你是怎么做到的 提示你需要安排一些事情这样当处理程序返回时进程就会恢复执行它停止的地方。你怎么能做到这一点 提示您可以在alarmtest.asm中看到alarmtest程序的汇编代码。 提示如果你告诉qemu只使用一个CPU你可以通过运行 如果您的解决方案在调用处理程序时不保存调用方保存的用户寄存器那就没问题了。 可选的挑战1保存和恢复调用方保存的用户注册到处理程序的调用。2 防止对处理程序的重入调用——如果处理程序尚未返回请不要再调用它。3 假设你的代码没有检查tf-esp是否有效那么就对内核进行安全攻击利用你的alarm处理程序调用代码。 小结这就是这一次的作业要求这里面新引入了一个叫做alarm的概念。而这个概念其实在我现在使用的RTOS中也是有的至于这个Alarm在底层的实现机制是什么样子的之前的确是没有研究过。借着这个机会需要对此进行一个更加透彻的学习分析。