<Linux>(极简关键、省时省力)《Linux操作系统原理分析之linux存储管理(3)》(19)

《Linux操作系统原理分析之linux存储管理(3)》(19)

  • 6 Linux存储管理
    • 6.4 Linux 的分段和分页结构
      • 6.4.1Linux 的分段结构
      • 6.4.2 Linux 的三级分页结构
      • 6.4.3 内核页表和进程页表

6 Linux存储管理

6.4 Linux 的分段和分页结构

本节主要内容 Linux 运行在 80x86 上时,其内核如何利用硬件机制实现对存储空间的分段分页管理。

6.4.1Linux 的分段结构

  1. 用户区和内核区
    80x86 的分段机制把 64T 的虚拟地址空间分为最大长度为 4G 的线性地址空间。Linux 把每个线性地址空间提供给一个进程使用,所以每个线性地址空间就是用户的虚拟内存空间。在一个进程的线性地址空间中包含若干全局段和局部段。

👉内核代码段和内核数据段:由于对一个进程而言,只有它的虚拟存储空间是可见的。因此为了操作系统功能,系统内核必须包括在进程的虚拟地址空间中。Linux 把内核的代码和数据映射到线性地址空间的全局段中,它们就形成了内核代码段和内核数据段。
👉用户代码段和用户数据段:进程本身的代码和数据映射到进程线性地址空间的局部段,形成用户代码段和用户数据段。

为了保护内核,linux 把虚拟内存分成两部分:

👉内核区:包括内核代码段和内核数据段、内核使用的堆栈、全局数据结构。
👉用户区:包括用户代码段和用户数据段、进程堆栈、进程数据结构等

在 80x86 上 linux 进程虚拟空间中:

👉用户区:地址从 0x00000000~0xbfffffff,其大小为 3G;
👉内核区:地址从 0xc0000000~0xffffffff,其大小为 1G;

说明: 由于对每个进程而言,只有它的虚拟存储空间是可见的,而且每个进程的虚拟存储空间都是从 0 开始的相对地址空间,所以从系统角度看,每个进程在虚拟空间中的内核区和用户区的分布是相同的。

在这里插入图片描述
2. GDT
由于大部分进程都只有一个代码段和一个数据段,为了提高地址映射速度,从 linux2.2 开始,把进程的一个代码段和一个数据段的描述符放到了 GDT 中,这样就可以直接从 GDT 中取得描述符,而不必再通过 GDT 访问 LDT。只有进程需要建立更多段时,才把它们的描述符放到 LDT 中。在 linux 内核 2.2 的 arch/i386/kernel/head.s 文件中定义了 GDT 的内容。
在这里插入图片描述

6.4.2 Linux 的三级分页结构

  1. Linux 的三级分页结构
    Linux 在 80x86 机器平台运行时,因为 80x86 是 32 位的,所以 采用两级分页结构就可以有效地节省内存空间。但是如果 Linux 运行在 64 位机器平台时,如 Alpha 等,地址总线 64 位,寻址更大空间,此时二级页表将出现页表目录过大的问题。为此,64 位机器的分页机制提供的是三级分页结构。Linux 运行在 64 位机器平台时也采用三级分页结构。
页目录:PGD(page directory)
页中间目录:PMD(page Middle directory)
页表:PTE(page table)

地址结构,以 alpha 机器为例:
在这里插入图片描述
在这里插入图片描述
2. linux 与硬件无关的分页机构
linux 提供了与硬件无关的分页机构。所谓与硬件无关是指这种分页结构仅是一种存储管理模型。当linux 运行在某种机器时,通过对存储管理模型有关参数的设置来适应机器的硬件。Linux 内核提供的与硬件无关的分页机构是三级分页存储管理模型。
Linux 内核把三级分页存储管理模型转换为两级分页结构的具体做法是:把三级分页存储管理模型的页中间目录域长度定义为 0。同时定义中间目录表只有一个表项。在 linux 源代码文件的/include/asmi386/pgtable.h 中有如下定义:

#define PTRS_PER_PTE 1024
#define PTRS_PER_PMD 1
#define PTRS_PER_PGD 1024
  1. Linux 页面大小
    Linux 中页面的尺寸由宏定义的符号常量 PAGE_SIZE 指定,在 80x86 机器中页面长度为 4KB,定义在 include/asm-i386/page.h 中:
