当前位置:首页 » 服务存储 » 存储器边界
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

存储器边界

发布时间: 2023-08-03 15:51:34

A. 为使4字节组成的字能从存储器中一次读出,要求存放在存储器中的字边界对齐,一个字的地址码应是什么

边界对齐法:假设数据字长32位,存储字长(一个存储周期最多能够从主存读写的数据位数)64位。双子数据的起始地址的最末三个二进制位必须是000,单字数据的起始地址的最末两位必须为00,半字数据的起始地址的最末位必须为0。这种存储方式能保证无论访问双字、单字、半字或字节,都能在一个存储周期完成。

答案:最低两位为00

B. 在存储器中指令和数据在形式上有什么区别吗

变量可以存储在存储器中的不同位置,这取决于它们的存活。在外部函数中定义的变量(全局变量或静态外部变量)和函数内部静态变量的定义,它的生存正在运行的整个过程中,这些变量存储在,数据段,数据段(datasegment)留在存储器中的一些固定大小的空间,它分为两部分这些变量的,其中的一部分被用来初始化一个变量来存储其他部分被用来存储一个未初始化的变量。开始,当程序退出块,直到
当函数中定义的自动变量从程序(不使用定义的关键字static变量)的生存开始在一个代码块执行它。只存在于调用函数的周期函数的参数作为变量。这些变量被存储在所述的栈(stack)。堆栈的存储器空间的一部分,启动小,然后,直到它到达一个预定义的边界逐渐自动增加。在DOS下,如没有虚拟内存(virtualmemory)系统,此限制是由系统决定的,通常是非常大的,所以程序员不必担心堆栈空间的枯竭。

C. 存储器是怎么存储东西的 到现在都不明白存储器是怎么存储的 现在都不知道为什么

硬盘是现在计算机上最常用的存储器之一。我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力。而这些数据都以文件的形式存储在硬盘里。不过,计算机可不像人那么聪明。在读取相应的文件时,你必须要给出相应的规则。这就是分区概念。分区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即Master Boot Record,一般简称为MBR)和引导记录备份的存放位置。而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过以后的高级格式化,即Format命令来实现。

面、磁道和扇区

硬盘分区后,将会被划分为面(Side)、磁道(Track)和扇区(Sector)。需要注意的是,这些只是个虚拟的概念,并不是真正在硬盘上划轨道。先从面说起,硬盘一般是由一片或几片圆形薄膜叠加而成。我们所说,每个圆形薄膜都有两个“面”,这两个面都是用来存储数据的。按照面的多少,依次称为0面、1面、2面……由于每个面都专有一个读写磁头,也常用0头(head)、1头……称之。按照硬盘容量和规格的不同,硬盘面数(或头数)也不一定相同,少的只有2面,多的可达数十面。各面上磁道号相同的磁道合起来,称为一个柱面(Cylinder)(如图1)。(图)

上面我们提到了磁道的概念。那么究竟何为磁道呢?由于磁盘是旋转的,则连续写入的数据是排列在一个圆周上的。我们称这样的圆周为一个磁道。(如图2)如果读写磁头沿着圆形薄膜的半径方向移动一段距离,以后写入的数据又排列在另外一个磁道上。根据硬盘规格的不同,磁道数可以从几百到数千不等;一个磁道上可以容纳数KB的数据,而主机读写时往往并不需要一次读写那么多,于是,磁道又被划分成若干段,每段称为一个扇区。一个扇区一般存放512字节的数据。扇区也需要编号,同一磁道中的扇区,分别称为1扇区,2扇区……

计算机对硬盘的读写,处于效率的考虑,是以扇区为基本单位的。即使计算机只需要硬盘上存储的某个字节,也必须一次把这个字节所在的扇区中的512字节全部读入内存,再使用所需的那个字节。不过,在上文中我们也提到,硬盘上面、磁道、扇区的划分表面上是看不到任何痕迹的,虽然磁头可以根据某个磁道的应有半径来对准这个磁道,但怎样才能在首尾相连的一圈扇区中找出所需要的某一扇区呢?原来,每个扇区并不仅仅由512个字节组成的,在这些由计算机存取的数据的前、后两端,都另有一些特定的数据,这些数据构成了扇区的界限标志,标志中含有扇区的编号和其他信息。计算机就凭借着这些标志来识别扇区

硬盘的数据结构

在上文中,我们谈了数据在硬盘中的存储的一般原理。为了能更深入地了解硬盘,我们还必须对硬盘的数据结构有个简单的了解。硬盘上的数据按照其不同的特点和作用大致可分为5部分:MBR区、DBR区、FAT区、DIR区和DATA区。我们来分别介绍一下:

1.MBR区

MBR(Main Boot Record 主引导记录区)�位于整个硬盘的0磁道0柱面1扇区。不过,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外的64个字节交给了DPT(Disk Partition Table硬盘分区表)(见表),最后两个字节“55,AA”是分区的结束标志。这个整体构成了硬盘的主引导扇区。(图)

主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,并将控制权交给启动程序。MBR是由分区程序(如Fdisk.exe)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而实现多系统共存。

下面,我们以一个实例让大家更直观地来了解主引导记录:

例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00

在这里我们可以看到,最前面的“80”是一个分区的激活标志,表示系统可引导;“01 01 00”表示分区开始的磁头号为01,开始的扇区号为01,开始的柱面号为00;“0B”表示分区的系统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS);“FE BF FC”表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;“3F 00 00 00”表示首扇区的相对扇区号为63;“7E 86 BB 00”表示总扇区数为12289622。

2.DBR区

