ucore 地址映射的几个阶段
第零阶段:
启动之后的实模式阶段
vir = lin = pa
第一阶段 :
启动 bootloader 的段式分页
这里段基址是0 ,所以地址空间维持不变
vir addr = lin addr = pa addr
第二阶段 :
从entry.S enable paging 开始
这时
vir
addr 0-4G
kernelbase - kernelbase+4G
这两个段都被映射到了 pa 的0-4G
第三阶段
第二阶段转换到第三阶段只有几行指令
因为启动了页式分页后 需要把eip中的值更新到 basekernel 以上去
在这几行执行完后就可以取消vir addr 0-4G 至 pa addr 0-4G 的映射
自映射机制在这里启动
有一个 0xFAC00000 作为VPT
使用指令 boot_pgdir[PDX(VPT)] = PADDR (boot_pgdir ) | PTE_P | PTE_W
于是使用 VPT 地址访问的就是 pgd 这个页表本身 更进一步的
VPT - VPT +4G 这个空间被映射到了全部的页表上去
其中一个特殊的地址也就是
0xFACFAC000 地址不会这样写,我的含义是高十位和中间十位相同并且等于 0xFAC 的地址被映射到了页目录项本身
第四阶段
地址空间也不改变
进入gdt_init 进行最后一次段式设置
这次设置用户代码和数据段信息,加载tss 的值
以上所有的段都有 基址=0x0
所以就是说全程都有 lin addr= vir addr
ucore 地址映射的几个阶段的更多相关文章
- 《ucore lab2》实验报告
资源 ucore在线实验指导书 我的ucore实验代码 练习1:实现 first-fit 连续物理内存分配算法 题目 在实现first fit 内存分配算法的回收函数时,要考虑地址连续的空闲块之间的合 ...
- ucore操作系统学习笔记(二) ucore lab2物理内存管理分析
一.lab2物理内存管理介绍 操作系统的一个主要职责是管理硬件资源,并向应用程序提供具有良好抽象的接口来使用这些资源. 而内存作为重要的计算机硬件资源,也必然需要被操作系统统一的管理.最初没有操作系统 ...
- 清华大学ucore操作系统课笔记
操作系统 清华大学ucore操作系统课笔记 全文思维导图 1. 操作系统概述 1.1 什么是操作系统? 操作系统的定义 没有公认的精确定义 一个控制程序 一个系统软件 控制程序执行过程,防止错误和计算 ...
- Linux内存管理之地址映射
写在前面:由于地址映射涉及到各种寄存器的设置访问,Linux对于不同体系结构处理器的地址映射采用不同的方法,例如对于i386及后来的32位的Intel的处理器在页式映射时采用的是2级页表映射,而对于I ...
- VIPServer:阿里智能地址映射及环境管理系统详解
http://geek.csdn.net/news/detail/110586 作者: 周遥,阿里技术专家,花名玄胤,毕业于四川大学.六年大型分布式与中间件系统经验,三项国家专利,参加过多次“双十一” ...
- Linux内存初始化(四) 创建系统内存地址映射
一.前言 经过内存初始化代码分析(一)和内存初始化代码分析(二)的过渡,我们终于来到了内存初始化的核心部分:paging_init.当然本文不能全部解析完该函数(那需要的篇幅太长了),我们只关注创建系 ...
- ucore实验Lab1知识点总结
Intel 80386 ucore目前支持的硬件环境是基于Intel 80386以上的计算机系统. Intel 80386是80x86系列中的第一种32位微处理器.80386的内部和外部数据总线都是3 ...
- 《ucore lab4》实验报告
资源 ucore在线实验指导书 我的ucore实验代码 练习1:分配并初始化一个进程控制块 题目 alloc_proc函数(位于kern/process/proc.c中) 负责分配并返回一个新的str ...
- 《ucore lab3》实验报告
资源 ucore在线实验指导书 我的ucore实验代码 练习1:给未被映射的地址映射上物理页 题目 完成do_pgfault(mm/vmm.c)函数,给未被映射的地址映射上物理页.设置访问权限的时候需 ...
随机推荐
- pd.Panel转化成json,然后再还原回来
在使用tornado的write时候有一个需求,是将panel转化成json;而接收端再将json还原成panel格式. 尝试了很久,终于实现了. panel1 =pd.Panel({"on ...
- iloc,loc,ix,df[]
总结一. iloc可以把i当做第几个,所以是按行序号;其他的就清楚了. import pandas df = pandas.DataFrame({'a': [1, 2, 3, 4],'b': [5, ...
- linux zip,tar压缩文件夹 忽略 .git 文件夾
linux zip 忽略 .git 文件夾 # zip 命令 zip -r bitvolution.zip bitvolution -x *.git* # tar命令压缩文件夹忽略 .git文件夹 t ...
- CodeForces - 803F
http://codeforces.com/problemset/problem/803/F #include <iostream> #include <cstdio> #in ...
- CIE XYZ
了解CIE XYZ的来龙去脉,看维基之前,先读这两篇文章: https://medium.com/hipster-color-science/a-beginners-guide-to-colorime ...
- SQLite加密 wxSqlite3
一直在网上搜wxSqlite3的文档,但是总找不到能真正解决问题的,就是一个简单的编译wxSqlite3自带的示例也出了老多问题,后来却发现,其实wxSqlite3的readme中已经有了详细的方法, ...
- Spring整合Dubbo框架
Dubbo作为一个RPC框架,其最核心的功能就是要实现跨网络的远程调用.演示过程创建两个小工程,一个作为服务的提供者,一个作为服务的消费者.通过Dubbo来实现服务消费者远程调用服务提供者的方法. d ...
- hibernate_03_hibernate一对多的关系映射
1.实体类的一对多的关系映射 一个客户对应多个联系人 Customer.java public class Customer { private Long cust_id; private Strin ...
- jquery学习笔记(二):DOM元素操作
内容来自[汇智网]jquery学习课程 2.1 元素属性操作 1.获取元素的属性 语法:attr(name) 参数name表示属性的名称 2.设置元素的属性 单个属性设置语法:attr(key,val ...
- div中包着文字,div出现隐藏的时候,文字总是在div外面。
背景: 给博客加一个侧边栏,点击出现隐藏,每次点击出现或者隐藏,文字总是很突兀的就出来了. 解决: overflow:hidden