操作系统面试知识点总结3

#来自ウルトラマンメビウス(梦比优斯)

1 内存管理概念

1.1 内存管理的基本原理和要求

内存:内存可存放数据,程序执行前需要先放到内存中才能被 CPU 处理 -- 缓和 CPU 与硬盘之间的速度矛盾。

功能:

  • 内存空间的分配与回收
  • 地址转换
  • 内存空间的扩充
  • 存储保护
1.1.1 程序的装入和链接

创建步骤:编译、链接、装入

链接的类型:静态链接、装入时动态链接、运行时动态链接

装入模式:绝对装入、可重定位装入、动态运行时装入

1.2 覆盖与交换

多道程序环境用来扩充内存的方法。

覆盖:将程序分为多个段,常用的段常驻内存,不常用的段需要时才调入内存

交换:内存中某些段移出内存,把外存中具备运行的装入内存

1.3 连续分配管理方式

一个程序分配一个连续的内存空间

  • 单一连续分配
  • 固定分区分配
  • 动态分区分配
    • 首次适应算法
    • 最佳适应算法
    • 最坏适应算法
    • 邻近适应算法

1.4 非连续分配管理方式

一个程序分散地装入不相邻的内存分区,根据分区大小是否固定,分为分页存储管理、分段存储管理

分页存储管理 根据运行时是否把作业的所有页面都装入内存才能运行,又分为基本分页存储管理方式请求分页存储管理方式

1.5 基本分页存储管理方式

  • 分页管理不会产生碎片
  • 将主存空间划分为大小相等且固定的块,块相对较小,作为主存的基本单位,进程以块为单位空间申请。

1.5 基本分段存储管理方式

  • 按照用户进程中的自然段划分逻辑空间。

1.6 段页式管理方式

  • 作业的地址空间首先被分为若干逻辑段,每段都有自己的段号
  • 每个段分为若干大小固定的页
  • 对内存空间的管理仍然和分页存储管理一样
  • 会产生碎片

1.7 分页和分段区别

  • 对程序员的透明性:分页透明,但是分段需要程序员显式划分每个段。
  • 地址空间的维度:分页是一维地址空间,分段是二维的。
  • 大小是否可以改变:页的大小固定,段的大小可以动态改变
  • 出现的原因:分页主要用于实现虚拟内存,从而获得更大的地址空间;分段主要是为了使程序和数据可以被划分为逻辑上独立的地址空间并且有助于共享和保护。

2 虚拟内存管理

2.1 基本概念

传统存储管理方式的特征:

  • 一次性
  • 驻留性

局部性原理:

  • 时间局部性
  • 空间局部性

虚拟存储器的定义:基于局部性原理,程序的一部分装入内存,一部分留在外存,需要的时候调入内存。

特征:多次性、对换性、虚拟性

实现:

  • 请求分页存储管理
  • 请求分段存储管理
  • 请求段页式存储管理

2.2 请求分页管理方式

系统建立在基本分页系统基础之上,为了支持虚拟存储器功能而增加了请求调页功能页面置换功能

2.3 页面置换算法

  • 最佳置换算法(OPT)
  • 先进先出页面置换算法(FIFO)
  • 最近最久未使用置换算法(LRU)
  • 时钟置换算法(CLOCK)

2.4 页面分配策略

  • 固定分配局部置换
  • 可变分配全局置换
  • 可变分配局部置换

2.5 抖动

刚换出的页面又要换入内存。

原因:

  • 分配的物理页帧数不足(主要原因)
  • 置换算法不当

2.6 工作集

某段时间内,进程要访问的页面集合。

相关推荐
大龄秃头程序员10 分钟前
RN 0.86 新架构实战:TurboModule + Fabric 组件 + iOS 原生容器,完整代码开源
前端·react native
这是个栗子13 分钟前
前端开发中的常用工具函数(八)
开发语言·前端·javascript
Hilaku24 分钟前
Vue 和 React 真正的差距,不在语法,而在团队犯错成本
前端·javascript·程序员
凤凰院凶涛QAQ27 分钟前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构
研☆香34 分钟前
为什么变量声明在赋值前也能使用?—— 深入理解 JavaScript 变量提升与作用域
开发语言·前端·javascript
Liora_Yvonne1 小时前
目录结构到底怎么设计?别再把 components 和 utils 当垃圾桶了
前端
柯克七七1 小时前
我把 bug 修得太干净了,测试组以为这个模块本来就没问题
前端·javascript·typescript
Null1551 小时前
浏览器唤起桌面端应用(终极篇)
前端·javascript
掘金_答案1 小时前
上线那天,一个 ConcurrentHashMap 差点送走我的 AI 客服——3 天排查 JVM 血泪史
java·后端·架构
Quz1 小时前
QML Label 完整用法与 Text 组件选型
前端·qt