408操作系统习题:内存管理(一)

1. 为什么D(虚拟内存需要硬件支持)是对的?

例子

  • 虚拟内存的作用

    • 系统会把暂时不用的数据(比如后台标签页)存到硬盘的页面文件(pagefile.sys),等需要时再加载回内存。

  • 硬件支持

    • MMU(内存管理单元):负责把程序用的“虚拟地址”(比如0x00400000)转换成真实的物理内存地址。

    • TLB(快表):缓存常用地址映射,加速转换(类似CPU缓存)。

    • 缺页中断:如果程序访问的数据在硬盘上,CPU会触发中断,让操作系统把数据从硬盘读回内存。

如果没有这些硬件

  • 程序会直接崩溃,因为系统无法动态管理内存和硬盘的交换。


2. 其他选项为什么错?

A. 存储保护是限制内存分配? ❌

  • 计算机例子

    • 你的浏览器和游戏各自有独立的内存空间,浏览器不能直接读写游戏的内存(否则黑客就能随意篡改游戏数据)。

    • 存储保护是通过CPU的权限位和操作系统的页表实现的,目的是隔离进程,而不是限制分配。

B. 内存均分给N个用户? ❌

  • 计算机例子

    • 在Windows/Linux中,多个程序运行时,内存分配是动态的。比如:

      • 开一个虚拟机可能占4GB,而记事本只占20MB。

      • 系统不会固定给每个程序总内存/N,而是按需分配

C. 磁盘无限=虚拟内存无限? ❌


总结(计算机视角)

选项对/错计算机例子
A存储保护是防越界(如浏览器不能篡改游戏内存),不是限制分配
B内存是动态分配的(虚拟机占4GB,记事本占20MB),不是均分
C32位系统虚拟内存最大4GB,和硬盘大小无关
D虚拟内存没硬件支持就无法工作

关键结论

  • 虚拟内存是“用硬盘扩展内存”的技术,但必须靠CPU和MMU硬件支持。

 

 A,B,C都能通过由存储管理系统通过一定的算法实现。

D项的话只能通过硬件去提高

1. 为什么B是错误的?

内存保护必须依赖硬件支持

  • 操作系统的权限管理(如页表、段表)需要CPU硬件机制(如MMU、特权模式)来强制执行。

  • 例子

    • 如果没有硬件支持,恶意程序可以绕过操作系统,直接读写其他进程的内存(就像没有门禁的小区,谁都能随便进)。

关键硬件

  • MMU(内存管理单元):负责虚拟地址到物理地址的转换,并检查访问权限。

  • CPU特权级:区分内核态和用户态,防止用户程序直接操作关键内存。


2. 其他选项为什么正确?
选项内存保护的正确描述例子
A进程不能越权访问其他进程内存Chrome无法读取微信的聊天数据
C保护方法包括界地址、上下限地址类似给每个进程分配“围栏”
D进程不能跳转到其他进程的代码游戏程序不能突然执行浏览器的代码

总结

  • 内存保护的本质:是软硬件协作的结果,缺一不可。

 

1. 硬件是“警察”,操作系统是“法律”

  • 硬件(CPU/MMU)的作用

    • 实时监控:像警察一样,硬件会检查每次内存访问是否越界。例如:

      • CPU通过页表项的权限位(读/写/执行)判断进程是否违规。

      • MMU在地址转换时,若发现进程访问未分配的内存,立即触发段错误(Segmentation Fault)

    • 强制执行:硬件直接拦截非法操作,无需软件干预(比如游戏程序试图篡改浏览器内存时,CPU会直接终止它)。

  • 操作系统的作用

    • 制定规则:像立法机构一样,操作系统为每个进程分配内存空间,并在页表中标注权限。

      • 例如:Chrome进程的页表会标记其内存范围为0x0000~0x3FFF,其他进程不可访问。

    • 处理异常:当硬件触发缺页异常或越界错误时,操作系统决定如何响应(如终止进程或调页)。

反例

  • 若只有硬件(无操作系统):CPU不知道哪些内存该保护,就像警察没有法律依据,无法判断谁该被抓。

  • 若只有操作系统(无硬件):恶意程序可绕过软件规则,直接物理寻址攻击内存(如同罪犯绕过法律,暴力破门)。


2. 实际计算机中的协作流程

以进程访问内存为例

  1. 操作系统为进程A分配内存,并在页表中标记其可访问范围(如0x1000~0x2000)。

  2. CPU执行进程A的指令MOV [0x1500], 42(向地址0x1500写入数据)。

  3. MMU查询页表:

    • 0x1500在进程A的合法范围内 → 允许写入。

    • 0x1500属于其他进程(如进程B)→ 触发保护异常,CPU强制终止进程A。

  4. 操作系统收到异常后,可能记录错误日志或杀死进程A。


3. 为什么不能独立完成?

角色单独工作的缺陷实例
仅硬件缺乏内存分配规则CPU不知道0x1000该给哪个进程,可能多个进程互相覆盖数据
仅操作系统无法实时拦截非法访问恶意程序可通过汇编指令MOV [任意地址], 数据直接破坏其他进程

