因为有些行为是很危险的,
所以 C 以提供 C library 的方式来让写程序的人可以做到一些较高权限的事情
不过也并非所有的 library 内容都是为了提供 system call
步骤一为,一个程序执行到了 wrapper function
( C library 中,会需要执行 system call 的 funciton )
在 wrapper 传递到 system call 之前,必须要把资料给放到特定的 register 里
以 x86-32 为例,wrapper function 先把 register %eax
放入 system call 的编号,这样真的要执行 system call
的时候就知道要用哪一个 system call 了
trap
instructiontrap
是一个 x86-32 的 instruction,执行完这个 instruction 後
就会开始真的执行 system call 的内容了
a) 把 register 存放到 kernel stack 中(跟一般的 function 对待 callee-saved register 一样)
b) 检查 system call 的编号(先前被 wrapper function 放在 %eax
中)
c) 根据 system call 的编号,执行相对应的行为
d) 复元 register 的值,对应於步骤 a)
e) return 回 wrapper function
如果执行的过程有出错, wrapper function 会把 global variable errno
set 好,
wrapper function return 回去
The Linux Programming Interface: A Linux and UNIX System Programming Handbook
<<: 【Day08】for 回圈在硬体的使用及该注意的那些事
OK, 我们终於来到了基础篇最後的部分,也就是Canvas动画~!(撒花) 在这个部分,我们会介绍:...
专案协作常见问题:我都交设计稿啦 ! Delay 跟我有什麽关系 !? 专案协作中,最常碰到的问题就...
托管代码(managed code) 微软特定用语 简单来说 managed code 就是由一个 ...
因为朋友说,澳门很值得去看看,所以我就冲了~ 2016年,我有一位很要好的「酒肉朋友」(就是在「韩乡...
最邻近点规则(以下简称为KNN,因为每个人对此的中文称呼不一样)是在一个地方上有很多个点,将所有...