Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1617815
  • 博文数量: 268
  • 博客积分: 8708
  • 博客等级: 中将
  • 技术积分: 3764
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-06 15:58
文章分类

全部博文(268)

文章存档

2014年(1)

2013年(15)

2012年(23)

2011年(60)

2010年(51)

2009年(12)

2008年(59)

2007年(47)

分类:

2011-04-06 12:51:36

的外部存储器中也采用了类似的装置,比较常用的一种叫。将的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失。
目前,的面密度已经达到每平方英寸100Gb以上,是容量、性价比最大的一种存储设备。

增将圆形的磁性盘片装在一个方的密封盒子里 有了磁盘之后,人们使用计算机就方便多了,不但可以把处理结果存放在磁盘中,还可以把很多输入到计算机中的数据到磁盘中,这样这些数据可以反复使用,避免了重复。 可是不久之后,人们又发现了另一个问题:人们要存储到磁盘上的内容越来越多,众多的
存储在一起,很不方便。这样就导致了文件的产生。

磁盘设备应包括磁盘驱动器、适配器及盘片,它们既可以作为输入设备,也可作为输出设备或称载体。控制软盘读和写,即输入或输出是由磁盘驱动器及其适配器来完成的,

磁盘格式:FAT(FAT16),FAT32,NTFS,ext2,ext3等

一、什么是磁盘碎片?


其实磁盘碎片应该称为文件碎片,是因为文件被分散保存到整个的不同地方,而不是连续地保存在磁盘连续的中形成的。

二、磁盘碎片是怎么产生的?
当所需的不足时,一般会在中产生临时交换文件,用该文件所占用的硬盘空间成。虚拟内存管理程序会对硬盘频繁读写,产生大量的碎片,这是产生硬盘碎片的主要原因。

虽然说磁盘碎片对于正常工作影响并不大,但是会显著降低硬盘的运行速度,这主要是硬盘读取文件需要在多个碎片之间跳转,增加了等待盘片旋转到指定扇区的潜伏期和磁头切换磁道所需的寻道时间。

三、磁盘读写操作的原理
程序运行时磁盘的读写动作:一般运行一个程序时,的所做的工作是先搜索该程序运行必需的文件,然后读取数据,最后做读后处理——将数据传送至磁盘(Cache)和内存中。搜索时间在硬盘性能指标中被称为平均(Average seek time),单位为毫秒(ms),目前主流硬盘的平均寻道时间小于9.5ms。如果能将应用程序的相关文件放在磁盘的连续空间内,磁头搜索的时间将会减少 很多。读取时也是如此,磁盘读取位于磁头下方扇区的数据所需时间仅为将磁头移到另一地点再读取相同数据所需时间的五分之一。读盘时,系统先检查数据是否在 高速缓存中,如果有则直接读取;如果没有则访问磁盘,也就是读盘。当需要多次读取同一份数据时,Cache的作用很大,但对于第一次读取某个文 件,Cache就无能为力了。于是搜索时间和读取时间在很大程度上影响着程序执行的效率。

为何要整理磁盘 系统并不能自动将每个文件按照最大程度减少磁头搜索时间的原则放到磁盘上最合适的位置。于是Microsoft在Windows中加入了“Disk Defragment”(), 并提供了“TaskMonitor”(任务监视器)来跟踪程序启动过程中的磁盘活动,以利于“Disk Defragment”能够更有效地工作。“TaskMonitor”是随Windows启动而自动运行的(当然要在“启动”中选中 “TaskMonitor”)。当加载某个应用程序时,它通过监视磁盘的访问动作来了解该程序启动时搜索和调用的文件,对所需文件进行定位,并将监视结果 储存在“C:\Windows\Applog”隐藏目录中。这个目录中的大多数文件以“.lgx”为扩展名,其中“lg”代表记录文件(Log File),“x”表示盘符,如D盘程序就以“.lgd”为扩展名;记录文件的文件名为TaskMonitor所监视的应用程序的文件名,如E盘上的 WinZip程序记为“Winzip32.lge”。用户进行磁盘碎片整理时,该程序会根据Applog目录中的信息把应用程序的相关文件移动到磁盘上的 连续空间内。

运行过其他文件整理程序怎么办

当运行了其他磁盘文件整理程序(如WinAlign)后,它可能扰乱了TaskMon记录 的数据,若此时直接进行碎片整理,可能会得不偿失,达不到优化性能的目的。解决的办法是在进行碎片整理之前,多次运行Windows和自己最常用的程序, 这样可以让TaskMon重新收集到正确的统计数据,指导进行磁盘优化。


高速缓存(:Cache),其原始意义是指访问速度比一般(RAM)来得快的一种RAM,一般而言它不像系统主存那样使用技术,而使用昂贵但较快速的技术。

静态随机存取存储器(Static Random Access Memory, SRAM)是的一种。所谓的“静态”,是指这种存储器只要保持,里面储存的数据就可以恒常保持。相对之下,(DRAM)里面所储存的数据就需要周期性地更新。然而,当电力供应停止时,其内储存的数据还是会消失,这与在断电后还能储存资料的或仍然是不同的。

原理

当处理数据时,它会先到Cache中去寻找,如果数据因之前的操作已经读取而被暂存其中,就不需要再从(Main memory)中读取数据——由于CPU的运行速度一般比主内存的读取速度快,主存储器周期(访问主存储器所需要的时间)为数个时钟周期。因此若要访问主内存的话,就必须等待数个CPU周期从而造成浪费。
提供“高速缓存”的目的是为了让数据访问的速度适应CPU的处理速度,其基于的原理是内存中“程序执行与数据访问的局域性行为”,即一定程序执行时间和空间内,被访问的代码集中于一部分。为了充分发挥高速缓存的作用,不仅依靠“暂存刚刚访问过的数据”,还要使用硬件实现的与技术——尽可能把将要使用的数据预先从内存中取到高速缓存里。
CPU的高速缓存曾经是用在上的一种高级技术,不过现今电脑上使用的的或微处理器都在芯片内部集成了大小不等的数据高速缓存和指令高速缓存,通称为L1高速缓存(L1 Cache 即 Level 1 On-die Cache,第一级片上高速缓冲存储器);而比L1更大容量的L2高速缓存曾经被放在CPU外部(或者CPU接口卡上),但是现在已经成为CPU内部的标准组件;更昂贵的顶级家用和CPU甚至会配备比L2高速缓存还要大的L3高速缓存(level 3 On-die Cache 第三级高速缓冲存储器)。
地址镜像与变换

由于容 量远大于高速缓存的容量,因此两者之间就必须按一定的规则对应起来。高速缓存的地址镜像就是指按某种规则把主存块装入高速缓存中。地址变换是指当按某种镜 像方式把主存块装入高速缓存后,每次访问高速缓存时,如何把主存的物理地址(Physical address)或虚拟地址(Virtual address)变换成高速缓存的地址,从而访问高速缓存中的数据。

镜像和变换的方式有四种:直接镜像、全相连镜像、组相连镜像、区段相连镜像。

高速缓存文件置换机制

是处理的一种机制。
电脑存储器空间的大小固定,无法容纳上所有的文件,所以当有新的文件要被置换入时,必须根据一定的原则来取代掉适当的文件。此原则即所谓高速缓存文件置换机制。
高速缓存文件置换方法有:
  • 先进先出算法(FIFO)
  • 最近最少使用算法(LFU):选择最近最少使用的页面作为替换的对象
  • 最久没有使用算法(LRU):近期最久没有访问的页面作为替换对象
  • Belady's Min


虚拟内存
不只是“用磁盘空间来扩展物理内存”的意思——这只是扩充以使其包含而已。把内存扩展到磁盘只是使用虚拟内存技术的一个结果,它的作用也可以通过或者把处于不活动状态的程序以及它们的数据全部交换到磁盘上等方式来实现。对虚拟内存的定义是基于对的重定义的,即把地址空间定义为“连续的虚拟内存地址”,以借此“欺骗”程序,使它们以为自己正在使用一大块的“连续”地址。

虚拟内存用硬盘空间做内存来弥补计算机RAM空间的缺乏。当实际RAM满时(实际上,在RAM满之前),虚拟内 存就在硬盘上创建了。当物理内存用完后,虚拟内存管理器选择最近没有用过的,低优先级的内存部分写到交换文件上。这个过程对应用是隐藏的,应用把虚拟内存 和实际内存看作是一样的。

每个运行在WindowsNT下的应用被分配到4GB的属于自己的虚拟地址空间(2GB给应用,2GB给操作系统)。

使用虚拟内存存在这样的问题,那就是读写硬盘的速度大大慢于读写实际RAM的速度。这就是当NT系统在没有足够的内存时程序运行慢的原因。
虚拟内存是文件数据交叉链接的活动文件。是WINDOWS目录下的一个"WIN386.SWP"文件,这个文件会不断地扩大和自动缩小。
   就 速度方面而言,CPU的L1和L2缓存速度最快,内存次之,硬盘再次之。但是虚拟内存使用的是硬盘的空间,为什么我们要使用速度最慢的硬盘来做为虚拟内存 呢?因为电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致我们只有可怜的256M/512M内存消耗殆尽。而硬盘空间动辄 几十G上百G,为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用...

进程是OS中资源拥有的基本单位(unit of resource ownership)
虚地址空间,内存及其他资源(I/O设备、文件等)
§进程管理:进程控制块(PCB)
§进程的状态:running,ready,wait,stopped,zombie
进程中的线程共享进程资源,但拥有私有堆栈及线程控制块(TCB,存储寄存器值、优先级及其他线程状态信息)
q核心级线程(KLT:kernel-level thread)
q用户级线程(ULT:user-level thread)