4. 现实类比

  • 银行金库系统

    • 硬件=保险门+指纹锁(实时拦截非法进入)

    • 操作系统=银行经理(决定谁可以进哪个保险柜)

    • 缺一不可:没有经理,保险门不知道谁该进;没有保险门,经理的规则形同虚设。


总结

内存保护的本质是:
操作系统定义规则(软件) + 硬件执行规则(物理拦截) = 安全的进程隔离

 

1. 为什么是C?

需要硬件地址变换机构的存储管理方式

  • III. 页式存储管理

    • 依赖MMU(内存管理单元)虚拟页号→物理页框号

    • 硬件支持:页表寄存器(PTBR)、TLB(快表)、缺页中断机制。

  • IV. 动态分区分配

    • 虽然主要靠操作系统分配内存,但地址重定位(逻辑→物理)需要基址寄存器(硬件)支持。

  • V. 段式存储管理

    • 需要段表寄存器段地址转换硬件,类似页式但以段为单位。


2. 其他选项分析
存储管理方式是否需要硬件地址变换原因
I. 单一连续分配❌ 不需要整个内存只运行一个程序,逻辑地址=物理地址(无转换需求)
II. 固定分区分配❌ 不需要分区固定,通过软件查表即可转换地址

错误选项

  • A(I、III、V):错误包含I(单一连续分配不需要硬件)。

  • B(II、III、IV):错误包含II(固定分区分配不需要硬件)。

  • D(II、III、IV、V):错误包含II。


关键区别

  • 需要硬件的场景:地址映射复杂(如页式、段式)、动态重定位(如动态分区)。

  • 纯软件管理的场景:内存分配简单固定(如单一/固定分区)。

例子

  • 页式系统像“快递分拣中心”,必须靠硬件(MMU)快速查页表;

  • 单一连续分配像“独栋别墅”,无需分拣,直接住进去。

固定分区分配,核心是:预先固定

 

已知逻辑地址(2,154)=>   段号:2     段内偏移:154

 

1. 为什么B是错误的?

动态重定位的核心机制

  • 重定位寄存器(基址寄存器)是CPU硬件的一部分,通常只有一个,由操作系统动态分配给当前运行的进程使用

  • 工作流程

    1. 进程被调入内存时,操作系统为其分配基址(起始物理地址),并加载到重定位寄存器

    2. CPU执行进程指令时,通过 物理地址 = 逻辑地址 + 重定位寄存器值 完成地址转换。

    3. 进程切换时,操作系统更新重定位寄存器的值为新进程的基址。

B选项的错误

  • 如果每个进程独占一个重定位寄存器,会极大增加硬件成本(不现实)。

  • 实际系统中,重定位寄存器是共享资源,由操作系统调度管理。


2. 其他选项为什么正确?
选项动态重定位的正确描述实例
A程序装入后可能移动内存紧缩时,进程物理位置会变
C地址转换公式逻辑地址 + 基址 = 物理地址
D映射在执行时发生进程运行时才需地址转换(与静态重定位区别)

 

1. 为什么是C?

动态重定位的核心依赖

  1. I. 可重定位装入程序

    • 负责将目标程序(IV)动态加载到内存任意位置,并记录其基址(起始物理地址)。

    • 作用:确保程序无需静态绑定到固定内存地址。

  2. II. 重定位寄存器(基址寄存器):

    • 存储当前运行进程的基址,CPU通过 物理地址 = 逻辑地址 + 重定位寄存器值 完成地址转换。

  3. III. 地址变换机构(如MMU):

    • 硬件单元,实时执行逻辑地址到物理地址的转换。

 

 

 

 

紧凑/拼凑:动态分区时,由于进程的换入、换出,会产生很多小的外部碎片,把进程紧凑                       一 下,使外部碎片消失(每个进程直接没有外部碎片)

拼接:         回收进程时,如果该进程上下有空闲分区,则需要合并空闲分区,并修改空闲                        分区表

 

产生内部碎片固定分区              (程序不可能每次都能恰好用完分区)           

产生外部碎片不固定分区        (进程换入,换出时会产生外部碎片)

动态分区算法:

 

1. 消除外部碎片

  • 连续分配的问题

    • 动态分区分配会产生大量外部碎片(即内存中分散的小块空闲区,无法被利用)。

    • 例如:内存中有3个空闲块(10KB、5KB、20KB),但一个15KB的进程无法分配,因为空闲块不连续。

  • 分页的解决方案

    • 将物理内存划分为固定大小的页框(如4KB),进程的地址空间划分为相同大小的

    • 页框可以非连续分配,所有空闲页框均可被利用,无外部碎片。


2. 允许部分加载(按需调页)

  • 连续分配的局限

    • 进程必须整体装入连续内存,即使某些代码/数据暂时不用(浪费内存)。

  • 分页的优势

    • 按需调页:只需将进程当前需要的页面装入内存,其余留在磁盘。

    • 例如:一个100MB的游戏程序,实际运行时可能只需加载20MB的常用代码和数据。


3. 高效利用小内存块

  • 连续分配的浪费

    • 若剩余空闲块为9KB,而进程需要10KB,则9KB会被闲置。

  • 分页的灵活分配

    • 进程的最后一页允许内部碎片(不足一页的部分),但内部碎片最大不超过一页大小(如4KB),远小于连续分配的外部碎片

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值