摘要: 最后剩下最核心的函数do_execve了,由于这里为了简单起见我不分析shell命令的情况, 尽管删掉很大一部分,但代码还是很长。不过没有关系,核心代码还是一小部分,大部分是判断性的代码。判断性的代码就不做分析了,仔细看也是能看懂。 注意bh = bread (inode->i_dev, inode 阅读全文
posted @ 2016-07-03 19:06 是非猫 阅读(1825) 评论(0) 推荐(0) 编辑
摘要: 前面分析完了copy_strings函数,这里来分析另一个注意的函数change_ldt。 先来看调用处: 解释的很清楚,也就是说p指向的是相当于在图9-23的左方添加了64M-MAX_ARG_PAGES * PAGE_SIZE的大小容量。总容量为64M。 这里的ex为读取的可执行二进制文件头部分。 阅读全文
posted @ 2016-07-03 18:02 是非猫 阅读(834) 评论(0) 推荐(0) 编辑
摘要: 从现在开始就是分析最后的核心模块exec.c了,分析完这个文件后,就会和之前的所有分析形成一个环路,从创建进程、加载进程程序到进程调度、内存管理。 exec.c的核心do_execve函数很长,而且用到了很多其他的函数,copy_strings就是其中一个,我们这里就先来分析这个函数。 首先看调用处 阅读全文
posted @ 2016-07-03 16:54 是非猫 阅读(1436) 评论(0) 推荐(0) 编辑