探索Linux 操作系统内存模型和管理-2(转)

探索Linux 操作系统内存模型和管理-2[@more@]

段控制单元模型概述

这种分段模型背后的基本思想是将内存分段管理。从本质上来说,每个段就是自己的地址空间。段由两个元素构成:

●基址 (base address) 包含某个物理内存位置的地址

●长度值 (length value) 指定该段的长度

分段地址还包括两个组件 —— 段选择器 (segment selector) 和段内偏移量 (offset into the segment)。段选择器指定了要使用的段(即基址和长度值),而段内偏移量组件则指定了实际内存位置相对于基址的偏移量。实际内存位置的物理地址就是这个基址值与偏移量之和。如果偏移量超过了段的长度,系统就会生成一个保护违例错误。

上述内容可小结如下:

分段单元可以表示成 -> 段: 偏移量 模型;

也也可表示成 -> 段标识符: 偏移量。

每个段都是一个 16 位的字段,称为段标识符 (segment identifier) 或段选择器 (segment selector)。x86 硬件包括几个可编程的寄存器,称为 段寄存器 (segment register),段选择器保存于其中。这些寄存器为 cs(代码段)、ds(数据段)和 ss(堆栈段)。每个段标识符都代表一个使用 64 位(8 个字节)的段描述符 (segment descriptor) 表示的段。这些段描述符可以存储在一个 GDT(全局描述符表,global descriptor table)中,也可以存储在一个 LDT(本地描述符表,local descriptor table)中。

846059.gif

图 2. 段描述符和段寄存器的相互关系

每次将段选择器加载到段寄存器中时,对应的段描述符都会从内存加载到相匹配的不可编程 CPU 寄存器中。每个段描述符长 8 个字节,表示内存中的一个段。这些都存储到 LDT 或 GDT 中。段描述符条目中包含一个指针和一个 20 位的值(Limit 字段),前者指向由 Base 字段表示的相关段中的第一个字节,后者表示内存中段的大小。

其他某些字段还包含一些特殊属性,例如优先级和段的类型(cs 或 ds)。段的类型是由一个 4 位的 Type 字段表示的。

由于我们使用了不可编程寄存器,因此在将逻辑地址转换成线性地址时不引用 GDT 或 LDT。这样可以加快内存地址的转换速度。

段选择器包含以下内容:

●一个 13 位的索引,用来标识 GDT 或 LDT 中包含的对应段描述符条目

●TI (Table Indicator) 标志指定段描述符是在 GDT 中还是在 LDT 中,如果该值是 0,段描述符就在 GDT 中;如果该值是 1,段描述符就在 LDT 中。

●RPL (request privilege level) 定义了在将对应的段选择器加载到段寄存器中时 CPU 的当前特权级别。

由于一个段描述符的大小是 8 个字节,因此它在 GDT 或 LDT 中的相对地址可以这样计算:段选择器的高 13 位乘以 8。例如,如果 GDT 存储在地址 0x00020000 处,而段选择器的 Index 域是 2,那么对应的段描述符的地址就等于 (2*8) + 0x00020000。GDT 中可以存储的段描述符的总数等于 (2^13 - 1),即 8191。

846061.gif

图 3. 从逻辑地址获得线性地址

那么这在 Linux 环境下有什么不同呢?

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9417382/viewspace-940037/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9417382/viewspace-940037/

深度探索Linux操作系统 —— 构建initramfs 一般而言,桌面、服务器等通用系统都使用initramfs。部分嵌入式系统中,也会使用 initramfs,甚至有的使用 initramfs 作为最终的根文件系统。那么什么是 initramfs 呢?很难用一句话将 initramfs 的作用描述清楚,或许可以将initramfs定位为内核通往根文件系统的桥梁。 阅读详情

相关推荐

操作系统原理之Unix/Linux进程标识符pid管理探索

操作系统作为整个计算机系统的资源管理者,担任着有序而高效管理计算机资源的艰巨任务。操作系统资源管理的基本对象是进程,为了方便系统的管理,每一个进程需要一个进程标识符pid,这和国家为每一个居民编一个居民身份证号的目的完全一样。 在Unix/Linux中,进程标识符pid是一个16位的整数,它被顺序编号,最小号为0,最大号为32767,闲置的pid可重新使用。详见Unix源代码中的struct p...

翱翔云端的专栏 2287

linux 内存管理模型,探索Linux 操作系统内存模型和管理(转)

探索Linux 操作系统内存模型和管理(转)[@more@]  理解 Linux 设计的第一步在这篇 Linux 内存模型指南中,我们将学习如何构建和管理内存方面的基础知识。本指南介绍了内存控制单元、分页模型方面的内容,并详细介绍了物理内存区域方面的知识。理解 Linux 使用的内存模型是从更大程度上掌握 Linux 设计和实现的第一步,因此本文将概述 Linux 内存模型和管理。Linux 使用...

weixin_35676444的博客 127

FOS操作系统:Linux和MINIX的设计与实现

