- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
竭诚为您提供优质文档/双击可除
linux系统调用实验报告
篇一:linux系统调用实验报告
西安邮电大学
(计算机学院)
课内实验报告
实验名称:系统调用
专业名称:软件工程
班级:软件
学生姓名:学号(8指导教师:xxxxx
实验日期:20XX年5月31日
一.实验目的及实验环境
实验目的:
1)了解系统调用,学习系统调用函数的使用;
2)理解调用系统调用与直接调用内核函数的区别;
实验环境:ubuntu
115
二.实验内容
1)对比调用系统调用和直接调用内核函数的区别;
2)跟踪系统调用的执行;
三.实验原理
1)系统调用
系统调用,顾名思义,说的是操作系统提供给用户程序
调用的一组“特殊”接口。用户程序可以通过这组“特殊”
接口来获得操作系统内核提供的服务,比如用户可以通过文
件系统相关的调用请求系统打开文件、关闭文件或读写文件,
可以通过时钟相关的系统调用获得系统时间或设置定时器
等。
从逻辑上来说,系统调用可被看成是一个内核与用户空
间程序交互的接口——它好比一个中间人,把用户进程的请
求传达给内核,待内核把请求处理完毕后再将处理结果送回
给用户空间。
总的概括来讲,系统调用在系统中的主要用途无非以下
几类:
?控制硬件——系统调用往往作为硬件资源和用户空间
的抽象接口,比
如读写文件时用到的write/read调用。
?设置系统状态或读取内核数据——因为系统调用是用
户空间和内核的
215
唯一通讯手段[2]所以用户设置系统状态,比如开/关某
项内核服务
(设
置某个内核变量),或读取内核数据都必须通过系统调
用。比如getpgid、getpriority、setpriority、sethostname
?进程管理——一系统调用接口是用来保证系统中进程
能以多任务在虚
拟内存环境下得以运行。比如fork、clone、execve、
exit等
第二,什么服务应该存在于内核;或者说什么功能应该
实现在内核而不是在用户空间。这个问题并没有明确的答案,
有些服务你可以选择在内核完成,也可以在用户空间完成。
选择在内核完成通常基于以下考虑:
?服务必须获得内核数据,比如一些服务必须获得中断
或系统时间等内
核数据。
?从安全角度考虑,在内核中提供的服务相比用户空间
提供的毫无疑问
更安全,很难被非法访问到。
?从效率考虑,在内核实现服务避免了和用户空间来回
传递数据以及保
护现场等步骤,因此效率往往要比在用户空间实现高许
315
多。比如,httpd等服务。
?如果内核和用户空间都需要使用该服务,那么最好实
现在内核空间,
比如随机数产生。
2)KDb使用
将其编译成名为getpid的执行文件“gcc–
ogetpid/getpid.c”,使用KDb来产看它进入内核后的执行
路径。
1、激活KDb(按下pause键,当然你必须已经给内核打
了KDb补丁);设置内核断点“bpsys_getpid”;退出kdb“go”;
然后执行./getpid。瞬间,进入内核调试状态,执行路径停
止在断点sys_getpid处。
2、在KDb提示符下,执行bt命令观察堆栈,发现调用
的嵌套路径,可以看到在sy
文档评论(0)