- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
哈工大《操作系统》实验2
2014级本科《操作系统》实验报告(实验2)
学生姓名 曾帅143710412 院系 软件学院 任课教师 范国祥 实验TA XXX 实验地点 软件学院三楼实验室 实验时间 2016年05月19日 星期四2学时 实验目的: 建立对系统调用接口的深入认识;
掌握系统调用的基本过程;
能完成系统调用的全面控制;
为后续实验做准备。 实验内容及要求: 在Linux 0.11上添加两个系统调用,并编写两个简单的应用程序测试它们:
(int iam(const char * name);
完成的功能是将字符串参数name的内容拷贝到内核中保存下来。要求name的长度不能超过23个字符。返回值是拷贝的字符数。如果name的字符个数超过了23,则返回“-1”,并置errno为EINVAL。
在kernel/who.c中实现此系统调用。
(int whoami(char* name, unsigned int size);
它将内核中由iam()保存的名字拷贝到name指向的用户地址空间中,同时确保不会对name越界访存(name的大小由size说明)。返回值是拷贝的字符数。如果size小于需要的空间,则返回“-1”,并置errno为EINVAL。
在kernel/who.c中实现。
()$ ./iam abcdefg
$ ./whoami
abcdefg 实验过程描述、结果及思考: 简要描述实验过程(含操作步骤及看到的结果),关键是向Linux 0.11添加一个系统调用xxxx()的步骤。
修改oslab/linux-0.11/include/linux/sys.h
根据Linux调用系统调用的过程,需要把 iam()与whoami()两个函数加到全局变量,和中断函数表中就可以了,中断被调用的时候,先查找中断向量表,找到相应的函数名,调用其函数。
分别添加声明到最下面和数组中
extern int sys_ssetmask();
extern int sys_setreuid();
extern int sys_setregid();
extern int sys_iam();
extern int sys_whoami();
fn_ptr sys_call_table[] = { sys_setup, sys_exit, sys_fork, sys_read,
sys_write, sys_open, sys_close, sys_waitpid, sys_creat, sys_link,
sys_unlink, sys_execve, sys_chdir, sys_time, sys_mknod, sys_chmod,
sys_chown, sys_break, sys_stat, sys_lseek, sys_getpid, sys_mount,
sys_umount, sys_setuid, sys_getuid, sys_stime, sys_ptrace, sys_alarm,
sys_fstat, sys_pause, sys_utime, sys_stty, sys_gtty, sys_access,
sys_nice, sys_ftime, sys_sync, sys_kill, sys_rename, sys_mkdir,
sys_rmdir, sys_dup, sys_pipe, sys_times, sys_prof, sys_brk, sys_setgid,
sys_getgid, sys_signal, sys_geteuid, sys_getegid, sys_acct, sys_phys,
sys_lock, sys_ioctl, sys_fcntl, sys_mpx, sys_setpgid, sys_ulimit,
sys_uname, sys_umask, sys_chroot, sys_ustat, sys_dup2, sys_getppid,
sys_getpgrp, sys_setsid, sys_sigaction, sys_sgetmask, sys_ssetmask,
sys_setreuid,sys_setregid, sys_iam, sys_whoami };
linux-0.11/kernel/system_call.s
需要把nr_system_calls?由72改为 74? 表示了中断函数的个数。
# offsets within sigaction
sa_handler = 0
sa_mask = 4
sa_flags = 8
sa_restorer = 12
nr_system_calls = 74
修改linux-0.11/include
您可能关注的文档
最近下载
- 黔东南州2024——2025学年度第一学期期末文化水平测试九年级化学试卷.docx VIP
- (一模)2025年马鞍山市高三第一次教学质量监测英语试卷(含答案).pdf
- 2025年高考语文大题突破训练:微写作(北京专用)解析版.pdf VIP
- 音乐鉴赏答案-周海宏 .pdf VIP
- 艾灸项目商业计划书.docx VIP
- 线上心理咨询创业项目计划书.pptx VIP
- 2023-2024学年河南省重点中学七年级(上)开学历史试卷(含解析).docx VIP
- 煤矿工程瓦斯抽采系统井下抽采管路安装工程施工组织设计_山西.docx
- JJF(鲁) 194-2024 专用砝码地方校准规范.docx VIP
- 普通职员月度工作总结.docx VIP
原创力文档


文档评论(0)