内核代码阅读(1) - Intel CPU和段页式内存管理

简介: Intel CPU和段页式内存管理

Real Mode 8086

16位寄存器

20位地址

使用CS DS SS ED段寄存器

16位寄存器 << 4(基地址) + 16位地址

此乃实模式 Real Mode

Protect Mode 80386

保护模式实现思路

段式内存

GDTP (global descriptor table register)
 LDTR (local descriptor table
 每个段寄存器在CPU上都有一个扩展,
 当一个段寄存器被改变(MOV, POP)后,CPU会根据LDTP,GDTR+段寄存器的偏移,取出新的段描述符,放到这个寄存器的影子中。
 因为GDTR,LDTR的操作是特权指令,只能在内核态中执行,用户看不到段描述符表在哪里,所以部分实现了保护。
 最终的段值为 LDTR(GDTR) _+ 相应的段寄存器值的高13位

系统态和用户态(如何区分是系统态还是用户态呢?)

80386划分4个特权级别0是内核态,3是用户态
 16位的段寄存器后3位,用来描述权限
 typedef struct {
     unsigned short seg_idx:13;
 unsigned short ti:1;
 unsigned short tpl:2 /*Request Privilege Level 要求的优先级别*/
 } 段寄存器;

页式内存

与段式之间的关系

建立在段式基础之上。当前执行的权限就是存在相关的代码段描述项中
逻辑地址 (段式)-> 线性地址  (页式) -> 物理地址
所有的地址都要经过页式的转换,包括GDTR, LDTR等

线性地址

typedef struct {
     unsigned int dir:10;
 unsigned int page:10;
 unsigned int offset:12;
 } ;

为什么要2级映射,而不是像段式那样一步倒位?

如果像段式一步倒位,前面20位可以提供1M的页面数的寻址。
 那么,就必须开一个大小为1M的连续数组,用以定位页框下标。这个的设计,不需要页目录了大小是(4K),直接由1M大小的页表定位页面,然后,后面的12位的offset定位页内地址。
 而采用2层,就可以,在需要目录项,页面表目录的时候动态的申请,而不是一次行的申请1M的连续的页表目录大小。类似于STL的deque数据结构。巧妙的设计。

页面4k,为什么?

上面说了,在需要目录项,页面表目录的时候动态的申请。
 申请目录项:大小是1k,所占用的内存空间正好是4k,所以一个进程的页目录一个页面。
 申请页表:一个页表大小也是10位,大小1k,内存空间是4k。
 所以,申请目录项(一个进程一个),和页表项都是一个页面。
 alpha CPU 64位cpu的页面8K。

目录项,页表项

目录项和页表项都是高10位起作用,低22用不到。这22用来控制权限,虚存等。

PSE

页目录项中的ps为0: 页面大小4k,采用2层;
         ps为1: 页面大小4M, 采用1层。

CR0 寄存器最高PG位,是页式映射机制的踪开关。1是开启页式映射。

PAE 在Pentium Pro中作了地址扩充,增加了CR4寄存器,其中有一个PAE位。

相关文章
|
3月前
|
缓存 人工智能 算法
不同业务怎么选服务器?CPU / 内存 / 带宽配置表
本文详解了服务器三大核心配置——CPU、内存、带宽,帮助读者快速理解服务器性能原理。结合不同业务场景,如个人博客、电商、数据库、直播等,提供配置选择建议,并强调合理搭配的重要性,避免资源浪费或瓶颈限制。内容实用,适合初学者和业务选型参考。
571 0
|
3月前
|
存储 消息中间件 缓存
从纳秒到毫秒的“时空之旅”:CPU是如何看待内存与硬盘的?
在数据爆炸的时代,如何高效存储与管理海量数据成为系统设计的核心挑战。本文从计算机存储体系结构出发,解析B+树、LSM树与Kafka日志结构在不同数据库中的应用与优化策略,帮助你深入理解高性能存储背后的原理。
127 0
|
2月前
|
弹性计算 定位技术 数据中心
阿里云服务器配置选择方法:付费类型、地域及CPU内存配置全解析
阿里云服务器怎么选?2025最新指南:就近选择地域,降低延迟;长期使用选包年包月,短期灵活选按量付费;企业选2核4G5M仅199元/年,个人选2核2G3M低至99元/年,高性价比爆款推荐,轻松上云。
168 11
|
5月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
1745 0
|
4月前
|
弹性计算 前端开发 NoSQL
2025最新阿里云服务器配置选择攻略:CPU、内存、带宽与系统盘全解析
本文详解2025年阿里云服务器ECS配置选择策略,涵盖CPU、内存、带宽与系统盘推荐,助你根据业务需求精准选型,提升性能与性价比。
|
5月前
|
存储 弹性计算 固态存储
阿里云服务器配置费用整理,支持一万人CPU内存、公网带宽和存储IO性能全解析
要支撑1万人在线流量,需选择阿里云企业级ECS服务器,如通用型g系列、高主频型hf系列或通用算力型u1实例,配置如16核64G及以上,搭配高带宽与SSD/ESSD云盘,费用约数千元每月。
460 0
|
7月前
|
数据可视化 Linux iOS开发
Python测量CPU和内存使用率
这些示例帮助您了解如何在Python中测量CPU和内存使用率。根据需要,可以进一步完善这些示例,例如可视化结果或限制程序在特定范围内的资源占用。
276 22
|
11月前
|
存储 设计模式 监控
快速定位并优化CPU 与 JVM 内存性能瓶颈
本文介绍了 Java 应用常见的 CPU & JVM 内存热点原因及优化思路。
1044 166
|
9月前
|
存储 编解码 安全
阿里云高性能企业级甄选Intel第八代计算型c8i、通用型g8i和内存型r8i实例简介
计算型c8i、通用型g8i和内存型r8i实例是阿里云推出的高性能企业级甄选Intel第八代云服务器实例,采用CIPU+飞天技术架构,搭载最新的Intel 第五代至强可扩展处理器(代号EMR),性能进一步大幅提升,同时拥有AMX加持的AI能力增强,并在全球范围率先支持TDX机密虚拟机能力,实现了AI增强和全面安全防护的两大特色优势。本文将为您介绍这三个实例规格的性能、适用场景及最新活动价格以及选择指南,以供选择参考。
357 18

热门文章

最新文章

相关课程

更多