当前位置: 首页 > news >正文

站长网2017网站建设有市场吗

站长网,2017网站建设有市场吗,网站系统繁忙怎么办,wordpress导航制作Lab2: system calls 在上一个实验室中#xff0c;您使用系统调用编写了一些实用程序。在本实验室中#xff0c;您将向xv6添加一些新的系统调用#xff0c;这将帮助您了解它们是如何工作的#xff0c;并使您了解xv6内核的一些内部结构。您将在以后的实验室中添加更多系统调…Lab2: system calls 在上一个实验室中您使用系统调用编写了一些实用程序。在本实验室中您将向xv6添加一些新的系统调用这将帮助您了解它们是如何工作的并使您了解xv6内核的一些内部结构。您将在以后的实验室中添加更多系统调用。 Attention 在你开始写代码之前请阅读xv6手册《book-riscv-rev1》的第2章、第4章的第4.3节和第4.4节以及相关源代码文件 系统调用的用户空间代码在user/user.h和user/usys.pl中。内核空间代码是kernel/syscall.h、kernel/syscall.c。与进程相关的代码是kernel/proc.h和kernel/proc.c。 要开始本章实验请将代码切换到syscall分支 $ git fetch $ git checkout syscall $ make clean如果运行make grade您将看到测试分数的脚本无法执行trace和sysinfotest。您的工作是添加必要的系统调用和存根stubs以使它们工作。 System call tracingmoderate YOUR JOB 在本作业中您将添加一个系统调用跟踪功能该功能可能会在以后调试实验时对您有所帮助。您将创建一个新的trace系统调用来控制跟踪。它应该有一个参数这个参数是一个整数“掩码”mask它的比特位指定要跟踪的系统调用。例如要跟踪fork系统调用程序调用trace(1 SYS_fork)其中SYS_fork是kernel/syscall.h中的系统调用编号。如果在掩码中设置了系统调用的编号则必须修改xv6内核以便在每个系统调用即将返回时打印出一行。该行应该包含进程id、系统调用的名称和返回值您不需要打印系统调用参数。trace系统调用应启用对调用它的进程及其随后派生的任何子进程的跟踪但不应影响其他进程。 我们提供了一个用户级程序版本的trace它运行另一个启用了跟踪的程序参见user/trace.c。完成后您应该看到如下输出 $ trace 32 grep hello README 3: syscall read - 1023 3: syscall read - 966 3: syscall read - 70 3: syscall read - 0 $ $ trace 2147483647 grep hello README 4: syscall trace - 0 4: syscall exec - 3 4: syscall open - 3 4: syscall read - 1023 4: syscall read - 966 4: syscall read - 70 4: syscall read - 0 4: syscall close - 0 $ $ grep hello README $ $ trace 2 usertests forkforkfork usertests starting test forkforkfork: 407: syscall fork - 408 408: syscall fork - 409 409: syscall fork - 410 410: syscall fork - 411 409: syscall fork - 412 410: syscall fork - 413 409: syscall fork - 414 411: syscall fork - 415 ... $在上面的第一个例子中trace调用grep仅跟踪了read系统调用。32是1SYS_read。在第二个示例中trace在运行grep时跟踪所有系统调用2147483647将所有31个低位置为1。在第三个示例中程序没有被跟踪因此没有打印跟踪输出。在第四个示例中在usertests中测试的forkforkfork中所有子孙进程的fork系统调用都被追踪。如果程序的行为如上所示则解决方案是正确的尽管进程ID可能不同 提示 在*Makefile*的UPROGS中添加$U/_trace运行make qemu您将看到编译器无法编译user/trace.c因为系统调用的用户空间存根还不存在将系统调用的原型添加到user/user.h存根添加到user/usys.pl以及将系统调用编号添加到kernel/syscall.hMakefile调用perl脚本user/usys.pl它生成实际的系统调用存根user/usys.S这个文件中的汇编代码使用RISC-V的ecall指令转换到内核。一旦修复了编译问题注如果编译还未通过尝试先make clean再执行make qemu就运行trace 32 grep hello README但由于您还没有在内核中实现系统调用执行将失败。在kernel/sysproc.c中添加一个sys_trace()函数它通过将参数保存到proc结构体请参见kernel/proc.h里的一个新变量中来实现新的系统调用。从用户空间检索系统调用参数的函数在kernel/syscall.c中您可以在kernel/sysproc.c中看到它们的使用示例。修改fork()请参阅kernel/proc.c将跟踪掩码从父进程复制到子进程。修改kernel/syscall.c中的syscall()函数以打印跟踪输出。您将需要添加一个系统调用名称数组以建立索引。 Sysinfomoderate YOUR JOB 在这个作业中您将添加一个系统调用sysinfo它收集有关正在运行的系统的信息。系统调用采用一个参数一个指向struct sysinfo的指针参见kernel/sysinfo.h。内核应该填写这个结构的字段freemem字段应该设置为空闲内存的字节数nproc字段应该设置为state字段不为UNUSED的进程数。我们提供了一个测试程序sysinfotest如果输出“sysinfotest: OK”则通过。 提示 在Makefile的UPROGS中添加$U/_sysinfotest当运行make qemu时user/sysinfotest.c将会编译失败遵循和上一个作业一样的步骤添加sysinfo系统调用。要在user/user.h中声明sysinfo()的原型需要预先声明struct sysinfo的存在 struct sysinfo; int sysinfo(struct sysinfo *);一旦修复了编译问题就运行sysinfotest但由于您还没有在内核中实现系统调用执行将失败。 sysinfo需要将一个struct sysinfo复制回用户空间请参阅sys_fstat()(kernel/sysfile.c)和filestat()(kernel/file.c)以获取如何使用copyout()执行此操作的示例。要获取空闲内存量请在kernel/kalloc.c中添加一个函数要获取进程数请在kernel/proc.c中添加一个函数 可选的挑战 打印所跟踪的系统调用的参数easy。计算平均负载并通过sysinfo导出moderate。
http://www.zqtcl.cn/news/938923/

