首页 > 编程知识 正文

linux目录结构详细介绍,linux分区详细介绍

时间:2023-05-04 02:07:33 阅读:274457 作者:1272

一、

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 */

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。