殷人昆 数据结构

上传人:mg****85 文档编号:49789423 上传时间:2018-08-02 格式:PPT 页数:233 大小:1.37MB
返回 下载 相关 举报
殷人昆 数据结构_第1页
第1页 / 共233页
殷人昆 数据结构_第2页
第2页 / 共233页
殷人昆 数据结构_第3页
第3页 / 共233页
殷人昆 数据结构_第4页
第4页 / 共233页
殷人昆 数据结构_第5页
第5页 / 共233页
点击查看更多>>
资源描述

《殷人昆 数据结构》由会员分享,可在线阅读,更多相关《殷人昆 数据结构(233页珍藏版)》请在金锄头文库上搜索。

1、第十章 文件、外 部排序与搜索清华大学计算机系殷人昆1n主存储器和外存储器 n文件组织 n外排序 n多级索引结构 n可扩充散列nTrie树 第十章 文件、外部排序 与外部搜索2主存储器与外部存储器n外存储器与内存储器相比,优点是:u价格较低u永久的存储能力n缺点:u访问外存储器上的数据比访问内存要慢5 6个数量级n要求我们在开发系统时必须考虑如何使外存 访问次数达到最少。3磁带(tape)n磁带是一种顺序存取设备。n磁带主要用于备份、存储不经常使用的数据 ,以及作为将数据从一个系统转移到另一个 系统的脱机介质。 读出头写入头磁带送带盘卷带盘4n磁带卷在一个卷盘上,运行时磁带经过读写 磁头,把磁

2、带上的信息读入计算机,或者把 计算机中的信息写到磁带上去。n数据记录在磁带带面上。在带面上并列存放 有 9 个磁道的信息,即每一横排有 9 位二进 制信息:8 位数据加 1 位奇偶校验位。n磁带的存储密度用 BPI(Bit Per Inch)为单 位,典型的存储密度有 3 种:6250BPI( =246排/mm)、1600BPI(=64排/mm)、 800BPI(32排/mm)。正常走带速度为3 5m/Sec,因设备而异。5n数据的传送速度 = 存储密度走带速度读 写时间。n在应用中使用文件进行数据处理的基本单位 叫做逻辑记录,简称为记录;在磁带上物理 地存储的记录叫做物理记录。n在使用磁带或

3、磁盘存放逻辑记录时,常常把 若干个逻辑记录打包进行存放,把这个过程 叫做“块化”(blocking)。经过块化处理的 物理记录叫做块化记录。n磁带设备是一种启停设备。磁带每次启停都 有一个加速与减速的过程,在这段时间内走 带不6稳定,只能走空带,这段空带叫做记录间间 隙IRG(Inter Record Gap)或者块间间隙 IBG(Inter Block Gap),其长度因设备而 异。磁带速度 75-200英寸/秒 传输速度 7000-1250000字/秒1.5-16 ms1.5-16 ms定速加速IBG 0.30.75英寸减速物理记录启动位置IBG 0.30.75英寸停止位置 传输开始传输完

4、成 经过时间7n如果每个逻辑记录是 80个字符,IRG为 0.75 英寸,则对存储密度为 1600BPI 的磁带,一 个逻辑记录仅占 80/1600 = 1/20英寸。每传输 一个逻辑记录磁带走过 0.05英寸,接着磁带 要走过一个IRG占0.75英寸。结果大部分时 间都花费在走空带上,存储利用率只有1/16 。n如果将若干逻辑记录存放于一个块,将IRG 变成IBG,可以提高存储利用率。例如,将 50个有80个字符的逻辑记录放在一个块内, 此块的长度将达到5080/1600 = 2.5英寸,存 储利用率达到0.77。因此在磁带上采用按块 读写。8n在磁带设备上读写一块信息所用时间 tIO =

5、ta + tbn其中,ta 是延迟时间,即读写磁头到达待读 写块开始位置所需花费的时间,它与当前读 写磁头所在位置有关。tb是对一个块进行读 写所用时间,它等于数据传输时间加上IBG 时间。n磁带设备只能用于处理变化少,只进行顺序 存取的大量数据。9磁盘(disc)n磁盘存储器通常称为直接存取设备,或随机 存取设备,它访问外存上文件的任一记录的 时间几乎相同。n磁盘存储器可以顺序存取,也可以随机存取 。n目前使用较多的是活动臂硬盘组:若干盘片 构成磁盘组,它们安装在主轴上,在驱动装 置的控制下高速旋转。除了最上面一个盘片 和最下面一个盘片的外侧盘面不用以外,其 他每个盘片上下两面都可存放数据。

