【操作系统篇】什么是分段和分页

在这里插入图片描述

什么是分段和分页

  • ✔️ 典型解析
    • ✔️分页
    • ✔️页表
    • ✔️分段(Segmentation)
    • ✔️ 分段和分页的区别
    • ✔️分页和分段哪个更耗资源
    • ✔️它们对性能的影响是怎样的
    • ✔️分段和分页分别适合什么场景


✔️ 典型解析


在操作系统中,分段和分页是两种不同的内存管理技术,用于管理和分配进程的内存空间。它们的主要目标是提供对物理内存的有效和安全访问,但它们采用了不同的方法来实现这一目标。


✔️分页


大部分虚拟内存系统都会使用分页技术。分页技术把物理内存按照固定大小分为页面(一般是4KB)。通过分页,我们可以更细粒度的管理物理内存和虚拟空间的映射,也可以更高效的利用物理内存。对于一个64KB的虚拟地址和32KB的物理地址来说,如下图所示:


在这里插入图片描述

如果用户访问到的虚拟地址还没有分配物理地址,那么系统就会发生缺页中断。将需要访问的页面装载到页框中,修改MMU中的映射关系,重新返回。


✔️页表


对于虚拟地址和物理地址的映射关系的存储,我们一般是通过页表来完成的。页表中会记录虚拟地址的虚拟页号和偏移量,以及其对应的实际页框号。从数学角度说,页表是一个函数,它的参数是虚拟页号,结果是物理页框号。


同时,因为增加了页表的映射,中间就一定会有空间和时间的损耗,有两个问题:


1 . 虚拟地址到物理地址的映射需要时间,这个时候就需要引入快表 (TLB)加速页表的访问。


2 . 如果虚拟地址空间很大,页表也会很大,可能会浪费空间。假设64it的操作系统,虚拟地址的大小为2 ^ 64,如果每页是4KB,那么需要的记录数就是2^ 64/2^ 12=2^52项。同时,因为每个进程都有一个独立的虚拟地址,所以每个进程都有自己独立的页表,那么这种情况下,记录的项目就会变得非常多。


对于第二种情况,我们可以采用多级页表和倒排页表的方式来解决。


多级页表的核心就在于避免把所有的页表全部保存在内存中,如果是不需要的页表,就不会保留。倒排页表常用于64bit的计算机中,往往需要和TLB结合使用才可以。


✔️分段(Segmentation)


有了分页之后,一个进程就可以享受很大的,独立的虚拟地址了。但是有一个问题我们没有考虑到,个进程中一定会包含代码,常量,以及代码在运行时所产生的变量。那么,用户的程序如何保证这些代码所在的空间不和代码运行时候的堆栈空间冲突呢?


如果我们知识简单的将虚拟内存按照一维的方式将空间分给这些堆栈,代码片段等,就很难保证空间的有效利用,如下图所示:


在这里插入图片描述

此时,我们发现,程序的堆栈空间已经用完了,但是代码段还有很多没有用。这个时候就需要程序手动管理这些一维空间,无疑的比较复杂且困难的。


所以就有了分段技术的产生。它可以让每个段独享一部分可以自然增长的空间,且和其他段相互隔离如下所示:


在这里插入图片描述


✔️ 分段和分页的区别


在这里插入图片描述

✔️分页和分段哪个更耗资源


分页和分段在资源消耗方面有各自的特点,具体取决于使用场景和需求。


分段在某些方面可能更耗资源。例如,在分段系统中,程序员在编程和使用上有多方面的要求,而且存在外碎片问题,这可能导致性能损失。此外,分段中一个进程可占用多个“分区”,不要求一个进程占用的多个“分区”连续,这增加了管理的复杂性。


然而,分段克服了分页存在的问题,如数据结构的动态增长、动态链接、保护和共享等。因此,分段在某些方面可能更高效。


分页的优点在于没有外部碎片,最后一页可能有内碎片但不大。程序不必连续存放,便于改变程序占用空间大小。此外,分页可以缩短查找时间,提高访问速度。但分页可能会产生小的内碎片,且无论数据有多少,都只能按照页面大小分配,可能造成浪费。


