进入保护模式(八)简单OS内存使用分布
博客专区 > Cobbage 的博客 > 博客详情
进入保护模式(八)简单OS内存使用分布
Cobbage 发表于4年前
进入保护模式(八)简单OS内存使用分布
  • 发表于 4年前
  • 阅读 92
  • 收藏 3
  • 点赞 0
  • 评论 0

1.上次说要实现键盘中断还没实现的
2.接着又有问题了就是对于异常的处理,例如一个也异常的处理

一直在512字节里面写很憋屈,这下把书上的代码用上暂且内存分布如下

慢慢修改了,在更新修改

#直接用给的程序加载从第二个扇区开始
#加载的是保护模式的程序
#但是加载到什么地方哪?按照书上的位置

#显示的时候直接写显存位置怎么处理?怎么回车换行
#用一个全局变量标示写入的位置80*25的标准

#全局段描述表     
 0 空
 1 数据段         初始地址是0x0          界限是4G                   4G         全局修改
 2 主程序加载的段 初始地址是0x7C00       界限是1FF                  512字节    跳转保护
 3 堆栈段         初始地址是0x7C00       界限是0xFFFFE000<<FFFFFFFF 大小4KB    ESP的初始值?
 4 显示描述       初始地址是0xB8000      界限是7FFFF                也就是  
 5 系统公用例子代码段
 6 内核数据段
 7 内核代码段 
#全局段描述表结束
#中断描述符
   中断段         初始地址是0X0000A000   界限是2^11-1=0X7FF
#中断段描述符结束 
#内存分布图
00000000
00006C00-------------------------------------
                |
            4KB大小内核栈 地址换算 基地址限长     3
		        |
00007C00-------------------------------------
                |
			512字节的引导位置                     2    
                |			
00007DFF-------------------------------------
00007E00-------------------------------------
                |
			描述符位置(每个描述符占位8个字节) 1ff=512/8=64
                |	
00007FFF---------------------------------------
                |
			描述符防止不够空缺出来的            512额外字节
			    |
000081FF----------------------------------------
00008200----------------------------------------
                |
        	LDT描述符位置 1ff=512/8=63
                |			
000083FF----------------------------------------
                |
			防止描述符不够额外添加的	       512额外字节
				|
000085FF----------------------------------------
00008600----------------------------------------
                |
			 tss描述符  1ff 
			    |
00009FFF----------------------------------------
0000A000----------------------------------------
                |
             中断安装的位置 256*8=2^11				
				|			
0000A800-----------------------------------------               	
00010000---------------------------------------
00011000--------------------------------------		
00020000-------------------------------------
                |
		    1024页目录 4KB		
				|
00021000-------------------------------------
                |
		    1024页表   4KB->4M		
                |				
00022000-------------------------------------				
00040000-------------------------------------
                |
			系统核心的程序和数据加载位置(大小不固定)
                |				
0009ffff-------------------------------------
000A0000
000B8000-------------------------------------
                |  
            显示区域                             4
                |
000BFFFF-------------------------------------
000fffff
00100000-------------------------------------
                |
			用户程序和数据
			    |
FFFFFFFF-------------------------------------

------------------------------------------ 

更新:内存地址加载初始位置不变

         运行地址改为了0x50400处(由链接的过程静态确定了)

 

共有 人打赏支持
Cobbage
粉丝 45
博文 108
码字总数 53855
×
Cobbage
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: