syscall指令_linux syscall详细介绍

一、

Syscall

意义

内核提供用户空间程序与内核空间进行交互的一套标准接口,

这些接口让用户态程序能受

限访问硬件设备,

比如申请系统资源,

操作设备读写,

创建新进程等。

用户空间发生请求,

内核空间负责执行,

这些接口便是用户空间和内核空间共同识别的桥梁,这里提到两个字

“受限”

,是由于为了保证内核稳定性,而不能让用户空间程序随意更改系统,必须是内

核对外开放的且满足权限的程序才能调用相应接口。

在用户空间和内核空间之间,有一个叫做

Syscall(

系统调用

, system call)

的中间层,是连接

用户态和内核态的桥梁。这样即提高了内核的安全型,也便于移植,只需实现同一套接口

即可。

Linux

系统,用户空间通过向内核空间发出

Syscall

,产生软中断,从而让程序陷入

内核态,执行相应的操作。对于每个系统调用都会有一个对应的系统调用号,比很多操作

系统要少很多。

安全性与稳定性:内核驻留在受保护的地址空间,用户空间程序无法直接执行内核代码,

也无法访问内核数据,通过系统调用

性能:

Linux

上下文切换时间很短,以及系统调用处理过程非常精简,内核优化得好,所

以性能上往往比很多其他操作系统执行要好。

二、

Syscall

查找方式

这里以文章理解杀进程的实现原理中的

kill()

方法为例子,来找一找

kill()

方法系统调用的

过程。

Tips 1

用户空间的方法

xxx

,对应系统调用层方法则是

sys_xxx

TIps 2

unistd.h

文件

记录着系统调用中断号的信息。

空间

kill

调用

便

sys_kill

里找

/kernel/include/uapi/asm-generic/unistd.h

等还有很多

unistd.h

去慢慢查看,查看关键字

sys_kill

,便能看到下面几行:

/* kernel/signal.c */

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值