实验1增加新系统调用.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验1增加新系统调用

实验1 增加新的系统调用 目录 实验基础知识介绍 系统调用概念 系统调用分类 系统调用实现 实验目的 实验内容和步骤 实验要求 * * 系统调用概念 由操作系统实现提供的所有系统调用所构成的集合即程序接口或应用编程接口(Application Programming Interface,API)。系统调用是应用程序同系统之间的接口。 内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现给用户。系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序。系统调用运行在内核态,是用户态进入内核态的唯一入口。 系统调用分类 Linux操作系统中系统调用分类: 进程管理,如fork(), clone(), execve(), exit()等。 进程通信,如signal(), msgctl(), pipe()等。 控制硬件,如open(), read(), write()等。 设置系统状态或读取内核信息,如getpid(), getpriority(), setpriority()等。 内存管理,如brk(), mmap(), mlock()等。 系统控制 网络管理 socket控制 用户管理 * 系统调用实现 Linux的系统调用通过int 80h实现,用系统调用号来区分入口函数。 操作系统实现系统调用的基本过程是: 应用程序调用库函数(API); API将系统调用号存入EAX,然后通过中断调用使系统进入内核态; 内核中的中断处理函数根据系统调用号,调用对应的内核函数(系统调用); 系统调用完成相应功能,将返回值存入EAX,返回到中断处理函数; 中断处理函数返回到API中; API将EAX返回给应用程序。 应用程序调用系统调用的过程是: 把系统调用的编号存入EAX 把函数参数存入其它通用寄存器 触发0x80号中断(int 0x80) * 实验目的 阅读Linux内核源代码,通过添加一个简单的系统调用实验,进一步理解Linux操作系统处理系统调用的统一流程。 掌握Linux内核编译方法 实验内容 下载、解压内核 配置内核 编译安装内核 添加系统调用函数 添加系统调用号 声明 测试新的系统调用 * 下载、解压内核 下载内核 在官网:/下载linux内核, 完成后, 将下载文件放入/usr/src/目录下 解压内核 将下载的文件解压缩, 在 /usr/src/目录下, 输入如下命令: # xz -d linux-3.17.1.tar.xz # tar -xvf linux-3.17.1.tar 解压后的文件夹名为:linux-3.17.1 * 配置内核 安装ncurses-5.9: 下载ncurses-5.9.tar.gz文件,并解压 # tar zxvf ncurses-5.9.tar.gz (解压) #cd ncurses-5.9(当前目录) #./configure(检查) #make (编译) #make install(安装) * 配置内核 在usr/src下的内核源码目录(linux-3.17.1)下,输入如下命令: # make menuconfig(需要安装ncurses) * 编译安装内核 在usr/src下的内核源码目录(linux-3.17.1)下,输入如下命令: # make (编译内核) 。。。。。。。。。。。。。 * 编译安装内核 # make modules_install(安装模块) 。。。。。。。。。。。。。。。。 * 编译安装内核 #make install(安装内核) 。。。。。。。。。。。。 * 系统调用的名字 系统调用的名字,比如mysyscall。一旦这个名字确定,那么在系统调用中几个相关的名字也就确定了。 系统调用编号:#define __NR_name NNN (name为系统调用名称,NNN为系统调用对应的号码) 例如: #define __NR_mysyscall 338 内核中系统调用的实现程序的函数名字:sys_mysyscall * 添加系统调用函数 在内核源码目录(linux-3.

您可能关注的文档

文档评论(0)

celkhn0303 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档