免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 991 | 回复: 0
打印 上一主题 下一主题

linux 系统调用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-27 08:49 |只看该作者 |倒序浏览

  • 概念:


  • OS是用户与计算机的接口。
    程序接口: OS专门为用户程序设置的,通常由系统调用组成。是程序取得OS服务的唯一途径。
    系统调用:在OS核心设置的一组用于实现系统功能的程序,并将他们提供给程序员调用。程序员在需要OS提供某种服务的时候,可以用系统调用命令,去实现希望的功能,这就是系统调用。通俗地讲,就是请求内核完成一些功能。
    与普通调用的区别:运行与不同的系统状态 拥护空间与系统空间
    有没使用软中断:系统调用通过使用软中断后切换入系统状态,普通调用没这个过程。
    系统调用实现机制: 1 设置系统调用号 2 处理系统调用(这个与8086中的中断向量表类似)
    做个实验,增加自己的系统调用
    (建议重新下个不同版本的内核)
    1 添加原代码
    编写系统调用要实现的功能
    一般在所下载的新版本的LINUX/KERNEL/下编写
    asmlinkage int sys_foo(int x)
    …………..
    注意:SYS_是系统调用函数标志 其后为函数名
    2 连接新的系统调用
    在LINJUX/INCLUDE/ASM-I386中的UNISTD。H 不同的版本可能不同 中分配系统调用号
    #define _NR_foo  (新的系统调用号)
    在LINUX/ARCH/I386/KETNEL 中 的ENTRY。S中
    .long SYSMBOL_NAME(sys_foo)
    3 重新编译内核
    make menuconfig // 配置内核 选上EXT3文件支持  有三种方式: make xconfig .make config .
    make clean //
    make dep //
    ………….
    4 装载内核
    将bzImage cp 到/boot
    并做必要的修改。
    然后就可重起系统并编测试程序。

    可以添加两个调用,然后在测试的时候颠倒两个系统调用的系统调用号,观察体会系统调用的过程。
  • 系统调用与库函数的区别
  • 系统调用实现的基本原理


    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94039/showart_1881304.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP