电脑中mt6750是高端还是低端内存和低端内存有何区别

没有更多推荐了,
不良信息举报
举报内容:
linux中高端内存和低端内存的理解
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!没有更多推荐了,
不良信息举报
举报内容:
高端内存和低端内存
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!linux&kernel学习笔记-5&内存管理
1. 相关的数据结构
相比用户空间而言,在内核中分配内存往往受到更多的限制,比如内核中很多情况下不能睡眠,此外处理内存分配失败也不像用户空间那么容易。内核使用了页和区两种数据结构来管理内存:
内核把物理页作为内存管理的基本单位。尽管CPU的最小可寻址单位通常为字(甚至字节),但是MMU(内存管理单元,管理内存并把虚拟地址转换为物理地址的硬件)通常以页为单位进行处理;MMU以页为单位管理系统中的页表。从虚拟内存的角度而言,页就是最小单位。
不同体系结构下的页大小也不同,一般32位体系结构支持4KB的页,64位体系结构支持8KB的页。内核用struct
page结构表示系统中的每个物理页:
存放页的状态,包括页是不是脏的,是不是被锁定在内存等等;
flags可以同时表示32种独立的状态
atomic_t _ & &
页的引用计数,当_count=-1时,表明该页没有被内核引用,
新的分配可以使用它。内核代码通常不直接检查该域,
而是调用page_count()函数进行检查,该函数的唯一参数是
& & & // struct
page结构。page_count()返回0代表页空闲,
返回正整数代表页被占用。
&&atomic_t
struct address_space * //
当页被页缓存使用时,maping域指向和这个页关联
的address_space对象
struct list_
void * & &
页在虚拟内存中的地址。高端内存并不永久的映射在内核地址
空间上,这时viutual域为NULL。
需要强调的是,struct
page跟物理页相关,而非跟虚拟页相关。因此该结构对页的描述是短暂的,及时页中所包含的数据仍然存在,由于交换的原因,它们也可能不再和同一个struct
page结构相关联。内核仅仅用这个数据结构来描述当前时刻在相关物理页中存放的数据——也就是说struct
page的目的在于描述物理内存本身,而不是其中的数据。
内核用struct
page来管理系统中所有的页。假如系统有4GB内存,每个物理页4KB的话,就有1M个页;每个struct
page按40字节算,就需要40MB的空间来存放所有物理页的struct
page。内核需要知道一个页是否空闲,如果某个页已经被分配,内核还要知道谁拥有这个页,拥有者可能是用户空间进程、动态分配的内核数据、静态内核代码或页高速缓存等等。
由于硬件的限制,内核不能对所有的页一视同仁。有些页位于内存中某些特殊的位置上,因此不能用于一些特定的用途。正因如此,内核把所有物理页划分为若干个区,同一个区中的物理页具有相似的特性。内核必须处理如下两种由于硬件缺陷而引起的内存寻址问题:
一些硬件只能用某些特定的内存地址来执行DMA(直接内存访问);
一些体系结构的内存的物理寻址范围比虚拟寻址范围大得多,所以有些内存不能永久的映射到内核空间上
正因如此,内核把物理页分为下面的不同区(以x86-32体系结构为例):
DMA使用的页
ZONE_NORMAL
正常可寻址的页
16~896MB & &
ZONE_HIGHMEM
所谓的高端内存,其中的页不能永久的映射到内核地址空间
不同体系结构下,区的分布不同。例如某些体系结构上可以在内存任何地址上执行DMA,所以在这些体系结构上,ZONE_DMA为空,ZONE_NORMAL就可以直接用来分配;与此相反的是,在x86体系结构上,ISA设备只能对物理内存的前16MB执行DMA。ZONE_HIGHMEM也跟体系结构相关,有些体系结构中所有内存都可以被直接映射,所以ZONE_HIGHMEM为空;而32位x86系统中,ZONE_HIGHMEM为高于896MB的所有物理内存。
区的划分没有任何物理意义,只是内核为了方便管理页而进行的逻辑划分。某些分配可能需要从特定的区中获取页,比如DMA操作只能从ZONE_DMA中取得;但用于一般用途的内存既能从ZONE_DMA也可以从ZONE_NORMAL中获取,当然内核更应该让一般用途的内存从ZONE_NORMAL获取,以节省稀有的ZONE_DMA。
内存管理接口
2.1&针对页的内存管理接口
接口函数原型
struct page *alloc_pages
(gfp_t gfp_mask,&unsigned int order);
该函数分配2^order(一般情况下order远大于1)个连续的
物理页,并返回一个指针,该指针指向第一个页的
struct page结构体,如果出错就返回NULL
struct page *alloc_page
(gfp_t gfp_mask);
只分配一页,返回该页的页结构指针
long&__get_free_pages
(gfp_t gfp_mask,&unsigned int order);
分配2^order个连续的物理页,返回第一个页的逻辑地址
long&__get_free_page
(gfp_t gfp_mask);
只分配一页,返回该页的逻辑地址
long&get_zeroed_page
(gfp_t gfp_mask);
跟__get_free_page()相同,只是该页的每个字节的
每个比特都被填为0。这样是为了防止用户进程意外获取
到某些敏感信息
void&__free_pages
(struct page *page,&unsigned int order);
释放从*page开始的连续2^order个物理页
void&free_pages(unsigned long
unsigned int order);
释放从addr开始的连续2^order个物理页
void&free_page(unsigned long
释放从addr开始的一页
当需要以页为单位进行分配时,上文的低级页分配函数很方便;但是如果需要以字节为单位的分配,则可以使用kmalloc()。kmalloc()可以获得以字节为单位的一块连续物理内存。
接口函数原型
*&kmalloc(size_t size,
gfp_t&gfp_mask);
该函数返回一个指向内存块的指针,这个内存块
至少有size个字节,并且在物理上是连续的。
如果没有分配成功,则返回NULL。
void *kfree(const void *ptr);
释放由kmalloc()分配得到的内存块
2.3&vmalloc
vmalloc类似于kmalloc,但是vmalloc分配的内存只有虚拟地址是确定连续的,物理地址不一定连续;而kmalloc则保证物理地址和虚拟地址都连续。
接口函数原型
*&vmalloc(unsigned long
该函数返回一个指向内存块的指针,这个内存块
至少有size个字节,并且在逻辑上是连续的。
如果没有分配成功,则返回NULL。
该函数可能会睡眠。
void *vfree(const void *ptr);
释放由vmalloc()分配得到的内存块。
该函数可能会睡眠
大部分情况下,只有硬件设备需要得到物理地址连续的内存,他们甚至不理解虚拟地址;而仅供软件使用的内存块就可以只是虚拟地址连续,因为软件只关心逻辑地址。
不过内核中很多地方本可以用vmalloc的却用了kmalloc,主要是因为kmalloc更快。vmalloc为了把物理上不连续的内存转换为虚拟地址空间上连续的页,需要专门建立页表项。所以vmalloc只是在万不得已时采用,典型的是需要获得超大块的内存时,例如当模块被动态插入到内核中时,就把模块装载到由vmalloc分配的内存上。
2.4&gfp_mask标志
在低级页分配函数以及kmalloc中都涉及了gfp_mask。gfp_mask是一些标志的集合,这些标志可以分为两大类:行为修饰符和区修饰符。行为修饰符表示内核如何分配所需的内存。区修饰符表示从哪里分配内存。例如下面的表格:
常用的行为修饰符
__GFP_WAIT
分配器可以睡眠
分配器可以启动磁盘I/O
分配器可以启动文件系统I/O
__GFP_HIGH&
分配器可以访问紧急事件缓冲池
常用的区修饰符
只从ZONE_DMA分配
__GFP_HIGHMEM
从ZONE_HIGHMEM或ZONE_NORMAL分配
为了方便使用,行为修饰符和区修饰符被组合成不同的类型标志,通常你只需要使用类型标志即可。
常用的类型标志
修饰符组合
GFP_KERNEL
(__GFP_WAIT |
&__GFP_IO & &
&__GFP_FS)
这个标志可以用于有可能睡眠的进程上下文代码中。这种分配可能会阻塞,
也可能启动磁盘I/O。这个标志对内核如何请求内存没有任何约束,
可以睡眠、交换、刷新一些页到硬盘等等,因而分配成功的概率较高。
GFP_ATOMIC
__GFP_HIGH
这个标志用于ISR、下半部、持有自旋锁等不能睡眠的地方。调用者需要
满足较多的限制,因此分配成功率没有GFP_KERNEL高,特别是当内存短缺时。
3. slab分配器
在栈上的分配
4.1&内核栈、用户栈和中断栈
内核在创建进程的时候,在创建task_struct的同时,会为进程创建相应的堆栈。每个进程会有两个栈:一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。根据体系结构的不同,内核栈可以是1页也可以是连续的2页,大小在4KB到16KB之间。
除了用户栈和内核栈之外,2.6还实现了一个新的中断栈,它存在于内核栈为1页的情况下。中断栈为每个进程提供了一个用于中断处理程序的栈,有了它之后,中断处理程序就不需要再和被中断进程共享内核栈了。
4.2 进程用户栈和内核栈的切换
当进程因为中断或者系统调用而陷入内核态时,进程所使用的堆栈也要从用户栈转到内核栈。
进程陷入内核态后,先把用户态堆栈的地址保存在内核栈之中,然后设置cpu堆栈指针寄存器的内容为内核栈的地址,这样就完成了用户栈向内核栈的转换;当进程从内核态恢复到用户态之行时,在内核态之行的最后将保存在内核栈里面的用户栈的地址恢复到cpu堆栈指针寄存器即可。这样就实现了内核栈和用户栈的互转。
那么,我们知道从内核转到用户态时用户栈的地址是在陷入内核的时候保存在内核栈里面的,但是在陷入内核的时候,我们是如何知道内核栈的地址的呢?
关键在进程从用户态转到内核态的时候,进程的内核栈总是空的。这是因为,当进程在用户态运行时,使用的是用户栈,当进程陷入到内核态时,内核栈保存进程在内核态运行的相关信息,但是一旦进程返回到用户态后,内核栈中保存的信息无效,会全部恢复,因此每次进程从用户态陷入内核的时候得到的内核栈都是空的。所以在进程陷入内核的时候,直接把内核栈的栈顶地址给堆栈指针寄存器就可以了。
5. 高端内存的映射
高端内存就是ZONE_HIGHMEM中的物理页。不可以通过__get_free_pages()或者kmalloc()来获取高端内存中的页,因为这两个函数的返回值都是逻辑地址,而高端内存中的物理页不能永久的映射到内核地址空间,因而可能根本就没有逻辑地址。你可以通过alloc_pages()或alloc_page()以__GFP_HIGHMEM标志来获得高端内存中的页,这两个函数的返回值是struct
page指针。
要想映射一个给定的page到内核地址空间,可以使用下面的函数:
*kmap(struct page *page);
这个函数在高端内存、低端内存中都可以用。如果page结构对应的是低端内存中的页,函数只是单纯返回其逻辑地址;如果对应高端内存中的一页,则会建立一个永久映射,再返回地址。这个函数可能会睡眠。
因为允许永久映射的数量有限(否则的话就没必要这么麻烦,直接将所有内存统统永久映射一下就好了),当不再需要高端内存时,应该解除映射,通过:
kumap(struct page *page);
关于高端内存更多的内容,可以参考,此文写得很棒
per-CPU的内存管理
参见,4.2.
补充一下使用per-CPU的好处和注意事项。好处是:首先,减少了数据锁定,因为每个CPU只访问它自己的per-CPU数据;其次,使用per-CPU数据将提高缓存命中率。不过也要注意,per-CPU需要禁止内核抢占,不过接口会自动完成这个步骤;另外不能在访问per-CPU数据时睡眠,否则醒来时也许已经到了其他处理器了。
不同分配函数的比较和小结
如果你需要连续的物理页,可以使用某个低级页分配函数或者kmalloc(),这是内核中常用的内存分配方式。传递给这些函数的最常见的标志是GFP_ATOMIC和GFP_KERNEL,前者代表禁止睡眠的内存分配,可用于ISR或其他不可睡眠的地方。
如果想从高端内存进行分配,则使用alloc_pages()或者alloc_page()。它们返回指向一个struct
page结构的指针,而不是某个逻辑地址。由于高端内存很可能没有被映射,所以只能通过struct
page来访问。为了获得真正的逻辑地址,需要调用kmap()来将高端内存映射到内核的逻辑地址空间。
如果不需要物理上连续的页,仅仅需要逻辑地址上连续的页,就可以使用vmalloc(),但是要承担一定的性能损失。
如果要创建和撤销很多同类型的数据结构,可以建立slab高速缓存。slab分配器会给每个CPU维护一个对象高速缓存(空闲链表),这种高速缓存可以极大地提高对象分配和回收的性能。slab层并不是频繁的分配和释放内存,而是把事先分配好的对象存放到高速缓存中,当你需要一块新的内存来存放数据结构时,slab层一般无需重新分配内存,只需要从高速缓存中取出一个对象就可以了。
8. 参考文献
linux kernel development, 3rd edtion, robert
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。高端内存是Linux中一个重要的概念,初涉Linux时曾经对这个概念非常迷惑。实际上这个概念比较简单,理解这个概念,需要追溯一下Linux的内存管理。
&&& 从前,CPU的地址总线只有32位。32的地址总线无论是从逻辑上还是从物理上都只能描述4G的地址空间,在物理上理论上最多拥有 4G内存(除了IO地址空间,实际内存容量小于4G),逻辑空间也只能描述4G的线性地址空间。为了合理的利用4G空间,Linux采用了3:1的策略,即内核占用1G的线性地址空间,用户占用3G的线性地址空间。所以用户进程的地址范围从0~3G,内核地址范围从3G~4G,也就是说,内核空间只能管理 1G的内存。对于如此紧张的线性地址资源,内核空间与用户空间的肆意瓜分,导致了内存管理上的问题:当物理内存大于1G时,内核线性地址空间小于实际的物理内存容量,内核如何实现对大于1G内存的管理呢?说到这里,需要提一下内核空间对内存的管理方法。一方面为了提高内核空间对内存的管理效率;另一方面,为了简化内核空间对内存的管理方法,内核采用线性映射的方法实现对内存的管理,从Linux实现的方法来看,物理地址与内核的虚拟地址只差一个偏移量。所以,当物理内存大于1G时,物理内存无法全部映射到内核线性地址空间,这就产生了上述问题。
&&&&&&&&从上述描述可以看出,地址空间大于1G的内存区域称之为高端内存,同理,小于1G的内存区域称之为低端内存。高端内存的管理需要进行非线性映射,为此,在内核线性地址空间预留了128M的空间,位于线性地址空间的高端。如今,CPU的地址总线都扩大到64位了,线性地址资源非常丰富,所以,可以给内核空间预留足够的线性地址资源,在最近一段时间内,内核线性地址资源与物理内存容量之间的矛盾将不再突出,高端内存的概念也就在64位CPU上消失了。
阅读(...) 评论()如果你关注存储,关心硬盘的发展,那势必会对例如“内部数据传输率”、“外部数据传输率”、“连续数据传输率”、“突发数据传输率”、“转速”和“SATA”这些名词颇为熟悉,从字面上就可猜想到它们代表与硬盘的速度有关,但具体含义到底是什么呢?它们跟硬盘的速度又有那些直接或间接的关联呢? 一、哪些因素影响硬盘的速度转速  即指硬盘主轴电机的转动速度,我们通常说的7200rpm或5400rpm,正是指硬盘主轴电机的转动速度,它的表示单位为rpm,即转/分(Rotations Per Minutes)。转速是区别硬盘档次的重要标志,例如目前7200rpm主要是面向桌面级中高存储市场,而5400rpm则是面向入门级存储市场。内部数据传输率(Internal Data Transfer Rate)  顾名思义,即指硬盘内部数据传输的传输率,据存储业内的定义,硬盘内部数据传输率是指硬盘磁头读取存储在盘片内的数据向硬盘高速数据缓存传送时的数据传输速率。从这个定义中,我们不难理解影响硬盘内部数据传输率的根本因素是硬盘磁头、盘片和转速。因为只有更快的转速、更高的存储密度,才能从根本上提高硬盘的内部数据传输率。如果硬盘盘片的数据存储密度可以做的非常大,也就是能存储的信息可以越多,这就是我们通常所说的硬盘单碟容量更高了。因此,硬盘转速和单碟容量是决定硬盘内部数据传输率的直接原因,而从下文的介绍中可以看出,内部数据传输率上不了一个更高台阶才是当今硬盘速度的瓶颈所在。外部数据传输率 (External Data Transfer Rate)  何谓外部,这里所指的外部是指从硬盘高速数据缓存到电脑主机内存,所以外部数据传输率也就是指数据从硬盘高速数据缓存通过硬盘接口传输至内存这过程中的数据传输率,从这个业内定义可以明显看出,外部数据传输率和硬盘接口带宽是息息相关,所以许多时候,人们在称呼硬盘外部数据传输率时往往以接口速度来代替,例如支持Ultra ATA/100的腾龙四代硬盘,我们就说它的外部数据传输率为100MB/s,因为Ultra ATA/100接口理论上能支持最高为100MB/s的传输率。  连续(STR)数据传输率和突发数据传输率(Burst TR),也是顾名思义,突发数据传输率就是硬盘在突发情况下所能达到的数据传输率,它一般略低于硬盘接口带宽,由于它是一种突发状态下产生的数据传输率,所以它并不能准确表示硬盘的速度快慢,但STR连续数据传输率刚好与其相反,它是表示硬盘速度快慢最真实的体现。STR并不是硬盘所有时刻数据传输率值的平均值,而是磁头由盘片内圈至外圈连续寻道时的数据传输率,利用业内知名的WINBENCH实测得到的硬盘STR图就可以清晰地看到这点,如图1所示。 图1:硬盘连续数据传输率范例  平均访问时间  平均访问时间是指硬盘在盘片上移动读写磁头至指定磁道寻找相应目标数据所用时间的均值,它是描述硬盘读取数据的能力,单位为毫秒。当硬盘单碟容量增大时,磁头的访问动作和移动距离将减少,显然硬盘的平均访问时间将因此而减小,从而加快硬盘读写速度。 接口速度(需要用表格说明各种接口的速度)  接口速度即指硬盘接口所能支持的最大带宽,由于不同的接口类型具有不同的接口带宽,所以接口速度也就会因此不同,一般来说,越先进的接口类型,它的接口速度是更快的。表1中列出了常见的接口类型及其速度。接口类型 接口速度(理论值) 接口电缆Serial ATA1.0 150 MB/s 并行连接电缆ATA/133 133 MB/s 40针80芯连接电缆ATA/100 100 MB/s 40针80芯连接电缆ATA/66 66 MB/s 40针80芯连接电缆ATA/33及其以前接口 &33 MB/s 40针40芯连接电缆表1,常见的接口类型及其速度数据缓存  缓存是硬盘与外部总线交换数据的场所。硬盘读写数据的过程是将磁信号转化为电信号后,通过缓存一次次地填充与清空,再填充,再清空,一步步按照PCI总线的周期送出,可见,缓存的作用是相当重要的。转速是关键  转速它是区别硬盘好坏的重要依据之一,也是影响硬盘速度快慢的直接因素。为什么这么说呢?其实很好理解,硬盘盘片如果转的越快,硬盘磁头感应盘片上的磁场变化的速度自然就越快,而这些磁场信息就是数据,显然这就带来了更高的数据传输率,当然前提是硬盘的其它相关技术(例如磁头和盘片)需要跟的上,不然即使硬盘盘片转的再快,磁头感应灵敏度或精确度不够,那一切也是白搭。     就目前而言,IDE硬盘常见的转速为7200rpm和5400rpm,随着存储技术革新和产品更新换代速度不断加快,5400rpm的IDE硬盘慢慢地被定位在低端存储市场,而7200rpm则扮演着中高端桌面级存储生力军的角色。至于SCSI硬盘,常见的转速系列有7200rpm、10,000rpm和15,000rpm三种,7200rpm的SCSI硬盘属于入门级高端存储产品,一般应用于工作站或普通应用服务器上,10,000rpm和15,000rpm同属中高端级存储产品,相对来说,10,000rpm的SCSI硬盘更为普通些,因此它属于当前SCSI硬盘的主流转速。    那么,硬盘转速是不是决定硬盘速的绝对且唯一的因素呢?答案是否定的。有一定经验的电脑用户可能都知道,对于同样转速的两款硬盘,测试得到的数据传输率却可能存在天壤之别,这是由于对硬盘速度的影响因素是多方面的,正因此,业内在表示硬盘速度的时候,也对不同的情况给予了不同的名称与定义。接口不能决定一切  现在我们仍然清晰地记的在2001年至2002年上半年间,MAXTOR公司高喊Ultra ATA/133,宣称最高能达到133MB/s的外部数据传输率,但ATA/133给我们带来了什么?更高的接口速度难道就能带来更快的硬盘速度吗?其实不见的,想想当时,所有IDE硬盘的内部数据传输率还不到66MB/s,远远不及100MB/s,更别说ATA/133所支持的133MB/s,综合比较支持ATA/133的迈拓金钻七代和只支持ATA/100的希捷新酷鱼IV代,前者所带来的速度提升是如何有限,从此就能明白“接口不能决定一切”的道理。  而现在,在串行ATA概念及展品遍地开花的今天,我们一夜之间,似乎突然感觉现在已经进入“新世纪”了,并行ATA已经被淘汰,从此进入了串行时代。串行时代真的到来了吗?串行ATA能给我们带来些什么呢?更快、更大、更安全的目标能否得到延续…。从Serial ATA委员会公布的产品特征来看,SATA1.0所支持的最高数据传输率就高达150MB/s,而SATA2.0中更加倍支持,达到了300MB/s,据称,SATA3.0将能实现600MB/s的接口带宽。  如果将来硬盘能有600MB/s的接口带宽,是不是就“一路畅通”了呢?但事实并非像想象中那么理想,试想一下,如果从硬盘磁头向高速缓存传输数据的传输率只有100MB/s,那即使从高速缓存通过硬盘接口往内存搬运数据的传输率达到600MB/s又有何用,意义显然不大。  所以,大家在注重接口类型技术革新的同时,也不要忘了还有硬盘盘片技术、硬盘磁头技术需要升级,硬盘运行稳定性和性价比等都需要考虑。用户在选购产品时,也就不要一味追求先进的接口类型,更何况硬盘的高速度就代表着硬盘拥有高性能吗?这之间不是等于,而是≠。内部传输率也不能决定一切从上面的介绍中,我们可以看出真正决定硬盘速度快慢的因素是硬盘的内部数据传输率,抛开内部传输率,接口带宽再宽也不足从根本上提高硬盘的速度。可是,回过头来考虑,硬盘速度是否与硬盘内部数据传输率成正比关系呢?答案是肯定的,但是还有一个因素不容忽视,那就是硬盘的访问时间。硬盘访问时间包括两个方面,即硬盘寻道时间和潜伏时间,寻道时间就是指硬盘磁头移动到数据所在磁道时所用的时间,而潜伏时间是指当磁头移动到数据所在的磁道后,然后等待指定的数据块转动(半圈或多些、少些)到磁头下所用的时间,硬盘平均访问时间就是以上两者相加。由此,我们可以看出硬盘访问时间是影响硬盘数据传输率快慢的重要因素之一,如果平均访问时间越长,硬盘速度自然要降下来。在实际应用中,内部数据传输率到底能起到多大的作用?我们接着来分析它对磁盘性能的影响。普通商业应用磁盘性能(Business Disk Mark)即硬盘在普通商业应用领域下的磁盘性能,它是衡量硬盘在办公时磁盘性能的最重要表现形式。至于高端应用磁盘性能(High-End Disk Mark)与上述相似,即指硬盘在高端应用领域(例如工作站或服务器)下的磁盘性能,它是衡量硬盘能否适应高负荷、多线程并行操作等的重要方式。硬盘的内部数据传输率,即硬盘速度快慢会在一定程度上影响着普通商用和高端应用磁盘性能,但并不能达到决定性的作用,很明显的例子就是希捷新酷鱼IV(Barracuda ATA IV)硬盘,我们对酷鱼IV实测得到的数据传输率很高,这是同类产品中的骄骄者,但磁盘性能却不及例如IBM腾龙四代(Deskstar 120GXP)等硬盘。缓存的同样很重要,如何正确评估硬盘速度硬盘高速数据缓存就像硬盘数据的中转站一样在硬盘读写数据中起着重要的作用,在接口技术已经发展到一个相对成熟的时候,缓存的大小与速度是直接影响硬盘速度和性能的重要因素。因为当硬盘在读写数据时,硬盘会先将读写的数据暂存到缓存中,然后再通过总线或接口传输给内存或其它位置,此时如果硬盘读写的数据越零碎,那么缓存的作用就越大,对提高硬盘的性能和速度就会有很大帮助。目前主流硬盘缓存主要是2MB,除此还有8MB和512KB等几种,缓存类型大多是SDRAM或EDO DRAM,目前一般以SDRAM为主。根据写入方式的不同,可以分为写通式和回写式两种。六、 如何正确评估硬盘速度倘若只是单纯地评估一款硬盘的速度快慢,一般来说 ,更快的硬盘转速、更大的单碟容量、更高的接口数据传输率、更短的平均访问时间、更高的内部数据传输率就代表着更高的性能,但是一款硬盘并不能在这些方面都具有优势,例如有的硬盘虽然具有很高的接口带宽,但由于内部数据传输率上不去,所以硬盘不具有非常高的磁盘性能。 这些硬盘针对不同的应用表现也各不相同。因此,在选择硬盘时就要根据自己的应用进行权衡,例如如果你只是普通家用,那选择5400RPM的普通IDE硬盘就已足够。而如果是网吧游戏服务器等应用场合,我们就推荐选择7200RPM的高端IDE硬盘。再如对于需要处理许多零碎数据的用户,我们推荐大缓存的产品。通过实际测试,我们则可以客观地判断一款硬盘各方面的表现。目前比较常见的硬盘评
附近的朋友等待您的帮助
包打听移动版}

我要回帖

更多关于 内存小的网游 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信