内存分页与分段

操作系统 内存管理 分页/分段/段页式管理 前言 上篇介绍了内存管理的连续分配方式,本文介绍非连续分配方式。 非连续分配方式 连续分配方式的缺点: 固定分区分配:缺乏灵活性,会产生大量内存碎片,内存的利用率极低。 动态分区分配:会产生很多外部碎片,虽然可以用紧凑技术来处理,但是紧凑的时间代价很高。 非连续分配 如果可以将一个进程分散的装入到许多不相邻的分区中,便可以充分的利用内存,而无需再进行紧凑。于是变产生了非连续分配方式。 连续分配:为用户进程分配的是一个连续的内存空间; 非连续分配:为用户进程分配的是一些分散的内存空间; 分页式存 阅读详情

1.分段

分段本是由于8086是16位总线,为寻址20位内存地址而增加的。在32位操作系统中,分段依然有用。

1.1 段描述符 描述该段的安全属性,为一个64位长的值。

1.2 段描述符表 表中存放段描述符。

1.3 段寄存器 存放段描述符表的索引值,用于段选择子。

1.4 gdtr 该寄存器指向全局描述符表(gdt),gdt中保存操作系统使用的代码段,堆栈段等段描述符,及各个任务的ldt,gdt的内容不随任务的切换而切换。48位。

1.5 ldtr 该寄存器指向局部描述符表(ldt),ldt中保存当前任务所使用的代码段,数据段,堆栈段等的段描述符。ldt随任务的切换而切换。16位。

1.6 所有寄存器中cr3(保存当前也目录地址)中地址为物理地址,其他都为线性地址。

2 分页

2.1 如果没有分页机制,则由分段寻址方式计算出的地址即为物理地址。

2.2 分页机制为程序提供了4G的连续地址空间。

2.3 每个页占据4k,则4G的地址空间需要4G/4K = 1M个页。每个页需要4个字节来描述其物理基地址。这样则需要4M的地址空间存放页信息。

2.4 操作系统将每1024个页分成一组,组成一个页表,页表项中保存该页的物理基地址。则最多有1024个页表。

2.5 页表目录中有1024个项,每个项占用4个字节,项的内容为页表的地址。

 


分页和分段的主要区别


段是信息的逻辑单位,用户可见,长度可变
页是信息的物理单位,用户透明,长度固定
段式:若干独立的逻辑空间构成进程的非连续逻辑空间,二维地址空间
页式:一维地址空间
段式:物理空间不连续,但段内连续
页式:物理空间不连续

内存分段与内存分页:逻辑地址、物理地址、线性地址、虚拟地址 CPU访问内存:内存分段与内存分页。逻辑地址、物理地址、线性地址与虚拟地址 阅读详情

相关推荐

linux x86内存管理之分段与分页

主要分析了linux启动过程中,对分段与分页的理解,以及虚拟地址到物理地址的转换。

【内存管理发展史】从 8086 实模式到分页:CPU 如何把虚拟地址变成物理地址

swap 是虚拟内存系统可能使用的一种后备存储手段。即使系统没有启用 swap,进程仍然拥有虚拟地址空间、页表、权限隔离、文件映射和按需分配。同样,物理内存满了也不能简单理解为“随便挑一页换到磁盘就行”。内核要考虑页面是否可回收、是否脏、是否有文件后备、是否被锁定、活跃程度和系统回收策略。4 KiB 页面需要 12 位页内偏移;剩余 20 位分别用 10 位索引 1024 项页目录和 10 位索引 1024 项页表。

星光编译者的技术博客,专注 C/C++、Linux、数据结构与算法。 270

Oracle登录报错ORA-12560?5分钟搞定TNS协议适配器错误的完整修复指南

本文详细解析了Oracle登录报错ORA-12560(TNS协议适配器错误)的成因与解决方案。从基础服务检查到高级网络配置排查,提供了一套完整的修复流程,帮助数据库管理员快速解决连接问题,确保Oracle数据库的稳定运行。

weixin_29278805的博客 524

操作系统10:分页存储和分段存储

连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销。如果允许将一个进程直接分散地装入到许多不相邻接的分区中,便可充分地利用内存空间,而。基于这一思想而产生了离散分配方式。根据在时所,又可将离散分配分为以下三种:分页存储管理方式//程序分页,存储分块分段存储管理方式。

