|
|
1
2
VDSO(7)不是syscall(2)的实现。 如果没有VDSO(7),系统调用将在用户空间应用程序中运行。在这种情况下会发生上下文切换。 如果使用VDSO(7),将在不切换上下文的情况下运行syscall。 内核使用vDSO自动映射到所有用户空间应用程序的地址空间。 |
|
2
1
仔细阅读手册页 syscalls(2) ,则, vdso(7) 和上的wikipages system calls 和 VDSO .另请阅读 operating system wikipage和 Operating Systems: Three Easy Pieces (可免费下载)。
系统调用是基本的,它们是
只有
方式a
user-space
应用程序可以与操作系统交互
kernel
signal(7)
).系统调用需要用户到内核的转换(例如通过
VDSO只是一种聪明的优化(为了避免真正的系统调用的成本,对于像
clock_gettime(2)
它还以真正的系统调用形式存在),有点像内核神奇地提供的共享库,没有任何真正的文件。一些程序(例如静态链接的程序或不使用
您可以避免VDSO(或者不使用它),而早期的内核没有VDSO。但您无法避免进行系统调用,而程序通常会进行大量调用。 同时使用 strace(1) |
|
|
diviquery · 每个CPU阵列的BPF是否未初始化为零? 2 年前 |
|
|
Shazer · 在页面缓存层Android上测量执行时间 2 年前 |
|
|
joe kiya · 高cpu使用率:scsi_eh_1 2 年前 |
|
|
grandzello · 设备树:无pinctrl句柄 2 年前 |
|
Fnr · Linux内核配置官方文档 8 年前 |
|
|
Zohar81 · 在网络上设置双机内核调试 8 年前 |