linux0.11内核源码分析
文章平均质量分 89
wyc_
技术之路是千里之行,莫功利方能行更远
展开
-
setup.s源码分析
1 ! 2 ! setup.s (C) 1991 Linus Torvalds 3 ! 4 ! setup.s is responsible for getting the system data from the BIOS, 5 ! and putting them into the appropriate places in system memory.原创 2015-05-07 12:59:57 · 827 阅读 · 0 评论 -
fork源码分析
kernel/system_call.s207 .align 2208 _sys_fork:209 call _find_empty_process210 testl %eax,%eax211 js 1f212 push %gs213 pushl %esi214 pushl %edi215 p原创 2015-06-03 16:30:51 · 2767 阅读 · 1 评论 -
init/main.c源码分析
前面我们说到head最终调用了main.c的main方法。现在我们就来看一些这个文件的源码。 1 /* 2 * linux/init/main.c 3 * 4 * (C) 1991 Linus Torvalds 5 */ 我们来看一下main函数104 void main(void) /* This really IS原创 2015-05-12 16:11:22 · 2635 阅读 · 0 评论 -
块设备--blk.h/hd.c/ll_rw_blk.c源码分析
1. blk.h1 #ifndef _BLK_H 2 #define _BLK_H 3 4 #define NR_BLK_DEV 7 5 /* 6 * NR_REQUEST is the number of entries in the request-queue. 7 * NOTE that writes may use only th原创 2015-06-10 10:37:04 · 2753 阅读 · 0 评论 -
sched.c signal.c exit.c sys.c源码分析
1 /* 2 * linux/kernel/sched.c 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 7 /* 8 * 'sched.c' is the main kernel file. It contains scheduling primitives 9 * (sleep_on, wake原创 2015-06-08 11:05:31 · 1147 阅读 · 0 评论 -
asm.s /trap.c/system_call.s源码分析
asm.s 1 /* 2 * linux/kernel/asm.s 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 7 /* 8 * asm.s contains the low-level code for most hardware faults. 9 * page_except原创 2015-06-05 10:06:20 · 1327 阅读 · 0 评论 -
系统引导源码分析bootsect.s
从系统加电开始执行的几个文件顺序BIOS---> bootsect.s ---> setup.s ---> System模块(head.s--->main.c)下面我们就来依次分析这些文件。1. bootsect.s 1 ! 2 ! SYS_SIZE is the number of clicks (16 bytes) to be loa原创 2015-05-04 11:09:29 · 2266 阅读 · 0 评论 -
内存管理--page.s memory.c源码分析
page.s 1 /* 2 * linux/mm/page.s 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 7 /* 8 * page.s contains the low-level page-exception code. 9 * the real work is done in原创 2015-06-29 10:53:23 · 1031 阅读 · 0 评论 -
文件系统(四)--pipe.c read_write.c stat.c fcntl.c ioctl.c源码分析
pipe.c 1 /* 2 * linux/fs/pipe.c 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 7 #include 9 #include 10 #include /* for get_free_page */ 11 #include include/l原创 2015-06-19 22:32:54 · 1238 阅读 · 0 评论 -
文件系统(三) --block_dev.c file_dev.c char_dev.c源码分析
1.blk_dev.c1 /* 2 * linux/fs/block_dev.c 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 7 #include 9 #include 10 #include 11 #include 12 #include 14 int blo原创 2015-06-17 14:03:04 · 1232 阅读 · 0 评论 -
文件系统(二)--buffer.c namei.c truncate.c open.c源码分析
buffer.c 1 /* 2 * linux/fs/buffer.c 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 7 /* 8 * 'buffer.c' implements the buffer-cache functions. Race-conditions have 9 * be原创 2015-06-14 21:47:19 · 1123 阅读 · 0 评论 -
文件系统(一)--super.c bitmap.c inode.c 源码分析
super.c 1 /* 2 * linux/fs/super.c 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 7 /* 8 * super.c contains code to handle the super-block tables. 9 */ 10 #include 1原创 2015-06-14 19:37:07 · 814 阅读 · 0 评论 -
字符设备-seria.c tty_io.c seria.c rs_io.s tty_iocnl.c tty.h termios.h keyboard.s源码分析
1 /* 2 * linux/kernel/serial.c 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 7 /* 8 * serial.c 9 * 10 * This module implements the rs232 io functions 11 * void rs_wr原创 2015-06-12 15:50:14 · 1553 阅读 · 0 评论 -
execve源码分析
C语言的execve经过库函数,最终也会通过int 0x80中断陷入内核,并通过eax寄存器来传递调用号。内核会根据系统初始化时注册的中断处理函数来对其进行处理。它的中断处理函数为system_call。这个函数定义在system_call.s中,它会保存一些寄存器的值(对于系统调用来说,保存的主要是参数),然后根据调用号调用syscall_table中相应的表项。syscall_table定原创 2015-06-03 21:30:20 · 2303 阅读 · 0 评论 -
head.s源码分析
我们前面分析了setup源码,setup在把模式转为保护模式后立刻调用了一个跳转指令,跳转到内存地址0处开始执行,这个位置对应的就是head.s.head.s经过编译后会与其他程序一起连接成system模块,位于system模块最开始,这也是为什么称它head.s.system放在磁盘上setup之后开始的扇区中,即从磁盘上第6个扇区开始。一般情况下,linux0.11内核的sys原创 2015-05-11 09:30:25 · 817 阅读 · 0 评论