




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
苏州科技学院天平学院操作系统课程设计报告内核编程(实现系统调用)专业年级计算机工程2010班级学号姓名成绩2012年7月2日9任务分配情况姓名承担的任务资料收集,代码输入,内核编译总结修改,程序调试,报告书写内核编程(实现系统调用)报告1 概述 目的:内核编程(实现系统调用) 主要完成的任务:编写一个系统调用,该系统调用实现文件拷贝。编写用户程序测试该调用; 使用的开发工具:Red Hat Linux; 解决的主要问题:源码修改以及内核重构过程。2 使用的基本概念和原理系统调用:Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用。用户可以通过系统调用命令在自己的应用程序中调用它们。系统调用与普通函数调用的区别:系统调用 核心态 操作系统核心提供普通的函数调用 用户态 函数库或用户自己提供3 总体设计 确定基本的技术路线:面向过程以及面向对象确定软件的总体结构:在源码中添加调用模块模块关系:总体流程:1)下载并修改源码;2)编译内核;3)编写测试程序。4 详细设计确定要利用的系统API,掌握它们的使用的参数和返回值,要给出具体的名称和参数及其解释:int 0x80 使用寄存器中适当的值跳转到内核中事先定义好的代码中执行:跳转到系统调用的总入口system_call,检查系统调用号,再查找系统调用表sys_call_table,调用内核函数,最后返回。确定模块内部的流程和实现算法:1、 修改内核源码,需修改三处内容, 1) 在/usr/src/linux/lernel/sys.c中添加调用程序,函数名以sys_开头(代码在后面)2) 定义系统调用号,在/usr/src/linux/arch/x86/include/asm/unistd.h中添加#define _NR_sys_mycopy 259#define _NR_syscalls 2593) 在系统调用向量表里添加自定义的系统调用函数入口位置,具体位置是/usr/src/linux/arch/x86/kernel/syscall_table_32.S, 并在最后定义: .long SYMBOL_NAME(sys_mycall)2、 编译内核1 ) 确认是在linux-2.4.20-8该目录下面,并且是root权限:【rootlocalhost linux-2.4.20-8】#make mrprpoper (清除以前的编译痕迹)【rootlocalhost linux-2.4.20-8】#make (编译内核,无错误进行下一步)【rootlocalhost linux-2.4.20-8】#make clean 【rootlocalhost linux-2.4.20-8】#make menuconfig 这里我们什么都不做,直接按ESC,然后YES退出:【rootlocalhost linux-2.4.20-8】#make dep (产生依赖关系)2) 然后开始make bzImage,时间较长:【rootlocalhost linux-2.4.20-8】#make bzImage3)开始make modules (编译模块) 【rootlocalhost linux-2.4.20-8】#make modules4) 然后make modules_install (安装内核模块)【rootlocalhost linux-2.4.20-8】#make modules_install 5) 安装内核 make install (安装内核)【rootlocalhost linux-2.4.20-8】#make install 6) 将生成的内核镜像文件和符号表拷贝到/boot目录下【rootlocalhost linux-2.4.20-8】# cp arch/i386/boot/bzImage /boot/vmlinux-2.4.20-8custom【rootlocalhost linux-2.4.20-8】# cp System.map /boot/Ststem.map-2.4.20-8然后进入/boot,生成我们的初始文件【rootlocalhost linux-2.4.20-8】# cd /boot【rootlocalhost linux-2.4.20-8】# /sbin/mkinitrd-2.4.20-8b.img 2.4.20-8 custom3、 修改grub,进入新的内核记下标签值 : /dev/sda2修改grub.conf文件【rootlocalhost boot】#vim gr/grub.conf重启,,进入新内核随意建立一个C程序,测试该系统调用:【rootlocalhost root】# vi test.c输入该测试程序:然后编译运行: 5 编码设计开发环境的设置和建立:在虚拟机linux-2.4.20-8环境下程序设计时要注意的事项:1) 认真书写代码,养成良好书写风格;2) 团队合作,不可孤军奋战;3) 请教师长,虚心求教。关键构件/插件的特点和使用:主要程序的代码设计及注释:/*系统调用mycopy的实现,位于sys.c文件中*/Asmlinkage long_mycopy(char* sourceFile,char* distFile) int sFile,dFile; /源文件与目标文件句柄 int size; /每次读取文件的实际字节数 char buf512; /内存缓冲区,用来存放从文件中读取的数据 mm_segment_t fs; /内存结构变量,用来保存段寄存器内容 /*用sys_open系统调用打开源文件*/ if (sFile = sys_open(soureFile, O_RDONLY, 0) = -1) printfk(KERN_ALERT”can not open the source filen”); /出错 return -1;if (dFile = sys_open(distFile, O_MRONLY | O_CREAT | O_TRUNC, 0666) = -1) printk(KERN_ALERT”can not open the dist filen”); return -2; fs = get_fs(); /获得当前fs段的信息 set_fs(get_ds(); /设置当前fs段与ds段相同 while(size = sys_read(sFile , buf , 512) 0) /copy文件 if (sys_write(dFile,buf,size) != size) return -3set _fs(fs); /恢复fs段sys_close(sFile);sys_close(dFile);return 0;解决的技术难点、经常犯的错误:1)编写程序易出错;2)步骤不清晰,较混乱;3)内核编译出错难解决;6 测试时出现过的问题及其解决方法 1、make时出错,根据出错行信息,找到内核源码sys.c文件,认真查找,发现程序书写出现错误,改正之重新make,运行正常。 2、编译的新内核不能启动,返回原内核,重新编译,多次试验后成功。 3、在新内核中运行测试文件,不能实现拷贝功能,打开测试文件test.c查找错误,发现主函数出错,改正之再运行,正常。7 总结详细列出已经课程设计的完成情况:1)下载并修改源码完成;2)编译内核完成;3)编写测试程序完成;4)完成试验。未完成的部分: 无收获、经验、教训和感受等:经过这三天的课程实践,我们学习到很多课外实践知识,对于Linux操作更加熟练,对内核理解更深刻。本小组经过多次内核重构,终于完成任务要求,完成系统调用功能。在试验过程中错误连连,分析原因,还是太粗心的缘故。在书写风格上有很好多不好的习惯,例如:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年隆昌市公开招聘社区工作者的(49人)考前自测高频考点模拟试题及答案详解(网校专用)
- 2025-2030工业清洗机器人市场需求变化与技术创新趋势预测报告
- 社保怎样申请书范文
- 2025-2030工业机器人行业市场深度调研及自动化趋势与产业链研究报告
- 2025-2030工业机器人应用普及现状及劳动力替代效应评估报告
- 2025-2030工业大数据采集清洗标准化建设与制造企业决策优化关联性报告
- 2025-2030工业大数据平台数据治理框架与价值变现模式报告
- 灭火器和空呼培训课件
- 安全求生培训课件
- 无陪同查验申请书
- 2025年合肥市轨道交通集团有限公司第二批次社会招聘12人考试历年参考题附答案详解
- 甘肃电网考试题目及答案
- 2025年专升本医学影像检查技术试题(含参考答案)解析
- 国家电网工作人员综合素质考试题库含答案
- 《互联网应用新特征》课件+2025-2026学年人教版(2024)初中信息技术七年级全一册
- 3.4 活动:电路创新设计展示说课稿 2025-2026学年教科版物理九年级上册
- 过节前安全培训课件
- 2025年彩色水泥行业研究报告及未来行业发展趋势预测
- 高二生物上学期第一次月考(安徽专用)(全解全析)
- 煤矿井下喷浆安全培训课件
- 模具安全操作注意培训课件
评论
0/150
提交评论