linux内核分析(转自某位大哥网上的笔记)

linux内核分析(转自某位大哥网上的笔记)

ID:18322469

大小:828.77 KB

页数:129页

时间:2018-09-16

linux内核分析(转自某位大哥网上的笔记)_第1页
linux内核分析(转自某位大哥网上的笔记)_第2页
linux内核分析(转自某位大哥网上的笔记)_第3页
linux内核分析(转自某位大哥网上的笔记)_第4页
linux内核分析(转自某位大哥网上的笔记)_第5页
资源描述:

《linux内核分析(转自某位大哥网上的笔记)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、启动当PC启动时,Intel系列的CPU首先进入的是实模式,并开始执行位于地址0xFFFF0处的代码,也就是ROM-BIOS起始位置的代码。BIOS先进行一系列的系统自检,然后初始化位于地址0的中断向量表。最后BIOS将启动盘的第一个扇区装入到0x7C00,并开始执行此处的代码.这就是对内核初始化过程的一个最简单的描述。最初,Linux核心的最开始部分是用8086汇编语言编写的。当开始运行时,核心将自己装入到绝对地址0x90000,再将其后的2k字节装入到地址0x90200处,最后将核心的其余部分装入到0x10000。当系统装入时,会显示Loading...信息。装入完成后,控制转向另

2、一个实模式下的汇编语言代码boot/Setup.S。Setup部分首先设置一些系统的硬件设备,然后将核心从0x10000处移至0x1000处。这时系统转入保护模式,开始执行位于0x1000处的代码。接下来是内核的解压缩。0x1000处的代码来自于文件Boot/head.S,它用来初始化寄存器和调用decompress_kernel()程序。decompress_kernel()程序由Boot/inflate.c,Boot/unzip.c和Boot/misc.c组成。解压缩后的数据被装入到了0x100000处,这也是Linux不能在内存小于2M的环境下运行的主要原因。解压后的代码在0x1

3、010000处开始执行,紧接着所有的32位的设置都将完成:IDT、GDT和LDT将被装入,处理器初始化完毕,设置好内存页面,最终调用start_kernel过程。这大概是整个内核中最为复杂的部分。[系统开始运行]Linuxkernel最早的C代码从汇编标记startup_32开始执行

4、startup_32:

5、start_kernel

6、lock_kernel

7、trap_init

8、init_IRQ

9、sched_init

10、softirq_init

11、time_init

12、console_init

13、#ifdefCONFIG_MODULES

14、init_modules

15、#endif

16、kmem_cach

17、e_init

18、sti

19、calibrate_delay

20、mem_init

21、kmem_cache_sizes_init

22、pgtable_cache_init

23、fork_init

24、proc_caches_init

25、vfs_caches_init

26、buffer_init

27、page_cache_init

28、signals_init

29、#ifdefCONFIG_PROC_FS

30、proc_root_init

31、#endif

32、#ifdefined(CONFIG_SYSVIPC)

33、ipc_init

34、#endif

35、check_bugs

36、smp_init

37、rest_init

38、kernel_thread

39、unloc

40、k_kernel

41、cpu_idle·startup_32[arch/i386/kernel/head.S]·start_kernel[init/main.c]·lock_kernel[include/asm/smplock.h]·trap_init[arch/i386/kernel/traps.c]·init_IRQ[arch/i386/kernel/i8259.c]·sched_init[kernel/sched.c]·softirq_init[kernel/softirq.c]·time_init[arch/i386/kernel/time.c]·console_init[driv

42、ers/char/tty_io.c]·init_modules[kernel/module.c]·kmem_cache_init[mm/slab.c]·sti[include/asm/system.h]·calibrate_delay[init/main.c]·mem_init[arch/i386/mm/init.c]·kmem_cache_sizes_init[mm/slab.c]·pgtable_cache_init[arch/i386/mm/init.c]·fork_init[kernel/fork.c]·proc_caches_init·vfs_caches_init[fs/d

43、cache.c]·buffer_init[fs/buffer.c]·page_cache_init[mm/filemap.c]·signals_init[kernel/signal.c]·proc_root_init[fs/proc/root.c]·ipc_init[ipc/util.c]·check_bugs[include/asm/bugs.h]·smp_init[init/main.c]·rest_init·kernel_thread[a

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。