32位机内存管理(下)

linux内核学习2:内存管理 一、页框管理 1.1. 页框的定义和数据结构 内核以页框为基本单位管理物理内存,分页单元中,页指一组数据,而存放这组数据的物理内存就是页框,当这组数据被释放后,若有其他数据请求访问此内存,那么页框中的页将会改变。 内核必须记录每个页框当前的状态。如,内核必须能区分哪些页框包含的是属于进展的也,哪些页框包含的是内核代码或者内核数据。同理,内核还必须能确认动态内存中页框是否空闲。这种状态信息被保存在一个描述符数组中,每个页框对应数组中的一个元素,这种类型为sruct page描述符 struct page是内存 阅读详情

既然这样,段描述符表放在那里呢?80386中引入了两个新的寄存器来管理描述符表。一个是48位的全局描述符表寄存器GDTR,一个是16位的局部描述符表寄存器LDTR。那么,为什么有两个描述符表寄存器呢?

GDTR指向的描述符表为全局描述符表GDT。它包含操作系统中所有任务都可用的段描述符,通常包含描述操作系统所使用的代码段、数据段、堆栈段的描述符及各任务的LDT段等,全局描述符表只有一个。

LDTR则指向局部描述符表LDT。80386处理器设计成每个任务都有一个独立的LDT。它包含有每个任务私有的代码段、数据段、堆栈段的描述符,也包含该任务所使用的一些门描述符。

不同任务的局部描述符表分别组成不同的内存段,描述这些内存段的描述符当做系统描述符放在全局描述符表中。和GDTR直接指向内存地址不同,LDTR和CS,DS等段选择器一样只存放索引,指向局部描述符表内存段对应的描述符在全局描述符表中的位置。随着任务的切换,只要改变LDTR的值,系统当前的局部描述符表LDT也随之切换,这样便于各任务之间数据的隔离,但GDT并不随着人物的切换而切换。

看到这里,可能会有一个问题,既然有全局描述符表和局部描述符表两个表,那么段选择器中的索引对应哪个表中的描述符呢?实际上16位的段选择器中只有高13位表示索引值,剩下的3个数据位中,第0,1位表示程序的当前优先级RPL,第二位TI用来表示在段描述符表的位置,TI=0在GDT中,TI=1在LDT中。

啥都不说了,一张图足以:


注:GDTR指向GDT表位置,LDTR本质上也指向LDT表位置,不过并不是直接给出LDT位置,而是借助GDT表间接给出位置。LDTR中的选择符指向GDT中的某项,而GDT表中存有LDT表的偏移值,这样再根据cs中的选择符在LDT中找到具体项。

易康eCognition9.0分类|规则集和机器学习的方法的面向对象的多尺度分割分类 基于易康eCognition9.0软件的规则集和机器学习的方法的面向对象的多尺度分割分类 阅读详情

相关推荐

Geant4 案例分析(一): B1

本文是对Geant4 B1的案例分析,其中特定的功能不做介绍,而注重于各个文件的主要功能,以及它们组织的方式。

m0_51809467的博客 1580

GDTR与LDTR

一、访问GDT 当TI=0时表示段描述符在GDT中,如上图所示: 段描述符(64位) ①先从GDTR寄存器(48位,其中前32位base+16位长度)中获得GDT基址。 ②然后再GDT中以段选择器(ES,DS等等)高13位位置索引值得到段描述符。 ③段描述符符包含段的基址、限长、优先级等各种属性,这就得到了段的起始地址(基址),再以基址

jadeshu的博客 2143

【原创工具 | OpenCV-CamCalib】一个基于 OpenCV 的自动化相机数据采集和标定程序

一个基于OpenCV的自动化相机数据采集和标定程序。系统内置相机地址默认为 0。

XavierJ的博客 2696

操作系统学习(一)、80x86保护模式内存管理

整理的不好,凑合着看吧 目录 1.内存及寻址2.地址变换3.分段机制4.分页机制5.保护6.去到底部 一、内存及寻址 返回目录 二、地址变换 80X86 从 逻辑地址 到 物理地址 的转换:第一阶段是使用分段机制把程序的 逻辑地址变换成处理器可寻址的内存空间(称为线性地址空间)中的地址。 第二阶段使用分页机制把线性地址转换为物理地址。 在地址变换的过程中, 第一阶段的分段变...

一 775

记录rk3588 在Linux 6.1内核版本声卡 bug。

rk3588 Audio bug

Yongheng6的博客 855

基于Ansys Fluent和Mechanical的血管稳态流固耦合模型

