20110622-期末考试试题.pdf

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
20110622-期末考试试题

清华大学本科生考试试题专用纸 考试课程:操作系统(A 卷) 时间:2011 年06 月22 日下午2:30~4:30 任课教师:__________ 系别: 班级: 学号: 姓名: 答卷注意事项: 1. 在开始答题前,请在试题纸和答卷本上写明系别、班级、学号和姓名。 2. 在答卷本上答题时, 要写明题号, 不必抄题。 3. 答题时, 要书写清楚和整洁。 4. 请注意回答所有试题。本试卷有7 个题目,共23 页。 5. 考试完毕, 必须将试题纸和答卷本一起交回。 一、 (20分)下面是与read()系统调用实现相关源代码。请补全其中所缺的代码,以正确完 成从用户态函数read()到内核态函数sysfile_read()的参数传递和返回过程。示:每处 需要补全的代码只需要一行,一共有10个空要填。 user/libs/file.c ... int read(int fd, void *base, size_t len) { ...(1)... } ... user/libs/syscall.c ... #define MAX_ARGS 5 static inline int syscall(int num, ...) { int ret; va_list ap; va_start(ap, num); uint32_t a[MAX_ARGS]; int i; for (i = 0; i MAX_ARGS; i ++) { a[i] = va_arg(ap, uint32_t); } va_end(ap); asm volatile ( int %1; : =a (ret) 第 1 页/共23 页 : i (T_SYSCALL), a (num), d (a[0]), c (a[1]), b (a[2]), D (a[3]), S (a[4]) : cc, memory); return ret; } ... int sys_read(int fd, void *base, size_t len) { ...(2)... } ... libs/stdarg .h ... typedef char * va_list; #define __va_size(type) \ ((sizeof(type) + (sizeof(long) - 1)) / sizeof(long) * sizeof(long)) #define va_start(ap, last) \ ((ap) = (va_list)(last) + __va_size(last)) #define va_arg(ap, type)

文档评论(0)

ipbohn97 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档