内核代码阅读(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位。

相关文章
|
2月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
507 0
|
14天前
|
弹性计算 前端开发 NoSQL
2025最新阿里云服务器配置选择攻略:CPU、内存、带宽与系统盘全解析
本文详解2025年阿里云服务器ECS配置选择策略,涵盖CPU、内存、带宽与系统盘推荐,助你根据业务需求精准选型,提升性能与性价比。
|
2月前
|
存储 弹性计算 固态存储
阿里云服务器配置费用整理,支持一万人CPU内存、公网带宽和存储IO性能全解析
要支撑1万人在线流量,需选择阿里云企业级ECS服务器,如通用型g系列、高主频型hf系列或通用算力型u1实例,配置如16核64G及以上,搭配高带宽与SSD/ESSD云盘,费用约数千元每月。
155 0
|
4月前
|
数据可视化 Linux iOS开发
Python测量CPU和内存使用率
这些示例帮助您了解如何在Python中测量CPU和内存使用率。根据需要,可以进一步完善这些示例,例如可视化结果或限制程序在特定范围内的资源占用。
158 22
|
8月前
|
存储 设计模式 监控
快速定位并优化CPU 与 JVM 内存性能瓶颈
本文介绍了 Java 应用常见的 CPU & JVM 内存热点原因及优化思路。
879 166
|
6月前
|
存储 编解码 安全
阿里云高性能企业级甄选Intel第八代计算型c8i、通用型g8i和内存型r8i实例简介
计算型c8i、通用型g8i和内存型r8i实例是阿里云推出的高性能企业级甄选Intel第八代云服务器实例,采用CIPU+飞天技术架构,搭载最新的Intel 第五代至强可扩展处理器(代号EMR),性能进一步大幅提升,同时拥有AMX加持的AI能力增强,并在全球范围率先支持TDX机密虚拟机能力,实现了AI增强和全面安全防护的两大特色优势。本文将为您介绍这三个实例规格的性能、适用场景及最新活动价格以及选择指南,以供选择参考。
252 18
|
6月前
|
存储 设计模式 监控
如何快速定位并优化CPU 与 JVM 内存性能瓶颈?
如何快速定位并优化CPU 与 JVM 内存性能瓶颈?
137 0
如何快速定位并优化CPU 与 JVM 内存性能瓶颈?
|
7月前
|
人工智能 运维 监控
2025年阿里云服务器配置选择全攻略:CPU、内存、带宽与系统盘详解
在2025年,阿里云服务器以高性能、灵活扩展和稳定服务助力数字化转型,提供轻量应用服务器、通用型g8i实例等多样化配置,满足个人博客至企业级业务需求。针对不同场景(如计算密集型、内存密集型),推荐相应实例类型与带宽规划,强调成本优化策略,包括包年包月节省成本、ESSD云盘选择及地域部署建议。文中还提及安全设置、监控备份的重要性,并指出未来可关注第九代实例g9i支持的新技术。整体而言,阿里云致力于帮助用户实现性能与成本的最优平衡。 以上简介共计238个字符。
|
9月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
857 7

相关课程

更多