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

内存管理(1) 基本概念:

1.逻辑地址:即代码中的偏移地址 + 段选择子

2.线性地址:通过段选择子从GDT中获取的段基地址 + 代码中的偏移地址

3.物理地址:通过分页机制转换而来的实际地址

4.页面无效错误:当程序访问的页面对应的物理页面不存在时,CPU产生此异常

5.写时复制: 多个进程在共享代码段,数据段时,整个内存只有一份。当某个进程要写数据时,则内存管理器为此进程复制数据段,并建立页面对应关系。这样可以减少内存使用

6.按需加载

收藏于 2013-03-01

来自于百度空间

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

时间: 2024-11-15 03:59:30

Linux源码学习(6) 2013-3-1的相关文章

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源码学习(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源码学习(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信号来判断是否开启了高

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

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

nginx源码学习资源

http://www.cnblogs.com/yjf512/archive/2012/06/13/2548515.html 2012-06-13 21:32 by 轩脉刃, 26499 阅读, 5 评论, 收藏, 编辑 nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源. 首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的. 看了nginx源码,发现这是一份完全没有注释,完全没有配置文档的代码. 现在你最希望要的是一份注释版的nginx源码,

如何准备阅读Linux源码

Linux 0.11虽然不是什么"珠穆朗玛峰",但它肯定还是"华山"或"泰山".虽然有路但你还是需要最基本的努力和花费一定的代价才能"攀登"上去. 1. PC兼容机硬件工作原理(比如8259A,8253, 8042,UART等硬件):2. Intel 32位 运行模式工作原理,寻址方式:3. 传统C语言:4. 一些Intel asm基础.5. 会使用Linux操作系统,懂得Linux系统的基本操作. 推荐参考书籍: =====

nginx源码学习资源(不断更新)

nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源. 首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的. 看了nginx源码,发现这是一份完全没有注释,完全没有配置文档的代码. 现在你最希望要的是一份注释版的nginx源码,可以从下面的链接中下载一份: https://github.com/jianfengye/nginx-1.0.14_comment 这份注释版源码会不断进行更新的 好了,第一个问题, nginx的main函数在哪里呢?