ch6
链接:
静态链接:在程序运行前,用链接程序将目标模块链接成一个完整的装入模块
存储开销大,程序开发不便,程序运行快
动态链接:在程序运行时,链接各模块
节省空间,方便开发,程序运行慢
装入:
绝对装入:程序在内存中装入的位置固定
重定位装入(静态重定位):物理地址=逻辑地址+程序在内存中的起始地址
动态装入:进程执行时进行逻辑地址到物理地址的转换,进程执行过程中程序在内存中的位置可能改变
内存连续分配
单一连续分配:单用户,单任务的OS。整个内存只装入一个程序
固定分区分配:内存中每个分区大小,位置不变
动态分区分配:
首次适应算法FF:
循环首次适应算法
最佳适应算法
不连续的内存分配:分页存储管理
页大小的选择:
页太小,利于提高内存利用率。但会导致进程所需页多,页表过长,占用大量内存空间
页太大,页内碎片大,空间利用率降低。
快表TLB:存放最近使用过的页表项
120+120+20:访问TLB 20,访问页表120,访问页表项对应的内存地址120
二级页表:外层页表中的每个表项中记录了页表分页所在的物理块号
ch7
虚拟存储器:虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统
虚拟存储技术优点(为什么引入):
提高内存利用率,提高多道程序度,程序员不用担心内存容量对编程的限制
虚拟存储器的实现方式---请求分页系统
置换策略:固定分配局部置换;可变分配全局置换;可变分配局部置换 书P187
页分配算法:平均分配算法;按比例分配算法;考虑优先权的分配算法 书P187
页面调入策略
何时调入?
从何处调入?
外存分为文件区和对换区,后者速度更快
若对换区足够大,把整个程序都放到对换区最好。若对换区空间有限,对不会修改的页,可直接从文件区调入;可能被修改的部分,换出时写入对换区,在换入时,从对换区调入。
页置换算法
最佳置换算法:将未来最长时间内不再被访问的页换出。 缺点:无法实现
先进先出
最近最久未使用LRU
实现方法一:栈
实现方法二:时间计数器
为每个页表项增加一个时间字段,并为CPU增加一个逻辑时钟或计数器。每次访问内存某个页时,就将递增了的时钟寄存器的值赋给这个页对应的页表项的时间字段,每次置换时选择时间字段值最小的页作为换出页
LRU的近似算法 A=1已被访问 M=1已被修改
工作集:在某段时间间隔里,进程实际要访问的页的集合。要使缺页少发生,必须使程序的工作集全部在内存中。
抖动:多道程序度太高,使运行进程的大部分时间都用于进行页的置换,几乎不能完成任何有效的工作
抖动的预防:采用局部置换策略,CPU引入工作集算法,挂起若干进程
ch8
文件目录:目录通常包含有许多目录项,每个目录项对应一个文件
i节点,后面说
目录类型
单层目录:整个OS只有一个目录
两级目录:一个用户一个目录
树形目录:用户可以拥有多个目录
文件分配方式:
1、连续分配:
优点:易于实现,记录文件位置只需要第一个磁盘块的地址和所占磁盘块数量两个数字。性能好。
缺点:文件长度(大小)是不断变化的,无法预知应分配多少空间,造成磁盘碎片
2、链式分配:
每个块的第一个字用于指向下一块的指针,块的其它部分存放数据。在目录项中只需存放文件第一个数据块所在的磁盘地址,文件的其它块可以根据这个地址来查找。
优点:磁盘利用率高,方便管理 缺点:存取速度慢
3、使用索引的链接表分配
采用2的分配方式,在随机查找时(不从头开始访问某个文件)需要从头开始查链表,效率低。于是取出每个文件块所在磁盘块的地址信息,把它放在内存的表(FAT表)或索引中,这样的话,在随机查找时,只需查找内存中的链表,不需访问磁盘
文件按名访问的实现
逻辑地址:磁盘块号(一个磁盘块包含2^n个连续的扇区)
物理地址:柱面号,磁头号,扇区号
i节点
给每个文件赋予一张称为i节点的小型表,其中列出了文件属性和各数据块在磁盘上的地址,对于大文件,由于包含的磁盘块数很多,可以在i节点中存放间接地址
磁盘空间管理:
记录空闲块(位示图):
磁盘被划分成n块,用n位位图表示磁盘块使用情况,每一位代表一个盘块,比如用:位的值为0表示磁盘空闲,位的值为1表示磁盘已分配
ch9
设备分配时应考虑的若干因素:
设备固有属性:独占设备,共享设备,虚拟设备
设备分配算法:先来先服务,优先级
设备分配的安全性:安全分配,不安全分配
引入缓冲的意义:处理数据流的生产者消费者之间的速度差异;协调传输数据大小不一致的设备;保证应用程序IO的拷贝语义
设备的安全/不安全分配方式:进程在获得一种设备资源后:进程阻塞不能再请求其他资源,破除了请求和保持不会死锁,但CPU和IO串行,进程进展缓慢/进程可以再申请其他设备资源除非某设备被其他设备占用才阻塞,进程推进快,但可能死锁。
设备独立性:应用程序独立于具体使用的物理设备
好处:改变外围设备不需要修改应用程序;易于处理IO设备故障
逻辑设备表:为了实现设备的独立性,系统必须能够将应用程序中所使用的逻辑设备名映射为物理设备名。可以使用逻辑设备表实现该映射功能。
SPOOLing技术:
特点:①提高I/O速度 ②将独占设备改造为共享设备 ③实现了虚拟设备功能
磁盘调度算法 (有无饥饿,磁头黏着);磁头移动距离的计算
先来先服务FCFS:公平简单,平均寻道时间长
最短寻道时间优先SSTF:有饥饿,黏着
扫描算法SCAN:最短寻道的同时磁头移动方向不能变,直到该方向没有磁道需要访问才变向,有黏着
循环扫描CSCAN:规定磁头只能单方向读取(如从内向外),有黏着
N步SCAN(NstepSCAN):将磁盘请求分为若干长度为N的队列,队列内SCAN,队列外FCFS,新进请求不能加入当前正在处理的队列。N=1时退化为FCFS
FSCAN:N步SCAN,N=2的情况