文档章节

进入保护模式(八)简单OS内存使用分布

Cobbage
 Cobbage
发布于 2013/12/29 20:48
字数 549
阅读 100
收藏 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

Cobbage

粉丝 47
博文 132
码字总数 66970
作品 0
闵行
QA/测试工程师
进入保护模式(十八)持续更新篇

一、代码结构 -include _interrupt.h #中断的函数头文件 -io.h #输入输出函数的头文件 -process_struct.h #进程处理的结构体文件 -process.h #进程的头文件 -gloable.h #放一些全局的变量例如...

Cobbage
2014/02/28
0
0
进入保护模式(五)简单任务的安装

一、任务 任务是动态的概念,程序的执行状态。程序给的解释就是静态的,例如桌面上放了个五子棋的程序。 为了保存任务的状态,并在下次重新执行程序的时候恢复它们,每个任务都应当拥有一个额...

Cobbage
2013/12/19
0
0
springCloud(6):Eureka的自我保护模式、多网卡下的IP选择、Eureka的健康检查

一、Eureka的自我保护模式 进入自我保护模式最直观的体现就是Eureka Server首页的警告,如下图: 默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server...

我爱大金子
2017/06/25
0
0
vmware的原理和影子页表

vmware启动的时候同时会有一个vmware-vmx启动,二者通过pipe或者socket通信,实际上,vmware只是一个输入/显示客户端,类似X服务器,它一般在一个窗口中运行一个虚拟操作系统。真正工作的是v...

晨曦之光
2012/04/10
1K
0
Linux insides笔记(三)

头不疼鼻子哗哗的 感冒了竟然,宿舍里众人皆感冒一周有余我自岿然不动的神话破灭 伤心 以下正文 程序终于运行到main.c。接着继续配置内核启动环境和参数。 首先把启动参数,就是之前bootloa...

yyliu
2015/08/30
116
0
OS 学习笔记导航

环境搭建 000 实验环境搭建 保护模式 001 保护模式 002 段寄存器 003 段选择子与段描述符结构 004 段描述符属性分析 005 特权级 006 数据段权限检查 007 代码段权限检查与 jmp 008 跨段提权与...

q1007729991
2016/09/14
0
0
进入保护模式(十二)多任务的简单实现

一、窃喜下 终于调通了进程切换的DEMO,用一个标题来窃喜 ^_^ 二、言归正传 任务调度的实现方式是 2.1.通过时钟中断,打断现有的进程 2.2.利用中断跳转到相应的进程中 2.3.也可以通过任务门直...

Cobbage
2014/01/11
0
0
了解下除国外的windows,linux,mac系统,看下国内的操作系统

或许大部分人都知道Windows,可能相当一部分人知道Linux,甚至知道Linux和Windows的纷争。可是提到国内制作的操作系统时恐 怕就知之甚少了。能提起名字的,恐怕仅仅有中科院的红旗、国防科技...

Mr_Tea
2016/07/19
78
0
XV6 - bootsect.S

#include "asm.h" #include "memlayout.h" #include "mmu.h" .code16 .globl start start: cli # 关中断, 防止干扰开启A20, 和保证设置GDT的完整性 # 初始化寄存器 xorw %ax,%ax # 将ax清零,......

Pagination
2014/06/12
0
0
Linux操作系统下关于引导和初始化的问题

相关代码(引导扇区的程序及其辅助程序,以x86体系为例):linux-2.4.22archi386bootbootsect.S:Linux引导扇区的源代码;512字节 linux-2.4.22archi386bootsetup.S:辅助程序;linux-2.4.22archi386...

zt371
2009/05/07
590
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

利用 acme.sh 获取网站证书并配置https访问

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.(https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E) 主要步骤: 安装 acme.sh 生成证书 copy 证书到 nginx/ap...

haoyuehong
14分钟前
0
0
微擎框架内如何根据media_id获取到微信图片的路径

微擎的框架内,图片选择后,获取的是那个字符串是media_id,相当于你这张图片在微信的图片服务器里面的id 要求是:获取https://mmbiz.qpic.cn/mmbiz_jpg/…… 微信图片的路径 而微信并没有根据m...

老bia同学
18分钟前
0
0
Spring boot中日期的json格式化

Model 在model层中,类的日期属性上面添加如下注解: @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss") 参考 Jackson Date格式化教程...

亚林瓜子
20分钟前
0
0
Eclipse:Failed to load the JNI shared library

1.问题背景: 由于我之前使用jdk1.9学习,当使用Luke的时候发现jdk版本过高,需要向下配置jdk,就向朋友拷了一个安装包。重新配置路径后,便开始报错。 2.问题描述: Failed to load the JNI...

tinder_boy
22分钟前
0
0
少儿学习编程课程是否真的适合七八岁的低龄儿童[图]

少儿学习编程课程是否真的适合七八岁的低龄儿童[图]: 天下熙熙皆为利来,天下攘攘皆为利往。 这几年来,乐高教育机构在国内如同雨后春笋般出现,当然关闭/转手的也很多。从教师角度来看,部...

原创小博客
27分钟前
0
0
ES12-词项查询

1.词项查询介绍 全文查询将在执行之前分析查询字符串,但词项级别查询将按照存储在倒排索引中的词项进行精确操作。这些查询通常用于数字,日期和枚举等结构化数据,而不是全文本字段。 或者,...

贾峰uk
35分钟前
0
0
http状态码与ajax的状态值

ajax状态值 1.1 200 & OK:状态请求成功

litCabbage
38分钟前
0
0
iOS动画效果合集、飞吧企鹅游戏、换肤方案、画板、文字效果等源码

iOS精选源码 动画知识运用及常见动画效果收集 3D卡片拖拽卡片叠加卡片 iFIERO - FLYING PENGUIN 飞吧企鹅SpriteKit游戏(源码) Swift封装的空数据提醒界面EmptyView 沙盒文件浏览与分享调试控...

sunnyaigd
42分钟前
0
0
AngularJS配置.run()块中设置路由事件的监听器以及过滤未经授权的请求

AngularJS中的run方法初始化全局数据,只对全局作用域起作用,如$rootScope.多个控制器之间可以共享数据,如下代码所示: <script type="text/javascript"> var m1 = angular....

孟飞阳
42分钟前
0
0
Java语言学习(十):输入/输出

Java中,I/O操作代表着输入、输出,Java所有的I/O机制都是基于数据流进行输入输出。java.io类包提供了很多的输入输出处理功能方法,大家可以参考下JDK文档中关于I/O的一些处理方法:JDK在线中...

海岸线的曙光
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部