流固耦合模型在医学中也会被用到,本次小编为大家带来针对人造血管内血液流动的仿真实例。 在开物云平台上找到Workbench 点击进入:https://cloud.yuansuan.cn/?user_source=community 在左侧的Toolbox中找到对应的模块:Fluid Flow(Fluent)和Static Structure 双击“Geometry”,进入建模功能 文件-打开-找到保存的模型文件 退回到主界面,在fluid flow(Fluent)中找到mesh

huasheng233的博客 3909

32位操作系统-内存管理之32位分页模式 实现

A logical processor uses 32-bit paging if CR0.PG = 1 and CR4.PAE = 0. 32-bit paging translates 32-bit linear  addresses to 40-bit physical addresses.1 Although 40 bits corresponds to 1 TByte, linear a...

lo106258的博客 1073

Linux ARM平台开发系列讲解(摄像头V4L2子系统) 2.12.5 V4L2 control的原理和实现

既然涉及到视频输入,就会有很多与 相关的效果,比如对比度、饱和度、色温、白平衡等等,这些都是通用的、必须的控制项,并且大多数仅需要设置一个整数值即可。 内核中已经为我们提供了这个控制类型的,我们只需要明确自己需要添加什么控制类型,然后将其添加进内核中即可。该部分摄像头代码一半厂家会提供驱动或者相对应的参数,否则没有图像处理知识很难开发出来。 返回总目录...

DSMGUOGUO的博客 1435

图解系统(一)——内存管理

图解系统(一)——内存管理

yttt的博客 589

hive get_json_object解析json结果为null咋办?

最近一位开发的同学在使用get_json_object函数对json数据解析的时候,出现了结果为null的问题,问题原因是sql语法导致的,那么今天就来详细介绍一下解析json函数的用法!最后还是提醒小伙伴们,在开发过程中,一定要注意sql语法格式的书写,避免一些意想不到的结果!

笑看风云路的博客 2308

YOLO11改进|注意力机制篇|引入ELA注意力机制

YOLO11添加ELA注意力机制

A1983Z的博客 3647

32位机内存管理机制(上)

一直有看linux内核的冲动,内核有些部分是汇编编写的,无奈汇编不大懂,所以利用五一三天假期大概走了一边8086CPU架构的汇编,8086CPU还是16位的,我们现在都进入64位时代了,这两者之间有很大的区别,但是看看16位的CPU汇编还是很重要的,这有助于理解32位的80386CPU。这篇文章来分析下80386的内存管理的一些基础知识,包括实模式、保护模式和内存寻址等等。 1.实模式

GetnextWindow的专栏 1582

【AI大模型:架构实战】31、工业级AI大模型系统全景解析:从架构设计到提示语引擎实践

本文系统解析了工业级AI大模型的核心架构与技术体系。整体采用分层解耦设计,包含数据工程、模型训练、模型部署、应用集成和监控运维五大核心模块,以及分布式计算、高速网络、异构硬件三大支撑体系。数据工程构建高质量数据处理流水线;模型训练实现从预训练到业务适配的全流程;模型部署优化服务性能与可用性;应用集成连接业务场景;监控运维保障系统持续优化。三大支撑能力专注于千亿参数管理、高并发低延迟处理和持续学习进化。该架构设计既满足当前需求,又为技术演进预留空间,为企业在数字化转型中提供AI工业化落地的完整解决方案。

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 1988

32位机和64位机编程时应该注意些什么

32位机和64位机编程时应该注意些什么 http://blog.163.com/hbu_lijian/blog/static/126129153201212892143856/

平僧的专栏 427

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

操作系统内存管理浅见

操作系统内存管理浅见     我们举32位机,2G内存的计算机作为例子。32位指出CPU中ALU可以处理的位数,也指出地址线的位数,可以访问的内存为2的32次方,也就是4G内存,这里的4G内存指虚拟内存。它和你的2G物理内存间有一个映射表,映射表中有虚拟内存与物理内存的对应关系。虚拟内存和物理内存都被划分为许多块。如果虚拟内存中没有所需的数据,发生缺页中断,从硬盘中加载数据到物理内存,操作系统内

木有 1369

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Linux内存管理1---内存寻址

1.前言 本文所述关于内存管理的系列文章主要是对陈莉君老师所讲述的内存管理知识讲座的整理。 本讲座主要分三个主题展开对内存管理进行讲解:内存管理的硬件基础、虚拟地址空间的管理、物理地址空间的管理. 本文将主要以X86架构为例来介绍Linux内存管理的内存寻址。 2. 内存寻址的演变 内存寻址是操作系统设计的硬件基础之一 操作系统是横跨软件和硬件的桥梁, 操作系统设计者必...

weixin_30642305的博客 144

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

linux下的malloc申请的是虚拟还是物理的,关于malloc申请内存

