CSDNcjg 2016-07-09
1.什么是内存管理
内存管理就是对内存架构进行管理,内存架构如下图。
用户无需担心自己的程序存在哪里,反正输入,计算,输出的结果是一样的。让内存管理实现这种媒介透明的手段就是虚拟内存,提供给用户一个比物理主内存大的多的地址空间。
2.随着程序在内存与磁盘之间进行交换,内存将变得越来越碎片化,假设有8个程序,
此时总内存足够,但是因为碎片化,无法提供连续的200KB地址空间。这种散布在进程之间的闲置空间叫做外部碎片。
解决方案:碎片整理,将内存上的数据导出到硬盘上,然后再重新按顺序加载到内存上,但这种方式比较耗时间。
更好的解决方案:分页
3.分页的原理
将虚拟内存和物理内存都划分为大小相同的部分,称为页,然后按页进行分配。程序太大的话,部分放在页中,部分放在硬盘中,这样就能够运行很大的程序了
4.地址翻译的原理
MMU如何完成翻译?查页表
页表是一个硬件数据结构
5.多级页表采用相同的方式,内存中只存顶级页表,次级页表等存放到磁盘上,需要的时候再放到内存中。
实现多级页表需要多次访问内存,降低了效率,如何解决这个问题呢?通过硬件TLB解决,TLB是硬件,所以很快就能得出结果。
6.分页太大,一个页面没有全部用完,剩下的部分就是内部碎片。减小内部碎片的办法就是减小分页的大小,但是分页太小的话,页表记录就会增多,页表级数增加,降低效率。
7.内存抖动
多次访问的虚拟内存,都不在物理内存上,都要发出缺页中断,整个系统的效率急剧下降,这种现象就叫内存抖动。
8.分段管理系统
分页系统的缺点:很难共享;数据增长时,地址空间受到限制。如何解决这个问题?
这种分段式内存管理模式,在运行程序的时候,要将程序所有的段放到内存中,又面临之前的问题,于是,人们对段进行分页,出现了段页式内存管理模型。
9.文件系统就是磁盘的抽象
10.文件系统让磁盘变得容易使用,用户不需要知道数据存放的细节
11.当用户给出一个文件名的时候,文件系统就会找出这个文件在磁盘上的所有数据块。具体如何查找数据块呢?就是将文件名翻译成其数据块在磁盘上存放的地址
12.块文件
块文件是关于输入,输出设备的。具体来说,块文件是模拟输入,输出的,对于每一个输入输出设备,我们以一个文件来表示,需要与该设备发生数据交换时就以该文件来替代,这样,输入输出与文件系统就统一了。
13.临时文件
是为了保存程序的中间结果而创建的,进程结束后,临时文件就被删除了
14.给定一个文件名,操作系统如何知道文件在磁盘上的位置?
这当然需要一个数据结构来记录,这个数据结构就是文件夹。文件夹的角色就是来跟踪文件的,里面存放的是文件名到磁盘地址的映射,即相当于从虚拟地址到实际地址的翻译。
15.磁盘为什么必须要分区
必须分区的理由是对磁盘空间的使用,计算机的内存字长度有限,而磁盘地址需要存放在内存字里面。因此操作系统能够访问的地址数是一个有限的值,如果磁盘的空间很大,那么操作系统将不能够访问到多余的空间
16.磁盘的结构如下图
17.为什么一个分区只能建立一个文件系统呢?
一个磁盘有多个扇面,第0个扇面有重要意义,该扇面存放主引导记录,就是一个小程序,用来启动计算机,如果该扇面损坏,那么这个分区就不可用。主引导记录之后就是磁盘分区表,磁盘分区表给出的是磁盘所有分区及其开始地址和终结地址。其中的一个分区是主分区,操作系统就装载在这个主分区里,主分区最前面是引导记录。
18.文件的实现
文件的实现,归根结底,就是能够把文件的内容存放在合适的地方, 并能够在需要时很容易地读出这些数据。
文件的实现需要解决以下几个问题:
19.FAT文件系统
FAT文件系统的表太大了,FAT表的大小与物理磁盘的大小和磁盘数据块大小有关,这与内存的分页一样,太大了占据的空间就大,如何解决这个问题呢?非对称多级索引。
20.硬链接的实现
硬链接就是将文件的地址映射直接加到链接目录下
21.文件系统的挂载
挂载是将一个文件系统并入另外一个文件系统的方法,
光盘,U盘本身也是一个文件系统,当我们要访问U盘时,就要将U盘挂载到"我的电脑"
22.文件系统访问控制
地址保护如何实现?
有2种方式,一种是从文件角度出发,一种是从用户角度出发。
由此产生了访问控制表和能力表
23.保护域
访问控制表和能力表都有一个缺点,针对个体的文件需要设置个体的访问控制。
保护域是将访问控制权限一样的文件和对象组织成同一个域,一个进程必须处在某个域中。
24.文件要保持一致性需要的功能
事务,日志。但是事务和日志在复制数据的时候,源数据就暂时不能使用了,这时怎么办?
使用随影技术,随影就是保持2个版本,等到复制或者更新完毕后,再改动数据。