![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux Kernel
JettHuang
anybody can cook!!!
展开
-
【Linux 0.11】IA-CPU
1. 寄存器 2. 实模式 VS 保护模式 实模式和保护模式均使用分段机制,保护模式的机制更加完备。 3. 保护模式下的编程 1). 存储段描述符 P位称为存在(Present)位。P=1表示描述符对地址转换是有效的,或者说该描述符所描述的段存在,即在内存中;P=0表示描述符对地址转换无效,即该段不存在。使用该描述符进行内存访问时会引起异常。 DPL表示描述符特权级(Descriptor Privilege lev原创 2011-01-10 22:19:00 · 1268 阅读 · 0 评论 -
kernel架构和工程组织
从宏观角度考虑问题至关重要! -----Jett Huang PC机模型 内核模块架构图如下: 工程的源码组织如下: 内核启动Image的制作: 以后篇章,我们将从内核的诞生开始漫游…原创 2011-01-19 13:30:00 · 1035 阅读 · 0 评论 -
从加载到进入kernel运行的内存布局变化
1. PC机启动后的内存布局,还没有加载kernel boot代码. 2. 在执行boot.s后,本图同时描述了启动时的CPU执行的路线 3. 执行setup.s后,此时进入了保护模式了,但分页机制没有开启 4. 执行head.s后,内存布局,以后系统的内存布局就如此,阅读source code可参考此图:原创 2011-01-22 22:14:00 · 2132 阅读 · 0 评论 -
进程的数据结构和管理
1. 进程的内核描述 struct task_struct { /*----------------------- these are hardcoded - don't touch -----------------------*/ long state; // 进程运行状态(-1不可运行,0可运行,>0以停止) long counter; // 任务运行时间片,递减到0是说明时间片用完原创 2011-02-09 18:50:00 · 1137 阅读 · 0 评论 -
Memory 管理
源码位置:mm/memory.c, mm/page.s 1. 内存管理代码主要工作为: a. 物理内存(基于页框)的分配与释放; b. 页表到物理内存的映射; c. 缺页中断; d. 页面写保护中断; 利用intel的内存管理机器,可实现页面共享. 2. 内存管理函数的归类 A. 中断处理 page.s B. 页框的分配与释放 get_free_pa原创 2011-02-09 18:48:00 · 631 阅读 · 0 评论 -
文件系统(一)
文件系统占得代码比较多,我们将从提供给用户的api开始逐步进入核心,顺藤摸瓜!最终获取文件系统的抽象+设备的组织。 【设备号】 /* * 系统所含的设备如下:(与minix 系统的一样,所以我们可以使用minix 的 * 文件系统。以下这些是主设备号。) * * 0 - 没有用到(nodev) * 1 - /dev/mem 内存设备。 * 2 - /dev/fd 软盘设备。 * 3 - /dev/hd 硬盘设备。 * 4 -原创 2011-02-11 22:20:00 · 178 阅读 · 0 评论 -
文件系统(二)
前言 本篇主要讲述src/fs目录下的代码,该部分代码是文件系统的核心部分,也是kernel最为复杂的部分。将从下面四部分进行分析: 1. 高速缓冲区的管理程序,是对磁盘以块为单位数据的cache; buffer.c 1. struct buffer_head * getblk(int dev,int block); 在cache-buffer中找到指定的缓存块,如果不存在则找个未使用的bh(这个不从磁盘加载数据). icount++原创 2011-02-14 22:19:00 · 1154 阅读 · 0 评论 -
小结011
花了3个周末的休息时间,Fedaro8.0 下gcc4.2版本编译linux0.11内核成功,运行死机,相当郁闷! 花了一个月的业余时间复读了src,总结了blog,温故而知新:-) Jett huang原创 2011-02-19 02:26:00 · 487 阅读 · 0 评论