操作系统部分:
关键词:硬盘和内存的管理机制;1、重定位 2、固定分区存储管理 3、可变分区存储管理 4、页式存储管理 5、段式存储管理 6、虚拟存储器 7,缺页中断及处理算法
1, 重定位技术是指物理地址和虚拟地址的交换过程,物理地址又称绝对地址(主存储器以字节为编址单位,容量为n的主存储器中,每个单元有唯一的编号,从0到n-1,这个唯一的编号就是主存储器的 物理地址 )
逻辑地址是指在程序设计过程中操作系统给每个用户进行程序地址分配的时候都允许程序的地址(包含数据及程序段)从0开始的进行连续性的分配地址的方式。也就是说每段程序在开始时候都是从0开始,并不需要知道全局的总共地址的大小。
重定位是指由逻辑地址向物理地址的转换,即利用逻辑地址根据一定的关系将逻辑地址的指向在物理地址中找到位置。为了保证作业的正确执行,必须根据分配给作业的主存区域对作业中指令和数据的存放进行重定位,这种 把逻辑地址转换成绝对地址 的工作称为“ 重定位 ”或“地址转换”。重定位的方式有“ 静态重定位 ”和“ 动态重定位 ”两种。
静态重定位是指就是在所有的地址基础上都增加或减少同样的地址值,确定所分配的位置的值,获取到所有地址的位置。
动态重定位就是指在要求分配的基础上增加不同的地址值,使得要求分配的地址空间并不连续。
总而言之:
(1)静态重定位
在装入一个作业时,把作业中的指令地址和数据地址全部转换成绝对地址。这种转换工作是在 作业开始前集中完成 的,在作业执行过程中无需再进行地址转换。所以称为“静态重定位”。
(2)动态重定位
在装入一个作业时,不进行地址转换,而是直接把作业装到分配的主区域中。在作业执行过程中,每当执行一条指令时都由硬件的地址转换机构转换成绝对地址。这种方式的地址转换是在 作业执行时动态完成 的,所以称为动态重定位。
动态重定位由软件(操作系统)和硬件(地址转换机构)相互配合来实现。动态重定位的系统支持“程序浮动”,而静态重定位则不能。
常见计算:假设页长为1KB(1024字节),逻辑地址为2500,请利用页表把逻辑地址转换成物理地址。
答: 页表的作用是实现从页号到物理块号的地址映射。以逻辑地址的页号检索页表,得到该页的物理块号;同时将页内地址d直接送入物理地址寄存器的块内地址字段中。这样物理块号和块内地址拼接成了实际访问内存的地址,从而完成了从逻辑地址到物理地址的转换。
所以物理地址的计算公式为:
物理地址=块的大小(即页的大小L)′块号f+页内地址d
解本题中,为了描述方便,设页号为p,页内位移为d,则:
p=int(2500/1024)=2 d=2500mod1024=452 假设页号2 对应 块号 1
那么物理地址=1024*1+452=1476
http://blog.csdn.net/leves1989/article/details/3305420
基本计算思想是:利用所给的逻辑地址首先找到在页表中的那一页,即页号,再者利用所给的逻辑地址计算出在页表的页偏移量,从而利用页表所对应的物理块计算出块号,再利用块号的基础上计算出所给的偏移量。(一般只针对于动态重定位的变化使用)。
2, 固定和可变分区存储管理
固定分区存储管理是指利用固定大小的存储量对内存进行大小分配,利用大小的一致性实现的
可变分区管理存储是指利用分区算法实现的大小不一致的分区,有可能实现的分区大小为2K,4k,8k等。
可变就是指分区的 大小和位置不是固定 的,而是根据作业要求的主存量来分配分区的大小。
1、主存的分配和去配(回收)
在系统初始化时,主存除了操作系统所占部分外,整个用户区是一个大的空闲区,可以按作业需要的空间大小顺序分配空闲区直到不够时为止。
当作业结束时,它的占用分区被收回。这个空闲区又可以根据新作业的大小重新用于分配,所以主存中的已占分区和空闲区的数目和大小都是在变化的。可以用两张表“已分配区表”和“空闲区表”来记录和管理。
2、常用的分配算法
最先适应分配算法 :简单地说,就是在分区表中顺序查找,找到够大的空闲区就分配。但是这样的分配算法可能形成许多不连续的空闲区,造成许多“碎片”,使主存空间利用率降低。
最优适应分配算法 :这种算法总是挑选一个能满足作业要求的最小空闲区。但是这种算法可能形成一些极小的空闲区,以致无法使用,这也会影响主存利用率。
最坏适应分配算法 :这种算法和上面的正好相反,它总是挑一个最大的空闲区分给作业使用,使剩下的空间不至于太小。
3、地址转换与存储保护
采用 可变分区方式管理 时,一般均采用 动态重定位 方式装入作业。也就是每读一条指令,都要变换一次地址。变换要靠硬件支持,主要是 两个寄存器 : 基址 寄存器和 限长 寄存器,限长寄存器存放作业所占分区的长度,基址寄存器则存放作业所占分区的起始地址,这两个值确定了一个分区的位置和大小。
转换时根据逻辑地址与限长值比较,如果不有超过这个值,表示访问地址合法,再加上基址寄存器中的值就得到了绝对地址了,否则形成“地址越界”中断。达到存储保护的目的。
对于共享程序,则硬件提供两组限长寄存器和基址寄存器。访问时对访问区享区和作业区的地址分别进行转换。
4、移动技术的应用
移动技术 要“移动”的东东就是主存空间中的作业。把某个作业移到另一处主存空间去(在磁盘整理中我们应用的也是类似的移动技术),这样的最大好处就是可以合并一些空闲区。
但是移动技术的应用也要注意以下问题。
移动会增加系统开销。所以要尽量减少移动。
移动是有条件的,如果作业在执行过程中正等待与外围设备传输信息,就不能移动。因此在移动时首先要判定该作业是否与外设交换信息。
3, 基本分页存储管理机制
分页存储主要实现的是页管理机制,利用页表来查询地址的方式。其中有页号和块号再者映射到内存的方式。
1、如何分页和分块
页式存储管理中有两个名词:“ 页 ”和“ 块 ”,其中的“块”是针对硬件来说的,就是把存储器分成若干相等大小的区,每个区就称为一个块。对应的,在程序中,逻辑地址进行“分页”,其大小和每个块相一致。
事实上,页面的大小是由块的大小自然决定的。对于程序来说,其逻辑地址还是和原来一样采用连续的地址。只是 按照块的位数取其前面数位做为页号 .
分配空间时,根据作业长度可以确定它的页面数,根据这个页面数在主存中分配相应的块数,只要是空闲块就可以放入,即使不是相邻的。并把分配情况记在“页表”中,根据页表可以找到相对应的页号与块号,就得出绝对地址了。
2、采用页式管理,使主存空间充分利用,页不必为了得到连续空间而进行移动。 可以提高系统效率。
3、页表的构造与作用
每个被装入主存的作业都有一张 页表 ,指出该作业逻辑地址中的页号与所占用的主存块号之间的对应关系。页表的长度由作页拥有的页面数决定,行号对应为页号,行中记录的是主存中的块号。
页表是硬件进行地址转换的依据,每执行一条指令时按逻辑地址中的页号查找页表并转换成绝对地址。
在多道程序设计系统中,进入主存的每个作业都有一张页表,由一个硬件“页表控制寄存器”来记录每个作业的页表所在位置和长度以便作业转换时同时转换页表。
4、快表的构造与作用
块表就是页表的一部分克隆,每行中有页号及其对应的块号,整个快表存放在一个小容量的高速缓存中,访问时快表和内存同时进行查找,因为快表速度很快,而常用的页都登记在快表中,因此可以大大加快执行速度。
5、采用页式管理的地址转换过程
(为什么不直接用块分配表来记录而要用位示图呢,因为主存块很多,这样可以节省空间,提高效率。位示图就是用一个位(0或1)来表示一个块的使用状态,一个字32位,可以表示32块。按顺序排列,只需一小段内存就可以记录主存中大量的块状态)
6、利用位示图实现页式存储空间的分配和回收
页式存储管理把主存空间分成大小固定的许多块,在装业作业时,如何知道主存中哪些块已使用,哪些还未用,可以用位示图来表示。
块号=字号×字长+位号
字号=[i/字长](即块号i除以字长取整)
位号=i mod 字长(即块号i除以字长取余)。
4, 段式存储管理(领会)
段式存储是实现在基址的基础之上。
1、段式存储中段的划分
段式管理 是根据人们对 程序 中需要 分段编制 的要求出发而提供的。它提供给用户编程时使用的逻辑地址由“段号”和“段内地址”两部分组成,其形式和页式管理相同。但是实际上是不同的:
页式存储管理提供连续逻辑地址由系统自动分页,段式存储管理中的作业分段是由用户决定的,每段独立编程,因此段间的逻辑地址是不连续的。
2、段式存储空间的分配
这种分配方法和可变分区管理方式的分配方法相同,所不同的是:
可变分区管理方式中是为每个作业分一个区,而段式管理是为一个作业中的每个段分一个连续的空间。(段式管理更细)。
3、段表的构造与作用
段表 由 段号 、 本段限长 和 起始地址 三部分组成,由于每一行记录的行号可以对应程序的段号,因此段号实际上被省略,不占存储空间。
与其他管理方式一样,段表记录的信息用于地址转换和存储保护。段表的表目起到了基址/限长寄存器的作用。
4、段式存储管理的地址转换
这个转换过程如同可变分区方式的地址转换,但是由段表的表目替代了基址/限长寄存器。
绝对地址=根据段号找到段表中的起始地址+段内地址 (如果段内地址超过限长则产生“地址越界”程序性中断事件达到存储保护)
多道程序设计系统中,每个进入主存的作业都建立了段表,因此还有一个硬件“段表控制寄存器”来记录每个作业的段表在主存中的位置和长度。
分页和分段的区别:
1、页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。 段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。 2、页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。 段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。 3、分页的作业地址空间是维一的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。
5,虚拟存储器(领会)
虚拟存储是实现大作业的做好实现方法,
1、什么是虚拟存储器
虚拟存储器 是为“扩大”主存容量而采用的一种设计技巧,它利用作业在只装入部分信息时就可以执行的特性和程序执行中表现出来的局部性特性,借助于大容量的辅助存储器实现小主存空间容纳大逻辑地址空间的作业。
虚拟存储器的容量 由计算机的 地址结构(总线位数) 决定。
2、虚拟存储器的实现原理
它的工作原理如下:首先把作业信息保留在磁盘上,当作业请求装入时,只将其中一部分先装入主存,作业执行中若要访问的信息不在主存中,则再设法将这些信息装入主存。
3、分页式虚拟存储器的实现
页式虚拟存储管理 是在 页式存储管理 的基础上实现的。首先把作业信息作为副本存放在磁盘上,作业执行时,把作业信息的部分页面装入主存储器,作业执行时若所访问的页面已经在主存中,则进行地址转换,得到绝对地址,否则产生“缺页中断”由操作系统把当前所需的页面装入主存。
4、常用的页面调度算法:FIFO、LRU、LFU
当主页中无空闲块时,为了装入一个页面,就必须按某种算法将主存中某个页调出,调入所需装入的页面。这就是页面调度。常用的算法有:先进先出调度算法( FIFO )、最近最少使用调度算法( LRU )和最近最不常用调度算法( LFU )。
特别要注意掌握的就是 LRU的算法 ,如何进行调度。
5、缺页中断率
如果作页执行中访问页面的总次数为A,其中有F次访问的页面尚未装入主存,则有F次缺页中断,f=F/A,这里的f就称为缺页中断率。影响缺页中断的因素有:
分配给作业的主存块数——块数n↑ f↓
页面的大小——页面大小↑ f↓
程序编制方法——局部化程度↑ f↓
页面调度算法
6、段式虚拟存储器的实现
段式虚拟存储管理 以 段式存储管理 为基础,在磁盘上保留作业的各个分段信息,作业执行时把需要执行的一段或几段装入主存。在实际使用中,也要进行查表和地址转换以及“缺段中断” 和调度(包括调出、装入、移动等)工作。
缺页中断的发生和产生机理:
缺页中断产生原因:由于要访问的页不在内存(主存)中,需要操作系统将其调用到主存后再去访问实现
缺页中断的处理机制;有先进先出页面和最佳置换算法
先介绍先进先出算法机理:例如:设虚拟存储系统中,若进程在内存占3块(开始时为空),采用先进先出页面淘汰算法,当执行访问页号序列为1、2、3、4、1、2、5、1、2、3、4、5、6时将产生多少次缺页中断?
答:10次 先是3次缺页中断,换进了1,2,3 4次,换出1,换进4,内存:2,3,4 5次,换出2,换进1,内存:3,4,1 6次,换出3,换进2, 4,1,2 7次,换出4,换进5, 1,2,5 访问1 满足 访问2 满足 8次,换出1,换进3, 2,5,3 9次,换出2,换进3, 5,3,4 10次,换出5,换进6, 3,4,6