在Linux内核中增加系统调用.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在Linux内核中增加系统调用

在Linux内核中增加系统调用   摘 要: 为了扩大操作系统的功能以及学习由Linux系统提供的系统调用,可以在内核中增加系统调用。运用Linux操作系统,VMware Workstation和Ubuntu达到我们的目的。获得Linux内核源代码,配置、编译和安装内核二进制并且将一个新条目添加到一组可引导的内核来构建一个新的内核。接下来的工作是扩展内核源代码,将系统调用增加到内核中,其中一个是打印功能,另一个是函数返回系统数据和时间功能。最后,我们将在用户程序中完成系统调用 关键词:Linux 操作系统 系统调用 内核 中图分类号:TP399 文献标识码:A 文章编号:1003-9082(2016)12-0001-02 一、Linux和系统调用 1. Linux介绍 Linux操作系统是UNIX操作系统的一种克隆系统,现已成为世界上使用最多的UNIX类操作系统。Linux可免费使用和自由传播,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行UNIX工具?件、应用程序和网络协议,支持32位和64位硬件并且继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统 Linux闻名于它的高效性和灵活性,Linux模块化处理它的设计结构,使它不仅能在昂贵的工作站上运行,还能在廉价的PC机上体现Unix的全部特性,具有多任务、多用户的能力。[1] 操作系统的功能在于管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具备更突出的兼容性,内核提供一系列具备预定功能的多内核函数,通过一组系统调用的接口呈现给用户。系统调用将应用程序的需求传送给内核,调用相对应的的内核函数完成需要的处理,将结果返回给应用程序。[2] 2.系统调用介绍 系统调用出现过程调用用户程序,但导致执行上下文的变化和特权。用户模式和过程调用系统调用有一些差异和相似之处 2.1用户模式过程调用 2.1.1将参数传递给被调用的堆栈或寄存器上; 2.1.2保存当前状态和PC,并跳到被调用的过程; 2.1.3特权是相同的 2.2系统调用 2.2.1系统调用是对用户程序的调用,但是会导致执行上下文和特权的变化。在英特尔386,系统调用是通过存储系统调用数字到EAX寄存器来完成的,比如在其他寄存器中向系统调用存储参数(如EBX,ECX,EDX,ESI),或执行指令的陷阱。(INT 0x80指令) 2.2.2在计算中,系统调用是一个计算机程序的编程方式来请求执行在操作系统上的内核。这可能包括硬件相关服务,创建和执行新的流程和沟通与整体内核进程调度等服务。系统调用提供了一个基本流程和操作系统之间的接口。在大多数系统中,系统调用可能只在用户空间进程中实现,而在其他一些系统中,例如继任者,特权系统代码也可以实现系统调用 2.3系统调用执行 2.3.1在陷阱之后,系统调用表用于索引代码指针来为处理器标志起始地址 2.3.2 2system_call()函数将比较系统调用号和NR_syscalls之间的价值 2.3.3如果相比下来该值更大或相等,便回到ENOSYS。如果小,执行call* sys_call_table(% eax,4),并跳转到处理程序; 2.3.4特权在用户和内核模式之间转化,内核代码执行请求的服务: I/O交互过程管理其他活动无法在用户模式下执行 二、在内核中增加系统调用 1.打印功能 1.1查看内核版本 Sudo是一种常用的在Linux下允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或所有的根命令。这不仅可以减少根用户登录和管理的时间,也提高了安全性 1.2输入/usr/SRC查看活跃文件是否存在 1.3检查源文件中的版本号 apt-cache是一个属于Linux的恰当的包管理工具,它可以查询恰当的二进制包缓存文件。Apt-cache通过不同的参数和子命令来显示包、包的依赖关系和有关其他功能的信息 1.4搜索版本信息,修正、同时更新版本 1.5创建的文件“helloworld.c” 保存和退出 1.6创建“Makefile文件和进口 1.7编译 出现以上信息,这表明编译成功 1.8 insmod模块并检查它 1.8.1这个系统调用(sys_init_module时)分配内核内存到相应的模块, 这个内存分配操作是通过vmallo.c years来获得 1.8.2然后将内容复制到这个模块的存储空间; 1.8.3内核申报模块的引用 1.8.4初始化模块调用涵数 Hello Wor

您可能关注的文档

文档评论(0)

docman126 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:7042123103000003

1亿VIP精品文档

相关文档