【基础】《操作系统》学习笔记(B站王道考研)(2)

第三章

内存的基础知识

内存是用于存放数据的硬件。程序执行前需要先放到内存中才能被CPU处理

每个内存地址对应一个存储单元

如果计算机“按字节编址”则每个存储单元大小为1字,即1B,即8个二进制位

如果字长为16位的计算机“按字编址”则每个存储单元大小为1个字:每个字的大小为16个二进制位

几个常用的数量单位(字节):

210 = 1K、220 = 1M、230 = 1G

指令的工作原理:操作码+若干参数(可能含地址参数)

相对地址又称逻辑地址绝对地址又称物理地址

从写程序到程序运行:

  1. 编辑源代码文件
  2. 编译:由源代码文件生规目标模块(高级语言“翻译"为机器语言)
  3. 链接:由目标模块生成装入模块,链接后形成完整的逻辑地址
  4. 装入:将装入模块装入内存,装入后形成物理地址

在这里插入图片描述

装入模块、装入内存

三种方式:

  1. 绝对装入:

    在编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存。

    缺点:只适用于单道程序环境,因为只有一个程序读写才能确定地址

  2. 静态重定位:

    又称可重定位装入。编译、链接后的装入模块的地址都是从0开始的,指令中使用的地址、数据存放的地址都是相对于起始地址而言的逻辑地址。装入时对地址进行“重定位”,将逻辑地址变换为物理地址(地址变换是在装入时一次完成的)

    必须分配其要求的全部内存空间

    在运行期间不能再移动

    用于早期多道批处理操作系统

  3. 动态重定位:

    又称动态运行时装入。编译、链接后的装入模块的地址都是从0开始的。地址转换推迟到程序真正要执行时才进行。因此装入内存后所有的地址依然是逻辑地址。这种方式需要一个重定位寄存器的支持。

    重定位寄存器:存放装入模块存放的起始位置

    允许程序在内存中发生移动

    现代操作系统

链接

三种方式:

  1. 静态链接:在程序运行之前,先将各目标模块及它们所需的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开。
  2. 装入时动态链接:将各目标模块装入内存时,边装入边链接的链接方式。
  3. 运行时动态链接:在程序执行中需要该目标模块时,才对它进行链接。其优点是便于修改和更新,便于实现对目标模块的共享。

内存管理的概念

  • 内存空间的分配与回收
  • 从逻辑上对内存空间进行扩充
  • 逻辑地址与物理地址的转换
  • 内存保护功能,保证各进程在备自存储空间内运行,互不干扰
    • 方法一:在CPU中设置一对上、下限寄存器,存放进程的上、下限地址。进程的指令要访问某个地址时,CPU检查是否越界。
    • 方法二:采用重定位寄存器(又称基址寄存器)和界地址寄存器(又称限长寄存器)进行越界检查。重定位寄存器中存放的是进程的起始物理地址。界地址寄存器中存放的是进程的最大逻辑地址

内存空间的扩充

  1. 覆盖技术
  2. 交换技术
  3. 虚拟存储技术

覆盖技术

解决“程序大小超过物理内存总和”的问题

思想:

  1. 程序分为多个段(多个模块)
  2. 内存中分为一个“固定区”若干个“覆盖区”
  3. 需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行结束);不常用的段放在“覆盖区”,需要用到时调入内存,用不到时调出内存

在这里插入图片描述

缺点:必须由程序员声明覆盖结构,操作系统完成自动覆盖。对用户不透明,增加了用户编程负担。

交换技术

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

  1. 应该在外存(磁盘)的什么位置保存被换出的进程?

    具有对换功能的操作系统中,通常把磁盘空间分为文件区对换区两部分。文件区主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间的管理采用离散分配方式对换区空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到系统的整体速度,因此对换区空间的管理主要追求换入换出速度,因此通常对换区采用连续分配方式

  2. 什么时候应该交换?

    交换通常在许多进程运行且内存紧缺时进行,而系统负荷降低就暂停。例如:在发现许多进程运行时经常发生缺页,就说明内存紧张。

  3. 应该换出哪些进程?

    可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出,有的系统还会考虑进程在内存的驻留时间…

注意:PCB会常驻内存,不会被换出外存

在这里插入图片描述

内存空间的分配与回收

连续分配管理方式

连续分配:指为用户进程分配的必须是一个连续的内存空间

单一连续分配

内存被分为系统区用户区。系统区通常位于内存的低地址部分,用于存放操作系统相关数据;用户区用于存放用户进程相关数据。

内存中只能有一道用户程序,用户程序独占整个用户区空间。

优点:实现简单;无外部碎片;可以采用覆盖技术扩充内存;不一定需要采取内存保护

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

在这里插入图片描述

固定分区分配

将整个用户区划分为若千个固定大小的分区,在每个分区中只装入一道作业,这样就形成了最早的、最简单的一种可运行多道程序的内存管理方式。

  • 分区大小相等:缺乏灵活性,但是很适合用于用一台计算机控制多个相同对象的场合
  • 分区大小不等:增加了灵活性,可以满足不同大小的进程需求

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值