#define PAGE_SHIFT 12
#define PAGE_SIZE (1UL<< PAGE_SHIFT) /*把 1 左移 12 位,即 4K*/
在 alpha 等 64 位机中,页面大小为 8K,定义在相应的 page.h 中:
#define PAGE_SHIFT 13
#define PAGE_SIZE (1UL<< PAGE_SHIFT) /*把 1 左移 13 位,即 8K*/

6.4.3 内核页表和进程页表

  1. CR3 控制寄存器
    进程切换时,linux 要重新设置 CR3 控制寄存器,使它指向新进程的页目录表。该任务由内核的汇编语言函数 startup_32()完成。

  2. 页目录表
    linux 内核为了配合硬件分页机制设置了相应的数据结构,其中页目录表定义为一个具有 1024 个元素
    的数组:

Pgd_t swapper_pg_dir[1024] /*每个元素指向一个页表*/
  1. 内核页表和进程页表 内核页表和进程页表
    内核区和用户区的分界地址由符号常量 PAGE_OFFSET 确定,如 80x86 中 PAGE_OFFSET 的值是0xc0000000(3G)。所以此时页目录表的钱 768 个表项对应用户区,后 256 项对应内核区(所有进程的内核 表项 完 全 相 同 ) 。 在 linux 内 核 中 使 用 paging_init() 函 数 对 页 目 录 表 进 行 初 始 化 , 它 定 义 在arch/i386/mm/init.c 中。

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

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

相关文章

广州数字孪生赋能工业制造,加速推进制造业数字化转型

广州数字孪生赋能工业制造&#xff0c;加速推进制造业数字化转型。数字孪生系统基于历史数据、实时数据&#xff0c;采用人工智能、大数据分析等新一代信息技术对物理实体的组成、特征、功能和性能进行数字化定义和建模。通过构建在信息世界对物理实体的等价映射&#xff0c;对…

【上海大学数字逻辑实验报告】四、组合电路(三)

一、 实验目的 掌握多路选择器74LS151的原理。掌握译码器74LS138的原理。学会在Quartus II上使用多路选择74LS151设计电路。学会在Quartus II上使用译码器74LS138设计电路。 二、 实验原理 多路选择器又称数据选择器或多路开关&#xff0c;它是一种多路输入单路输出的组合逻…

Vue中 实现自定义指令(directive)及应用场景

一、Vue2 1. 指令钩子函数 一个指令定义对象可以提供如下几个钩子函数 (均为可选)&#xff1a; bind 只调用一次&#xff0c;指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。inserted 被绑定元素插入父节点时调用 (仅保证父节点存在&#xff0c;但不一定已…

分享70个节日PPT,总有一款适合您

分享70个节日PPT&#xff0c;总有一款适合您 70个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1IRIKuFoGjQJ14OVkeW_mDQ?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

使用Python Flask搭建Web问答应用程序并发布到公网远程访问

使用Python Flask搭建web问答应用程序框架&#xff0c;并发布到公网上访问 文章目录 使用Python Flask搭建web问答应用程序框架&#xff0c;并发布到公网上访问前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程…

无人机覆盖路径规划综述

摘要&#xff1a;覆盖路径规划包括找到覆盖某个目标区域的每个点的路线。近年来&#xff0c;无人机已被应用于涉及地形覆盖的多个应用领域&#xff0c;如监视、智能农业、摄影测量、灾害管理、民事安全和野火跟踪等。本文旨在探索和分析文献中与覆盖路径规划问题中使用的不同方…

Linux--网络编程-ftp(TCP)网络通信-文件交互

项目要求&#xff1a;实现以下内容 远程控制&#xff1a; 1、查看服务器当前路径文件 ls 3、进入、退出服务器文件夹 cd 4、上传文件到服务器 put xxx 本地控制&#xff1a; 1、查看本地&#xff08;客户端&#xff09;文件 lls 2、进入客户端文件夹 lcd 3、获取服务器的文件…

智能联动第三方告警中心,完美实现故障响应全闭环

前言 我们曾讨论完善的告警策略是整个数据监控系统的重要组成部分&#xff08;参见《机智的告警策略&#xff0c;完善监控系统的重要一环》&#xff09;&#xff0c;介绍了如何配置告警通知以及场景示例&#xff0c;帮助用户及时更多潜在的故障和问题&#xff0c;有效地保障系…

Word 在页眉或页脚中设置背景颜色

