Linux源码学习(3) 2013-2-27

Setup.s的过程

1.利用Rom bios中断读取系统硬件信息 并存储到0x90000位置即原来bootsect.s的位置

2.将System模块从0x10000位置移到0x00000处

3.加载IDTR和GDTR

4.开启A20地址线

5.重新设置8259A的中断向量,将0x00~0x0f 设置成0x20~0x2f

6.设置CR0寄存器,进入保护模式

7.跳转到System模块最前面的Head.s中开始执行

关于A20地址线

实模式下需要A0~A19地址线,通过A20信号来判断是否开启了高位地址。

A20信号读取在当时是通过8042键盘上一个空闲的IO端口P2来实现的

此时内存视图

收藏于 2013-02-25

来自于百度空间

文章有问题?点击这里反馈给我们

时间: 2024-10-10 15:05:32

Linux源码学习(3) 2013-2-27的相关文章

Linux源码学习(7) 2013-3-1

Linux源码学习(7) 2013-3-1 空间 内存管理Memory.c 主要用于内存分页管理.实现对主内存页面的动态分配和回收 Linux通过一个字节数组来管理所有的物理页面.每个字节用来表示其对应的物理页面被占用的次数 1. invalidate宏 :通过重新赋值CR3寄存的方法使CPU缓存的页表数据刷新.用于页表相关属性变化时 2. CODE_SPACE(addr)宏:判断addr是否位于当前进程的代码段 3. copy_page(from,to)宏 :复制一页内存 4. unsigne

Linux源码学习(5) 2013-2-27

main.c 由于其中涉及比较复杂的初始化工作.所以先阅读初始化相关的部分 收藏于 2013-02-27 来自于百度空间 文章有问题?点击这里反馈给我们

Linux源码学习(6) 2013-3-1

内存管理(1) 基本概念: 1.逻辑地址:即代码中的偏移地址 + 段选择子 2.线性地址:通过段选择子从GDT中获取的段基地址 + 代码中的偏移地址 3.物理地址:通过分页机制转换而来的实际地址 4.页面无效错误:当程序访问的页面对应的物理页面不存在时,CPU产生此异常 5.写时复制: 多个进程在共享代码段,数据段时,整个内存只有一份.当某个进程要写数据时,则内存管理器为此进程复制数据段,并建立页面对应关系.这样可以减少内存使用 6.按需加载 收藏于 2013-03-01 来自于百度空间 文章有

Linux源码学习(2) 2013-2-21

系统引导程序Boot,包括3个文件bootsect.s, head.s, setup.s Bootsect.s过程 (引导扇区) 1.将自身从地址0x7c00移动到0x90000, 共512字节,然后跳转到地址0x90000执行 2.读取位于磁盘第二个到第四个扇区的Setup.s,并加载到0x90200地址 3.获取磁盘参数(主要是每磁道扇区数),然后显示Loading system... 4.读取System模块,并加载到0x10000处 5.从引导扇区第508,509个字节处读取根系统文件设

Linux源码学习(4) 2013-2-27

Head.s Head.s在生成目标文件以后会和内核其他程序一起链接成System模块,并且位于System模块最开始部分,所以叫Head Head.s过程 1.重新设置中断描述符表和全局描述符表 2.检测20位以上地址是否可用.通过比较1M地址以上的内容和0开始的内容是否一致 3.判断是否有数字协处理器,并将结果写到CR0寄存器 4.开启分页机制.设置CR0的第31位 收藏于 2013-02-27 来自于百度空间 文章有问题?点击这里反馈给我们

?Linux源码学习(1) 2013-2-21

1.BIOS启动过程 自检 复制到BIOS影子区到0xF0000,并跳转到此处执行 进入实模式 加载操作系统引导程序到0x7c00,并将控制权交给引导程序 收藏于 2013-02-21 来自于百度空间 文章有问题?点击这里反馈给我们

Spring源码学习笔记(6)

Spring源码学习笔记(六) 前言-- 最近花了些时间看了<Spring源码深度解析>这本书,算是入门了Spring的源码吧.打算写下系列文章,回忆一下书的内容,总结代码的运行流程.推荐那些和我一样没接触过SSH框架源码又想学习的,阅读郝佳编著的<Spring源码深度解析>这本书,会是个很好的入门. 上一篇中我们梳理到 Spring 加载 XML 配置文件, 完成 XML 的解析工作,接下来我们将进入 Spring 加载 bean 的逻辑. 我们使用 Spring 获取 XML

Spring源码学习笔记(3)

Spring源码学习笔记(三) 前言----     最近花了些时间看了<Spring源码深度解析>这本书,算是入门了Spring的源码吧.打算写下系列文章,回忆一下书的内容,总结代码的运行流程.推荐那些和我一样没接触过SSH框架源码又想学习的,阅读郝佳编著的<Spring源码深度解析>这本书,会是个很好的入门. DispatcherServlet 实现核心功能 和普通的 Servelt 类一样, DispatcherServlet 中的 doGet() 和 doPost() 方法

ThreadLocal源码学习

ThreadLocal,线程本地化对象,在多线程环境中,使用ThreadLocal对象来维护变量时,ThreadLocal为每个使用该变量的线程维护一个独立的线程副本. ThreadLocal.java源文件内容为: 1 /** 2 * ThreadLocal内部包含一个用数组实现的哈希表,用来存储对应到每个线程的局部对象的值 3 * 其中,ThreadLocal对象担当key,实际通过threadLocalHashCode值来进行检索 4 */ 5 public class ThreadLoc