系统调用:
OS在其内核有一些内建的函数,可以完成一些系统级别的功能,称为系统调用(system call)。代表了用户空间到内核空间的转换,如用户空间调用open函数,在内核空间会调用sys_open。
需要注意的是,应用程序不能访问内核空间,也不能调用内核函数。但是应用程序可以跳转到system call的内核位置,内核会根据系统调用号,找到所调用的内核函数入口地址,调用该函数,然后返回到进程。
strace:通过跟踪系统调用来让开发者知道一个程序在后台所做的事情。
用一个简单的输入输出程序演示strace:
#include<iostream>
using namespace std;
int main()
{
int a;
cin>>a;
cout<<a<<endl;
return 0;
}
g++ -o test test.cpp编译后得到可执行文件test,使用
strace ./test调用实行:
部分结果分析:
1 ) 每一行都是一次system ca