swadian2008的博客 9150

FastAPI + LLM 实战:5分钟搞定本地模型API服务部署(含避坑指南)

本文详细介绍了如何使用FastAPI和LLM(大语言模型)快速部署本地API服务,涵盖环境准备、模型集成、性能优化及避坑指南。通过实战示例,帮助开发者在5分钟内完成从零到生产的部署过程,提升AI应用开发效率。

weixin_29062963的博客 106

C#与西门子PLC通讯——新手快速入门

本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。这篇入门笔记解决了新手第一次上手实践时遇到的坑,并且有意忽略了实际项目中会遇到的逻辑交互和更多的数据格式问题。

吾家有猫名探花的博客 2万+

内存管理(分段、分页)

1. 虚拟内存 #mermaid-svg-Vd4Whx00iDyA44cf .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-Vd4Whx00iDyA44cf .label text{fill:#333}#mermaid-svg-Vd4Whx00iDyA44cf .node rect,#mermaid-svg-Vd

Lin_Bolun的博客 1005

基于C#的机器人控制框架:如何将ROS与硬件集成

本文探讨了如何利用C#与ROS(Robot Operating System)集成开发机器人控制系统。通过ROSSharp库和rosbridge中间件,实现了C#与ROS的WebSocket通信,并展示了硬件控制模块的设计方法。文章详细介绍了电机控制的串口通信实现、ROS消息订阅机制,以及性能优化和容错处理策略,最终构建了一个智能小车控制框架的案例。这种C#与ROS的集成方案为机器人开发提供了跨平台支持,同时兼顾了系统的高效性和可靠性。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1140

内存管理之分段与分页

内存管理之分段与分页 转载自多名技术分享者,仅供参考! 第一篇 要理解分段和分页,那么得理解为什么会出现分段和分页的技术。 首先,这两个技术都是为了利用和管理好计算机的资源–内存。 在分段这个技术还没有出现之前,程序运行是需要从内存中分配出足够多的连续的内存,然后把整个程序装载进去。举个例子,某个程序大小是10M,然后,就需要有连续的10M内存空间才能把这个程序装载到内存里面。如果无法找到连续的10M内存,就无法把这个程序装载进内存里面,程序也就无法得到运行。 上面这种直接把整个程序装载进内存的方式是有一

Coding~Farmer 1814

基于BS21的星闪模块设计电路SLE/BLE

基于BS21的星闪模块设计电路SLE/BLE HI2821

2503_91889531的博客 2742

华为od 面试八股文_前端_01_含答案

华为od 面试八股文_前端_01_含答案

MISAYAONE的博客 2749

计算机内存管理中的分页与分段技术详解

分页是一种将进程地址空间划分为固定大小块的技术,每个这样的块称为一页(Page)。相应地,物理内存也被分割成同样大小的帧(Frame),用于存放页面副本。通过引入页表(Page Table),可以建立起逻辑地址与物理地址之间的映射关系。不同于分页按照固定单位切割地址空间的做法,分段则是根据程序逻辑结构自然划分而成的区域,如代码段、数据段、堆栈段等。每个段都有独立的名字和长度,且彼此之间不连续。

jie_kou的博客 1554

22、用户界面流程(UI Flow)全解析

本文全面解析了用户界面流程(UI Flow)的概念、创建步骤及其在系统设计中的应用。通过示例和操作步骤,详细介绍了如何确定屏幕范围、识别屏幕、创建过渡和标记触发器,并阐述了UI Flow在导航识别、验证、可用性优化、测试用例开发和需求推导中的重要作用。文章还结合问答系统案例,展示了UI Flow的实际应用价值,帮助读者深入理解并有效运用这一工具提升系统用户体验。

rice5的博客 154

L9 内存的分段与分页

将磁盘中的程序放到内存中,然后CPU从内存中取出指令,并执行,内存就这样被使用起来了。内存管理的目的就是为了更高效的使用内存。本文将主要介绍内存的分段机制和分页机制。

weixin_40909092的博客 2458

【SpringBoot 3.x 第43节】你还敢说 Spring 启动慢是“宿命”?Spring AOT 把启动剧本都提前写死了,你服不服?

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。

**My Coding Family** 543

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

