10 如何表示虚拟内存
x86 CPU 的虚拟地址空间划分:
(资料图片仅供参考)
一个应用往往拥有很大的连续地址空间,并且每个应用都是一样的,只有在运行时才能分配到真正的 物理内存,在操作系统中被称为虚拟内存;
x86CPU支持虚拟地址时要么开启保护模式要么开启长模式;保护模式下是32位,没有进行任何划分;长模式下64位,但是CPU只是实现了48位的地址空间,寄存器确实64位的,CPU用地址数据的47位扩展到最高16位,因此,要么全0、要么全1;
Cosmos 划分虚拟地址:
由以上长模式可以看出,0xFFFF800000000000~0xFFFFFFFFFFFFFFFF分给内核;0 ~ 0x00007FFFFFFFFFFF分给应用;
进一步做细分: 应用空间的最顶端是应用程序的栈,线下增长;堆是在应用程序数据区的后面,向上增长;低地址存放应用指令区和数据区;
在内核的低地址区0xFFFF800000000000~0xFFFF800400000000存放线性映射区;这是在二级引导区中建立的MMU页表映射;
设计数据结构:
虚拟地址区间、管理虚拟地址区间、对应的物理页面等;
虚拟地址区间:
虚拟地址空间往往是以区间为单位的,比如栈区、堆区、指令区、数据区;;区内部连续,区与区至之间间隔很大;当涉及到区空间的扩大时,不用建立新的虚拟地址区间数据结构,只是改变其中的指针;
kmvarsdsc_t 结构体:包含虚拟地址的开始与结束字段、自旋锁、链表、类型等;
整个虚拟地址空间:
多个虚拟地址区间连接成整个虚拟地址空间;
virmemadrs_t 结构管理了整个虚拟地址空间的区间 kmvarsdsc_t 结构体;
进程的内存地址空间:
虚拟地址空间作作用于应用程序,而应用程序在操作系统中用进程表示;一个进程由虚拟地址空间信息、进程和虚拟地址和物理地址的映射信息、应用程序文件中的指令区、数据区的开始、结束地址信息;
mmadrsdsc_t 结构体表示这些信息, 包含了mmudsc_t 表示的MMU的页表数据;
页面盒子:
每段虚拟地址区间,都会映射到对应的物理页面,根据物理内存管理器的设计,分配完页面后,会返回一个msadsc_t 结构体,所以还需要一个数据结构来挂载msadsc_t 结构体;
不把它挂载到虚拟地址区间的结构体中,出于:把一个文件映射到进程的虚拟地址空间中,只需要在内存页面保留一份共享文件,多个程序就可以共它,常规操作就是把同一物理内存页面映射到不同的虚拟地址区间,因此我们实现了一个专用的数据结构,共享操作就可以让多个 kmvarsdsc_t 结构指向它;
kvmemcbox_t 结构体实现了上述功能;可以独立存在,又和虚拟内存区间有紧密的联系,甚至可以用来管理文件数据占用的物理内存页面;
页面盒子的头:
kvmemcboxmgr_t 结构体 用来管理所有的 kvmemcbox_t 结构;
作为全局数据结构,用于找到 并 对kvmcbox_t 结构体计数;还要支持缓存多个空闲的kvmemcbox_t 结构体;
缓存是为了放置频繁分配、释放kvmemcbox_t 结构带来的系统性能抖动;同时,可以供下次取出即用,不必再找内核申请,大大提高性能;
数据结构之间的关系:
首先从进程的虚拟地址空间开始,进程的虚拟地址是 kmvarsdsc_t 结构表示,一个kmvarsdsc_t 结构表示 一个已经分配出去的虚拟地址空间;一个进程所有的 kmvarsdsc_t 结构,要交给进程的mmadrsdsc_t 结构中的 virmemadrs_t 结构管理;
为了管理虚拟地址空间对应的物理内存页面,建立了kvmembox_t 结构,由kvmemcboxmgr_t 结构统一管理,在kvmembox_t 结构中,挂载了物理内存页面对应的 msadsc_t 结构;
初始化:
虚拟地址空间的分配与释放,依赖于进程数据结构下的 mmadrsdsc_t 结构,实例一个结构变量,进行初始化;
这个在属于内核层功能;init_kvirmemadrs 函数首先调用了mmadrsdsc_t_init 函数,初始化 mmadrsdsc_t 结构;接着调用了 kvma_inituserspace_virmemadrs 函数,这个函数中建立了一个虚拟地址区间和 一个栈区间;栈区位于虚拟地址空间的顶端;
在init_krl 函数中调用init_krlmm 函数,此函数调用我们的 init_kvirmemadrs 函数;
关键词:
责任编辑:宋璟
-
10 如何表示虚拟内存
-
英魂剑_关于英魂剑的简介
-
风景如画的南加州海岸沿线的豪华高层建筑 焦点热文
-
黄陂:到天河机场,又近一步!
-
韩国校园爱情电视剧排行榜_韩国校园爱情电视剧 热点聚焦
-
疑似涉社交媒体“唱高散货”骗局 兴证国际等10家券商机构领限令 全球速读
-
太极集团股东户数下降2.04%,户均持股121.23万元 环球速讯
-
每日信息:天地在线2022年加速落地新业务 拟10派1元转4股
-
花呗逾期被起诉了需要到庭去不了怎么弄?被起诉不去开庭会怎样?-环球要闻
-
【环球报资讯】最蓝的眼睛在线阅读_最蓝的眼睛
-
策略卡牌战斗《诸神灰烬抉择》今日发售 支持简体中文-当前快讯
-
驯皇记小说 驯皇记
-
环球快播:以茶相约 云南镇沅举办重量级普洱茶推介会
-
中国6G,取得重要突破!
-
一季度卖地金额全国最多,杭州又上新一批土地,起拍价126亿
-
人民银行今日开展890亿元逆回购操作 公开市场实现净投放890亿元
-
哈弗酷狗PHEV正式亮相上海车展 搭载1.5L插混
-
龙井市气象局发布大风蓝色预警【IV级/一般】【2023-04-23】 环球观点
-
全球热消息:4大数据全队第1!威少连砍30+刷爆神迹,离开湖人洗冤变快船大腿
-
当前快讯:网红“竹筒奶茶”被爆有霉斑 探访:卫生确实堪忧
-
表彰!安徽省一批个人和集体获评全国“两红两优”
-
省地质博物馆开馆
-
苹果公司拟推出 iPhone 日记应用,在健康技术市场扩大布局
-
关注:协的拼音和部首_协的拼音
-
每日热讯!国家外汇管理局以多项便利化政策促进对外贸易增长
-
全球视讯!乐华娱乐股票大涨 事情具体是怎么样的?
-
gone歌词是什么意思_gone歌词
-
Doinb透露LPL重大改变,为了拿亚运会冠军,所有战队,都受到影响-今日观点
-
世界微资讯!从前,有个木匠拿回家一块木头,做成了门槛放在了女儿房门下,还对女儿说晚上千万不要
-
硝基甲烷商品报价动态(2023-04-22)|当前资讯
-
郴州市贸促会(郴州国际商会)调研汝城县外资企业|全球要闻
-
今日视点:股癣用什么药膏好得快_股癣用什么药膏好
-
python-异常处理和错误调试-asyncio中的错误调试(二)_短讯
-
达州市第一中学_关于达州市第一中学的介绍 世界播资讯
-
新华全媒+|光影共享 第十三届北京国际电影节开幕_全球要闻