操作系统内存管理(一)

151 阅读4分钟

笔记大纲

  • 操作系统概念
  • 操作系统结构
  • 操作系统启动流程
  • 什么是系统调用
  • 内存管理、虚拟内存管理

1.操作系统

现代的操作系统是指,运行在计算机硬件基础之上的软件,该软件提供了用户和硬件控制的桥梁,统一管理硬件的各种资源分配调度问题,响应用户程序的指令请求并提供服务,简称为操作系统。

1.1 运行模式

操作系统提供了2种系统运行模式,以便控制程序的执行安全问题

1.1.1 用户态

用户态:程序运行在用户空间,也只能访问到用户空间的数据

1.1.2 内核态

内核态:程序运行在内核空间,拥有所有资源的访问权限

1.2 常见的操作系统

     - Windows
     - Unix
     - Linux
     - OS X

1.3 内核

操作系统内核作为应用和硬件设备交互数据的桥梁,他的职责广泛且核心:

     - 进程管理
     - 内存管理
     - 系统调用
     - 硬件管理

1.4 启动过程

     1. 主板电源控制开关,信号触达主板相关控制设备
     1. BIOS(基本输入输出系统)激活运行
     1. BIOS检查RAM、IO硬件设备等是否安装正常
     1. 扫描PCI/PCIe总线,并连接所有关联设备
     1. BIOS激活CMOS存储器中的启动程序
     1. 引导程序从硬盘首扇区读入内存并执行操作系统
     1. 操作系统询问BIOS,以获得硬件配置信息,检查硬件的驱动程序

1.5 系统调用

用户应用程序在完成某些复杂的程序逻辑时候,需要调用操作系统控制的某些资源,例如磁盘的读取操作,用户态的程序无法直接执行读取磁盘的程序,进程需要陷入内核态,以内核态的身份进行读取磁盘的操作。 image.png

2.内存管理

2.1 地址空间

地址空间:是一个进程可用于寻址内存的一套地址集合,每一个进程都有一个自己的地址空间,并且这个地址空间独立于其他进程的地址空间。

2.2 交换

交换:由于运行中的操作系统进程数量和占用的内存资源会大于实际物理的RAM空间,所以诞生了交换技术,通过一定的算法将内存中的进程换出至硬盘上,一旦需要的时候再换入内存,这样就避免了RAM不足的情况。

2.3 空闲内存管理

RAM的内存需要操作系统实时监控,但是如何管理内存的使用情况,现代操作系统提供了方案

2.3.1 位图法

将内存根据字大小当做分配单元,内存中维护一个位图数组,每个单元的使用情况0表示空闲,1表示占用。

2.3.2 链表法

内存维护一个记录已分配内存和空间内存的链表,链表中的节点信息带有进程信息。

3.虚拟内存

每一个程序拥有自己的地址空间,这个空间分割成多个块,每一块称之为页,每一页有连续的地址范围,这些页被映射到物理内存。 image.png

3.1 内存管理单元MMU

CPU处理数据,虚拟地址不是被直接传送到内存总线上,而是被送往一个内存管理单元的区域MMU,MMU负责将虚拟地址映射成物理内存地址。

3.2 内存分段

将内存中的程序分成逻辑存在的若干段,可由代码分段、数据分段、堆栈段等,不同的分段有不同的逻辑属性,他的不足之处是存在内存碎片问题比较严重,还有就是内存交换的效率低下。 image.png

3.3 分页技术

大部分虚拟内存使用一种称之为分页的技术,虚拟地址空间按照一定大小被分成若干个页或称之为页面。页面大小一般为512字节的整数倍 image.png

3.3.1 页表

虚拟地址被分为虚拟页号(高位)和偏移量(地位),虚拟页号作为页表的索引,从而找到该虚拟页面对应的页表项。

3.3.2 转换检测缓冲区 TLB

在MMU中,存放程序常用的页表项的缓存,以加快分页过程。

3.3.3 大内存分页

3.3.3.1 多级页表

针对大内存的虚拟地址分页,将页表采用多级策略,这样一级页表的覆盖范围极大增加,通过多层分页,达到大内存的快速分页过程。

3.3.3.2 倒排页表

              - 节省空间
              - 虚拟地址转换物理地址困难

3.4 页面置换算法

3.4.1 最优页面置换算法

理论存在,实现困难

3.4.2 先进先出置换算法 FIFO

可能会抛弃重要页面

3.4.3 最近最少使用算法 LRU

表现优秀、实现困难

3.4.4 最近未使用置换算法 NFU

近似LRU效果

3.4.5 第二次机会页面置换算法

性能相比FIFO略好

3.4.6 时钟页面置换算法

主流系统的实现

3.4.7 工作集/工作集时钟 置换算法

耗时开销很大、算法优秀