自学笔记(一)个人理解linux内存采用分页的内存管理,而32位pc机还采用了段式内存管理,它的地址关系为:逻辑地址--->虚拟地址(也叫线性地址)--->物理地址。linux所有段基地址都为0,所以可以看做linux并没有采用段式的内存管理,linux的地址关系:虚拟地址--->物理地址因为,linux会为每个进程分配独立的进程地址空间(大小为3GB),这里的地址指的是虚拟地址...

weixin_42110038的博客 1512

关于malloc申请内存

自学笔记(一) 个人理解 linux内存采用分页的内存管理,而32位pc机还采用了段式内存管理,它的地址关系为:逻辑地址--->虚拟地址(也叫线性地址)--->物理地址。 linux所有段基地址都为0,所以可以看做linux并没有采用段式的内存管理,linux的地址关系:虚拟地址--->物理地址 因为,linux会为每个进程分配独立的进程地址空间(大小为3GB),这里的地址指的是虚拟地址并

1285

内存

内存 肖舸标签: 内存 2009-04-28 13:38 内存可以说是C和C++语言学习的关键点。这里说一点我的理解,一家之言,欢迎拍砖哈。内存要想理解透彻,首先要理解内存编址。即不同的内存条,内存模块,插到机器上,具体对应的内存地址是多少。最开始的PC机,IBM PC XT,只有640k内存。IBM是这么规划的,最低的128k,是BIOS的地址,毕竟BIOS也是汇编语言,它也需要合法地址,才...

weixin_30858241的博客 68

2.1 linux存储管理-内存管理基本框架

阅读Linux内核相关书籍,进行记录

zhangshuaiisme的专栏 504

32位,64位机与内存基础知识

1.4GB的系统地址空间中,PCI内存范围占用了大量的地址范围——接近750MB,导致最后系统内存只有3.25GB的罪魁祸首就是这部分空间。 2.32位 2^32=4GB,64位 2^64=17179869184GB=16777216TB   3.systeminfo用来查看本机是多少位,系统类型X86为32位,X64为64位的。   4.群集   5.多核心cpu主要分原生多核和封

there is no heaven 1376

浅析C#编程中的内存管理

C#编程的一个优点是程序员不需要关心具体的内存管理,尤其是垃圾收集器会处理所有的内存清理工作。虽然不必手工管理内存,但如果要编写高质量的代码,还是要理解后台发生的事情,理解C#的内存管理。本文主要介绍给变量分配内存时计算机内存中发生的情况。 C#将数据分为两种:值数据类型和引用数据类型,这两种数据类型存储在内存中的不同的地方:值数据类型存储在堆栈中,而引用类型存储在内存的托管堆中。...

89

C/C++中sizeof()的用法——32位和64位下的sizeof()

1.      定义 sizeof是一个操作符(operator)。 其作用是返回一个对象或类型所占的内存字节数。 其返回值类型为size_t。(size_t在头文件stddef.h中定义,它依赖于编译系统的值,一般定义为 typedef unsigned int size_t;) 2.      语法 sizeof有三种语法形式: 1)  sizeof (object);  //

zlh869642570的博客 5712

Windows内存管理

一、基本概念:物理地址、逻辑地址、虚拟地址 1.物理地址: 物理内存的地址,也就是内存条上的地址。用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。 2. 逻辑地址: 在有地址变换功能的计算机中,访问指令给出的地址 (操作数)叫逻辑地址,也叫相对地址。要经过寻址方式的计算或变换才得到内存存储器中的物理地址。也是用户程序中使用的地址。 3.虚拟地址: 当程序在运行时,有一部

Windeal 1282

【转】C#的内存管理

学习C#的朋友应该知道C#编程的一个优点是程序员不需要像使用C/C++时那样的关心具体的内存管理,因为垃圾收集器会处理所有的内存清理工作。虽然不必手工管理内存,但如果要编写高质量的代码,还是要理解后台发生的事情,理解C#的内存管理。本文主要介绍给变量分配内存时计算机内存中发生的情况。 C#将数据分为两种:值数据类型和引用数据类型,这两种数据类型存储在内存中的不同的地方:值数据类型存储在堆

一俯仰,一天地 567

N位可储存

位可储存8个值。N位可储存2 ^ N值。因为一个字节的8位,一个字节可以存放2 ^8(256)的值。 变量的大小对大量的信息可以存储-这是更大的变量可以容纳更多的限制。我们将进一步解决这个问题的时候,我们进入不同类型的变量。 第二,电脑有一个有限的可用内存。每一次我们声明一个变量,那游离的记忆是只要用变量是存在的一小部分。由于现代计算机有很多的记忆,这通常不是一个问题,特别是如果只声明

sssdffa的专栏 363
上一篇: 32位机内存管理机制(上)
下一篇: 32机的内存分页机制
OS技术解密
博客等级 码龄16年 3760粉丝 189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值