存储器:
高级存储器容量一般较小,而低级存储器容量较大。
寄存器:
中央处理器的一部分,是有限存贮容量的高速存贮部件,可用来暂存指令、数据和地址。是CPU必须的
是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。
Cache缓存:
为了弥补CPU与内存之间运算速度的差异而设置的的部件,并不是每个CPU都有(明显例子是奔腾和部分赛扬间差异)
高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。
1.直接映像:Cache中只能存放0--n块且每块只有一个(不可能存在两个块0),如果1区0块存进Cache中的0块了,那么其他区的0块就没办法往Cache中存入了。所以已知块号就能确定区号!固只需要比较区号是否相等即可!
优点:地址映象方式简单,数据访问时,只需检查区号是否相等即可,因而可以得到比较快的访问速度,硬件设备简单。
缺点:替换操作频繁,命中率比较低。
这种方式的块冲突概率较高,当称序往返访问两个相互冲突的块中的数据时,Cache的命中率将急剧下降,因为这时即使Cache中有其他空闲块,也因为固定的地址映像关系而无法应用。
2.全相连映像:主存与Cahce存储器均分成容量相同的块。允许主存中的任意一块可以调入Cache存储器中的任何一块空间中。
优点:命中率比较高,Cache存储空间利用率高。
缺点:访问相关存储器时,每次都要与全部内容比较,速度低,成本高,因而应用少。
这种方式只有当Cache中的块全部装满后才会出现块冲突,所以块冲突的概率低,可达到很高的Cache命中率;但实现很复杂。
3.组相联映像:是前面两种方式的折中,即将Cache中的块再分成组。规定组采用直接映像方式而块采用全相联方式。通过直接映像方式来决定组号,在组内再用全相联映像方式来决定Cache中的块号。
优点:块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低。
缺点:实现难度和造价要比直接映象方式高。
判断块命中及替换算法上都要比全相联方式简单,块冲突的概率比直接映像的低,其命中率也介于直接映像和全相联映像方式之间。
存储器按访问方式可以分为按地址访问的存储器和按内容访问的存储器。
按寻址方式分类可分文随机存储器、顺序存储器和直接存储器。
随机存储器指可对任何存储单元存入或读取数据,访问任何一个存储单元所需时间相同。
顺序存储器指访问数据所需要的时间与数据所在存储器位置相关,磁带是顺序存储器。
直接存储器是介于随机存储和顺序存储之间的一种方式。磁盘是一种直接存储器。
相联存储器是一种按内容访问的存储器。就是把数据或者数据的某一部分作为关键字,将该关键字与存储器中的
每一个单元进行比较,从而找出存储器中所有与关键字相同的数据。
直接内存存取(DMA)是一种cpu在开始和结束做少量处理,而无需干预数据传送的过程方式。DMA输入设备与存储器直接 相联。
I/o接口编址方法有两种:一是与内存单元统一编址,二是单独编址。
内存单元统一编址:是将I/O接口有关的寄存器或者存储部件看成是存储器单元,与主存中的存储单元统一编址。
这样内存地址和接口地址统一在一个公共的地址空间中,对I/o接口的访问就如同对内存单元的访问一样,可以用访问内存单元的指令访问I/O接口。
I/O接口单独编址是通过设置单独的I/O地址空间,为接口中的有关寄存器或存储部件分配地址码,需要设置专门的I/O指令访问。
这种编址方式优点是不占用主存的地址空间,访问主存的指令和访问接口的指令不同,在程序中容易使用和辨认。
windows系统通过建立的文件关联来决定使用什么程序打开该文件。
路径名是指操作系统查找文件所经过的目录名以及目录名之间的分隔符构成的。
操作系统的全文件名是指路径名+文件名
系统字长为32,可以记录32个物理块的使用情况,0-31号物理块的使用情况在位示图的第一个字中描述,
32-63号物理块在位示图的第二个字描述。。。。,4095号在位示图中用第128个字描述,那么4096在129个字中描述。
若磁盘容量为200GB,物理块 大小为1MB,那么该磁盘就有200X1024个物理块,位示图的大小为200X1024/32=6400个字。
首先看一下“基本的存储分配方式”种类:
1. 离散分配方式的出现
由于连续分配方式会形成许多内存碎片,虽可通过“紧凑”功能将碎片合并,但会付出很大开销。于是出现离散分配方式:将一个进程直接分散地装入到许多不相邻的内存分区中。
下面主要介绍“离散分配”三种方式的基本原理以及步骤:
2. 基本分页存储
2.1. 步骤
³ 逻辑空间等分为页;并从0开始编号
³ 内存空间等分为块,与页面大小相同;从0开始编号
分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。
2.2. 地址结构
分两部分:页号、位移量(业内地址)
业内地址的位数可以决定页的大小(如上图每页大小为4K)。
逻辑地址=页号&位移量(&号是连接符号,是将页号作为逻辑地址的最高位)
2.3. 地址映射(逻辑地址--->物理地址)
如下图所示:(物理地址=块号&块内地址)
因为块的大小=页的大小,所以块内位移量=页内位移量,所以只需求出块号即可:
如何求块号呢?页表来帮你
页表:
给定一个逻辑地址和页面大小,如何计算物理地址?
1) 根据页面大小可计算出页内地址的位数
2) 页内地址位数结合逻辑地址计算出页内地址(即,块内地址)和页号
3) 页号结合页表,即可得出块号
4) 块号&块内地址即可得出物理地址
2.4. 地址变换原理及步骤
请看上图,给出逻辑地址的页号和页内地址,开始进行地址变换:
1) 在被调进程的PCB中取出页表始址和页表大小,装入页表寄存器
2) 页号与页表寄存器的页表长度比较,若页号大于等于页表长度,发生地址越界中断,停止调用,否则继续
3) 由页号结合页表始址求出块号
4) 块号&页内地址,即得物理地址
以上即为页式存储的原理及整个过程……
3. 基本分段存储
3.1. 步骤
³ 逻辑空间分为若干个段,每个段定义了一组有完整逻辑意义的信息(如主程序Main()),如:
内存空间为每个段分配一个连续的分区
段的长度由相应的逻辑信息组的长度决定,因而各段长度不等,引入分段存储管理方式的目的主要是为了满足用户(程序员)在编程和使用上多方面的要求。
要注重理解,完整的逻辑意义信息,就是说将程序分页时,页的大小是固定的,只根据页面大小大小死生生的将程序切割开;而分段时比较灵活,只有一段程序有了完整的意义才将这一段切割开。(例如将一个人每隔50厘米切割一段,即为分页;而将一个人分割为头部、身体、腿部(有完整逻辑意义)三段,即为分段)
3.2. 地址结构
分两部分:段号、位移量(段内地址)
³ 段内地址的位数可以决定段的大小
³ 逻辑地址=段号&段内地址(&号是连接符号,是将段号作为逻辑地址的最高位)
3.3. 地址映射(逻辑地址--->物理地址)
如下图所示:(物理地址=基址+段内地址)(注意为+号,而不是&号)
由上图可知若想求物理地址,只需求出基址即可:
如何求基址呢?段表来帮你
段表:
求基址的过程与页式存储中求块号的过程原理相同,这里需要注意的是,物理地址是基址+段内地址,而不是基址&段内地址,由逻辑地址得到段号、段内地址,再根据段号和段表求出基址,再由基址+段内地址即可得物理地址。
3.4. 地址变换原理及步骤
请看上图,给出逻辑地址的段号和段内地址,开始进行地址变换:
1) 在被调进程的PCB中取出段表始址和段表长度,装入控制寄存器
2) 段号与控制寄存器的页表长度比较,若页号大于等于段表长度,发生地址越界中断,停止调用,否则继续
3) 由段号结合段表始址求出基址
4) 基址+段内地址,即得物理地址
以上即为段式存储的原理及整个过程……
分页和分段的主要区别:
4. 基本段页式存储
4.1. 步骤
³ 用户程序先分段,每个段内部再分页(内部原理同基本的分页、分段相同)
4.2. 地址结构
分三部分:段号、段内页号、页内地址
4.3. 地址映射(逻辑地址--->物理地址)
³ 逻辑地址----- >段号、段内页号、业内地址
³ 段表寄存器--- >段表始址
³ 段号+段表始址---- >页表始址
³ 页表始址+段内页号----->存储块号
³ 块号+页内地址------>物理地址
4.4. 地址变换原理及步骤
请看上图,给出逻辑地址的段号、页号、页内地址,开始进行地址变换:
1) 在被调进程的PCB中取出段表始址和段表长度,装入段表寄存器
2) 段号与控制寄存器的页表长度比较,若页号大于等于段表长度,发生地址越界中断,停止调用,否则继续
3) 由段号结合段表始址求出页表始址和页表大小
4) 页号与段表的页表大小比较,若页号大于等于页表大小,发生地址越界中断,停止调用,否则继续
5) 由页表始址结合段内页号求出存储块号
6) 存储块号&页内地址,即得物理地址
以上即为段页式存储的原理及整个过程……
5. 总结
在页式、段式存储管理中,为获得一条指令或数据,须两次访问内存;而段页式则须三次访问内存