操作系统是一个管理计算机硬件与软件资源的系统软件,它提供了一个用户与计算机交互的界面,并负责管理程序的执行。其核心功能可以概括为以下几个方面:进程管理:负责进程的创建、调度、同步和通信,以及进程的终止。内存管理:分配和回收内存空间,实现内存的保护、共享与虚拟内存。文件系统:提供数据的存储、检索、更新和共享功能。设备管理:管理输入输出设备和完成设备与主存储器之间的数据传输。用户接口:为用户提供操作系统的控制和使用接口,包括命令行界面和图形用户界面。

weixin_36444661的博客 879

探索 Linux 内存模型

探索 Linux 内存模型 理解 Linux 设计的第一步 Vikram Shukla 2006 年 2 月 23 日发布 理解 Linux 使用的内存模型是从更大程度上掌握 Linux 设计和实现的第一步,因此本文将概述 Linux 内存模型和管理。 Linux 使用的是单一整体式结构 (Monolithic),其中定义了一组原语或系统调用以实现操作系统的服务,例如在几个模块中以超级模式运行的进程管理、并发控制和内存管理服务。尽管出于兼容性考虑,Linux 依然将段控制单元模型 (segmen

勤学如春起之苗,不见其增,日有所长! 辍学如磨刀之石,不见其损,日有所亏! 232

中兴U30air随身WiFi刷机全攻略:从ABD开启到系统调试(附工具包)

本文提供中兴U30air随身WiFi刷机全攻略,从ADB开启到系统调试的详细步骤,包括必备工具清单、ADB调试模式解锁、Bootloader解锁及自定义ROM刷入与调优。适合技术爱好者深度定制设备,提升网络性能和功能扩展。

weixin_29235923的博客 1942

Flink实战项目——城市交通实时监控平台

本项目是与公安交通管理综合应用平台、机动车缉查布控系统等对接的,并且基于交通部门现有的数据平台上,进行的数据实时分析项目。

yangwei2048的博客 837

探索Linux 操作系统内存模型和管理

理解 Linux 设计的第一步 在这篇 Linux? 内存模型指南中,我们将学习如何构建和管理内存方面的基础知识。本指南介绍了内存控制单元、分页模型方面的内容,并详细介绍了物理内存区域方面的知识。 理解 Linux 使用的内存模型是从更大程度上掌握 Linux 设计和实现的第

Cynric 的博客 1772

AD5940阻抗测量开发板实战:从源码获取到工程调试全解析

本文详细解析了AD5940阻抗测量开发板的实战应用,从源码获取到工程调试的全过程。AD5940作为ADI公司的高精度阻抗测量前端芯片,适用于生物阻抗分析、电化学传感器等领域。文章提供了开发环境搭建、工程配置、常见问题排查及进阶调试技巧,帮助开发者快速掌握AD5940开发板的使用方法。

weixin_30919429的博客 212

【Linux操作系统】探秘Linux奥秘:Linux 操作系统的解密与实战

本博文深入介绍了Linux操作系统的基本操作与基本管理,为初学者提供了全面的指南。首先,阐述了如何使用gcc编译器将C语言源代码编译成可执行文件,并详细说明了在编写代码时需要注意的中文输入模式下的细节。其次,介绍了在使用gcc编译器时如何灵活运用命令行参数,以及利用-Wall和-g选项来提高代码的质量和调试效率。

朝花夕拾 6937

3D点云处理:PointNet++与PointTransformer的对比

摘要: 3D点云处理中,PointNet++和PointTransformer是两种主流深度学习模型。PointNet++通过分层采样和分组策略提取局部特征,而PointTransformer利用自注意力机制捕捉全局上下文。实验表明,PointTransformer在分类(ModelNet40准确率92.1%)和分割(ShapeNet mIoU 85.7%)任务上性能更优,但计算开销较大(训练时间180秒/轮)。PointNet++在实时性场景更具优势(训练时间120秒/轮)。未来可结合两者优势,或优化Tr

shejizuopin的博客 1121

科研绘图神器Origin中文版安装后还是英文?手把手教你三步搞定界面汉化

本文详细介绍了Origin软件安装后界面仍显示英文的解决方案,包括基础语言切换、注册表修改和序列号破解三种方法。通过逐步指导,帮助用户快速实现界面汉化,提升科研绘图效率。特别针对教育版用户提供了有效的语言锁定解除方案。

weixin_42524708的博客 1130

探索Linux 操作系统内存模型和管理-1(转)

探索Linux 操作系统内存模型和管理-1[@more@]理解 Linux 设计的第一步 在这篇 Linux? 内存模型指南中,我们将学习如何构建和管理内存方面的基础知识。本指南介绍了内存控制单元、分页模型方面的内容,并详细介绍...

congwan5321的博客 98

【电路设计】SERDES与pcie

明确通信接口需要达到什么样的数据速率、信号完整性以及系统中各个部件的互相作用。2.

数字人生 4566

Linux内核物理内存模型:开启内存管理之门

在 Linux 系统的庞大架构里,内存管理无疑是一块关键基石。它肩负着保障系统稳定运行、实现资源高效利用以及提升应用程序性能等多重重任,犹如一位幕后英雄,默默支撑着整个系统的运转。当我们同时开启多个应用程序,比如一边听音乐、一边浏览网页,还后台运行着文件下载任务,此时内存管理就要像一位精明的管家,合理分配内存资源,让每个程序都能顺畅运行,互不干扰。这背后靠的就是内存管理对进程内存空间的精细划分与调度,确保每个进程都有专属的 “内存领地”,避免数据混乱与冲突。

深度Linux 1056

【技能】OpenClaw Skills学习及手搓一个极简skill

本文介绍了OpenClaw Skills的基础概念与使用方法。Skills是OpenClaw代理使用工具的核心载体,通过SKILL.md文件定义技能属性和执行方式。技能加载遵循"工作区>本地>内置>自定义目录"的优先级规则。用户可通过ClawHub一键安装现成技能,也可自定义开发技能:创建技能目录,编写包含YAML元数据和执行指令的SKILL.md文件,放置于工作区skills目录进行测试。文章还介绍了多代理场景下的技能共享、插件集成以及安全注意事项,包括沙箱使用和敏感

海兰 3975

yolov7目标追踪:基于自定义数据集完成检测

目标追踪包含两个阶段:(1)基于自定义数据集,训练yolo目标检测模型;(2)基于检测模型,将实时检测结果传递到StrongSORT追踪算法中,该算法在OSNet基础上结合运动和外观信息,可以跟踪yolo模型检测到的任何物体。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 2306

探索 Linux 内存模型--转

探索 Linux 内存模型--转 引用:http://www.ibm.com/developerworks/cn/linux/l-memmod/index.html 理解 Linux 使用的内存模型是从更大程度上掌握 Linux 设计和实现的第一步,因此本文将概述 Linux 内存模型和管理。 Linux 使用的是单一整体式结构 (Monolithic),其中定义了一组原语或系统调用

zdy0_2004的专栏 502

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

探索Linux 操作系统内存模型和管理8(转)

探索Linux 操作系统内存模型和管理8[@more@]这个物理内存区域的管理是通过一个 区域分配器(zone allocator) 实现的。它负责将内存划分为很多区域;它可以将每个区域作为一个分配单元使用。每个特定的分配请求都...

congwan5321的博客 98

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

探索Linux 操作系统内存模型和管理-4(转)

探索Linux 操作系统内存模型和管理-4[@more@]每个 TSS 段 (TSS segment) 描述符都代表一个不同的进程。TSS 中保存了每个 CPU 的硬件上下文信息,它有助于有效地切换上下文。例如,在 U->...

congwan5321的博客 120

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【亲测免费】 深入探索Linux操作系统:《Linux操作系统原理与应用(第2版)》资源推荐

深入探索Linux操作系统:《Linux操作系统原理与应用(第2版)》资源推荐 【下载地址】Linux操作系统原理与应用第2版陈莉君资源下载分享 本仓库提供《Linux操作系统原理与应用(第2版)》陈莉君教授编写的教材资源下载。该书深入浅出地介绍了Linux操作系统的原理与应用,适合计算机科学与技术、软件工程等相关专业的...

gitblog_06654的博客 858

Linux 权限掌控术:深入探索和用户管理

在这篇博客中,我们将深入探索 Linux 权限系统,这是理解和有效管理 Linux 系统的一个关键组成部分。Linux 权限系统为系统安全提供了强大的基础,它通过精确控制对文件和目录的访问来保护系统免受未授权的访问和更改。无论您是 Linux 新手还是经验丰富的系统管理员,掌握 Linux 权限的知识都是至关重要的。在这篇博客中,我们将详细介绍权限类型、特殊权限设置、权限的数字表示法,以及如何管理和应用这些权限。我们的目标是提供一个清晰、全面的指南,帮助您理解和有效地使用 Linux 权限系统。

2203_75397752的博客 3608

探索Linux 操作系统内存模型和管理-7(转)

探索Linux 操作系统内存模型和管理-7[@more@]如何启用分页 Linux 进程使用的分页机制包括两个阶段: ●在启动时,系统为 8 MB 的物理内存设置页表。 ●然后,第二个阶段完成对其余物理地址的映射。 在启动阶段,...

congwan5321的博客 104

探索Linux 操作系统内存模型和管理-3(转)

探索Linux 操作系统内存模型和管理-3[@more@]Linux 中的段控制单元 Linux 对这个模型稍微进行了修改。我注意到 Linux 以一种受限的方法来使用这种分段模型(主要是出于兼容性方面的考虑)。 在 Linux...

congwan5321的博客 98
上一篇: Oracle数据库密码文件的使用和维护(转)
下一篇: 探索Linux 操作系统内存模型和管理-3(转)
congwan5321
博客等级 码龄11年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值