DBR(Dos Boot Record)是操作系统引导记录区的意思。它通常位于硬盘的0磁道1柱面1扇区,是操作系统可以直接访问的第一个扇区,它包括一个引导程序和一个被称为BPB(Bios Parameter Block)的本分区参数记录表。引导程序的主要任务是当MBR将系统控制权交给它时,判断本分区跟目录前两个文件是不是操作系统的引导文件(以DOS为例,即是Io.sys和Msdos.sys)。如果确定存在,就把它读入内存,并把控制权 交给该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数,分配单元的大小等重要参数。DBR是由高级格式化程序(即Format.com等程序)所产生的。

3.FAT区

在DBR之后的是我们比较熟悉的FAT(File Allocation Table文件分配表)区。在解释文件分配表的概念之前,我们先来谈谈簇(Cluster)的概念。文件占用磁盘空间时,基本单位不是字节而是簇。一般情况下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64……

同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。由于硬盘上保存着段与段之间的连接信息(即FAT),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。

为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号。对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,表中有很多表项,每项记录一个簇的信息。由于FAT对于文件管理的重要性,所以FAT有一个备份,即在原FAT的后面再建一个同样的FAT。初形成的FAT中所有项都标明为“未占用”,但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为“坏簇”,以后存文件时就不会再使用这个簇了。FAT的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号。FAT的格式有多种,最为常见的是FAT16和FAT32。

4.DIR区

DIR(Directory)是根目录区,紧接着第二FAT表(即备份的FAT表)之后,记录着根目录下每个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在硬盘中的具体位置和大小了。

5.数据(DATA)区

数据区是真正意义上的数据存储的地方,位于DIR区之后,占据硬盘上的大部分数据空间。

磁盘的文件系统
经常听高手们说到FAT16、FAT32、NTFS等名词,朋友们可能隐约知道这是文件系统的意思。可是,究竟这么多文件系统分别代表什么含义呢?今天,我们就一起来学习学习:

1.什么是文件系统?
所谓文件系统,它是操作系统中借以组织、存储和命名文件的结构。磁盘或分区和它所包括的文件系统的不同是很重要的,大部分应用程序都基于文件系统进行操作,在不同种文件系统上是不能工作的。

2.文件系统大家族
常用的文件系统有很多,MS-DOS和Windows 3.x使用FAT16文件系统,默认情况下Windows 98也使用FAT16,Windows 98和Me可以同时支持FAT16、FAT32两种文件系统,Windows NT则支持FAT16、NTFS两种文件系统,Windows 2000可以支持FAT16、FAT32、NTFS三种文件系统,Linux则可以支持多种文件系统,如FAT16、FAT32、NTFS、Minix、ext、ext2、xiafs、HPFS、VFAT等,不过Linux一般都使用ext2文件系统。下面,笔者就简要介绍这些文件系统的有关情况:

(1)FAT16
FAT的全称是“File Allocation Table(文件分配表系统)”,最早于1982年开始应用于MS-DOS中。FAT文件系统主要的优点就是它可以允许多种操作系统访问,如MS-DOS、Windows 3.x、Windows 9x、Windows NT和OS/2等。这一文件系统在使用时遵循8.3命名规则(即文件名最多为8个字符,扩展名为3个字符)。

(2)VFAT
VFAT是“扩展文件分配表系统”的意思,主要应用于在Windows 95中。它对FAT16文件系统进行扩展,并提供支持长文件名,文件名可长达255个字符,VFAT仍保留有扩展名,而且支持文件日期和时间属性,为每个文件保留了文件创建日期/时间、文件最近被修改的日期/时间和文件最近被打开的日期/时间这三个日期/时间。

(3)FAT32
FAT32主要应用于Windows 98系统,它可以增强磁盘性能并增加可用磁盘空间。因为与FAT16相比,它的一个簇的大小要比FAT16小很多,所以可以节省磁盘空间。而且它支持2G以上的分区大小。朋友们从附表中可以看出FAT16与FAT32的一不同。

(4)HPFS
高性能文件系统。OS/2的高性能文件系统(HPFS)主要克服了FAT文件系统不适合于高档操作系统这一缺点,HPFS支持长文件名,比FAT文件系统有更强的纠错能力。Windows NT也支持HPFS,使得从OS/2到Windows NT的过渡更为容易。HPFS和NTFS有包括长文件名在内的许多相同特性,但使用可靠性较差。

(5)NTFS
NTFS是专用于Windows NT/2000操作系统的高级文件系统,它支持文件系统故障恢复,尤其是大存储媒体、长文件名。NTFS的主要弱点是它只能被Windows NT/2000所识别,虽然它可以读取FAT文件系统和HPFS文件系统的文件,但其文件却不能被FAT文件系统和HPFS文件系统所存取,因此兼容性方面比较成问题。

ext2
这是Linux中使用最多的一种文件系统,因为它是专门为Linux设计,拥有最快的速度和最小的CPU占用率。ext2既可以用于标准的块设备(如硬盘),也被应用在软盘等移动存储设备上。现在已经有新一代的Linux文件系统如SGI公司的XFS、ReiserFS、ext3文件系统等出现。

小结:虽然上面笔者介绍了6种文件系统,但占统治地位的却是FAT16/32、NTFS等少数几种,使用最多的当然就是FAT32啦。只要在“我的电脑”中右击某个驱动器的属性,就可以在“常规”选项中(图)看到所使用的文件系统。

明明白白识别硬盘编号
目前,电子市场上硬盘品牌最让大家熟悉的无非是IBM、昆腾(Quantum)、希捷(Seagate),迈拓(Maxtor)等“老字号”。而这些硬盘型号的编号则各不相同,令人眼花缭乱。其实,这些编号均有一定的规律,表示一些特定?的含义。一般来说,我们可以从其编号来了解硬盘的性能指标,包括接口?类型、转速、容量等。作为DIY朋友来说,只有自己真正掌握正确识别硬盘编号,在选购硬盘时,就方便得多(以致不被“黑”),至少不会被卖的人说啥是啥。以下举例说明,供朋友们参考。