相关文章:

  • phpcms旅游网站模板辽宁建设工程信息网开标大厅我的项目中没有显示
  • 深圳网站建设方维网络建设一个网站报价
  • 北京网站建设 案例邢台微商城制作设计
  • 网站开发一般都有系统wordpress评论优化
  • 网站建设找好景科技山东关键词网络推广
  • 网科创想网站管理外贸网站推广和建站
  • 唐山企业网站模板建站动物自己做的网站
  • 旅游攻略网站开发外包网站开发公司
  • 免得做网站wordpress国内主机
  • 绍兴网站建设方案报价朗格手表网站
  • 建立自己公司网站的方法南京网站制作多少钱
  • 字形分析网站做自媒体查找素材的网站
  • 做网站建设的上市公司有哪些网站源码怎么预览
  • 怎么学做电子商务网站知果果网站谁做的
  • 网站软文推广网站wordpress建站教程第六节
  • 公司制作网站多少钱移动端网站建设的请示
  • 做网站 对方传销廊坊网站备案
  • 1688网站链接图片怎么做wordpress 饭店主题
  • 人事怎么做招聘网站比对分析教育机构网站开发
  • 抚顺市+网站建设做网站用apache还是nginx
  • 群晖ds216j能否做网站百度收录官网
  • 白银市建设局网站网站设计规划的一般流程
  • 佛山网站建设企划动力新兴县城乡建设局网站
  • 软件开发 网页设计网站网页游戏链接大全
  • 网站建设犭金手指a15做校园网站 怎么备案
  • 淘客网站怎么做排名百度指数里的资讯指数是什么
  • 泰州网站开发网站建设个可行性研究
  • 网站ipv6改造怎么做 网页代码网页游戏在线玩链接
  • 做网站和优化学校asp网站
  • 佛山正规网站建设哪家好合肥专业网站优化价格