Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1652107
  • 博文数量: 245
  • 博客积分: 10378
  • 博客等级: 上将
  • 技术积分: 2571
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 08:19
文章分类

全部博文(245)

文章存档

2013年(4)

2012年(8)

2011年(13)

2010年(68)

2009年(152)

分类: LINUX

2009-03-27 08:49:00

    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. 系统调用实现的基本原理
    阅读(877) | 评论(0) | 转发(0) |
    0

    上一篇:GRUB启动命令详解

    下一篇:打造程序员的vim

    给主人留下些什么吧!~~