综上所述,分段和分页各有优缺点,哪种更耗资源取决于具体的应用场景和需求。在实际使用中,它们通常会结合使用,以实现更好的内存管理功能。


✔️它们对性能的影响是怎样的


分段和分页对性能的影响如下:

分段可以提高内存利用率,并方便实现信息的共享和保护。它允许程序按逻辑模块进行划分,方便了程序员的开发和使用。然而,分段也存在一些问题,如无法利用碎片、必须搬移内存等,这可能导致性能损失。


分页可以缓解内存压力,设计简单且效率高。它没有外部碎片,最后一页可能有内碎片但不大。程序不必连续存放,便于改变程序占用空间大小。此外,分页可以缩短查找时间,提高访问速度。但分页可能会产生小的内碎片,且无论数据有多少,都只能按照页面大小分配,可能造成浪费。


分段和分页各有优缺点,对性能的影响取决于具体的应用场景和需求。在实际使用中,它们通常会结合使用,以实现更好的内存管理功能。


✔️分段和分页分别适合什么场景


分段和分页各有适用的场景:

分段适合于处理具有不同逻辑意义的程序,主要为了实现虚拟内存,获得更大的地址空间,从而使程序和数据可以被划分为逻辑上独立的地址空间,并有助于共享和保护。分段可以更好地实现共享,根据用户的需要划分,因此段对用户是可见的。

分页适合于处理大型程序,其中内存需求很高且需要随时调整内存大小的情况。分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要,其对用户是透明的。

总的来说,分段和分页都是为了更好地管理内存和提高内存利用率,但它们的实现方式和主要目的有所不同。在实际使用中,它们通常会结合使用,以提供更好的内存管理功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/605086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在做题中学习(43):长度最小的子数组

LCR 008. 长度最小的子数组 - 力扣(LeetCode) 解法:同向双指针-------滑动窗口算法 解释:本是暴力枚举做法,因为全部是正整数,就可以利用单调性和双指针解决问题来节省时间 思路: 如上面图&am…

ES -极客学习

Elasticsearch 简介及其发展历史 起源 Lucene 于 Java 语言开发的搜索引擎库类创建于 1999 年,2005 年成为 Apache 顶级开源项目Lucene 具有高性能、易扩展的优点Lucene 的局限性 只能基于 Java 语言开发类库的接口学习曲线陡峭原生并不支持水平扩展原生并不支持水…

如何找到 niche 出海细分市场的 IDEA

先说结论就是:看榜单 Why:为什么看榜单? 大家会问为什么?原因很简单: 熟读唐诗三百首,不会作诗也会吟不天天看榜单上相关的优秀同行,你想干啥 心法就是下苦功夫坚持,量变引起质变…

Nginx 文件名逻辑漏洞(CVE-2013-4547)

目录 Nginx 文件名逻辑漏洞(CVE-2013-4547) 1.cd到CVE-2013-4547 2.执行docker-compose up -d 3.查看靶场是否开启成功 4.访问浏览器 5.上传含有一句话木马的图片 6.burp抓包 7.在shell.gif加空格 8.放包 9.访问路径 10.继续抓包 11.在aa后面…

优化器(一)torch.optim.SGD-随机梯度下降法

torch.optim.SGD-随机梯度下降法 import torch import torchvision.datasets from torch import nn from torch.utils.data import DataLoaderdataset torchvision.datasets.CIFAR10(root./data, trainFalse, downloadTrue,transformtorchvision.transforms.ToTensor()) data…

2、Excel:基础概念、表格结构与常见函数

数据来源:八月成交数据 数据初探 业务背景 数据来源行业:金融行业(根据应收利息和逾期金额字段来判断) 可以猜测: 业务主体:某互联网金融公司(类似支付宝)也业务模式:给…

群晖安装MariaDB

群晖安装MariaDB 在套件中心安装MariaDB给root开启远程访问权限使用工具连接数据库 在套件中心安装MariaDB 给root开启远程访问权限 # ssh 登陆群晖后执行下面操作 $ mysql -uroot -p[数据库密码] $ use mysql; $ select User,authentication_string,Host from user; # 查看账…

【数据结构—排序—交换排序】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、排序的概念及其运用 1、排序的概念 2、排序运用 3、 常见的排序算法 二、交换排序 1、冒泡排序 1.1算法讲解 1.2冒泡排序的实现: 1.2.1头文件的…

web前端开发技术复习问答题

目录 1.简述常见单标签和双标签有哪些? 2.常见块级元素和行级元素有哪些? 3.简述常见的列表有哪些?他们有什么区别? 4.简述超链接的href属性值如何设置?有什么区别 5.CSS基本语法 6. css中常见的引入方式有几种&…

程序员做私活赚外快的好地方,今天推荐几个

你们当程序员不会都拿着几千、万把块钱的死工资吧,今天为大家分享一些可以接私单的平台,我反正已经赚麻了。 如果你的工作相对没那么费时间,可以空闲的时候去接点私活。或者是还没有找工作之前,可以通过一些平台接一些兼职&#…

【STM32】PWR电源控制

1 PWR简介 PWR(Power Control)电源控制 PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能 可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到P…

回首2023,厉兵秣马,启航2024

目录 回首风波的20232023,感恩相遇暂停发文发文狂潮感恩有你备战2024学习之余跆拳道比赛做手工diy 学习心路年初学习伊始心路其后学习后来心路 必须看配图说明 未知的2024Flag 回首风波的2023 2023,感恩相遇 还记得,22年末,23年…

基于gitlab 12.8.0版本的完整镜像过程

目前已在一台服务器上安装了gitlab 12.8.0,并且稳定运行了有几年了,其上面也创建了大量的项目。目前要求对该gitlab及其上面的所有仓库做一个完整的镜像。具体操作过程如下: 1、确认现有的gitlab的版本号 2、到gitlab官网下载相同版本号的gi…

GitLab添加SSH key

SSH 为 Secure Shell 的缩写,SSH 为建立在应用层基础上的安全协议。 SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。 利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。 ssh-keygen 从客户端来看,SSH提供两种级…

【信息论与编码】习题-判断题-第三部分

目录 判断题48. 利用状态极限稳态分布概率和符号的状态一步转移概率来求m阶马尔可夫信源的极限熵。49. 连续信源或模拟信号的信源编码的理论基础是限失真信源编码定理 。50. 具有一一对应关系的无噪信道的信道容量CH(X)。51. 在游程编码过程中,“0”游程和“1”游程…

使用pytorch构建图卷积网络预测化学分子性质

在本文中,我们将通过化学的视角探索图卷积网络,我们将尝试将网络的特征与自然科学中的传统模型进行比较,并思考为什么它的工作效果要比传统的方法好。 图和图神经网络 化学或物理中的模型通常是一个连续函数,例如yf(x₁&#xff…

定展中2024上海国际智慧工地展览会

2024第十五届上海国际智慧工地展览会 2024 Shanghai International Smart Site Equipment Expo 时间:2024年03月26日-28日 地点:上海跨国采购会展中心 政策指导: 中华人民共和国国家发展和改革委员会 中华人民共和国工业和信息化部 上海城市数字转型应用…

企业级 npm 私有仓库部署方案

本文作者系360奇舞团前端开发工程师 淘宝 NPM 镜像站切换新域名时,放了一张知乎博主天猪的图片,如下: _图片来源:https://zhuanlan.zhihu.com/p/432578145 看着逐年增长的访问量,不禁让人感慨,npm 的出现&a…

python爬虫实现获取招聘信息

使用的python版本: 3.12.1 selenium版本:4.8.0 urllib版本:1.26.18 from selenium import webdriver from selenium.webdriver import ActionChains import timeimport re import xlwt import urllib.parsedef get_html(url):chrome_drive…

系列十三、查询数据库中某个库、表、索引等所占空间的大小

一、information_schema数据库 1.1、概述 information_schema数据库是MySQL出厂默认带的一个数据库,不管我们是在Linux中安装MySQL还是在Windows中安装MySQL,安装好后都会有一个数据库information_schema,这个库中存放了其他库的所有信息。 …