6、将这些 可存放数据的盘面称为记录盘面。 10主轴盘片活动臂 (回转臂)读写磁头磁道柱面11n每个记录盘面上有很多磁道,数据就存放在 这些磁道上。它们在记录盘面上形成一个个 同心圆。 n每个记录盘面都有一个读写磁头。所有记录 盘面的读写磁头都安装在同一个动臂上,随 动臂向内或向外做径向移动,从一个磁道移 到另一个磁道。n任一时刻,所有记录盘面的读写磁头停留在 各个记录盘面的半径相同的磁道上。运行时 ,由于盘面做高速旋转,磁头所在的磁道上 的数据相继在磁头下,从而可以读写数据 12n各个记录盘面上半径相同的磁道合在一起称 为柱面。动臂的移动实际上是将磁头从一个 柱面移动到另一个柱面上。 n一个磁道

7、可以划分为若干段,称为扇区,一 个扇区就是一次读写的最小数据量。这样, 对磁盘存储器来说,从大到小的存储单位是 :盘片组、柱面、磁道和扇区。n对磁盘存储器进行一次存取所需时间: 当有多个盘片组时,要选定某个盘片组。 这是由电子线路实现的,速度很快。13选定盘片组后再选定某个柱面,并移动动 臂把磁头移到此柱面上。这是机械动作, 速度较慢。这称为“寻查(seek)”。选定柱面后,要进一步确定磁道,即确定 由哪个读写磁头读写,由电子线路实现。 确定磁道后,还要确定所要读写数据在磁 盘上的位置(如在哪一个扇区)。这实际 上就是在等待要读写的扇区转到读写磁头 下面。这是机械动作。这段时间一般称为 旋转延

8、迟(rotational delay)时。真正进行读写时间。 14n在磁盘组上一次读写的时间主要为:tiotseektlatencytrwn其中,tseek是平均寻查时间,是把磁头定位 到要求柱面所需时间,这个时间的长短取决 于磁头移过的柱面数。tlatency是平均等待时间 ,是将磁头定位到指定块所需时间。trw是传 送一个扇区数据所需的时间。n在MS-DOS系统中,多个扇区集结成组,称 为簇。簇是文件分配的最小单位,其大小由 操作系统决定。在UNIX系统中不使用簇, 文件分配的最小单位和读写的最小单位是一 个扇区,15称为一个块(block)。n磁盘一次读写操作访问一个扇区,称为访问“ 一

9、页”(page)或“一块”(block),又称为“ 一次访外”。n为了实施磁盘读写操作,在内存中需要开辟 一些区域,用以存放需要从磁盘读入的信息 ,或存放需要写出的信息。这些内存区域称 为缓冲区)。多数操作系统至少设置两个缓 冲区,一个为输入缓冲区;一个为输出缓冲 区。 缓冲区(buffer)16n例如在从磁盘向内存读入一个扇区的数据时 ,数据被存放到输入缓冲区,如果下次需要 读入同一个扇区的数据,就可以直接从缓冲 区中读取数据,不需要重新读盘。n缓冲区大小应与操作系统一次读写的块的大 小相适应,这样可以通过操作系统一次读写 把信息全部存入缓冲区中,或把缓冲区中的 信息全部写出到磁盘。n如果缓

10、冲区大小与磁盘上的块大小不适配, 就会造成内存空间的浪费。n缓冲区的构造可以看作一个先进先出的队列 。 17缓冲区的定义及其操作 #include #include const int DefaultSize = 2048; template struct buffer T *data;/缓冲区数组int current, maxSize;/当前指针, 缓冲区容量 buffer (int sz = DefaultSize) : maxSize(sz), current(0) data = new Tsz; assert (data != NULL); buffer() delete data;