进程调度算法
nFCFS(first come first served)
ü先来先服务,直至结束(nonpreemptive)
nRR:Round robin
ü时间片轮转(time slice,preemptive)
ü时间片到时,将进程放入就绪队列的末尾,然后从队列头部取出一个进程运行
ü公平的调度策略,不会导致进程饥饿
nPriority scheduling:基于优先级的调度
ü存在问题:饥饿-低优先级进程可能永远得不到执行
解决办法:老化( Aging) – 随着时间的推移,进程的优先级可以提升(即进程的优先级可以是动态的)

MMU的功能

1、将虚拟地址映射为物理地址
存储管理
qRelocation(重定位):程序只有在执行时才能确定其在内存中的位置
qProtection(保护):进程在未被允许时不能访问其他进程的地址空间
qSharing(共享):应该提供机制允许进程访问共享地址空间中的信息
qLogical address(逻辑地址):用户进程访问的地址,即虚地址
qPhysical address(物理地址):物理存储器的地址
q交换(swapping):将进程从内存中换出到交换设备,下次执行时再换入。早期技术,现在通过paging技术优化swapping(只换出/换入进程的一部分页面)

页式存储管理
将内存划分为固定大小的页帧(frame),进程空间划分为同样大小的页(page),系统为进程分配物理存储器按页进行
分段(segmentation)
q进程空间分为若干段,各段长度可不一致(用户以更自然的方式管理进程地址空间)
段页式存储管理
n将分段和分页结合起来,充分利用两者的优势

虚拟地址的概念: 
  不要和虚拟内存混淆,虚拟内存是区域块,而虚拟地址强调的是地址,这个地址可以达到4GB.
映射的概念:所谓的映射就是虚拟地址到虚拟内存的一种关系.当进程刚开始创建的时候,虚拟地址已经存在了,但它还没有指向虚拟内存. 
保留,提交的概念:

  所谓的保留是告诉操作系统,要从虚拟地址空间中拿出多少的范围来用,这样就系统就能统计这个虚拟地址空间已经用了多少,在用户级别是2GB.
  提交就是把保留的虚拟地址空间映射到虚拟内存中的某个块,这样虚拟地址就指向了某个虚拟内存块(这个内存块不一定在内存条).

  当CPU根据虚拟地址要访问虚拟内存上的数据时候,它会根据页表来查看这个数据是不是在内存条上,如果不在就查看是不是在硬盘上的某个区域块上(一般称为 页文件上),如果在内存条上,就根据页表来定位内存条上的地址,并从内存条上取数据.如果在硬盘上的某个区域块,就要采用页文件交换技术,把硬盘上的数据 复制到内存条上,然后CPU再从内存条上取数据.

n进程的虚地址空间(virtual address space)
ü由进程的逻辑地址组成的地址空间。
ü虚地址空间可以远大于系统的物理内存。
ü虚拟存储器(virtual memory):逻辑地址访问的存储器

虚拟存储管理
n进程的虚地址空间(virtual address space)
ü由进程的逻辑地址组成的地址空间。
ü虚地址空间可以远大于系统的物理内存。
ü虚拟存储器(virtual memory):逻辑地址访问的存储器
页装入策略(page fetch policy)
üDemand paging(按需调页):发生缺页时,才将页面装入。
üPrepaging(预取):预先将某些页面装入内存。
页替换策略(page replacement policy)
nOS分配给进程的物理内存不够用时,需要页替换
nOptimal:最优化方法,选择将来最久不会被访问的页换出
ü需要预先知道页访问序列
ü不可能实现,只是作为一个评判标准
nFIFO:最先装入的被换出
nLRU:最久未使用的页被换出(基于locality现象,很有效)
nClock policy,时钟算法。LRU算法不易实现,用时钟算法近似模拟
ü每页设置一个reference bit,为1表示在时钟指针循环一周内被访问过;
ü查找替换页:
       指针扫描,若reference bit =1,置为0,否则该页就是替换对象。
§Belady’s Anomaly(belady异态):内存大,反而缺页率高
抖动(thrashing)
n进程执行时缺页率过高,使得系统忙于页面换进换出,因此执行效率低。提高效率的可行方法:
ü优化页调入与替换算法;
ü增加物理内存;
ü减少进程数;
ü提供更快速的交换设备。
交换(swapping)
n实现虚拟存储的重要手段
n扩大内存,使系统可以运行比物理内存大的程序。
n交换空间(swap space)
ü交换文件,文件系统下的一个文件(如windows下的页面文件)
ü交换设备(如linux的swap分区)
ü后者比前者的读写效率高
§交换设备的管理
ü数据结构
  交换设备上的空间信息;

  页表项上标识页面在交换区中的信息。

nSwap cache:提高交换设备的存取效率


阅读(1732) | 评论(0) | 转发(0) |
0

上一篇:算法复杂度

下一篇:内存详解

给主人留下些什么吧!~~