一、IBM
IBM是硬盘业的巨头,其产品几乎涵盖了所有硬盘领域。而且IBM还是去年硬盘容量、价格战的始作蛹者。我们今天能够用得上经济上既便宜,而且容量又大的硬盘可都得感谢IBM。
IBM的每一个产品又分为多个系列,它的命名方式为:产品名+系列代号+接口类型+盘片尺寸+转速+容量。以Deskstar 22GXP的13.5GB硬盘为例,该硬盘的型号为:DJNA-371350,字母D代表Deskstar产品,JN代表Deskstar25GP与22GP系列,A代表ATA接口,3代表3寸盘片,7是7200转产品,最后四位数字为硬盘容量13.5GB。IBM系列代号(IDE)含义如下:
TT=Deskstar 16GP或14GXP JN=Deskstar 25GP或22GXP RV=Ultrastar 18LZX或36ZX
接口类型含义如下:A=ATA
S与U=Ultra SCSI、Ultra SCSI Wide、Ultra SCSI SCA、增强型SCSI、
增强扩展型SCSI(SCA)
C=Serial Storage Architecture连续存储体系SCSI L=光纤通道SCSI

二、MAXTOR(迈拓)
MAXTOR是韩国现代电子美国公司的一个独立子公司,以前该公司的产品也覆盖了IDE与SCSI两个方面,但由于SCSI方面的产品缺乏竟争力而最终放弃了这个高端市场从而主攻IDE硬盘,所以MAXTOR公司应该是如今硬盘厂商中最专一的了。
MAXTOR硬盘编号规则如下:首位+容量+接口类型+磁头数,MAXTOR?从钻石四代开始,其首位数字就为9,一直延续到现在,所以大家如今能在电子市场上见到的MAXTOR硬盘首位基本上都为9。另外比较特殊的是MAXTOR编号中有磁头数这一概念,因为MAXTOR硬盘是大打单碟容量的发起人,所以其硬盘的型号中要将单碟容量从磁头数中体现出来。单碟容量=2*硬盘总容量/磁头数。
现以金钻三代(DiamondMax Plus6800)10.2GB的硬盘为例说明:该硬盘?型号为91024U3,9是首位,1024是容量,U是接口类型UDMA66,3代表该硬盘有3个磁头,也就是说其中的一个盘片是单面有数据。这个单碟容量就为2*10.2/3=6.8GB。MAXTOR硬盘接口类型字母含义如:
A=PIO模式 D=UDMA33模式 U=UDMA66模式

三、SEAGATE(希捷)
希捷科技公司(Seagate Technology)是世界上最大的磁盘驱动器、磁?盘和读写磁头生产厂家,该公司是一直是IBM、COMPAQ、SONY等业界大户的硬盘供应商。希捷还保持着业界第一款10000转硬盘的记录(積架Cheetah系列SCSI)与最大容量(積架三代73GB)的记录,公司的实力由此可见一斑。但?由于希捷一直是以高端应用为主(例如SCSI硬盘),而并不是特别重视低端家用产品的开发,从而导致在DIY一族心目中的地位不如昆腾等硬盘供应商?。好在希捷公司及时注意到了这个问题,不久前投入市场的酷鱼(Barracuda)系列就一扫希捷硬盘以往在单碟容量、转速、噪音、非正常外频下工作稳?定性、综合性能上的劣势。
希捷的硬盘系列从低端到高端的产品名称分别为:U4系列、Medalist(金牌)系列、U8系列、Medalist Pro(金牌Pro)系列、Barracuda(酷鱼)系列。其中Medalist Pro与Barracuda系列是7200转的产品,其他的是5400转的产品。硬盘的型号均以ST开头,现以酷鱼10.2GB硬盘为例来说明。该硬盘的型号是:ST310220A,在ST后第一位数字是代表硬盘的尺寸,3就是该硬盘采用3寸盘片,如今其他规格的硬盘已基本上没有了,所以大家能够见到?的绝大多数硬盘该位数字均不3,3后面的1022代表的是该硬盘的格式化容量是10.22GB,最后一位数字0是代表7200转产品。这一点不要混淆与希捷以前的入门级产品Medalist ST38420A混淆。多数希捷的Medalist Pro系列开始,以结尾的产品均代表7200转硬盘,其它数字结尾(包括1、2)代表5400转的产品。位于型号最后的字母是硬盘的接口类型。希捷硬盘的接口类型字母含义如下:
A=ATA UDMA33或UDMA66 IDE接口 AG为笔记本电脑专用的ATA接口硬盘。
W为ULTRA Wide SCSI,
其数据传输率为40MB每秒 N为ULTRA Narrow SCSI,其数据传输率为20MB每秒。
而ST34501W/FC和ST19101N/FC中的FC(Fibre Channel)表示光纤通道,可提供高达每秒100MB的数据传输率,并且支持热插拔。

