首页 > 系统相关 >轻松理解操作系统 - 图文:Linux内核虚拟内存的基石是什么?

轻松理解操作系统 - 图文:Linux内核虚拟内存的基石是什么?

时间:2024-11-16 20:15:46浏览次数:3  
标签:管理 内存 内核 模块 Linux 虚拟内存 图文

第一大模块:一文串联文件系统模块

上期文章中,我们了解了 Linux内存管理模块 的其中一大功能:内核虚拟内存管理。内核的虚拟内存是怎么管理的?

内核虚拟内存的管理是用户程序创建进程和执行各种任务的基础。没有它,我们就无法正常使用系统。

但,虚拟内存终究是要落到物理内存里面的吧?那系统内核的虚拟内存是如何落到现实中的物理内存中的呢?

本期,我们就来聊聊内核虚拟内存的基石 - Linux内核内存管理。

图片

一、内核内存管理是什么呢?

Linux 内核内存管理主要负责管理计算机硬件中的物理内存资源

它确保系统能够高效地利用内存,同时保证系统的稳定性安全性

内核内存管理涉及物理内存的分配、回收、映射、保护等多个环节,是操作系统核心功能之一。

二、为什么要用单独一个模块来管理内核的物理内存?

首先是为了保证系统的运行速度

为了保证系统的运行速度,Linux内核 需要尽可能保证自己的虚拟内存映射在连续的物理内存上面。

这样才能更方便的通过虚拟地址来计算物理地址。

其次是为了做权限隔离

试想一下,假如没有权限隔离的话,其他程序岂不是随随便便就可以改系统内核的代码了?

图片

不做权限隔离的话,假如有坏人在程序里面写入了攻击性的代码,故意攻击你的系统,甚至于进行勒索,是不是很可怕?

三、那它是怎么管理内存的?

本张流程图看似很简单,但是实际上在分配和回收内存的时候涉及了很多机制,还有很多机制是虚拟内存管理核心的机制。

1、申请使用内存

内核模块需要使用内存时,它们会向内核内存管理模块请求分配内存。

图片

内核内存管理模块会根据请求的大小特性(如是否允许睡眠)来选择合适的内存区域进行分配。

常见的内存分配算法包括伙伴系统(Buddy System)和 slab 分配器等。

伙伴系统是一种物理内存管理算法,它将内存划分为多个块,并通过合并和分裂这些块来满足不同大小的内存请求。

slab 分配器则是一种针对小对象的内存分配器,它提高了内存分配和回收的效率。

图片

2、内存不用之后,怎么回收掉呢?

内核内存管理模块会跟踪这些释放的内存块,并在需要时将它们重新分配给其他请求者。

但是怎么跟踪呢?跟踪的方法就是 Linux系统内核中有 char类型 数组来标识内存块的占用情况。

未被使用的内存块在数组中被记为 0.

图片

此外,内存回收过程中,内核还会尝试合并相邻的空闲内存块,以减少内存碎片。

四、那它是怎么进行内存保护的呢?

上期我们已经讲到了内核虚拟内存与物理内存的映射等:

本期我们来讲讲它们怎么进行内存保护

1、内存保护是什么?

内存保护是指防止进程非法访问其他进程的内存或内核内存。

2、它是怎么实现的?

Linux内核 通过设置页表项的访问权限来实现内存保护。页表项中包含了该页的内存访问权限信息,如可读、可写、可执行等。

图片

用户态进程访问内核态进程的内存页就会被拒绝访问

五、那它有没有什么优化机制来确保系统的运行速度更快?

当然是有的,在本模块的第一期,我们讲了一些优化方法:从用户角度:内核如何管理内存并保证速度

这些优化方法的具体执行还在虚拟内存管理核心模块中实现的,那我们下期就来聊聊这个模块。

一个从生化环材专业转行的字节研发工程师,日常分享干货和有趣的科普。欢迎围观

标签:管理,内存,内核,模块,Linux,虚拟内存,图文
From: https://blog.csdn.net/H_P10/article/details/143810716

相关文章

  • 欧拉操作系统和linux区别
    centos和Linux区别?linux与centos的区别与联系:1、centos是基于linux建立的操作系统。2、linux属于内核系统,只有终端命令界面,无图形界面。3、centos同时拥有终端命令界面和图形界面。4、linux和centos都是属于开源系统。一般来说,我们平时说Linux指的是Linux系统内核,而cento......
  • DM multipath总结---基于LINUX 7
    DMmultipath总结---基于LINUX7DMmultipath总结DMMultipath提供的功能:冗余:    DMMultipath能够在主动/被动配置下提供故障转移。在主动/被动配置下,只有一半的路径在每次进行I/O时会被使用。若一条I/O路径的任一元素(电缆、交换器或者控制器)出现故障,DMMultipat......
  • 【Linux进程篇1】认识冯·诺依曼体系结构(引出进程详解)
    ---------------------------------------------------------------------------------------------------------------------------------每日鸡汤:用这生命中的每一秒,给自己一个不后悔的未来。-------------------------------------------------------------------------......
  • Linux:进程状态
    文章目录前言一、初识fork1.1fork函数的介绍1.2fork出的子进程存在形式1.3写时拷贝二、进程的状态2.1Linux内核源代码2.2理解内核链表(重要)2.3运行状态2.4阻塞状态2.5挂起状态三、Z(zombie)状态,僵尸进程四、孤儿进程总结前言本文将介绍如何利用系统调用......
  • 中科蓝讯内存COM区和Bank区:【图文讲解】
    中科蓝讯芯片采用最近比较流行的RISC-V(32位)开源内核架构+国产RT-Thread操作系统. 不过从代码上来看, 操作系统代码已经被封装到库中,一般用户可以不用涉及操作系统代码,降低了开发难度.中科蓝讯芯片 "冯·诺依曼结构",即代码与数据的统一编址.框架结构大致如下:......
  • 【Linux】:进程信号(信号保存 & 信号处理)
    ✨                         落日一点如红豆,已把相思写满天    ......
  • linux基础
    一、文件、目录篇●文件类型(-):普通文件(文本、可执行程序)​(d):目录(p):管道文件●常见系统文件目录/bin/:存放系统命令/boot/:系统启动目录/home/:存放普通用户的根目录(每个用户都有根目录)/dev/:设备文件保存位置/etc/:配置文件保存位置/root/:只有root用户才有权限......
  • 快速上手:Docker 安装详细教程(适用于 Windows、macOS、Linux)
    ###快速上手:Docker安装详细教程(适用于Windows、macOS、Linux)---Docker是一款开源容器化平台,广泛应用于开发、测试和部署。本文将为您提供分步骤的Docker安装教程,涵盖Windows、macOS和Linux系统。---##**一、Docker安装前的准备工作**在安装Docker之前,确保满......
  • 传感器芯片lsm330 linux驱动
    /*kernel/drivers/input/sensors/accel/lsm330_gyro.cCopyright©2012-2016RockchipCo.,Ltd.ThissoftwareislicensedunderthetermsoftheGNUGeneralPublicLicenseversion2,aspublishedbytheFreeSoftwareFoundation,andmaybecopied,distributed,......
  • 传感器芯片mpu6500 linux驱动
    /*drivers/input/sensors/access/mpu6880_gyro.c*Copyright©2012-2015ROCKCHIP.ThissoftwareislicensedunderthetermsoftheGNUGeneralPublicLicenseversion2,aspublishedbytheFreeSoftwareFoundation,andmaybecopied,distributed,andmodif......