
Linux0.11内核学习笔记
银翼魔术师
上进心强,希望有所作为
展开
-
Linux内核学习笔记之系统启动(三)
分段机制和分页机制,共同构成了保护模式下的地址映射机制,也为多任务操作系统以及程序部分加载的实现提供了支持。本节我们将探究分页机制的原理,并结合源码来研究在启动CPU分页机制前,操作系统都做哪些设置。1.再练神功 九阴真经残卷(四)----分页机制 首先在开始讲解分页机制前,我们要明白三个地址的含义:逻辑地址、线性地址和物理地址。程序运行的时候,所有的地址都是逻辑地址,原创 2014-01-21 01:11:19 · 1429 阅读 · 0 评论 -
Linux内核学习笔记之系统启动(一)
每天一开机就要接触操作系统,一直就很好奇这头“大象”到底是什么样子的?我们要运行程序,必须先启动操作系统,但是刚开机的时候又是谁运行了操作系统呢?开机的那刻究竟发生了什么?接下来让我们一起来揭开操作系统这头“大象”的神秘面纱~我先引用《Linux内核注释》的一段原话来让大家对开机后发生的情况有段简要的认识,然后结合代码来详细描述这个过程:Linux 的最最前面部分是用 8086 汇编语言编写的原创 2014-01-20 18:27:32 · 1570 阅读 · 0 评论 -
Linux内核学习笔记导读
这个学习笔记是我记录自己根据《Linux内核注释》学习Linux0.11内核源码的过程,内核学习有点像悬疑片,只有看到最后才能理解整个剧情,而原先的种种片段所引发的猜测可能都是错误的,所以有问题没关系,慢慢看下去,自然就能明白了~ 所有的学习资料的下载我已经放在笔记一中了,包括Linux内核注释pdf和Linux0.11内核源码,如果没有自己认真研究过,看我的笔记可能只是增加了点扩展知识原创 2014-01-27 23:43:41 · 1318 阅读 · 4 评论 -
Linux内核学习笔记之磁盘I/O(十一)
还记得文件系统中,高速缓冲区读取盘块操作,我说过它调用的设备读写接口是void ll_rw_block(int rw, struct buffer_head * bh) 而这个接口最后调用的磁盘操作接口就是void rw_hd(int rw, struct buffer_head * bh) 接下来我将以这个为切入点,详细介绍磁盘读取操作(1)计算要读取原创 2014-01-28 10:16:32 · 1640 阅读 · 1 评论 -
Linux内核学习笔记之内存分配(九)
上节我们揭秘了Linux系统移形换影的秘密,这节我们将一起见证Linux系统另一“无中生有的幻术”------内存分配大法~周流六虚功------空闲内存分配 内存对于进程就像空气对于我们,提供空闲内存是操作系统最基本的功能之一,如果学过操作系统就应该知道,计算机内存的分配是按内存页来的,每页的大小为4K。进程哪些地方需要申请内存页呢?进程的页目录、页表、栈、堆、原创 2014-01-27 13:47:52 · 1083 阅读 · 0 评论 -
Linux内核学习笔记之main函数(四)
终于见到操作系统的main函数了,在被保护模式下的汇编蹂躏那么久,终于见到我们“可爱”的C语言了,鸡冻不已啊~让我们先一睹操作系统真容void main(void){ time_init(); tty_init(); trap_init(); sched_init(); buffer_init(); hd_init(); sti(); move_to_user_mode();原创 2014-01-21 13:35:16 · 2634 阅读 · 0 评论 -
Linux内核学习笔记之进程切换(八)
Linux通过时间片来控制每个任务的执行时间,每经过一个时间片就触发一次切换,通过不停的来回切换执行任务,当切换速度很快的时候,就像视觉暂留一样,给用户造成一个任务并行效果的假象。今天我们将一起来探究这个“幻术”背后的秘密~ 我将任务切换分为两种方式,一种是时间片到了,硬件触发时钟中断导致进程发生的切换;还有一种是进程等待资源而进入睡眠状态导致的进程切换,下面让我们一起来见证奇迹的时刻!原创 2014-01-26 23:39:49 · 1363 阅读 · 0 评论 -
Linux内核学习笔记之中断与系统调用(七)
我们知道用户程序访问内核代码的唯一方式就是通过系统调用,那系统调用是怎么实现的?具体过程是什么?本节我们将带着这两个问题来剖析源码~ 大家是否还记得我在笔记(四)中讲解的操作系统初始化,其中在sched_init中完成了系统调用中断门的设置,所以系统调用是通过软中断来实现的。那么中断调用是个肿么样的过程?在继续研究这个问题前,我们要先复习一个重要的数据结构------栈。栈在程序的运行中原创 2014-01-26 13:21:29 · 1345 阅读 · 0 评论 -
Linux内核学习笔记之高速缓冲管理(五)
上节我们已经介绍过高速缓冲区的一些内容,为了解决内存磁盘的数据交互效率问题,操作系统引入了高速缓冲块,其存储介质是内存,大小和磁盘盘块一样为1k。六脉神剑残卷(一)------高速缓冲区初始化 首先我们来看下高速缓冲区在内存中的位置 然后我们来看下在调用buffer_init初始化后这段黄色内存的样子(其中缓冲区低端就是上面的end,缓冲区高端就是上面原创 2014-01-21 23:02:04 · 1089 阅读 · 0 评论 -
Linux内核学习笔记之文件系统(六)
文件管理是操作系统主要功能之一,也是难点之一。想要读懂这部分源码,就要理解文件系统的相关数据结构的设计理念,为什么要这么设计?带着这个问题我们将开启我们的揭秘旅程......九阳神功残卷(一)------磁盘结构 这个是磁盘的物理结构,磁盘就是由那一个个小方块组成的,它也就是磁盘的最小存储单元------扇区。我们将所有Platter(盘面)的所有Track(磁道)拉直连接到一起原创 2014-01-22 00:37:12 · 1006 阅读 · 0 评论 -
Linux内核学习笔记之进程创建(十)
进程的创建几乎调用了操作系统所有的功能模块,研究进程创建流程能让我们贯穿理解整个操作系统,并解开前面各个模块遗留问题的最好途径~Linux的进程创建分两种模式fork和fork+do_execve,下面我们先来看下第一种模式倚天剑------fork方式 首先我们来看下系统调用服务程序fork是什么样子的.align 2_sys_fork: call _find_empty_原创 2014-01-27 22:56:04 · 1452 阅读 · 0 评论 -
Linux内核学习笔记之系统启动(二)
上节跳转到内存地址0x0处开始执行内核代码前,已经开启了保护模式,所以在讲解Linux代码前,不得不先给小伙伴们介绍下保护模式下的基础知识(可以先粗略看下,如果初试神功的内容理解有点困难,再回头来看会有更好效果)。1.初练神功九阴真经残卷(一)------段描述符 为什么要搞出个段描述符呢?这个就要将下CPU的历史了,很早的实地址模式的时候CPU的更新速度并没有内存块原创 2014-01-20 23:21:05 · 1186 阅读 · 0 评论