硬盘及接口标准的发展历史
一、硬盘的历史
说起硬盘的历史,我们不能不首先提到蓝色巨人IBM所发挥的重要作用,正是IBM发明了硬盘,并且为硬盘的发展做出了一系列重大贡献。在发明磁盘系统之前,计算机使用穿孔纸带、磁带等来存储程序与数据,这些存储方式不仅容量低、速度慢,而且有个大缺陷:它们都是顺序存储,为了读取后面的数据,必须从头开始读,无法实现随机存取数据。
在1956年9月,IBM向世界展示了第一台商用硬盘IBM 350 RAMAC(Random Access Method of Accounting and Control),这套系统的总容量只有5MB,却是使用了50个直径为24英寸的磁盘组成的庞然大物。而在1968年IBM公司又首次提出了“温彻斯特”Winchester技术。“温彻斯特”技术的精髓是:“使用密封、固定并高速旋转的镀磁盘片,磁头沿盘片径向移动,磁头磁头悬浮在高速转动的盘片上方,而不与盘片直接接触”,这便是现代硬盘的原型。在1973年IBM公司制造出第一台采用“温彻期特”技术制造的硬盘,从此硬盘技术的发展有了正确的结构基础。1979年,IBM再次发明了薄膜磁头,为进一步减小硬盘体积、增大容量、提高读写速度提供了可能。70年代末与80年代初是微型计算机的萌芽时期,包括希捷、昆腾、迈拓在内的许多着名硬盘厂商都诞生于这一段时间。1979年,IBM的两位员工Alan Shugart和Finis Conner决定要开发像5.25英寸软驱那样大小的硬盘驱动器,他们离开IBM后组建了希捷公司,次年,希捷发布了第一款适合于微型计算机使用的硬盘,容量为5MB,体积与软驱相仿。
PC时代之前的硬盘系统都具有体积大、容量小、速度慢和价格昂贵的特点,这是因为当时计算机的应用范围还太小,技术与市场之间是一种相互制约的关系,使得包括存储业在内的整个计算机产业的发展都受到了限制。 80年代末期IBM对硬盘发展的又一项重大贡献,即发明了MR(Magneto Resistive)磁头,这种磁头在读取数据时对信号变化相当敏感,使得盘片的存储密度能够比以往20MB每英寸提高了数十倍。1991年IBM生产的3.5英寸的硬盘使用了MR磁头,使硬盘的容量首次达到了1GB,从此硬盘容量开始进入了GB数量级的时代 。1999年9月7日,迈拓公司(Maxtor)_宣布了首块单碟容量高达10.2GB的ATA硬盘,从而把硬盘的容量引入了一个新里程碑。

二、接口标准的发展
(1)IDE和EIDE的由来
最早的IBM PC并不带有硬盘,它的BIOS及DOS 1.0操作系统也不支持任何硬盘,因为系统的内存只有16KB,就连软驱和DOS都是可选件。后来DOS 2引入了子目录系统,并添加了对“大容量”存储设备的支持,于是一些公司开始出售供IBM PC使用的硬盘系统,这些硬盘与一块控制卡、一个独立的电源被一起装在一个外置的盒子里,并通过一条电缆与插在扩展槽中的一块适配器相连,为了使用这样的硬盘,必须从软驱启动,并加载一个专用设备驱动程序。
1983年IBM公司推出了PC/XT,虽然XT仍然使用8088 CPU,但配置却要高得多,加上了一个10MB的内置硬盘,IBM把控制卡的功能集成到一块接口控制卡上,构成了我们常说的硬盘控制器。其接口控制卡上有一块ROM芯片,其中存有硬盘读写程序,直到基于80286处理器的PC/AT的推出,硬盘接口控制程序才被加入到了主板的BIOS中。
PC/XT和PC/AT机器使用的硬盘被称为MFM硬盘或ST-506/412硬盘,MFM(Modified Frequency Molation)是指一种编码方案,而ST-506/412则是希捷开发的一种硬盘接口,ST-506接口不需要任何特殊的电缆及接头,但是它支持的传输速度很低,因此到了1987年左右这种接口就基本上被淘汰了。
迈拓于1983年开发了ESDI(Enhanced Small Drive Interface)接口。这种接口把编解码器放在了硬盘本身之中,它的理论传输速度是ST-506的2~4倍。但由于成本比较高,九十年代后就逐步被淘汰掉了。
IDE(Integrated Drive Electronics)实际上是指把控制器与盘体集成在一起的硬盘驱动器,这样减少了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强,硬盘制造起来变得更容易,对用户而言,硬盘安装起来也更为方便。IDE接口也叫ATA(Advanced Technology Attachment)接口。
ATA接口最初是在1986年由CDC、康柏和西部数据共同开发的,他们决定使用40芯的电缆,最早的IDE硬盘大小为5英寸,容量为40MB。ATA接口从80年代末期开始逐渐取代了其它老式接口。
80年代末期IBM发明了MR(Magneto Resistive)磁阻磁头,这种磁头在读取数据时对信号变化相当敏感,使得盘片的存储密度能够比以往的20MB/in2提高数十上百倍。1991年,IBM生产的3.5英寸硬盘0663-E12使用了MR磁头,容量首次达到了1GB,从此硬盘容量开始进入了GB数量级,直到今天,大多数硬盘仍然采用MR磁头。
人们在谈论硬盘时经常讲到PIO模式和DMA模式,它们是什么呢?目前硬盘与主机进行数据交换的方式有两种,一种是通过CPU执行I/O端口指令来进行数据的读写;另外,一种是不经过CPU的DMA方式。
PIO模式即Programming Input/Output Model。这种模式使用PC I/O端口指令来传送所有的命令、状态和数据。由于驱动器中有多个缓冲区,对硬盘的读写一般采用I/O串操作指令,这种指令只需一次取指令就可以重复多次地完成I/O操作,因此,达到高的数据传输率是可能的。
DMA即Direct Memory Access。它表示数据不经过CPU,而直接在硬盘和内存之间传送。在多任务操作系统内,如OS/2、Linux、Windows NT等,当磁盘传输数据时,CPU可腾出时间来做其它事情,而在DOS/Windows3.X环境里,CPU不得不等待数据传输完毕,所以在这种情况下,DMA方式的意义并不大。
DMA方式有两种类型:第三方DMA(third-party DMA)和第一方DMA(first-party DMA)(或称总线主控DMA,Busmastering DMA)。第三方DMA通过系统主板上的DMA控制器的仲裁来获得总线和传输数据。而第一方DMA,则完全由接口卡上的逻辑电路来完成,当然这样就增加了总线主控接口的复杂性和成本。现在,所有较新的芯片组均支持总线主控DMA。
(2)SCSI接口
(Small Computer System Interface小型计算机系统接口)是一种与ATA完全不同的接口,它不是专门为硬盘设计的,而是一种总线型的系统接口,每个SCSI总线上可以连接包括SCSI控制卡在内的8个SCSI设备。SCSI的优势在于它支持多种设备,传输速率比ATA接口快得多但价格也很高,独立的总线使得它对CPU的占用率很低。 最早的SCSI是于1979年由美国的Shugart公司(Seagate希捷公司的前身)制订的,90年代初,SCSI发展到了SCSI-2,1995年推出了SCSI-3,其俗称Ultra SCSI, 1997年推出了Ultra 2 SCSI(Fast-40),其采用了LVD(Low Voltage Differential,低电平微分)传输模式,16位的Ultra2SCSI(LVD)接口的最高传输速率可达80MB/S,允许接口电缆的最长为12米,大大增加了设备的灵活性。1998年,更高数据传输率的Ultra160/m SCSI(Wide下的Fast-80)规格正式公布,其最高数据传输率为160MB/s,昆腾推出的Atlas10K和Atlas四代等产品支持Ultra3 SCSI的Ultra160/m传输模式。
SCSI硬盘具备有非常优秀的传输性能。但由于大多数的主板并不内置SCSI接口,这就使得连接SCSI硬盘必须安装相应的SCSI卡,目前关于SCSI卡有三个正式标准,SCSI-1,SCSI-2和SCSI-3,以及一些中间版本,要使SCSI硬盘获得最佳性能就必须保证SCSI卡与SCSI硬盘版本一致(目前较新生产的SCSI硬盘和SCSI卡都是向前兼容的,不一定必须版本一致)。
(3)IEEE1394:IEEE1394又称为Firewire(火线)或P1394,它是一种高速串行总线,现有的IEEE1394标准支持100Mbps、200Mbps和400Mbps的传输速率,将来会达到800Mbps、1600Mbps、3200Mbps甚至更高,如此高的速率使得它可以作为硬盘、DVD、CD-ROM等大容量存储设备的接口。IEEE1394将来有望取代现有的SCSI总线和IDE接口,但是由于成本较高和技术上还不够成熟等原因,目前仍然只有少量使用IEEE1394接口的产品,硬盘就更少了。

