内存管理
重定位
- 把作业地址空间中使用的逻辑地址变换成内存空间中的物理地址,称为地址映射
静态重定位
- 思想:用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,持续到作业完成退出内存
- 优点:不需要硬件支持,可以装入有限多道程序
- 缺点:一个作业装入内存,需要一次性分配其需求的全部内存;占用空间连续,装入后不可移动;不易实现内存共享。
动态重定位
- 思想:在运行过程中,要访问数据时再进行地址变换。由地址变换机构进行地址变换,需要重定位寄存器的硬件支持。
- 优点:OS可以将一个程序分散装在不连续的内存空间中;可以移动程序;有利于内存共享。
- 缺点:需要硬件支持,OS实现复杂。
- 动态重定位时虚拟存储的基础。
虚拟存储器
- 概念:是用户可以当作内存对待的虚拟存储区间。是操作系统提供的
空间比内存大得多的地址空间。建立了“内存+外存”的两级结构来得到一个容量相当于外存但是速度接近内存的体系。 - 特征
- 虚拟扩充:扩大逻辑内存的容量,用户编程时可用地址空间可用远大于内存容量
- 部分装入
- 离散分配
- 多次对换:进程运行期间,它所需要的全部程序和数据分多次调入内存。暂时不用的部分可用患出道外存的对换区。
分页技术
- Linux采用三级页表方式
- 思想:允许一个进程的存储空间不连续。解决了外部碎片并提高了内存利用率
请求分页存储管理
一个进程的部分页面在内存时就可调度它运行;如果需要的页面不在内存,则把它们动态换入内存。这种根据请求装入页面称为请求分页存储管理。
抖动
- 若采用的置换算法不合适或分配的内存块太少,则回出现刚被换出的页面又被访问,调换时被换出的页面又被访。这种频繁的页面更换称为抖动。
- 避免系统抖动
- 局部置换策略:一个进程出现抖动时不可以争夺其他进程的内存,防止抖动波及其他进程
- 利用工作集策略防止抖动
- 挂起某些进程腾出内存
- 采用缺页调度法,缺页率达到一定值为其分配更多内存块,缺页率很少则剥夺一些内存块
FIFO
- Firt In First Out先进先出法
- 为调入新页面而必须淘汰某个老页面,总是选择存在事件最长的那一页被换出
- 容易理解,实现简单,方便程序设计;
- 性能不好;仅当线性顺序访问地址时才理想;否则效率不高
LRU
- Last Recently User最久未使用置换法
- 当需要置换时,选择最近一段时间里最久没有使用的页面
- 与POT接近是算法,性能好应用多
- 需要硬件支持,开销变大,很少有计算机配备这种硬件
第二次机会置换法
- 对FIFO算法的改进,避免把经常使用的页面置换出去
- 思想:选择某一页面时检查最老页面的引用位,若为0则淘汰此项。若为1则将他的引用清零再放到链表末尾,重置装入时间。
页面缓冲算法
- 对FIFO算法的改进,通过对被置换页面的缓冲,有机会找回刚刚访问的页面
- 维护两个链表
- 空闲也链表:页面内存块链表,直接用于读入页面
- 修改页链表:由已修改页面的内存块构成的链表
- 思想:当缺页时,按FIFO选取一个淘汰页,将他加入两个链表之一来代替对他的淘汰
- 如果此页没有被修改,则放入空闲链表末尾。如果被更改过则放再修改页链表末尾。
- 但是并不在内存中做物理移动,只是将页表中的表项链入上述两个链表之一
- 需要读入的页面,装入空闲页链表中的第一个内存块,使得该进程尽快启动,而不必等待淘汰页被置换出去
- 两个链表中的页面,如果再被放回外存之前再次被调用则回使他们重新回到驻留集中
- 与第二次机会置换主要是通过两个链表来积攒缓冲IO操作页面数,达到一定数目后一次性读写。
Linux
- 采用虚拟内存管理,使用交换和请求分页。
- 页面大小4kb
- 采用三级页表
分段技术
- 思想:段是一组逻辑信息的集合。每段都有自己的名字和长度,每段都从0开始编址,并采用一段连续的地址空间。
- 用户程序需要编译,编译程序自动为输入的程序构建各个段
- 整个进程的地址分为多个段,逻辑地址需要用段号s和段内地址d来表示
分段与分页
- 页的信息是物理单位;段时逻辑单位
- 页的大小由系统缺点。段的长度因段而异
- 分页的进程地址空间时一维的;分段的进程地址空间是二维的
- 分页系统很难实现过程和数据的分离;分段系统却可以很容易的实现这些功能
- 分页有内部碎片;分段有外部碎片
文件管理
文件目录相关概念
- 文件控制块:在文件系统内部,给每个文件唯一地设置一个文件控制块,包含文件名,类型,大小,属性,位置,使用技术,事件等信息。利用这种结构对文件管理,先找到文件控制块验证权限,合法再取得存放文件的盘块地址。
- 文件目里:将文件控制块集中一起管理,这种文件控制块的有序集合称为文件目录
- 目录文件:完全由目录项构成的文件称为目录文件
- 特别文件:Linux中把设备也看作文件,叫做特别文件,分为块特别文件(硬盘磁带等)和字符特别文件(IO设备,终端打印机等)
目录结构
- 单级目录:全部文件登记在一个目录中。设备目里就是单级目录
- 二级目录:为每个用户单独建立一个目录,各自管辖自己的下属文件
- 树形目录:从根目录开始一层一层扩展的树形结构
- 非循环图目录:允许一个文件或目录再多个父目录中占有项目,但不构成环路
空闲空间管理技术
空闲空间表法
- 思想
- 创建文件时,系统查找空闲空间表,找到大小相等的空闲块数则删除表中该项。找到大于的则把剩余块数记录进表
- 删除文件时,合并相邻盘块
- 优点:适合存放连续文件
- 缺点:易造成外部碎片,碎片很多时,检索效率低,紧缩会浪费时间
空间块链接法
- 思想
- 所有空闲块链接在一个队列,使用链表将空闲块链接。
- 分配:从链头取下一块,然后使空闲链头指向下一块。若需要n块重复n次。
- 回收:删除时把释放的盘块依次链入链头,使得空闲的链头指向最后释放的块
- 优点:易于实现,节省内存,只需要一个内存单元保留链头指针
- 缺点:效率低,因为每当增加移走都需要很多IO操作(解决:空闲块成组链接)
成组链接法
- 优点:兼具前两者的优点,克服了两种方法的缺点
- 缺点:管理复杂,尤其当盘块分配出现栈空和释放出现栈满需要特殊处理
位示图法
- 思想:使用一串二进制位反应磁盘空间分配情况,也称位向量法;每个盘对应一位,1空闲0已分配;
多重索引文件管理法
- 每个文件有一个索引表,由13个整数组成的数组。其中放有盘块号,包括10个直接块3个间接块。
- 由最初索引项得到某个盘块号,该块中存放的是另一组盘块号
- 后者每一块又存放下一组,系统可以间接几级,最末尾的盘块中存放的信息一定是文件内容
设备
- 设备独立性(与设备无关):用户程序与实际使用的物理设备无关,由操作系统考虑设备和驱动程序问题。
- 块设备/存储设备:组值处理及交换信息的基本单位是字符块。如磁盘磁带。每块有自己的地址,可以独立读写每一块。
- 字符设备/输入输出设备:处理信息的基本单位是字符,如键盘打印机等。不编址也无寻址操作。
设备分配技术-SPOOLing
例子:吧卡片机(一种独占设备)变成共享设备 SPOOLing与先把一台卡片机的一个作业的全部卡片写入磁盘。当进程视图读卡,由SPOOLing吧这个请求转为从磁盘上读入。用户作业可以一个接一个放再卡片机上,再送入磁盘,借助磁盘做中间缓冲吧独占设备变成共享设备。
- 输入井:虚拟低速输入设备,暂存从输入设备预输入的信息。
- 输出井:虚拟低俗输出设备,暂存要缓输出到输出设备的信息。
- 输入/输出缓冲区:用作输入/出设备和磁盘输入/出井之间的中转站。
- 输入进程:模拟脱机输入时的卫星输入机,将数据从输入设备经过输入缓冲区送到输入井。当CPU需要独取数据,直接从输入井提取数据到内存。
- 输出进程:模拟脱机输出的输出机,将要输出的数据送到输出井,当输出设备空闲,将井中数据通过缓冲区送到输出设备。
代价
- 占用大量内存作为缓冲区,所用表格也占用较大空间
- 占用大量磁盘空间作为输入输出井
- 增加系统复杂性
通道
为了使CPU脱离繁忙的IO事务,设置专门处理IO操作的机构,称为通道。
相当于一台小处理机,接收主机委托独立执行通道程序,对IO操控进行控制。
实现内存与外设之间的成批数据传输。
当主机委托的IO任务完成,发出中断信号请求CPU处理
磁盘调度
磁盘寻道-旋转延迟-数据传输
- 最短寻道优先:选择与当前磁头所在磁道距离最近的请求优先处理
- 扫描法:磁头从磁盘一端触发向另一端来回移动。遇到需要的磁道就进行服务。
- 循环扫描法:规定磁头移动式单向的。消除对两端磁道的不公平
- 电梯法:来回扫描但是只移动到最边缘有需求的磁道而不是走到最外层或最内层磁道
- 先来先服务法