欢迎来到天天文库
浏览记录
ID:33882739
大小:82.71 KB
页数:7页
时间:2019-03-01
《操作系统-系统调用实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、操作系统实验报告题目:实验5系统调用学院:教师:姓名:学号:班级:1•实验目的学习如何产生一个系统调用,以及怎样通过往内核中增加一个新函数,从而在内核空间中实现对用户空间的读/写。学习重建内核。2实验内容(1)设计并实现一个新的系统调用pedagogictime0,该函数通过使用一个引用参数的调用返回当前的系统时间。(2)编写一个用户空间程序来测试pedagogictime()。3.实验环境系统版本:Ubuntu14.04LTS内核版本:Linux3.2.0.29-generic欲编译内核:IJnux-2.6.32.604.实验步骤(
2、过程)Stepl:解压内核:内核文件在文件目录Documents下,将压缩包解压到/usr/src/目录下。(1)oslinux@oslinux-virtual-machine:~$cdDocuments//进入Documents目录下(2)os1inux@os1inux-virtual-machine:~/Documents$sudocplinux-2.6.32.60.tar.bz2/usr/src/〃将压缩包拷贝到/usr/src/目录下(2)oslinux@oslinux-virtual-machinc:~/Documcnts$
3、cd/usr/src///进入/usr/src/目录下(4)oslinux@oslinux-virtual-machine:/usr/src$sudotar-jxvf1inux-2.6.32.60.tar.bz2//解压压缩包Step2:添加系统调用:(1)编写系统调用服务例程编写加到内核中的源程序,即将要加到一个内核文件中去的一个函数,该函数的名称应该是新的系统调用名称前面加上sy.s_标志。在/usr/src/1inux-2.6.32.60/kernel/sys.c文件屮添加源代码。//用编辑器打开sys.c文件添加系统调用ped
4、agogictime的代码oslinux@oslinux-virtual-machinesudogedit/usr/src/1inux-2.6.32.60/kerne1/sys.c//添加到sys.c的最后一行,代码如下:asmlinkagelongsvspedagogictime(structtimeval*tv){~if(1ikely(tv)){structtimevalktv;dogcttimcofday(&ktv);if(copytouser(tv,&ktv,sizeof(ktv)))return-EFAULT;}return
5、0;}(1)添加系统调用号为了从已有的内核程序中增加到新的函数的连接,需要编辑两个文件:4/usr/src/linux-2・6.32.60/arch/x86/include/asm/unistd_32.h中增加新的系统调用号同时还要将宏变量NR_syscalls的值加1;oslinux@oslinux-virtual-machine:~$sudogedit/usr/src/1inux-2.6.32.60/arch/x86/include/asm/unistd_32.h添加下列代码至文件中336337再define_NR_perf_ev
6、ent_open#deftne―NR_pedagogtcttme^defineNR_syscalls338(2)修改系统调用表在/usr/src/1inux-2・6.32.60/arch/x86/kernel/syscall_table_32・S中增加新的内核函数的指针。——oslinux@oslinux-virtual-machine:〜$sudogedit/usr/src/1inux~2.6.32.60/arch/x86/kernel/syscall_table_32.S•longsys_rt_tgsigqueuei.nfo/*3
7、35*/•longsys_perf_event_open・longsys_pedagogtcttme/*337*/(1)重新编译Linux内核在当前工作目录(/usi7src/linux-2.6.32.60)进入超级用户,才可以重建内核。oslinux@oslinux-virtual-machine:~$cd/usr/src/1inux-2.6.32.60os1inux@oslinux-virtual-machinc:/usr/src/1inux-2.6.32.60$sudo-sStpe3:开始编译内核:编译内核的基本过程:root@
8、oslinux-virtual-machinc:/usr/src/1inux-2.6.32.60#makemrproper//清除依赖root@oslinux-virtual-machine:/usr/src/1inux
此文档下载收益归作者所有