添加系统调用实验报告(共20页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《添加系统调用实验报告(共20页).doc》由会员分享,可在线阅读,更多相关《添加系统调用实验报告(共20页).doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上一、构建基本的实验环境1.1基本实验环境与前提条件Windows7 、Word 2010、Vmware WorkStation 8.5、AdobeReaderReadHatLinux 9.0,gcc,viLinux内核V2.4.181.2虚拟机的安装及使用1.3将Linux 内核源代码及配置文件传送给虚拟机上的Red Hat Linux V9.0 系统配置网络时遇到这个问题,Determining IP information for eth0. failed; no link present. Check cable? 通过查找资料发现是系统的Bug,解决方法如下:
2、到/etc/sysconfig/network-scripts/ifcfg-eth0在文件最后一行中加入check_link_down () return 1; 另外如果存在/etc/sysconfig/networking/profiles/default/ifcfg-eth0 文件,则同样在其中加入这一段东西即可,然后重启系统。设置网络为DHCP,重新启动就可以,啦,直接上图最后将内核代码下载到/root目录下二、Linux 内核编译、配置与调试2.1 内核配置与编译2.1.1、解压内核源代码文件tar -zxf linux-2.4.18.tar.gz2.1.2、解压后如下 2.1.3、拷
3、贝linux,命名为linux-2.4.18cp -r linux linux-2.4.18 2.1.4、移动config-2.4.18forMP.txt到linux-2.4.18根目录,替换掉.config 2.1.5、进入linux-2.4.18目录,配置和编译内核模块 make oldconfig make dep make clean make bzImage make modules2.2 内核安装与测试 2.2.1安装内核映像文件 cp arch/i386/boot/bzImage /boot/vmlinux-2.4.18 2.2.2拷贝和安装Linux系统映射文件System.m
4、ap,并创建其与系统映射文件System.map之间的符号链接2.2.3执行命令make modules_install 以安装可动态加载的内核模块 2.2.4添加启动项的配置 利用vi编辑器,vi grub.conf查看/ 所在的位置,为/dev/sda3 2.2.5reboot重新启动系统,从自己创建的内核启动系统启动后查看内核分别用uname r,和dmesg查看三、Linux 系统调用添加与实现3.1 在内核增加系统调用3.1.1结构体struct srz_rusage可声明如下:.struct srz_rusage struct timeval ru_utime; /* user t
5、ime used */struct timeval ru_stime; /* system time used */long ru_majflt; /* major page faults */long ru_minflt; /* minor page faults */long ru_nswap; /* swaps */;3.1.2添加到linux-2.4.18/include/linux下的resource.h中3.1.3添加的系统调用名称为:int get_process_usage(pid_t, struct srz_rusage*);参考的getrusage和sys_getrusag
6、e的代码在linux-2.4.18/linux/kernel/sys.c下面3.1.4分析getrusage()和sys_getrusage()的源代码1)数据结构rusage 在头文件 resource.h中定义。structrusage struct timeval ru_utime;/* user time used */struct timeval ru_stime;/* system time used */longru_maxrss;/* maximum resident set size */longru_ixrss;/* integral shared memory size
7、*/longru_idrss;/* integral unshared data size */longru_isrss;/* integral unshared stack size */longru_minflt;/* page reclaims */longru_majflt;/* page faults */longru_nswap;/* swaps */longru_inblock;/* block input operations */longru_oublock;/* block output operations */longru_msgsnd;/* messages sent
8、 */longru_msgrcv;/* messages received */longru_nsignals;/* signals received */longru_nvcsw;/* voluntary context switches */longru_nivcsw;/* involuntary */;2)函数getrusage()的作用是获取系统资源使用情况。 /* * It would make sense to put struct rusage in the task_struct, * except that would make the task_struct be *rea
9、lly big*. After * task_struct gets moved into malloced memory, it would * make sense to do this. It will make moving the rest of the information * a lot simpler! (Which were not doing right now because were not * measuring them yet). * * This is SMP safe. Either we are called from sys_getrusage on o
10、urselves * below (we know we arent going to exit/disappear and only we change our * rusage counters), or we are called from wait4() on a process which is * either stopped or zombied. In the zombied case the task wont get * reaped till shortly after the call to getrusage(), in both cases the * task b
11、eing examined is in a frozen state so the counters wont change. * * FIXME! Get the fault counts properly! */int getrusage(struct task_struct *p, int who, struct rusage *ru)struct rusage r;memset(char *) &r, 0, sizeof(r);switch (who) case RUSAGE_SELF:r.ru_utime.tv_sec = CT_TO_SECS(p-times.tms_utime);
12、r.ru_utime.tv_usec = CT_TO_USECS(p-times.tms_utime);r.ru_stime.tv_sec = CT_TO_SECS(p-times.tms_stime);r.ru_stime.tv_usec = CT_TO_USECS(p-times.tms_stime);r.ru_minflt = p-min_flt;r.ru_majflt = p-maj_flt;r.ru_nswap = p-nswap;break;case RUSAGE_CHILDREN:r.ru_utime.tv_sec = CT_TO_SECS(p-times.tms_cutime)
13、;r.ru_utime.tv_usec = CT_TO_USECS(p-times.tms_cutime);r.ru_stime.tv_sec = CT_TO_SECS(p-times.tms_cstime);r.ru_stime.tv_usec = CT_TO_USECS(p-times.tms_cstime);r.ru_minflt = p-cmin_flt;r.ru_majflt = p-cmaj_flt;r.ru_nswap = p-cnswap;break;default:r.ru_utime.tv_sec = CT_TO_SECS(p-times.tms_utime + p-tim
14、es.tms_cutime);r.ru_utime.tv_usec = CT_TO_USECS(p-times.tms_utime + p-times.tms_cutime);r.ru_stime.tv_sec = CT_TO_SECS(p-times.tms_stime + p-times.tms_cstime);r.ru_stime.tv_usec = CT_TO_USECS(p-times.tms_stime + p-times.tms_cstime);r.ru_minflt = p-min_flt + p-cmin_flt;r.ru_majflt = p-maj_flt + p-cma
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 添加 系统 调用 实验 报告 20
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内