目录预览 一、问题描述二、解决方案三、参考链接 一、问题描述 如何在word的页眉页脚中设置背景色&#xff1f; 二、解决方案 打开 Word 文档并进入页眉或页脚视图。在 Word 2016 及更高版本中&#xff0c;你可以通过在“插入”选项卡中单击“页眉”或“页脚”按钮来进入或者…

C++学习之路(十八)C++ 用Qt5实现一个工具箱(点击按钮以新窗口打开功能面板)- 示例代码拆分讲解

上篇文章&#xff0c;我们用 Qt5 实现了在小工具箱中添加了《增加托盘图标并且增加显示和退出菜单》功能。今天我们把按钮打开功能的方式改一改&#xff0c;让点击按钮以新窗口打开功能面板。下面我们就来看看如何来规划开发这样的小功能并且添加到我们的工具箱中吧。 老规矩&…

基于yolov8-道路裂缝检测

1 介绍 本文主要是搜集数据&#xff0c;从网上kaggle等网站找了2000多张图片&#xff0c;然后使用yolov8模型进行训练&#xff0c;最后只展示训练过程中的图片&#xff0c;如果有需要&#xff0c;可以联系&#xff1a;https://docs.qq.com/doc/DWEtRempVZ1NSZHdQ。

Hadoop实验putty文件

&#x1f525;博客主页&#xff1a; A_SHOWY&#x1f3a5;系列专栏&#xff1a;力扣刷题总结录 数据结构 云计算 数字图像处理 很多朋友反馈做hadoop实验中的putty找不到Connection-SSH-Auth路径下找不到Private key for authentication私有密钥&#xff0c;无法将转…

jenkins-cicd基础操作

1.先决条件 1.首先我个人势在k8s集群中创建的jenkins,部署方法搭建 k8s部署jenkins-CSDN博客 2.安装指定插件. 1.Gitlab plugin 用于调用gitlab-api的插件 2.Kubernetes plugin jenkins与k8s进行交互的插件,可以用来自动化的构建和部署 3.Build Authorizatio…

五金仓库ERP有哪些牌子?五金仓库ERP包含哪些功能

不同的五金企业有差异化的业务类型和管理着重点&#xff0c;而五金原材料和产成品种类繁多&#xff0c;涉及的计量单位多、出入库操作繁琐、基础资料信息管理复杂&#xff0c;如何确保有序进行每一项物品的收发工作&#xff0c;普遍存在于五金行业。 另一方面&#xff0c;物料…

免费好用的5个AI写作工具,如何更好的使用AI写作工具

人工智能&#xff08;AI&#xff09;作为当今科技领域的热门话题&#xff0c;正在以惊人的速度改变我们生活的方方面面。从智能助手到自动驾驶汽车&#xff0c;AI的应用已经渗透到我们日常的方方面面。 1. 什么是AI人工智能&#xff1f; 什么是AI人工智能&#xff1f;简而言之…

3DMM模型

目录 BFMBFM_200901_MorphableModel.matexp_pca.bintopology_info.npyexp_info.npy BFM BFM_2009 01_MorphableModel.mat from scipy.io import loadmat original_BFM loadmat("01_MorphableModel.mat") # dict_keys: [__header__, __version__, __globals__, # …

【滑动窗口】LeetCode2953:统计完全子字符串

作者推荐 [二分查找]LeetCode2040:两个有序数组的第 K 小乘积 本题其它解法 【离散差分】LeetCode2953:统计完全子字符串 题目 给你一个字符串 word 和一个整数 k 。 如果 word 的一个子字符串 s 满足以下条件&#xff0c;我们称它是 完全字符串&#xff1a; s 中每个字符…

【计算机网络笔记】物理层——物理介质

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

AI Agent 结构与分类

一、什么是AI agent 在人工智能中&#xff0c;智能代理AI Agent是以智能方式行事的代理&#xff1b;它感知环境&#xff0c;自主采取行动以实现目标&#xff0c;并可以通过学习或获取知识来提高其性能。人其实就是一种复杂代理。 为了理解智能代理的结构&#xff0c;我们应该熟…

录视频人不在电脑旁,怎么设置定时关机

如果你平常工作比较忙&#xff0c;或者要录制的视频/音频文件需要很长时间&#xff0c;最好选择预约录制&#xff0c;这样可使录屏软件自动开始和停止录制&#xff0c;并且定时关机。此外&#xff0c;你还可以设置保存录制文件、关闭录屏软件。是不是听起来很感兴趣&#xff1f…