05 2013 档案
摘要:这篇文章是在校期间陈香兰老师《深入理解Linux内核》的课堂作业,大部分内容参考自《深入理解Linux内核》 第三版 陈莉君等译。工作需要拿出来复习一下。转载注明出处。1 Linux启动过程概述本文分析基于x86平台的Linux启动过程。系统启动是个复杂的过程,主要包括以下几个步骤a、系统加电复位阶段b、BIOS自举阶段c、引导装入程序阶段d、内核运行及初始化e、init进程运行。2 结合linux-2.6.26源代码分析启动过程2.1 史前时代:BIOS系统加电或复位后,基于80x86的特性,中央处理器将内存中所有数据清零,并对内存进行校验。如果没有错误,则CS寄存器中全部置1,IP寄存器中
阅读全文
摘要:1.背景上周的sharing中,ChrisChen分享了一个printf()有关的Convrity的问题,如下:#include<stdio.h>int main(){ printf("%d, %d\n", 1); return 0;}build -> run, 运行结果如下:可见第二个值是个随机值。但是中间究竟发生了什么?为什么是个随机值?会不会发生内存读写错误?2. 汇编看一下汇编代码,秘密是否存在其中。节选一些有用的信息 1 .file "testPrintf.cpp" 2 .section .rodata 3...
阅读全文