11、 18void OutputInfo (ostream /缓冲区输 出void InputInfo (istream /缓冲区输 入 ;template void buffer:OutputInfo (ostream i void buffer:InputInfo (istreamcurrent = 0; ;20文件组织n什么是文件u文件是存储在外存上的数据结构。u文件分操作系统文件和数据库文件 操作系统中的文件是流式文件:是没有 结构的字符流 数据库文件是具有结构的数据集合u数据结构中讨论的是数据库文件。n操作系统对文件是按物理记录读写的,在数 据库中文件按页块存储和读写。文件的基本概念21

12、文件的组成n文件由记录组成;记录由若干数据项组成。n记录是文件存取的基本单位,数据项是文件可 使用的最小单位。n从不同的观点,文件记录分为逻辑记录和物理 记录。前者是面向用户的基本存取单位,后者 是面向外设的基本存取单位。n能够唯一标识一个记录的数据项或数据项集称 为主关键码项,其值称为主关键码;n不唯一标识一个记录的数据项或数据项集称为 次关键码项,其值称为次关键码。22n文件结构包括文件的逻辑结构、文件的存储 结构和文件的操作。n文件的逻辑结构是线性结构,各个记录以线 性方式排列。n文件的存储结构是指文件在外存上的组织方 式,它与文件特性有关。u 顺序组织u 索引组织u 直接存取组织(散列

13、组织)n文件的操作是定义在逻辑结构上的,但操作 的具体实现要在存储结构上进行。23n评价一个文件组织的效率u执行文件操作所花费的时间u文件组织所需要的空间。文件的操作检索维护简单查询 范围查询 函数查询 布尔查询 插入 删除 修改 重构 恢复24顺序文件 (Sequential File )n顺序文件中的记录按它们进入文件的先后顺 序存放,其逻辑顺序与物理顺序一致。n如果文件的记录按主关键码有序,则称其为 顺序有序文件,否则称其为顺序无序文件。n顺序文件通常存放在顺序存取设备(如磁带 )上或直接存取设备(如磁盘)上。n当存放在顺序存取设备上时只能按顺序搜索 法存取;当存放在直接存取设备上时,可

14、以 使用顺序搜索法、折半搜索法等存取。25n顺序文件的存储方式 n连续文件:文件的全部记录顺序地存放外 存的一个连续的区域中。优点是存取速度 快、存储利用率高、处理简单。缺点是区 域大小需事先定义,不能扩充。 n串联文件:文件记录成块存放于外存中, 在块中记录顺序连续存放,但块与块之间 可以不连续,通过块链指针顺序链接。优 点是文件可以扩充、存储利用率高。缺点 是影响了存取和修改的效率。26直接存取文件 (Direct Access File)n文件记录的逻辑顺序与物理顺序不一定相同 。通过记录的关键码可直接确定该记录的地 址。n利用散列技术组织文件。处理类似散列法, 但它是存储在外存上的。n

15、使用散列函数把关键码集合映射到地址集合 时,往往会产生地址冲突,处理冲突有两种 处理方式:u按桶散列u可扩充散列 27(1) 按桶散列n文件中的记录成组存放,若干个记录组成一 个存储单位,称之为桶。假若一个桶能存放 m个记录,则m个互为同义词的记录可以存 放在同一地址的桶中。当第m+1个同义词出 现时,才发生“溢出”。 (a) 溢出链u当发生“溢出”时,将第m+1个同义词存放 到“溢出桶”。并称存放前m个同义词的桶 为“基桶”。溢出桶和基桶大小相同。当在 基桶中检索不成功,就循指针到溢出桶中 检索。 28n在这种散列文件中删除记录时,因为可能需 要重新链接,所以只需做一个逻辑删除标记 即可,待系统做周期性重构时再做物理删除 。桶大小为3的溢出桶链表示例 070 512 204 246 O1 597 177 262 157 116 613 285 635 208 O2 923 076 0 1 2 3 4 5 6O1 O2 O3 O4 O5 O6 O7015 337 988 O3 817 117 390 O4 575 540 435 362 基桶编号 基桶区 溢出桶编号 溢出桶区29(b) 分布式溢出空间u溢出桶按照一定的 间隔分布在基桶之间 。如果有一个基桶溢 出了,系统就将记录 存放在下一个溢出桶 中。 u如果溢出桶自己溢 出了,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号