本帖隐藏的内容
硬盘分区是操作系统安装过程中经常谈到的话题。对于一些简单的应用,硬盘分区并不成为一种障碍,但对于一些复杂的应用,就不能不深入理解硬盘分区机制的某些细节。本文将深层次地探讨硬盘分区的基本原理及应用。
一 分区的一般概念
所谓分区,就是硬盘上建立来用作单独存储区域的部分,它分为主分区和扩充分区。主分区用来存放操作系统的引导记录(在该主分区的第一扇区)和操作系统文件;扩充分区一般用来存放数据和应用程序。
一个硬盘可以被分为1—4个分区,最多能有4个主分区。如果有扩充分区,则最多可以有3个主分区。一般只有一个扩充分区,它可以被划分成多个逻辑驱动器。我们必须显式地建立主分区,但不必显式地建立扩充分区。我们在建立第一个非主分区逻辑驱动器时,就隐式地建立了一个扩充分区,当我们增加逻辑驱动器时,也就是向该扩充分区中添加逻辑驱动器。
二 问题的提出
某台PC机上已经装上了DOS和Windows操作系统,它们共用一个主分区,另有一个逻辑驱动器D,现在准备在该机上装上UNIX操作系统。由于UNIX操作系统的文件系统与DOS/Windows不兼容,因此不能在现存的DOS分区上再装UNIX,而必须在硬盘上另建UNIX主分区。这样一个硬盘上就有多个(这里是两个)主分区,我们必须提供一种方法来实现操作系统的选择引导。
三 分区的深入理解
1.主分区和逻辑驱动器 主分区的特性是在任何时刻只能有一个是活动的,当一个主分区被激活以后,同一硬盘上的其他主分区就不能再被访问。所以一个主分区中的操作系统不能再访问同一物理硬盘上其他主分区上的文件。而逻辑驱动器并不属于某个操作系统,只要它的文件系统与启动的操作系统兼容,则该操作系统就能访问它。
主分区和逻辑驱动器的一个重要区别是:每个逻辑驱动器分配唯一的驱动器名(盘符),而在同一硬盘上的所有主分区共享同一个驱动器名,因为某一时刻只能有一个主分区是活动的。这就意味着某一时刻只能用共享驱动器名访问活动的那个主分区。
2.驱动器名的分配 启动系统时,活动分区上的操作系统将执行一个称为驱动器映像的过程,它给主分区和逻辑驱动器分配驱动器名。所有的主分区首先被映像,而逻辑驱动器用后续的字母指定。
例如,假定硬盘活动分区的操作系统的文件系统与所有的逻辑驱动器文件系统兼容,但如果逻辑驱动器文件系统与启动的操作系统的文件系统不兼容,该逻辑驱动器将被忽略。
如果你的PC有两个硬盘,则每个硬盘可以被分为1—4个分区,它们可以有各自的主分区和扩充分区。 如果文件系统兼容,操作系统将如上例那样分配驱动器名。
四 理解硬盘自举
1.硬盘结构概述 硬盘的0头0柱面1扇区叫主引导扇区,它不属于任何分区。主引导扇区上放有主引导记录,它主要由引导程序和分区表组成,它是由低级格式化程序建立的(一般由厂家完成)。分区表中含有各个分区的有关信息,如分区的起始及结束磁头号、磁道号、扇区号,分区是否是活动分区。当没有建立分区时,分区表是空的。主引导程序主要完成硬盘自举。
分区是由各操作系统的分区程序完成的,分区程序向分区表中填写分区信息。任何分区必须使用相应操作系统的格式化命令格式化后才能使用。每个分区的第一扇区是相应操作系统的引导扇区,上有引导记录。
2.硬盘启动的过程 系统自检后,固化在ROM中的19号中断复位硬盘,读取主引导记录到内存,检查分区表,寻找唯一的活动分区,并根据分区表信息到活动分区的第一扇区读取引导记录,把控制权交给引导记录的引导程序,由引导程序完成操作系统的加载。
3.控制操作系统的启动
方法1: 由于分区表格式对各个操作系统的分区程序都是透明的,因此可以用任一操作系统的分区程序来指定活动分区,重启计算机就可以切换到另一个主分区上的操作系统。
方法2: 由硬盘启动过程我们可以看到,19号中断将活动分区的第一扇区读入内存后,将控制权交给它。利用这样的一种特性,我们可以建立一个特殊的主分区,并将它设置为活动的,它的第一个扇区存放的不是引导记录,而是一个提供操作系统选择的程序,再由它来把你所选择的操作系统的引导记录读入内存并执行引导程序。这样的程序叫做引导管理程序,它可由操作系统或第三方软件开发商提供。
需要指出的是,我们在启动Windows 95/98时,按F8进入的选择界面并不是引导管理程序提供的,而是Windows在安装时写入本主分区第一扇区引导程序用来控制本操作系统启动方式的程序提供的。
五 问题的解决
通过上面的讨论,我们就可以轻易地解决文章开始提出的问题了。
1.备份数据 由于硬盘上要增加主分区,必须减小扩充分区,因此首先必须备份D盘数据(注意前面我们的假设:只有一个主分区和一个逻辑分区)。
2.建立UNIX分区 用UNIX系统盘启动系统,运行分区程序,建立UNIX主分区,格式化后安装操作系统。同时为UNIX建立一个逻辑驱动器用来存储数据和应用程序。
3.为DOS/Windows建立逻辑驱动器 用DOS系统盘启动系统,运行DOS分区程序,增加一个逻辑驱动器用来存储DOS/Windows数据和应用程序。 这样我们就可以使DOS/Windows和UNIX共享硬盘了。我们可以使用在“控制系统的启动”里讲的任意一种方法来选择启动DOS/Windows和UNIX。如果要使用第二种方法,必须安装引导管理程序。
计算机病毒的磁盘存储结构
对于计算机病毒的存储结构来说,不同类型的病毒,在磁盘上的存储结构是不同的。
1.磁盘空间的总体划分 经过格式化后的磁盘包括:主引导记录区(只有硬盘有)、引导记录区、文件分配表 (FAT)、目录区和数据区。 主引导记录区和引导记录区中存有DOS系统启动时所用的信息。 文件分配表(FAT)是反映当前磁盘扇区使用状况的表。每张DOS盘含有两个完全 相同的FAT表,即FAT1和FAT2,FAT2是一张备份表。FAT与目录一起对磁盘数据 区进行管理。 目录区存放磁盘上现有的文件目录及其大小、存放时间等信息。 数据区存储和文件名相对应的文件内容数据。
(1)软盘空间的总体划分 当使用DOS的外部命令FORMAT格式化一张软盘后,不仅把磁盘划分为若干磁 道,每一磁道划分为若干扇区,而且同时把划分的扇区分为五大区域,它们分别是引导记 录区、文件分配表1、文件分配表2、根目录区以及数据区。
对于软盘只有一个引导区,引导区在磁盘的0面0道1扇区,它的作用是在系统启动 时负责把系统两个隐含文件IO.SYS和MSDOS.SYS装入内存,并提供DOS进行磁盘 读写所必需的磁盘I/O参数表。 文件分配表(FAT表)是反映磁盘上所有文件各自占用的扇区的一个登记表,此表非 常重要,一旦被破坏,将无法查找文件的内容。即使对DOS内部精通的人,要修复FAT表 损坏的磁盘文件,亦非易事,开销很大。为此系统在划分磁盘区域时,保留了两份完全相同 的文件分配表。 根目录区是记载磁盘上所有文件的一张目录登记表。主要记载每个文件的文件名、扩 展名、文件属性、文件长度、文件建立日期、建立时间以及其他一些重要信息。
(2)硬盘空间的总体划分 对于不同类型、不同介质的磁盘,DOS划分磁盘的格式是不同的。对于硬盘来说, 由于其存储空间比较大,为了允许多个操作系统分享硬盘空间,并希望能从磁盘启动 系统,DOS在格式化硬盘时,把硬盘划分为主引导记录区和多个系统分区。
对于硬盘空间的分配由两个部分组成:第一部分就是整个硬盘的第一扇区,这一扇区 称之为硬盘的主引导程序扇区,它由两部分内容组成,一是主引导程序,二是分区信息表。 主引导程序是硬盘启动时首先执行的程序,由它装入执行活动分区(活动分区)引导程序, 从而进一步引导系统。分区信息表登记各个分区引导指示符、操作系统指示符以及该分区 占用硬盘空间的位置及其长度;第二部分是各个系统分区。各个系统分区是提供给各操作 系统使用的区域,每一区域只能存放一种操作系统,在该区域中的系统具有自己的引导记 录、文件分配表区、文件目录区以及数据区。 若整个硬盘归DOS使用,硬盘上信息由5部分即第1扇区的主引导程序和分区信息 表、分区引导程序、文件分配表区、文件根目录区、文件数据区。
硬盘主引导扇区很特殊,它不在DOS的管辖范围内。所以用DOS的非常驻命令 FORMAT、FDISK、DEBUG都不能触及它。当该扇区损坏时,硬盘不能启动。 用FORMAT、FDISK都不能修复它。DEBUG的L命令和W命令都不能用于主引导扇区。只有 在DEBUG下借用INT 13H或低级格式化方能修复。
2.系统型病毒的磁盘存储结构 系统型病毒是指专门传染操作系统的启动扇区,主要指传染硬盘主引导扇区和DOS 引导扇区的病毒。系统型病毒在磁盘上的存储结构是这样的,病毒程序被划分为两部分, 第一部分存放在磁盘引导扇区中,第二部分则存放在磁盘其他的扇区中。病毒程序在感染 一个磁盘时,首先根据FAT表在磁盘上找到一个空白簇(如果病毒程序的第二部分占用 若干个簇,则需要找到一个连续的空白簇),然后将病毒程序的第二部分以及磁盘原引导 扇区的内容写入该空白簇,接着将病毒程序的第一部分写入磁盘引导扇区。 但是,由于磁盘不同,病毒程序第二部分所占用的空白簇的位置就不同,而病毒程序 在侵入系统时,又必须将其全部程序装入内存,在系统启动时道德装入的是磁盘引导扇区 中的病毒程序,该段程序在执行时要将其第二部分装入内存,这样第一部分必须知道其第 二部分所在簇的簇号或逻辑扇区号。为此,在病毒程序感染一个磁盘时,不仅要将其第一 部分写入磁盘引导扇区,而且必须将病毒程序第二部分所在簇的簇号(或该簇第一扇区的 逻辑扇区号)记录在磁盘的偏移地址01F9处,存放其第二部分所在簇第一扇区的逻辑扇 区号。
另外,由于DOS分配磁盘空间时,必须将分配的每一簇与一个文件相联系,但是,系 统型病毒程序第二部分所占用的簇没有对应的文件名,它们是以直接磁盘读写的方式被 存取的,这样它们所占用的簇就有可能被DOS分配给新建立的磁盘文件,从而被覆盖。为 了避免这样的情况发生,病毒程序在将其第二部分写入空白簇后,立即将这些簇在FAT 中登记项的内容,强制地标记为坏簇(FF7H),经过这样处理后,DOS就不会将这些簇分 配给其他新建立的文件。
3.文件型病毒的磁盘存储结构 文件型病毒是指专门感染系统中的可执行文件,即扩展名为.COM、.EXE的文件。 对于文件型的病毒来说,病毒程序附着在被感染文件的首部、尾部、中部或“空闲”部位, 病毒程序没有独立占用磁盘上的空白簇。也就是说,病毒程序所占用的磁盘空间依赖于 其宿主程序所占用的磁盘空间。但是,病毒入侵后一定会使宿主程序占用的磁盘空间 增加。 绝大多数文件型病毒属于所谓外壳病毒,什么是文件外壳呢?简单地说是计算机软件 的一种层次结构。比方说计算机软件公司编制了一种教育软件,经过设计调试,软件本身 的功能已经很完善,可以作为独立的磁盘文件提供给用户。但为了提高产品的商品化程 序,公司决定为软件加一个漂亮的封面,为此设计人员可以在已经完成的软件基础上附加 一段显示封面的程序。通常我们称软件本身为内核,而附加的显示封面程序称为外壳,加载运行关系。
尽管在结构上外壳接在内核后面,但运行的顺序仍然是先显示封面再跳 转去执行内核。可执行文件的外壳一般具有相对独立的功能和结构,去掉外壳将不会影响 内核部分的运行。 如果我们用“病毒外壳”去替换图中的“封面外壳”,那么就已经说明了文件型病毒的 基本机理。 计算机病毒一般不传染数据文件,这是由于数据文件是不能执行的,如果病毒传染了 数据文件以后,病毒自身得不到执行权,也就不能进行进一步的传播,所以计算机病毒不 可能存在于数据文件中,但可能修改和破坏数据文件。
|