内存分段与分页

内存分段与分页机制 因为实际物理内存与应用程序的大小之间的差别往往非常大,应用程序本身的大小甚至经常超过物理内存的大小,因此引入了虚拟内存的概念,使用分页机制把二者结合起来。分页各个页大小固定,也有操作系统使用几种不同大小的分页策略 而分段,例如编译器在编译程序的时候,要分符号表,堆栈区,指令区,常量区等,各个区域大小不固定,如果要直接在分页机制上做(因为分页大小固定哇!),就有点太...

weixin_34378922的博客 114

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Linux内存管理: 深入剖析分段与分页机制

4096161024// 块大小(包括头部) int free;// 是否空闲 struct block_header * next;// 下一个块 struct block_header * prev;// 上一个块 };// 初始化内存池 void mem_init(size_t size) {// 按页对齐 size =(size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1);

X 1255

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

(学习笔记-内存管理)内存分段、分页、管理与布局

为了在多进程的环境下,使得进程之间的内存地址不受影响,相互隔离,于是操作系统就为每个进程单独分配一套虚拟内存地址,每个程序只关心自己的虚拟地址就可以,实际上大家的虚拟地址都是一样的,但分布到的物理内存地址是不一样的。每个进程都有自己的虚拟空间,而物理内存只有一个,所以当启用了大量的进程,物理内存必然会很紧张,于是操作系统会通过内存交换技术,把不常使用的内存暂时存放到硬盘(换出),在需要的时候再装载回物理内存(换入既然有了虚拟内存地址,那必然要把虚拟地址[映射]到物理地址,这个过程通常由操作系统维护。

dx1313113的博客 770

操作系统中内存分段与内存分页的区别

参考:内存分段和分页的区别https://blog.youkuaiyun.com/u011740322/article/details/10081495 分段和分页其实都是一种对地址的划分或者映射的方式。 两者的区别主要有以下几点:...

喜欢打篮球的普通人 1519

3.20分段与分页结合的实际内存管理

date comments categories tags permalink title 2020/3/4 true 操作系统 内存 分区 3.20 分段与分页结合的实际内存管理 逻辑地址 指的是程序产生的和段地址相关的偏移...

libing的专栏 364

操作系统内存管理(分页与分段)

分段 分段本是由于8086是16位总线,为寻址20位内存地址而增加的。在32位操作系统中,分段依然有用。 1)段描述符:描述该段的安全属性,为一个64位长的值。在实地址模式中,只需要使用段寄存器(CS,DS,SS和ES)就可以了,每个段寄存器都是16位的,对应于地址总

wangsifu2009的专栏 8672

Arnis Minecraft 城市生成:三步把真实城市搬进游戏世界

Arnis 是一款用 Rust 写的 Minecraft 城市生成工具。它从 OpenStreetMap 获取真实地理数据,结合高程数据,把你的家乡、大城市或自然地貌高保真地生成 Minecraft 世界。适合想把现实城市搬进游戏、想自己搭服务器的玩家和地图创作者。 ## 先看看效果:能生成到什么程度 [![Arnis 生成的 Minecraft 真实城市与地形效果预览](https://ra

gitblog_02246的博客 1069

虚拟内存是怎么工作的?一篇讲透分页与分段机制

虚拟内存是操作系统最精妙的设计之一。分页解决了内存碎片和利用率的问题,分段则保留了程序的逻辑结构。两者配合,才让你的电脑在多任务运行时依然稳如磐石。下次当你同时打开几十个Chrome标签页时,不妨想一想:背后正是分页与分段机制在默默守护着每一字节的安宁。

aa1231111的博客 221

虚拟内存的分段与分页实现

关于内存管理(虚拟内存的分段与分页实现),Intel Pentium完成哪些功能,Windows/Unix OS完成哪些功能?修改 《现代操作系统》在介绍内存管理的分段与分页结合时,介绍了分段和分页结合Intel Pentium的例子,那么处理器和操作系统在内存管理方面的配合和分工是怎样的?修改 举报添加评论 分享 • 邀请回答 按票数排序按时间排序

西红柿炒土豆 1451
上一篇: pragma 预处理指令详解
下一篇: 物理内存与线性地址的关系
火VVVVV
博客等级 码龄16年 87粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值