一文讲解,Linux内核——内存管理(建议收藏)

【推荐文章】

浅谈linux 内核网络 sk_buff 之克隆与复制

深入linux内核架构--进程&线程

了解Docker 依赖的linux内核技术

怎么在Windows下使用Makefile文件

浅析linux内核网络协议栈--linux bridge

一.内存的基础知识:

1.写程序到程序运行的过程:

(1)编译:由编译程序将用户代码编译成若干个目标模块(把高级语言翻译成机器语言)

(2)链接:由链接程序将编译后形成的一组目标模块以及所需的函数链接在一起,形成一个完整的模块

(3)装入:由装入程序将装入模块装入到内存运行。

2.链接的三种方式:

(1)静态链接:装入前链接成一个完整的装入模块

(2)装入时动态链接:运行前变装入边链接

(3)运行时动态装入:运行时目标模块才装入并链接

3.装入的三种方法:

(1)绝对装入:编译产生绝对地址。

(2)可重定位装入:装入时将逻辑地址转为物理地址。

(3)动态运行时装入:运行时将逻辑地址转为物理地址,需设置重新定位寄存器。

二.内存管理的基本概念

地址转换:操作系统负责实现逻辑地址到物理地址的转换。

存储保护:保证各进程在自己的内存空间内运行,不会越界访问。两种实现方式:设置上下限寄存器和利用重定位寄存器界地址寄存器进行判断。

三.覆盖与交换

1.覆盖技术:

思想:将程序分成多个段(多个模块)。不可能同时被访问程序段共享一个覆盖区,覆盖区中的程序段在运行的过程中会根据需要调入调出。

2.交换技术:

思想:内存空间紧张的时候,系统将内存中的某些进程暂时换出外存,把外存中的某些已具备运行条件的进程换入内存(进程在内存与磁盘间的动态调度)。暂时换出外存等待的进程状态为挂起状态。

(1)具有交换功能的操作系统中,通常把磁盘空间分为文件区和对换区两部分。文件区主要用于存放文件,采用离散分配的方式;对换区空间只占磁盘的小部分,被换出的进程就放在对换区。对换区采用连续分配方式。兑换区的I/O速度比文件区的更快。

(2)交换通常在许多进程吃紧且内存吃紧时进行。

(3)可优先换出阻塞进程;可换出优先级较低的进程(PCB会常驻内存,不会被换出外存)。

3.覆盖与交换的区别:覆盖是在同一个程序或者进程中,交换是在不同的进程(或作业)之间的。

四.连续分配管理方式

1.单一连续分配:

内存被分为系统区和用户区,系统区通常位于内存的低地址部分,用于存放操作系统的数据,用户区用于用户进程的相关数据。内存中只能有一道程序,用户程序独占整个用户空间。

(1)优点:实现简单,无外部碎片,可以用覆盖技术扩充内存。

(2)缺点:只能用于单用户,单任务的操作系统中,有内部碎片,存储器利用率极低。

2.固定分区分配:

将用户空间分为若干个固定大小的分区,在每个分区中知装入一道作业。又分为分区大小相等和分区大小不等的。

分区大小相等的:缺乏灵活性,适合于一台计算机控制多个相同的对象的场合。

分区大小不等的:增加了灵活性,可以满足不同大小进程的需求。</

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值