1.系统调用是操作系统提供给用户程序调用的一组“特殊”接口。可被看成是一个内核与用户空间程序交互的接口

系统调用在系统中的主要用途无非以下几类:

 1.1 控制硬件--系统调用往往作为硬件资源和用户空间的抽象接口,比如读写文件时用到的write/read调用。

1.2设置系统状态或读取内核数据——因为系统调用是用户空间和内核的唯一通讯手段

1.3    进程管理——一系统调用接口是用来保证系统中进程能以多任务在虚拟内存环境下得以运行。

系统调用并非直接和程序员或系统管理员打交道,它仅仅是一个通过软中断机制(我们后面讲述)向内核提交请求,获取内核服务的接口。而在实际使用中程序员调用的多是用户编程接口——API,而管理员使用的则多是系统命令

2Linux系统调用机制
系统调用是作为一种异常类型实现的

_syscallNparameters
  其中N是系统调用所需的参数数目,而parameters则用一组参数代替。这些参数使宏指令完成适合于特定的系统调用的扩展。

_syscall1 int setuid uid_t uid
  syscallN )宏指令的第1个参数int说明产生的函数的返回值的类型是整型,第2个参数setuid说明产生的函数的名称。后面是系统调用所需要的每个参数。这一宏指令后面还有两个参数uid_tuid分别用来指定参数的类型和名称。

 

int main(void)

{

   int a=syscall(318,100);//318是系统调用号,100是参数

   printf("%d\n",a);

   return 0;

}

syscall是内核提供为用户程序的一个函数,

如果不使用syscall函数,也可以使用宏定义,但是在2.6.20以后的版本里,没有宏定义,需要自己从其他版本里复制过来添加。

 

posted on 2016-04-28 16:13  碧海蓝天88888888  阅读(219)  评论(0编辑  收藏  举报