原创内容(陈晓爽 cxsmarkchan)
转载请注明出处
《Linux内核分析》MOOC课程 学习笔记
前两篇博文从汇编的角度分析了linux系统的系统调用方法,本博客在实验楼平台下写了一个简单的系统调用程序,并分析系统调用的实际过程。
1 实验内容
本文实验平台为实验楼Linux内核分析的第5个实验:分析system_call中断处理过程。
在实验平台下,切换到~/LinuxKernel/menu
文件夹下。该文件夹下的内容会被写入磁盘镜像rootfs.img
中。Linux加载磁盘后,启动的第一个用户态进程(可参考linux内核分析学习笔记:用gdb跟踪linux内核启动过程)即在该文件夹的test.c中。
运行make rootfs
,可以编译并启动系统,结果如下:
该系统中仅有3个命令,分别是help
, version
, quit
。下面在该系统中添加两个命令:write
和write-asm
。顾名思义,这两个函数是系统调用sys_write
的C语言版本和汇编版本。
打开test.c
,可以看到main函数如下:
int main()
{
PrintMenuOS();
SetPrompt("MenuOS>>");
MenuConfig("version","XXX V1.0(Menu program v1.0 inside)",NULL);
MenuConfig("quit","Quit from XXX",Quit);