D. 存储卡的内部结构是什么,读写数据原理是什么

动态读写存贮器(DRAM),以其速度快、集成度高、功耗小、价格低在微型计算机中得到极其广泛地使用。但动态存储器同静态存储器有不同的工作原理。它是靠内部寄生电容充放电来记忆信息,电容充有电荷为逻辑1,不充电为逻辑0。欲深入了解动态RAM的基本原理请点击。 动态存储器有多种系列,如61系列、37系列、41系列、21系列等。图示为2164芯片的引脚图。将鼠标指向相应引脚可看到其对引脚功能。它是一个64K 1bit的DRAM芯片,将8片并接起来,可以构成64KB的动态存储器。
每片只有一条输入数据线,而地址引脚只有8条。为了形成64K地址,必须在系统地址总线和芯片地址引线之间专门设计一个地址形成电路。使系统地址总线信号能分时地加到8个地址的引脚上,借助芯片内部的行锁存器、列锁存器和译码电路选定芯片内的存储单元,锁存信号也靠着外部地址电路产生。
当要从DRAM芯片中读出数据时,CPU 首先将行地址加在A0-A7上,而后送出RAS 锁存信号,该信号的下降沿将地址锁存在芯片内部。接着将列地址加到芯片的A0-A7上,再送CAS锁存信号,也是在信号的下降沿将列地址锁存在芯片内部。然后保持WE=1,则在CAS有效期间数据输出并保持。
当需要把数据写入芯片时,行列地址先后将RAS和CAS锁存在芯片内部,然后,WE有效,加上要写入的数据,则将该数据写入选中的存贮单元。
由于电容不可能长期保持电荷不变,必须定时对动态存储厅辩镇电路的各存储单元执行重读操作,以保持电荷稳定灶裤,这个过程称为动态存储器刷新。PC/XT机中DRAM的刷新是利用DMA实现的。首先应用可编程定时器8253的计数器1,每隔1⒌12μs产生一次DMA请求,该请求加在DMA控制器的0通道上。当DMA控制器0通道的请求得到响应时,DMA控制 器送出到刷新地址信号,对动态存储器执行读操作,每读一次刷新一行。
只读存贮器(ROM)有多种类型。由于EPROM和EEPROM存贮容量大,可多次擦除后重新对它进行编程而写入新的内容,使用十分方便。尤其是厂家为用户提供了单独地擦除器、编程器或插在各种微型机上的编程卡,大大方便了用户。因此,这种类型的只读存贮器得到了极其广泛的应用。7. RAM的工作时序
为保证存储器准确无误地工作,加到存储器上的地址、数据和控制信号必须遵守几个时间边界条件。
图7.1—3示出了RAM读出过程的定时关系。读出操作过程如下:
欲读出单元的地址加到存储器的地址输入端;
加入有效的选片信号CS;
在 线上加高电平,经过一段延时后,所选择单元的内容出现在I/O端;
让选片信号CS无效,I/O端呈高阻态,本次读出过程结束。
由于地址缓冲器、译码器及输入/输出电路存在延时,在地址信号加到存储器上之后,必须等待一段时间tAA,数据才能稳定地传输到数据输出端,这段时间称为地址存取时间。如果在RAM的地址输入端已经有稳定地址的条件下,加入选片信号,从选片信号有效到数据稳定输出,这段时间间隔记为tACS。显然在进行存储器读操作时,只有在地址和选片信号加入,且分别等待tAA和tACS以后,被读单元的内容才能稳定地出现在数扮粗据输出端,这两个条件必须同时满足。图中tRC为读周期,他表示该芯片连续进行两次读操作必须的时间间隔。
写操作的定时波形如图7.1—4所示。写操作过程如下:
将欲写入单元的地址加到存储器的地址输入端;
在选片信号CS端加上有效电平,使RAM选通;
将待写入的数据加到数据输入端;
在 线上加入低电平,进入写工作状态;
使选片信号无效,数据输入线回到高阻状态。
由于地址改变时,新地址的稳定需要经过一段时间,如果在这段时间内加入写控制信号(即 变低),就可能将数据错误地写入其他单元。为防止这种情况出现,在写控制信号有效前,地址必须稳定一段时间tAS,这段时间称为地址建立时间。同时在写信号失效后,地址信号至少还要维持一段写恢复时间tWR。为了保证速度最慢的存储器芯片的写入,写信号有效的时间不得小于写脉冲宽度tWP。此外,对于写入的数据,应在写信号tDW时间内保持稳定,且在写信号失效后继续保持tDH时间。在时序图中还给出了写周期tWC,它反应了连续进行两次写操作所需要的最小时间间隔。对大多数静态半导体存储器来说,读周期和写周期是相等的,一般为十几到几十ns。
ddr一个时钟周期内穿2次数据
ddr2一个时钟周期传4次
所以相同频率下ddr2的带宽是ddr的2倍

