linux 系统调用

    1. 概念:
      1. OS 是用户与计算机的接口。

      程序接口: OS专门为用户程序设置的,通常由系统调用组成。是程序取得OS服务的唯一途径。

      系统调用:在OS核心设置的一组用于实现系统功能的程序,并将他们提供给程序员调用。程序员在需要OS提供某种服务的时候,可以用系统调用命令,去实现希望的功能,这就是系统调用。通俗地讲,就是请求内核完成一些功能。

      与普通调用的区别:运行与不同的系统状态 拥护空间与系统空间

      有没使用软中断:系统调用通过使用软中断后切换入系统状态,普通调用没这个过程。

      系统调用实现机制: 1 设置系统调用号 2 处理系统调用(这个与8086中的中断向量表类似)

      做个实验,增加自己的系统调用

      (建议重新下个不同版本的内核)

      1 添加原代码

      编写系统调用要实现的功能

      一般在所下载的新版本的LINUX/KERNEL/下编写

      asmlinkage int sys_foo(int x)

      …………..

      注意:SYS_是系统调用函数标志 其后为函数名

      2 连接新的系统调用

      LINJUX/INCLUDE/ASM-I386中的UNISTDH 不同的版本可能不同 中分配系统调用号

      #define _NR_foo  (新的系统调用号)

      LINUX/ARCH/I386/KETNEL ENTRYS

      .long SYSMBOL_NAME(sys_foo)

      3 重新编译内核

      make menuconfig // 配置内核 选上EXT3文件支持  有三种方式: make xconfig .make config .

      make clean //

      make dep //

      ………….

      4 装载内核

      bzImage cp /boot

      并做必要的修改。

      然后就可重起系统并编测试程序。

       

      可以添加两个调用,然后在测试的时候颠倒两个系统调用的系统调用号,观察体会系统调用的过程。


    2. 系统调用与库函数的区别
    3. 系统调用实现的基本原理
    <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
    阅读(372) | 评论(0) | 转发(0) |
    0

    上一篇:GRUB启动命令详解

    下一篇:打造程序员的vim

    给主人留下些什么吧!~~
    评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值