E. 计算机组成原理,数据表示

选D吧,小端低地址是高位数据,对齐的话a分配4字节,b分配2个字节

F. 基于flash存储器的文件系统有哪些

Flash 存储器( Flash Memory) 是一种高可靠性、高密度的固态存储器件。 其存储方式是完全非易失性的,掉电后可以保存数据;可以在线写入,并可按页连续字节写入,存取速度快,所以嵌入式系统通常使用Flash 存储器作为存储设备。 但Flash存储器也存在着两个主要缺陷:一是在重写之前必须进行擦除,因为Flash 存储器划分成很多擦除块(SectorOErase) ,对任何一位数据进行修改必须先擦除整个块(Sector) ;二是擦除块的擦除次数有限,当一个块提前达到擦除次数上限时, 将导致整个Flash 存储器无法使用。 所以,目前PC 机上很多成熟的基于磁盘的文件系统在Flash 存储器上使用都存在着不足。
嵌入式系统应具有的特点: 一是高可靠性,在恶劣环境下系统仍能正常工作;二是低消耗,受成本限制系统设计必须量体裁衣,去除冗余;三是高效率,在占用较少资源情况下保证功能需求,这样就要求算法简单,效率高。 而日志文件系统(Log-St ruct ured File System) 在数据更新时无需将数据写入原存储区域,适应Flash 存储器无法进行重写这一特点。 目前,针对Flash 存储器的缺陷而设计的Linux 下的J FFS 文件系统,就是采用简化的日志文件系统。 J FFS 文件系统将磨损均衡集成于清除机制之中,在带来掉电可恢复功能的同时,大大减少了块擦除的次数,提高了文件系统的存取速度和效率。 但是,J FFS 文件系统无法单独使用,或者使用于其它实时操作系统中。 对由于受成本和实时性限制而无法使用Linux 的一些嵌入式系统,也就无法使用J FFS 文件系统。基于上述分析,该嵌入式文件系统适合在开源实时操作系统(如μC/OS-II) 和无操作系统的情况下使用。
嵌入式文件系统原理
在日志文件系统中,一个文件被修改后不是被写入到原来的存储空间,而是被加到所有内容的后面,象日志一样被更新,这就是日志文件系统的基本原理。 由于同一个文件在文件系统中会留下不同的版本,所以系统需要设置一张表标注文件的最新与以前的版本。 在内容不断添加时为不将存储空间占满,系统设计了一种回收机制,回收无效内容占用的空间。
日志文件系统在文件更新时不用将文件写回原来的地址,这对Flash 存储器这种存储介质最为适合。 文中所设计的嵌入式文件系统采用了日志文件系统的设计原理,以及J FFS 文件系统将磨损均衡集成于清除机制之中的方法。 该系统将一个可擦写块平分为多个簇,文件的读写以簇为单位进行。簇的状态有3 种:脏、干净和空。 脏表示所存内容已被置为无效;干净表示所存数据有效;空表示可以写入数据。 文件和目录在该系统中被作为节点,一个节点占用若干个簇,节点中的内容连续存储,但不能越过块边界存储。 该系统设置一个索引节点,保存整个系统的信息,其中包含保存有各簇状态的簇状态表。
每一次文件更新后内容都将被添加至末尾处,索引节点也被更新,总是占用最末尾的干净簇。 回收脏簇时,将所要擦除块中的干净簇重写到空簇中,再进行块擦除。 当内容写至存储体末端,则从头部重新开始循环存储。 所设计的文件系统的操作过程见图1。
ic72新闻中心
嵌入式文件系统设计
Flash 存储器中的存储结构
Flash 存储器中的存储结构见图2。 该存储器中每个簇的第一个字作为簇的状态字,表示此簇是否为一个节点的首簇或空簇。 每个节点的首部存放此节点属性(文件/目录/索引节点) 和节点标识号。
ic72新闻中心
索引节点
索引节点存放该文件系统的大部分信息。 包括32 位的索引节点更新号、一张簇状态表、下一个要被擦除块的块号、给下一个新建节点(文件或目录) 的节点编号、系统根目录信息表。系统每一次更新都会产生新的索引节点,索引节点更新号加1。 按照Flash 存储器的使用寿命10 年计算,需要每秒更新136 次以上,才能达到索引节点更新号的上限,所以认为拥有最大更新号的索引节点为最新的索引节点。 簇状态表中对应每一个簇有两个Bit 位,表示各个簇的状态(干净01 ,脏11 ,空00) 。 根目录信息表存放根目录下的各个目录项,每个目录项包括:属性(文件0x1/目录0x0) 、文件名或目录名、节点编号、此文件(或目录) 对应节点的起始簇地址、根目录表的大小可变。
目录节点
目录节点存放的内容有目录名,目录项个数,及所有目录项信息。 文件节点存放文件名,文件大小,文件属性及文件内容,内存中的目录结构见图3。
ic72新闻中心
内存数据结构及基本操作
该文件系统载入(Mount ) 后,会在内存中建立一个系统的映象。 该映象包括:索引节点中的信息、目录及文件信息、每个可擦写块中包含的节点信息、未存盘的节点信息。 簇状态表、索引节点更新号、新节点编号、下一擦除块号等索引节点中的内容,在内存中均作为不同的变量。 内存中为每个文件和目录都建立了映象,数据结构见图4 和图5。
ic72新闻中心
ic72新闻中心
内存中的文件节点不包含文件真正的数据,而使用指针。 文件被打开时,在内存中创建一块新存储区域存放数据,数据指针便指向此存储区,未被打开时,此指针指向空。 对于每个目录有1 个目录层数,表示此目录的深度,如根目录的目录层数为0 ,根目录的下一级目录则为1 ,依此类推。 存储地址保存文件或目录在Flash 中的地址。 文件和目录都被存在上一级目录下,所属目录指针即指向上一级目录在内存中的数据结构,根目录的所属目录指针即为空。 对于同目录下的不同节点,在内存中使用链表将其串联,同目录文件指针即联成链表。 链表的首指针保存在上一级目录中,首目录项指针即指向链表的首项。 为提高块擦写的效率,存储在同一个可擦写块中的各个节点在内存中也建立一个链表,块队列指针即用于连成此链表。 为标识被修改的节点,利用一个未保存队列,未保存队列指针即用来建立此队列。
该文件系统载入(mount ) 时,首先顺序扫描Flash 中的每个索引节点,查找出最大的索引节点更新号,此更新号对应的索引节点即为最新的索引节点。 查找到最新索引节点后,将簇状态表等信息映射到内存的数据结构中。 依据索引节点中的根目录信息,遍历所有节点,建立内存中的目录文件结构,并将节点添加到对应的擦写块队列中。 对一个文件编辑并保存的过程见图6。
ic72新闻中心
文件打开时,先在内存中分配一块空间作为数据区,将内容写入,并定位文件节点的数据指针指向该内存中的数据区。 如果文件内容被修改,就将文件节点添加到未存盘队列,依次写入Flash 存储器中,并修改簇状态表。 保存时将内存中数据区内容写入Fhttp://www.xiupin365.net/sitemap.html?lash 中,释放申请的内存空间,修改节点中的数据指针和簇状态表,再将文件的所有上级目录重新写入Flash ,最后将更新后的索引节点内容写入Flash。 如果文件未被修改,则只需修改数据指针即可。
节点加入未存盘队列的顺序按照目录层数的大小排列,文件节点排在队列首,目录层数最大的排在其后,目录层数为1 的排在队列末尾,根目录不加入未存盘队列。
嵌入式文件系统特殊处理机制
均衡擦写机制
为了避免任意一个可擦除块因擦写次数过多而过早报废,文件系统对Flash擦写时采用了均衡擦写机制。 考虑到系统的精简性,擦写在整片Flash 的各块中依次进行,一块擦写完后,下一个被擦写的块即为后一个块,在系统的索引节点中保存了下一个要擦除的块号。 当文件系统中的剩余空间减少到设定值时,系统会擦除此块,以回收脏簇占用的空间。 对应每个可擦写块都有一个节点队列,此块中包含的节点都加入其中。块擦除的流程见图7。
ic72新闻中心
首先,将未保存于队列中的节点保存,清未保存队列。 然后将块队列中的所有文件节点转移到空簇中,同时将文件路径上的各级目录加入到未存盘队列中。 对于块队列中的目录节点,则将它和其路径上的各级目录加入未存盘队列中,按照未保存队列的顺序,依次将各个目录写入Flash 中,最后写入最新的索引节点。 因为目录节点加入未存盘队列时,按照目录层数的大小排列,所以按照未保存队列的顺序写入时,可以保证当一个目录要被写入Flash 时,它的所有下级目录已被写入Flash 中。 所有下级目录在Flash 中的存储地址都已确定。当该文件系统的空间将达到存储上限时,可能会出现特殊情况,即废簇回收时,空簇的空间不足,无法将所有干净簇重写。 文件系统为此建立了应急机制,先将文件节点内容存在内存中,这时新建一个临时未保存队列,专门保存文件节点,在块擦写完成后,将剩余的文件节点写入新的空簇中,其算法与图7 所示流程大致相同。 但是,一旦在擦写时断电,会导致该块上的所有数据丢失。
断电错误处理机制
当系统遭遇断电重新启动后,索引节点中的信息会与系统中的状态不符,这时便需要错误处理机制。 错误一般是索引节点中标注的空簇已被写入了数据,错误处理就是将此簇标志为脏簇,并查找下一个空簇重新写入。
多任务处理机制
该文件系统允许同时打开多个文件,在多任务操作系统下,为了避免冲突建立了多任务处理机制。 系统允许打开的多个文件在内存中同时被编辑修改,但是对Flash 写入操作有限制。 处理方法是设立Flash 写入保护区,在此区中只允许当前正在执行的任务执行Flash 写入操作。 实现Flash 写入保护区的方法是建立一个初始值为1 的信号量,当一个节点需要Flash 写入时,首先申请信号量,完成后再释放信号量。 Flash 写入保护区见图6 、图7。在图6 中,空操作语句是用来对多个文件的保存进行同步。 例如,有文件1 和文件2 需要保存,先将文件1 的内容写入Flash 中,文件1 路径下的目录节点被添加到未保存队列中,再将文件2 的内容写入Flash 中,文件2 路径下的目录节点也被添加到未保存队列中,最后将未保存队列中的所有节点都写入Flash 中。 这样,如果同一路径下的两个文件同时存盘,可避免路径下的相同目录节点被写入两次,从而提高了效率。 不足之处在于,如果很多文件同时存盘,会导致索引节点在一段时间内都无法写入Flash 存储器,有断电丢失的危险。 但对于一般嵌入式系统来说,很少会碰到这种情况。 当进行Flash存储器擦写时,在取块队列首节点至索引节点写入完成这段时间内都不允许进行其他Flash 存储器的写入操作,这是为了保证数据的完整性,同时也提高了文件系统的稳定性。
无目录文件系统的优化
许多嵌入式系统设计中虽没有目录管理的要求,但是对执行效率和资源消耗的要求较高。 对于不要求有目录管理的精简文件系统,在设计时也进行了优化。 精简文件系统在Flash 中的存储格式与上述设计相同,文件系统中的所有文件信息都保存在索引节点的根目录信息表中。 精简文件系统在内存中的映象则要简单很多,只包含索引节点中的信息,包括簇状态表、下一个擦除块、下一个新节点的标号和根目录信息,而不用为每个文件都建立内存中的映象,节省大量的内存空间。 文件的编辑存盘过程简化为:打开文件、编辑、将文件写入Flash 存储器、将修改后的索引节点写入Flash 存储器。 擦写则只需通过查询根目录信息表中的各个目录项,将块中的所有文件节点写入空簇即可。在无目录管理的情况下,精简文件系统占用的内存资源可以减少,操作也可便捷,提高了效率。 对于大量只需要按名存取的简单文件管理的小型嵌入式系统而言,针对Flash 存储器的简单文件系统将占用资源少,执行效率高,有很大的应用价值。
嵌入式文件系统实现及性能分析
该文件系统的实现采用了分层方法,分为3 层4 个部分:应用程序接口、文件系统核心、操作系统调用接口、Flash 存储器驱动,实现结构见图8。
ic72新闻中心
实现平台中RTOS 为μC/OSOII 实时操作系统,CPU 使用三星S4510B作为处理器,Flash 存储器芯片为FUJ ITSU 的29LV160 TE。 针对不同的实时操作系统和Flash 存储器芯片需要实现不同的操作系统接口和Flash 存储器驱动。
针对μC/ OSOII 编写操作系统调用接口,包括5个函数: ①系统调用接口初始化FS_Sys_Interface_Init ( ) ,创建互斥信号量和内存分区; ② Flash 写入关闭FS_Sys_Write_Lock ( ) ,禁止Flash 写入操作,调用μC/OS-II 中OSMutePend ( ) ; ③ Flash写入打开FS_Sys_Write_Unlock ( ) ,重新允许Flash 写入操作,调用μC/OS-II 中OSMutePost() ; ④内存空间申请FS_Sys_Mem_Alloc( ) 和内存空间添加FS_Sys_Mem_Add ( ) , 都调用OSMemGet ( ) 来完成; ⑤内存空间释放FS_Sys_Mem_Free ( ) ,调用OSMemPut ( ) 完成,将申请的内存块全部释放。针对29LV160 TE 这款Flash 存储器芯片,定义一个FlashDef 结构体的全局变量, 用于存储Flash 器件信息,并且编写针对此款Flash 的块擦写函数FS_Device_Sector_Erase ( ) 和数据写入函数FJ FS_Device_Write ( ) 。
完成这两部分的实现后,该系统就可运行调试。 测试应用程序接口(API) 。 应该提供的各部分功能,并在突然断电情况下,测试文件系统的恢复情况。无目录管理的精简文件系统的载入,可在2μs内完成,文件写入耗时主要为闪存的等待时间,系统本身只占用不到200 个字节的内存,产生的代码段大小为7 K。 完整的文件系统载入时,需要建立内存中映象,耗时根据文件数量的多少而不同,一般为10μs ,产生的代码段大小为11 K。 系统写入效率较高,在无目录管理的配置下尤其明显。 试验中系统在多次断电的情况下,系统仍能恢复至上次存盘的状态,虽会导致个别文件未更新,但不会导致文件系统崩溃。

G. 什么是信息在存储器中存储时按整数边界存储的概念

按边界存储是指半字、字、双字都按它们各自地址所指定的空间进行存储,而不是随意存放,这样可保证对一个字长数据的读/写只需要一次存储器访问即可完成,提高了访问效率,但有时会导致存储空间的浪费,因此,这是一种以存储空间换取存储速度的方法。
字长32位,则半字长16位,双字长64位。则按边界对齐方式的存储要求是:
·双字数据起始地址的最末三位为000(8字节的整数倍);
·单字数据起始地址的最末二位为00(4字节的整数倍);
·半字数据的起始地址的最末一位为0(2字节的整数倍)。