精华内容
下载资源
问答
  • 硬盘分区结构windows文件系统结构

    千次阅读 2015-09-29 11:20:06
    硬盘分区结构windows文件系统结构 关于硬盘分区 关于INT 13 硬盘分区结构windows文件系统结构 1.关于硬盘分区:   IDE接口硬盘中,不管什么操作系统,都有如下结构: MBR(Master ...
    
    

    硬盘分区结构及windows文件系统结构

    1.关于硬盘分区: 

       IDE接口硬盘中,不管什么操作系统,都有如下结构:

    MBR(Master Boot Record)及基本分区表

    分区1

    分区2

    ......

    分区n

    MBR和基本分区表共用硬盘的第一个扇区(即0面0道1扇区,以后简称第一扇区MBR),分区表位于扇区的最后66字节,除了最后的2字节55AA外,为4条分区记录,每条分区记录16字节。

    各字段含义如下:

    偏移

    意义

    0

    自举标志(80为活动分区,00为非活动分区)

    1

     起始磁头号H

    2

    起始扇区号S

    3

    起始柱面号CYL(CYL的高2位存放在S字节的高2位

    4

    分区格式标志(01:fat12;05:extended;06:fat16;07:hpfs/ntfs;0b,0d:win95 fat32;0e:win95 fat16;82:linux swap;83:linux;85:linux extended) 

    5

    终止磁头号H

    6

    终止扇区号S

    7

    终止柱面号CYL

    8-11

    本分区之前已用扇区数(当分区表属于扩展分区中的记录时,该值为相对扩展分区首地址的位置)

    12-15

    本分区扇区总数

    注意:C/H/S的编址从0/0/1开始)

    可以看出,使用C/H/S三维地址时,磁盘的寻址空间最多只有224个扇区,即8GB的容量,当磁盘容量大于8GB时,C/H/S就无法寻址了。
    于是采用LBA(logic block address)线性地址来寻址。在LBA方式下系统把所以的物理扇区都按某种方式或规则看做是一线性编号的扇区,即从0到某个最大值方式排列。
    C/H/S到LBA:
     LBA=(C-c)*PH*PS+(H-h)*PS+(S-s)
    一般情况下c=0,h=0,s=1,PS=63,PH=255,PS表示每磁道多少扇区,PH表示每柱面多少磁道。
    LBA到C/H/S:
     C=LBA/(PH*PS)+c
     H=(LBA/PS)MOD PH +h
     S=LBA MOD PS + s

    由于MBR只能记录4个分区的信息,windows通过扩展分区来记录多于4个分区的记录,称做虚拟MBR。
    做法是:
    让主MBR在定义分区时,将多余容量定义为扩展分区,指定该分区的起始位置,根据起始位置指向硬盘的某一扇区,作为下一个分区表,在该扇区继续定义分区。如果只有一个分区,就定义该分区,然后结束;如果不止一个分区,就定义一个基本分区和一个扩展分区,扩展分区再指向下一个分区表,在下一个分区表中继续定义分区,直至结束。这样就形成一个分区链,可以描述所有的分区。

    一个分区表的例子:

    MBR

                                                                    80 01
    01 00 0C FE FF FF 3F 00-00 00 FC 8A 38 01 00 00
    C1 FF 83 FE FF FF 3B 8B-38 01 6E 9A F6 00 00 00
    C1 FF 82 FE FF FF A9 25-2F 02 E1 16 08 00 00 00
    C1 FF 0F FE FF FF 8A 3C-37 02 62 43 53 07 55 AA

    EXT-1:

                                                                    00 01
    C1 FF 0B FE FF FF 3F 00-00 00 37 16 71 02 00 00
    C1 FF 05 FE FF FF 76 16-71 02 3B 8B 38 01 00 00
    00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA

    EXT-2:

                                                                   00 01
    C1 FF 0B FE FF FF 3F 00-00 00 FC 8A 38 01 00 00
    C1 FF 05 FE FF FF B1 A1-A9 03 2C D5 FB 02 00 00
    00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA

    EXT-3:

                                                                     00 01
    C1 FF 0B FE FF FF 3F 00-00 00 ED D4 FB 02 00 00
    C1 FF 05 FE FF FF DD 76-A5 06 3E 15 AC 00 00 00
    00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA

    EXT-4:

                                                                    00 01
    C1 FF 0B FE FF FF 3F 00-00 00 FF 14 AC 00 00 00
    C1 FF 05 FE FF FF 1B 8C-51 07 47 B7 01 00 00 00
    00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA

    EXT-5:

                                                                    00 01
    C1 FF 07 FE FF FF 3F 00-00 00 08 B7 01 00 00 00
    00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA


    注意:系统在启动时按照分区链的顺序查找分区,直到找出所有分区,如果分区链形成一个环,就形成所谓硬盘"逻辑锁",导致系统无法启动,软盘也无法启动。由于windows启动过程在io.sys中决定的,可以查找io.sys,将第一个55AA改成其他数值,程序还没开始查找分区表就结束,就避开了对分区表的检测)


    2.关于INT 13

    2.1通过int 13来读取物理扇区的例子:

    a100
    mov ax,201
    mov bx,200
    mov cx,1
    mov dx,80
    int 13
    int 3
    g=100

    参数解释:

    • al:读写扇区数
    • bx:缓冲区地址
    • dh:磁头号
    • dl:设备号(A盘是0,B是1,第一硬盘是80,第二硬盘是81)
    • ch:柱面号低8位
    • cl:低6位为要读的起始扇区号,高2位为柱面号的高2位。

    2.2扩展INT 13:

    数据类型约定:

    BYTE

    1字节整型(8 位)

    WORD

    2字节整型(16 位)

    DWORD

    4字节整型(32 位)

    QWORD

    8字节整型(64 位)

    磁盘地址数据包 Disk Address Packet (DAP)
        DAP 是基于绝对扇区地址的, 因此利用 DAP, Int13H 可以轻松地逾
    越 1024 柱面的限制, 因为它根本就不需要 CHS 的概念.
        DAP 的结构如下:
        struct DiskAddressPacket
        {
            BYTE PacketSize;    // 数据包尺寸(16字节)
            BYTE Reserved;      // ==0
            WORD BlockCount;    // 要传输的数据块个数(以扇区为单位)
            DWORD BufferAddr;    // 传输缓冲地址(segment:offset,在内存中为offset在低地址
        如166b:400在内存中为:00 04 6b 16)
            QWORD BlockNum;      // 磁盘起始绝对块地址(即LBA地址)
        };

    驱动器参数数据包 Drive Parameters Packet
      驱动器参数数据包是在扩展 Int13H 的取得驱动器参数子功能调用中
    使用的数据包. 格式如下:
        struct DriveParametersPacket
        {
            WORD InfoSize;          // 数据包尺寸 (26 字节)
            WORD Flags;            // 信息标志
            DWORD Cylinders;        // 磁盘柱面数
            DWORD Heads;            // 磁盘磁头数
            DWORD SectorsPerTrack;  // 每磁道扇区数
            QWORD Sectors;          // 磁盘总扇区数
            WORD SectorSize;        // 扇区尺寸 (以字节为单位)
        };

    2.2.1) 检验扩展功能是否存在 
    入口: 
      AH = 41h 
      BX = 55AAh 
      DL = 驱动器号

    返回: 
      CF = 0 
       AH = 扩展功能的主版本号 
       AL = 内部使用 
       BX = AA55h 
       CX = API 子集支持位图 
      CF = 1 
       AH = 错误码 01h, 无效命令

      这个调用检验对特定的驱动器是否存在扩展功能.如果进位标志置 1 
    则此驱动器不支持扩展功能. 如果进位标志为 0, 同时 BX = AA55h, 则 
    存在扩展功能. 此时 CX 的 0 位表示是否支持第一个子集,1位表示是否 
    支持第二个子集. 
      对于 1.x 版的扩展 Int13H 来说, 主版本号 AH = 1. AL是副版本号, 
    但这仅限于 BIOS 内部使用, 任何软件不得检查 AL 的值.

    2.2.2) 扩展读 
    入口: 
      AH = 42h 
      DL = 驱动器号 
      DS:SI = 磁盘地址数据包(Disk Address Packet)

    返回: 
      CF = 0, AH = 0 成功 
      CF = 1, AH = 错误码

      这个调用将磁盘上的数据读入内存. 如果出现错误, DAP 的BlockCount 
    项中则记录了出错前实际读取的数据块个数.

    2.2.3) 扩展写 
    入口: 
      AH = 43h 
      AL 
       0 位 = 0 关闭写校验 
           1 打开写校验 
       1 - 7 位保留, 置 0 
      DL = 驱动器号 
      DS:SI = 磁盘地址数据包(DAP) 
    返回: 
      CF = 0, AH = 0 成功 
      CF = 1, AH = 错误码

      这个调用将内存中的数据写入磁盘. 如果打开了写校验选项,但 BIOS 
    不支持, 则会返回错误码 AH = 01h, CF = 1. 功能 48h可以检测BIOS是否 
    支持写校验. 
      如果出现错误, DAP 的 BlockCount项中则记录了出错前实际写入的数 
    据块个数.

    2.2.4) 校验扇区 
    入口: 
      AH = 44h 
      DL = 驱动器号 
      DS:SI = 磁盘地址数据包(Disk Address Packet)

    返回: 
      CF = 0, AH = 0 成功 
      CF = 1, AH = 错误码

      这个调用校验磁盘数据,但并不将数据读入内存.如果出现错误, DAP 的 
    BlockCount 项中则记录了出错前实际校验的数据块个数.

    2.2.5) 锁定/解锁驱动器 
    入口: 
      AH = 45h 
      AL 
        = 0 锁定驱动器 
        = 1 驱动器解锁 
        = 02 返回锁定/解锁状态 
        = 03h-FFh - 保留 
      DL = 驱动器号

    返回: 
      CF = 0, AH = 0 成功 
      CF = 1, AH = 错误码

      这个调用用来缩定指定驱动器中的介质. 
      所有标号大于等于 0x80 的可移动驱动器必须支持这个功能.如果 
    在支持可移动驱动器控制功能子集的固定驱动器上使用这个功能调用,将 
    会成功返回. 
      驱动器必须支持最大255次锁定, 在所有锁定被解锁之前,不能在物理上 
    将驱动器解锁. 解锁一个未锁定的驱动器,将返回错误码 AH= B0h.如果锁定一 
    个已锁定了255次的驱动器, 将返回错误码 AH = B4h. 
      锁定一个没有介质的驱动器是合法的.

    2.2.6) 弹出可移动驱动器中的介质 
    入口: 
      AH = 46h 
      AL = 0 保留 
      DL = 驱动器号

    返回: 
      CF = 0, AH = 0 成功 
      CF = 1, AH = 错误码

      这个调用用来弹出指定的可移动驱动器中的介质. 
      所有标号大于等于 0x80 的可移动驱动器必须支持这个功能.如果 
    在支持可移动驱动器控制功能子集的固定驱动器上使用这个功能调用,将 
    会返回错误码 AH = B2h (介质不可移动).如果试图弹出一个被锁定的介质 
    将返回错误码 AH = B1h (介质被锁定). 
      如果试图弹出一个没有介质的驱动器, 则返回错误码 Ah =31h (驱动器 
    中没有介质). 
      如果试图弹出一个未锁定的可移动驱动器中的介质,Int13h会调用 Int15h 
    (AH = 52h) 来检查弹出请求能否执行.如果弹出请求被拒绝则返回错误码(同 
    Int15h). 如果弹出请求被接受,但出现了其他错误, 则返回错误码 AH =B5h.

    2.2.7) 扩展定位 
    入口: 
      AH = 47h 
      DL = 驱动器号 
      DS:SI = 磁盘地址数据包(Disk Address Packet)

    返回: 
      CF = 0, AH = 0 成功 
      CF = 1, AH = 错误码

      这个调用将磁头定位到指定扇区.

    2.2.8) 取得驱动器参数 
    入口: 
      AH = 48h 
      DL = 驱动器号 
      DS:SI = 返回数据缓冲区地址

    返回: 
      CF = 0, AH = 0 成功 
        DS:SI 驱动器参数数据包地址,(参见前面的文章) 
      CF = 1, AH = 错误码

      这个调用返回指定驱动器的参数.

    2.2.9) 取得扩展驱动器介质更换检测线状态 
    入口: 
      AH = 49h 
      DL = 驱动器号

    返回: 
      CF = 0, AH = 0 介质未更换 
      CF = 1, AH = 06h 介质可能已更换

      这个调用返回指定驱动器的介质更换状态. 
      这个调用与 Int13h AH = 16h 子功能调用相同,只是允许任何驱动器 
    标号.如果对一台支持可移动介质功能子集的固定驱动器使用此功能,则永远 
    返回 CF = 0, AH = 0. 
      简单地将可移动介质锁定再解锁就可以激活检测线,而无须真正更换介质.

    2.2.10) Int 15h 可移动介质弹出支持 
    入口: 
      AH = 52h 
      DL = 驱动器号 
    返回: 
      CF = 0, AH = 0 弹出请求可能可以执行 
      CF = 1, AH = 错误码 B1h 或 B3h 弹出请求不能执行 
      这个调用是由 Int13h AH=46h弹出介质功能调用内部使用的

    注:MBR的分区表中,8-11字节——本分区之前已用扇区数,即该分区首扇区的LBA地址。通过扩展int 13即可访问磁盘的任意扇区


     

    3.FAT文件系统的结构:

    3.1 FAT12,FAT16:
    DBR--FAT1--FAT2--DFT--DATA
    DBR只占1个扇区,DFT为根目录表,根目录下的DIR项数固定,一般为512项,每项占32字节,即DIR占32个扇区
    则一个文件的逻辑扇区号:

    逻辑扇区号=1+2*FAT占用的扇区数+DIR占用的扇区数+(起始簇号-2)*每簇扇区数

    3.2FAT32:
    DBR和其后的保留扇区--FAT1--FAT2-DATA
    在DBR使用3个扇区,实际只使用第1个扇区,2,3扇区也写入55AA标志,之后有保留扇区,一般为20h或21h,其中第6扇区是DBR的备份。同时DIR当作文件处理,不在固定位置,也没有固定大小
    则文件的逻辑扇区号:

    逻辑扇区号=保留扇区数+2*FAT占用扇区数+(起始簇号-2)*每簇扇区数
    此时因为DIR不固定,要在BPB中读出DIR的入口簇。

    对于一个确定的分区,可通过逻辑地址来访问该分区中的扇区。逻辑地址从0开始。

    在98和dos下可用debug的L命令来访问:

    L [address] [drive] [firstsector] [number]
    读逻辑盘的扇区,扇区号为逻辑地址,0为DBR即BOOT区
    drive按A,B,C,D排序,对应0,1,2,3...
    对应W命令:
    W [address] [drive] [firstsector] [number]
    W若不带参数,或只有地址参数,则按BX:CX寄存器指出的字节,从内
             存向磁盘写入数据。此时的文件名是此命令前最后一个使用过的文件名
             ,或者是N命令中指定的文件,如果没有使用过N命令,则使用Debug命
            令行中指定的文件。

    DBR(dos boot record)操作系统可访问的第一个扇区。包括一个引导程序和BPB(bios parameter block)的本分区参数记录表。

    FAT(file allocation table)fat中的记录和磁盘上的簇对应。FAT2为FAT1的备份。FAT的格式有多种,其中FAT16是指文件分配表使用16位表示一个簇,FAT12,FAT32同理。可知FAT16最多能管理65536个簇,而每簇最大32kb,所以FAT16每个分区最大2GB。
    注:FAT的0,1簇保留,0字节表示磁盘类型,簇号从2开始。


    DFT(文件目录表)根目录区,只存在FAT12和FAT16中,紧跟在FAT2后。根目录下的文件和子目录在DFT中都有一个‘目录登记项'每个项占32字节,项数在BPB中说明。FAT32中DFT无固定位置,把DFT当作一个普通文件处理,在BPB中指出DFT首簇地址。

    长文件名规则:
    目录项保存该文件的短文件名,长文件名用若干个长文件名目录向保存,长文件名目录项倒序排列在文件短目录项前面,采用双字节unicode内码保存,每项最多13个内码,首字节是顺序字节,指明是长文件名的第几项,11字节为0F,12字节指明类型,13字节为校验和,26,27字节为0。
    --------------------------------------------------------------------------
    3.3 FAT文件系统的的一些参数:

    3.3.1 FAT16的BPB:

    偏移

    长度

    说明

    00

    3

    JMP指令;跳转到引导程序。后随一个空操作。(不属BPB)

    03

    8

    OEM标志(FAT16为MSWIN4.0)

    0B

    2

    每扇区字节数

    0D

    1

    每簇扇区数

    0E

    2

    dos保留扇区数

    10

    1

    FAT数

    11

    2

    根目录项数,如512

    13

    2

    扇区数(小于32M的分区)

    15

    1

    介质描述符

    16

    2

    每FAT扇区数

    18

    2

    每磁道扇区数(逻辑参数)

    1A

    2

    磁头数(逻辑参数

    1C

    4

    隐含扇区(即分区表中的8-11字节——本分区之前已用扇区数)***

    20

    4

    扇区数(即分区表中的12-15字节)

    24

    1

    BIOS设备号(hex:HD=8x)

    25

    1

    未使用

    26

    1

    扩展引导标记

    27

    4

    卷序列号(随机)

    2B

    11

    卷标,分区标识,如:WIN98

    36

    8

    文件系统格式:FAT16

    3.3.2 FAT32的BPB:
    偏移 长度 说明

    00

    3

    JMP指令

    03

    8

    OEM标志(FAT32为MSWIN4.1)

    0B

    2

    每字节扇区数

    0D

    1

    每簇扇区数

    0E

    2

    dos保留扇区数,FAT32中一般是32

    10

    1

    FAT数

    11

    2

    根目录项数,一般为0,未使用

    13

    2

    扇区数(小于32M的分区,FAT32中不再使用)

    15

    1

    介质描述符

    16

    2

    每FAT扇区数(FAT32下不用)

    18

    2

    每磁道扇区数(逻辑参数)

    1A

    2

    磁头数(逻辑参数)

    1C

    4

    隐含扇区(即分区表中的8-11字节——本分区之前已用扇区数)***

    20

    4

    扇区数(即分区表中的12-15字节)

    24

    4

    每FAT扇区数

    28

    2

    标记

    2A

    2

    版本

    2C

    4

    根目录首簇地址

    30

    2

    DBR占用的扇区数

    32

    2

    备份DBR地址

    34

    12

    保留

    40

    1

    BIOS设备号(hex:HD=8x)

    41

    1

    未使用

    42

    1

    扩展引导标记

    43

    4

    卷序列号(随机)

    47

    11

    卷标,分区标识,如:WIN2000

    52

    8

    文件系统格式:FAT32
    3.3.3 磁介质描述符:
    十六进制 说明

    F8

    硬盘

    F9

    双面5in软盘(15扇区高密度)双面3in软盘

    FA

    双面3in RAM虚拟盘

    FC

    单面5in软盘(9扇区高密度) 双面8in盘

    FD

    双面5in盘(9扇区低密度)

    FE

    单面8in盘(单、双密度)单面5in盘(8扇区低密度)

    FF

    双面5in盘(8扇区低密)
    3.3.4 FAT中每个簇号可取的表项值及含义:

    表项值(12位)

    表项值(16位)

    表项值(32位)

    簇描述含义

    000H 

    0000H

    00000000H

    未使用的簇

    002H-FEFH

    0002H-FFEFH

    00000002H-FFFFFFEFH

    已分配的簇(可见簇号从2开始)

    FF0H-FF6H 

    FFF0H-FFF6H

    FFFFFFF0H-FFFFFFF6H

    保留

    FF7H

    FFF7H

    FFFFFFF7H

    坏簇

    FF8H-FFFH

    FFF8H-FFFFH

    FFFFFFF8H-FFFFFFFFH

    文件结束簇

    3.3.5 FAT16的FDT字段含义:

    偏移

    长度

    说明

    0-7

    8

    文件名

    8-10

    3

    扩展名

    11

    1

    属性字节(00000000读写,00000001只读,00000010隐藏,00000100系统,00001000卷标,00010000子目录,00100000档案)

    12-21

    10

    保留未用

    22-23

    2

    文件创建时间(hhhhh mmmmmm sssss)

    24-25

    2

    文件创建时间(yyyyyyy mmmm ddddd)

    26-27

    2

    表示文件的首簇号

    28-31

    4

    文件长度
    3.3.6 FAT32的FDT字段含义:

    偏移

    长度

    说明

    0-7

    8

    文件名

    8-10

    3

    扩展名

    11

    1

    属性字节(同FAT16,但为0FH时,表示该项为长文件名记录项)

    12-13

    2

    种类、校验和

    13-15

    3

    文件创建时间(hhhhh mmmmmm sssss,后8位为毫秒数)

    16-17

    2

    文件创建时间(yyyyyyy mmmm ddddd)

    18-19

    2

    最新访问日期,定义同16-17

    20-21

    2

    起始簇的高16位

    22-23

    2

    最新修改时间(hhhhh mmmmmm sssss)

    24-25

    2

    最新修改日期,定义同16-17

    26-27

    2

    起始簇的低16位

    28-31

    4

    文件长度

    通过以上信息,经过debug的L命令即可读出FAT系统中任意文件的内容。
    --------------------------------------------------------------------------
    4.NTFS文件系统的结构:

    分区引导扇区——MFT(主文件表)——系统文件——文件区域

    在NTFS中,磁盘上的任何事物都为文件。
    文件通过MFT来确定其在磁盘上的存储位置。主文件表是一个与文件相对应的数据库,由一系列文件记录组成——卷中每个文件都有一个文件记录(对于大型文件可能有多个记录与之对应)。主文件表自身也有它自己的记录。MFT的文件记录大小一般是固定的,不管簇的大小是多少,均为1k。MFT仅供系统本身组织架构文件系统使用,被称为元数据,不能被应用程序访问。其中最基本的前16个记录是操作系统使用的非常重要的元数据文件。这些文件都以‘$'开始,是隐藏文件,不能用dir命令列出。不过有个工具nfi.exe可以转储重要的元数据文件。

    NTFS使用逻辑簇号LCN和虚拟簇号VCN来对簇进行定位。LCN是对整个卷从头到尾的编号,相当于FAT系统的逻辑簇号。VCN是对特定文件的簇从头到尾进行编号。VCN可以映射成LCN。

    非常驻数据属性的VCN-LCN映射

    NTFS把磁盘分成两大部分,大约12%分配给MFT,余下的用来存储文件。

    NTFS通过MFT访问卷的过程如下:

    • 首先必须装载该卷——查看引导文件($Boot元数据文件),找到MFT的物理地址;
    • 然后从文件记录的数据属性中获得VCN到LCN的映射信息,并存储在内存中。这个映射信息定位了MFT的运行(run或extent,见常驻属性与非常驻属性)在磁盘上的位置;
    • 接着再打开几个元数据文件的MFT记录,并打开这些文件。此后,用户就可以访问该卷了。

    NTFS将文件作为‘属性/属性值'的集合来处理。文件数据就是未命名属性的值。一个文件通常占用一个文件记录。但当一个文件具有很多项属性值或很零碎的时候,就可能需要占用一个以上的文件记录。这种情况下,第一个文件记录是其基本的文件记录,存储有该文件需要的其他文件记录的位置。小文件和文件夹将全部存储在文件的MFT记录里。
    NTFS的文件夹只是一个简单的文件名和文件引用号的索引,如果目录列表小于一个记录的长度,那么,该文件夹的所有信息都存储在主文件表的记录中。对于大于记录的文件夹则使用B+树进行管理,并用一个指针指向一个外部簇,该簇用来存储那些MFT内存储不了的文件夹的属性。

    大目录的MFT记录

    当一个文件很小时,其所有属性和属性值都可以存放在MFT的文件记录中。当属性值能直接存放在MFT中时,该属性就称为常驻属性(resident attribute)。有些属性总是常驻的,这样NTFS才可以确定其他非常驻属性。

    大文件或大目录的所有属性,就不可能常驻在MFT中。如果一个属性太大而不能存放在只有1KB大小的MFT文件记录中,那么NTFS将从MFT之外为之分配区域。这些区域通常称为一个运行(run)或一个盘区(extent),它们可用来存储属性值,如文件数据。如果以后属性值又增加,那么,NTFS将回再分配一个运行,以便用来存储额外的数据。值存储在运行中而不是在MFT文件记录中的属性称为非常驻属性。
    在标准属性中,只有可以增长的属性才是非常驻的。对文件来说,可增长属性有数据、属性列表等。

    mft记录可能的存储情况

    4.1 NTFS的BPB:

    偏移

    长度

    说明

    00

    3

    JMP指令

    03

    8

    OEM标志

    0B

    2

    每扇区字节数

    0D

    1

    每簇扇区数

    0E

    2

    保留扇区

    10

    3

    总为0

    13

    2

    NTFS未使用,总为0

    15

    1

    介质描述

    16

    2

    总为0

    18

    2

    每磁道扇区数

    1A

    2

    磁头数

    1C

    4

    隐含扇区

    20

    4

    NTFS未使用,总为0

    24

    4

    NTFS未使用,总为0

    28

    8

    扇区总数

    30

    8

    $MFT的逻辑簇号

    38

    3

    $MFTMirr的逻辑簇号

    40

    4

    每MFT记录簇数

    44

    4

    每索引簇数

    48

    8

    卷标

    50

    4

    校验和

    4.2 NTFS元文件:

    序号

    元文件

    功能

    0

    $MFT

    主文件表本身

    1

    $MFTMirr

    主文件表的部分镜像(内容就是前16个文件记录)

    2

    $LogFile

    日志文件

    3

    $Volume

    卷文件

    4

    $AttrDef

    属性定义列表

    5

    $Root

    根目录

    6

    $Bitmap

    位图文件

    7

    $Boot

    引导文件

    8

    $BadClus

    坏簇文件

    9

    $Secure

    安全文件

    10

    $UpCase

    大写文件

    11

    $Extend metadata directory

    扩展元数据目录

    12

    $Extend/$Reparse

    重解析点文件

    13

    $Extend/$UsnJrnl

    变更日志文件

    14

    $Extend/Quota

    配额管理文件

    15

    $Extend/$ObjId

    对象ID文件

    16-23

     

    保留

    23+

     

    用户文件和目录

    4.3 MFT的结构:

    偏移

    长度

    属性

    00

    4

    标志,一定是‘FILE'

    04

    2

    更新序列US的偏移

    06

    2

    更新序列号USN的大小与数组,包括第一个字节

    08

    8

    日志文件序列号

    10

    2

    序列号(SN)

    12

    2

    硬连接数

    14

    2

    第一个属性的偏移地址

    16

    2

    标志,1表示记录正在使用,2表示该记录为目录

    18

    4

    记录头和属性的总长度,即文件记录的实际长度

    1C

    4

    总共分配给记录的长度

    20

    8

    基本文件记录中的文件索引号

    28

    2

    下一属性ID

    2A

    2

    Windows XP中使用,边界

    2C

    4

    Windows XP中使用,文件记录号

    4.4 标准索引头结构:

    偏移

    长度

    属性

    00

    4

    总是‘INDEX'

    04

    2

    更新序号偏移

    06

    2

    更新序列号USN的大小与排列,包括第一个字节

    08

    8

    日志文件序列号LSN

    10

    8

    该索引缓冲在索引分配中的索引VCN

    18

    4

    索引入口偏移(相对18)

    1C

    4

    索引入口的大小(相对18)

    20

    4

    索引入口的分配大小(相对18)

    24

    1

    非页级接点为1(有子索引)

    25

    3

    总是0

    28

    2

    更新序列号

    2A

    2S-2

    更新序列排列

    4.5 常用索引表:

    名称

    索引

    说明

    $I30

    文件名

    目录使用

    $SDH

    安全描述

    $Secure

    $SII

    安全IDS

    $Secure

    $O

    对象Ids

    $ObjId

    $O

    所有者

    $Quota

    $Q

    配额

    $Quota

    $R

    重解析点

    $Reparse

    4.6 NTFS卷上常用的属性说明:

    属性名

    属性描述

    $VOLUME_INFORMATION

    卷信息,仅存在于$Volume元数据文件中

    $VOLUME_NAME

    卷名称或标识,仅存在于$Volume元数据文件中

    $STANDARD_INFORMATION

    标准信息,包括基本文件属性,如只读、存档;时间标记;有多少目录指向本文件(即硬连接数)

    $FILE_NAME

    文件名,以Unicode表示

    $SECURITY_DESCRIPTOR

    安全描述符。(2000/XP将所有的文件安全描述符放在$Secure元数据文件中,早期版本将它与文件目录放在一起)

    $DATA

    文件数据

    $INDEX_ROOT

    索引根

    $INDEX_ALLOCATION

    索引分配

    $BITMAP

    位图

    $ATTRIBUTE_LIST

    属性列表

    $OBJECT_ID

    对象ID:一个具有64个字节的标识符,其中最低16字节对卷来说是唯一的

    $REPARSE_POINT

    重解析点

    $EA

    扩充属性

    $EA_INFORMATION

    扩充属性信息

    $LOGGED_UTILITY_STREAM

    EFS加密属性
    展开全文
  • Windows系统结构

    2020-12-07 19:38:34
    Windows 采用了双模式结构来保护操作系统本身。操作系统核心运行在内核模式,应用程序的代码运行在用户模式下。每当应用程序需要用到系统内核或内核的扩展模块(内核驱动程序)所提供的服务时,应用程序通过硬件指令...

      Windows系统结构

    Windows系统结构,如图:

    Windows 采用了双模式结构来保护操作系统本身。操作系统核心运行在内核模式,应用程序的代码运行在用户模式下。每当应用程序需要用到系统内核或内核的扩展模块(内核驱动程序)所提供的服务时,应用程序通过硬件指令从用户模式切换到内核模式中;当系统内核完成了所请求的服务以后,控制权又回到用户模式代码。

    一、  Windows内核结构

    Windows内核分为三层,硬件抽象层(Hardware Abstraction Layer ,简称HAL), HAL之上是内核层,有时候也称为微内核,在内核层之上则是执行体(executive)层。

    硬件抽象层的用意是把所有与硬件相关联的代码逻辑隔离到一个专门的模块中,从而使上面的层次可能做到独立于硬件平台。

    内核层和执行层的分工是,内核层实现操作系统的基本机制,而所有的策略决定则留个执行体。

    Windows 内核的组成结构,如图:

    应用程序最终通过ntdll.dll 切换到内核模式下的执行API函数中,以调用内核中的系统服务。Ntdll.dll 是连接用户模式代码和内核模式系统服务的桥梁。

    1.1  Windows内核中的关键组件

    1.HAL(硬件抽象层)

    Windows Server 2003 的HAL 列表(Intel X86 处理器)

    HAL 文件

    所支持的硬件系统

    Hal.dll

    标准PC

    Halacpi.dll

    ACPI(高级配置和电源接口)PC

    Halapic.dll

    APIC(高级可编程中断控制器)PC

    Halaacpi.dll

    APIC ACPI PC

    Halmaps.dll

    多处理器PC

    Halmacpi.dll

    多处理器ACPI PC

    2. 内核(或微内核)

    它是内核模块ntoskrml.exe 中的下层部分(上层部分为执行体),最接近HAL层,负责现场调度和中断、异常的处理;对于多处理器系统,还负责同步处理器之间的行为。

    Windows 内核实现了抢占式线程调度机制。

    Windows内核管理两种类型的对象:分发器对象(dispatcher object) 和控制对象。分发器对象实现了各种同步功能。Windows内核实现的分发器对象包括事件(event)、突变体(mutant)、信号量(semaphore)、进程(process)、线程(thread)、队列(queue)、门(gate)和定时器(timer)。控制对象被用于内核的操作,包括异步过程调用(APC)、延迟过程调用(DPC)、中断对象等。

    3. 执行体

    执行体是内核模块ntoskrnl.exe 的上层部分,包含5种类型的函数

    1. 被导出的、可在用户模式下调用的函数。如ntdll.dll。
    2. 虽已被到处并且可在用户模式下调用,但无法通过任何一个Windows API调用的函数。
    3. 只能在内核模式下调用的导出函数,并且在Windows DDK/WDK中有关这些函数的文档。
    4. 供执行体组件之间相互调用,但未被文档化的函数。
    5. 属于一个组件的内部函数。

    执行体包含以下组件:

    1. 进程和线程管理器。负责创建进程和线程,以及终止进程和线程。
    2. 内存管理器。实现了虚拟内存管理,负责系统地址空间的内存管理,为每个进程提供了一个私有的地址空间,并且支持进程之间内存共享。
    3. 安全引用监视器(SRM,Security Reference Monitor)。强制在本地计算机上实施安全策略,守护着操作系统的资源,执行对象的保护和审计。
    4. I/O 管理器。实现了与设置无关的输入和输出的功能,负责将I/O请求分发给正确的设备驱动程序以便进一步处理。
    5. 缓存管理器。为文件系统提供了统一的数据缓存支持,允许文件系统驱动程序将磁盘上的数据映射到内存中,并通过内存管理器来协调物理内存的分配。
    6. 配置管理器。负责系统注册表的实现和管理。
    7. 即插即用管理器。负责列举设备,并为每个列举到的设备确定哪些驱动程序是必需的,然后加载并初始化这些驱动程序。
    8. 电源管理器。负责协调电源事件,向设备驱动程序发生电源I/O通知。

    执行体还包含4组主要的支持函数,如下:

    1. 对象管理器。负责创建、管理和删除Windows执行体对象,以及用于表达操作系统吸引的抽象数据类型,比如进程、线程和各种同步对象。
    2. LPC设施。负责同一台机器上的客户进程和服务器进程之间传递消息。
    3. 一组运行时库函数。
    4. 执行体支持例程。例如系统内存分配、互锁的内存访问,两种同步对象(资源和互斥体)的支持。

    4. 设备驱动程序

    设备驱动程式可以懂得加载到系统的模块,其文件扩展名为.sys,是标准的PE文件格式。

    设备驱动程序有三种基本类型:

    1. 即插即用驱动程序(即WDM驱动程序)。
    2. 内核扩展驱动程序(非即插即用驱动程序)。
    3. 文件系统驱动程序。

    5. 文件系统/存储管理

    Windows的原生文件系统是NTFS(NT File System),驱动程序为ntfs.sys。还有一个文件系统格式是FAT(File Allocation Table),是DOS时代发展的文件系统格式。

    Windows支持两种形式的过滤驱动程序:一种直接插入到设备栈中,能够看到每个经过设备栈的文件I/O请求;另一种基于Windows提供的过滤管理器驱动程序(FltMgr)的I/O过滤框架,称为文件系统小过滤驱动程序,以回到方式来想要FltMgr的事件。

    6.网络

    Windows 主要的网络API:

    1. Windows 套接字,简称Winsock。实现并扩展了BSD套接字标准。
    2. WinInet 。一个高层网络API,支持Gopher、FTP、HTTP等多个协议。
    3. 命名管道(named pipe)和邮件槽(mailslot)。用于不同进程之间进行通信。支持不同机器上的进程之间相互通信。命名管道支持连接方式的通信模型;邮件槽支持非链接方式的通信模型,客户进程可以发送广播信息。
    4. NetBIOS 。
    5. RPC。

     

    二、 Windows子系统

    Windows子系统包含内核模式和用户模式,内核模式部分核心是Win32k.sys ,包含2部分,窗口管理和图形设备接口,窗口管理负责收集分发消息,控制窗口显示和管理屏幕输出。图形设备接口部分包含各种形状绘制及文本输出功能。用户模式部分包括Windows子系统csrss.exe 以及一组动态链接库(DLL)。Csrss.exe 进程主要负责控制台窗口的功能,以及创建或删除进程和线程等。子系统Dll 则被直接链接到应用程序中,包括kernel32.dll ,user32.dll,

    gdi32.dll,advapi.dll等,负责实现已经文档化的Windows API函数。

    窗口管理:

    Windows 子系统的用户界面管理有一个层次结构,通常应用程序只是在一个默认的桌面上运行。Windows子系统窗口管理层次结构:

    每个子系统会话都有自己的会话空间,属于某一个会话的资源将从该会话空间中分配。当用户登录到Windows时,操作系统将为该用户建立一个会话;即使用户通过远程桌面或终端服务连接到一个系统中,系统也会为该用户建立一个单独的会话。

    在一个会话中,有一个交互式窗口站,可能还有非交互式窗口站。交互式窗口站中通常有三个桌面:登录桌面、默认桌面和屏幕保护桌面。

    图形设备接口:

    Windows子系统的图形模块结构

    Windows的图形引擎有两方面的特点

    首先,它提供了一套与设备无关的编程接口,即GDI,这使得应用程序可以使用各种底层显示设备的差异;

    其次,应用程序与图形设备驱动程序之间的通信足够高兴,从而即使在频繁的输出和刷新图形元素的情况下,Windows也能够为用户提供良好的视觉效果。

     系统线程和系统进程

    Windows 关键系统进程介绍:

    系统空闲进程(Idle),PID为0,每个处理器或核对应有一个线程

    System进程,xp,server2003 PID 为4,包含了内核模式系统线程

    会话管理器(Session manager smss.exe),这是Windows系统中第一个创建的用户模式进程。启动了子系统进程csrss.exe 和winlogon.exe。

    登录进程winlogon.exe,负责处理交互用户的登录和注销。

    Windows 子系统进程csrss.exe , 负责为用户提供一个子系统环境,包括提供控制台窗口的功能,以及创建和删除进程和线程等。

    本地安全权威子系统进程(lsass.exe),负责本地系统安全策略。

    Shell 进程explorer.exe 。windows 默认Shell,提供了系统与用户打交道的各种界面,包括开始菜单,任务栏等。

    服务控制管理器services.exe ,负责管理Windows的系统服务。

    展开全文
  •  Linux与Windows都是目前主流的操作系统。笔者在此总结了两个操作系统在目录结构上的主要差异。  一、系统默认目录的差异  虽然两个系统安装成功后,都会创建一些系统目录,供操作系统程序使用。通常情况下,...

    目录结构差异

         Linux与Windows都是目前主流的操作系统。笔者在此总结了两个操作系统在目录结构上的主要差异。

     一、系统默认目录的差异

            虽然两个系统安装成功后,都会创建一些系统目录,供操作系统程序使用。通常情况下,windows操作系统安装完成后,建立三个默认目录,分别为C:\Documents and Settings、C:\Program Files、C:\WINDOWS。而Linux系统安装完成后,会创建较多的默认目录。Linux系统下会根据不同的用户创建不同的目录,在各用户的目录中放置一些特定的文件。相比之下,Linux系统默认目录是根据用途来分的,而且分类很细。 Linux下每个用户都会有一个专属的目录,称为主目录,供用户摆放自己的文件。/home目录就是用来放置每个帐户的主目录的。如果是系统管理员root用户,其主目录是不放置在这里的。当新建一个用户,在这个用户首次登陆系统时,操作系统会在这个/home目录下为这个用户创建一个以用户名命名的专属文件夹。其他用户除非有授权,否则无法查看非该用户专属目录中的文件。微软操作系统安装完成后,也会为每个用户在C:\Documents and Settings文件夹下创建用户专属的目录。这一点上,windows和linux有相似之处。但是两者有一个很大的差异。在windows操作系统中,系统管理员Administrator的个人专属目录也是在这个文件夹下。而Linux操作系统中,默认情况下系统管理员账户专属文件夹跟普通帐户的专属文件夹是分开的。系统会专门建立一个/root目录作为系统管理员的专属目录。相比windows系统来说,这就大大提高了linux环境下系统管理员帐户的安全性。 Linux 操作系统是一个多用户操作系统,因此,不同用户之间的文件管理就显得尤为的重要。Linux操作系统会在/home这个目录下为每个用户建立一个专属的文件夹。每个用户在日常工作中,最好尽可能的将个人文件、数据存放在自己的专属目录下,以方便管理,同时可以提高用户个人数据安全性,防止意外破坏。 linux下默认有/cdrom 与 /floppy两个子目录,用来存放光盘与软件的数据。从这个目录我们可以看出两个操作系统的差异。windows系统中把光驱或者软驱都当作一个独立的盘或者分区来对待。但是在Linux系统中,则把他们当作一个目录来对待。不仅如此,在Linux系统下,也没有windows系统磁盘驱动器的概念,也就是说不会看到C:、D:等磁盘标识符。所有分区都被当作目录使用,分别被加载与根目录下。简单来说,Linux下只有一个单独的树状结构。但是在windows系统中,每个分区下都有一个独立的树状结构

          Linux系统下,/tmp是供全部用户临时放置文件的目录,又叫做临时目录。一些应用程序运行中产生的临时文件,也会保存在这个目录中。例如,用户在网络上看电影,播放器的缓冲文件保存在这个临时文件夹中。等到影片播放结束后,这个临时文件夹中的信息就会被清除。通常情况下,重新启动系统后这个临时文件夹中的内容就会被清空。在windows系统中,也有一个临时目录,只是他存储的路径与名字不同而已。两者在临时目录功能上没有本质的差异。

     二、“/”与“\”两个符号的差异 

          上文中已经提到,Linux系统中并没有磁盘驱动器的概念,所有的分区都被当作目录来使用。在Linux下目录是利用“/”来表示的。在Linux操作系统中无论将硬盘分为多少个区,每个分区中的文件及目录,都可以在根目录中找到。 但是,在Windows系统中,要表示文件或者目录的路径时,目录名称之间是以“\”作为表示的。如C:\Documents and Settings目录,它就是以“\”作为标示。

     三、大小写的差异以及查询上的不同

           在windows系统中,c:\U01与c:\u02这两个目录是等价的。但是,在Linux系统中,/u01与/U02两个目录就代表不同的目录。Linux下,/u01与/U02两个目录因为字母大小写不同,所以目录代表的内容不同。但是在windows系统中,则没有这方面的区分。文件或者文件夹大小写是不区分的。 因此,为了便于管理,在Linux下面建立文件夹时,最好都能够采用小写字母。大写字母主要用来表示一些特殊的文件夹。如Desktop,它表示用户的桌面文件。这个文件夹是系统自动建立的。系统在对其命名的时候,把第一个字母大写了,以跟其他文件夹进行区分。所以除非是为了起到一个强调或者区分的作用,最好把文件夹的名字都设置为小写。 另外,在文件查询的时候,文件名字要注意大小写的差异。在搜索文件的时候,Linux系统中主要调用了locate命令。这个命令是从系统中存储文件以及目录名的数据库中搜索文件,查找的速度会比较快。但是它有一个缺点,就是这个数据库中的信息跟实际的情况可能会存在一个时间差。对于刚刚新建的文件、目录,很可能会因为这个数据库尚未更新信息而找不到文件。在这种情况下,往往需要管理员利用updatedb命令来更新该数据库,然后重新进行查询。而在微软的操作系统中不会遇到这种情况。

    展开全文
  • Windows操作系统的体系结构

    千次阅读 2011-09-11 09:58:03
    下面是windows的体系结构:   这是整个windows的体系结构的总览。从图上可以看出系统被分成内核模式和用户模式。 内核模式的构成文件系统的核心文件她包含: hal.dll ntoskrnl.exe 设备驱动 ...
    
    

    下面是windows的体系结构:

     

    这是整个windows的体系结构的总览。从图上可以看出系统被分成内核模式和用户模式。

    内核模式的构成文件是系统的核心文件她包含:

    1. hal.dll
    2. ntoskrnl.exe
    3. 设备驱动
    4. 文件系统驱动
    5. 图形设备驱动
    6. win32k.sys


    1.首先来看第一层HAL(硬件抽象层)

      HAL使得reactOS  内核可以运行在不同的x86母板上。HAL为内核抽象母板的特定代码也许是对不同母板定义一种抽象的接口,向上提供一种标准的接口调用,这样不同的母板就不需要改变内核,思想上有点像驱动程序的设计,不过用在另外一个地方(具体的实现目前还不知道,以后边看代码边了解)。

    2.ntoskrnl(内核)

    内核又分成两层,第一层有的称为核心层(core)提供非常原始且基本的服务,如多处理器的同步、线程调度、中断分派等等。第二层是执行体(EXECUTIVE)内核执行体提供了系统的服务,这里的服务不是指windows服务管理器看到的那种服务,而是一些系统函数。而这些函数被划分成不同的类别:

    具备虚拟存储的内存管理:采用分段和分页以及虚拟内存的方式管理内存的使用。

    1. 对象管理:采用面向对象的思想,用C来实现,在windows中一切资源都被抽象为对象。如文件对象,进程线程对象等。
    2. 进程线程管理:负责创建和终止进程、线程。
    3. 配置管理:负责管理注册表
    4. 安全引用监视:在本地计算机上执行安全策略,保护计算机的资源
    5. I/O管理:实现I/O的设备无关性,并负责把I/O请求分配给相应的设备驱动程序以进一步处理
    6. 即插即用管理器(PNP):确定设备应该由哪个驱动程序来支持并负责加载相应驱动。在启动时的枚举过程中,它收集每个设备所需要的硬件资源,并根据设备的需要来分配合适的硬件资源如I/O端口,IRQ,DMA通道之类,当系统中的设备发生变化时它负责向系统和应用程序发送通知消息。
    7. 电源管理:协调电源时间,通过合理的配置,使得CPU降低电源消耗
    8. 缓冲管理器:将最近使用过的数据留在CACHE中来提高系统的整体性能
    9. 本地过程调用(LPC)管理


     ReactOS因为兼容windows,因此在设计上也提供相同的功能,只是实现方法有所不同而已。

     3.设备驱动程序
        
     设备驱动程序是核心态可加载模块(以.SYS为扩展名,存放在system32\drivers),它们是I/O管理器和相关硬件设备的接口。设备驱动程序采用一种I/O管理所规定的接口标准来编写,因此可以被内核执行体的I/O管理单元调用来驱动硬件的工作。

    4.文件系统驱动程序

    文件系统驱动程序也是核心态可加载模块(以.SYS为扩展名system32\drivers),文件系统其实是强加给存储硬件的一种文件存放规则。某类文件系统其实就是按照他的文件存取规则在存储器上组织文件的信息。比如FAT32 按照FAT32的存储规则来存放文件ext2又按照ext2的文件规则存放文件。

    文件系统按照I/O管理的接口标准来实现一组存储规则,同时文件系统也可以将信息按照自己的存储方式请求I/O管理单元,让I/O管理单元通过这个设备的设备驱动程序将信息存放到该设备上。

    这样的方式使得文件系统只负责存储规则的定义。而驱动程序去处理硬件的调度(比如如何移动磁头臂,采用什么调度算法等)而I/O管理仅仅是他们之间的协调员,至于如何协调,I/O管理向外定义了自己的标准。

    5.图形设备驱动

    这个设备有点独特,从图上来看,(这个图是windows 2000的体系结构图)好像只有内核模式设备驱动也就是win32k.sys才能启动。图形设备驱动其实和其他的设备驱动程序我想也不会有太大的差别(以后看代码在了解)。

    不过有一点可以了解,那就是图形设备驱动是由win32k来驱动的,估计提供的也是硬件驱动。

    6.win32k

    这个东西应该是windows所说的win32子系统的内核部分(原生子系统,其他的子系统是可以分割的),如果没有这个子系统windows就不能运行?(好像微软是这么说的,原因好像是win32 的文档化的 API都是通过这个子系统实现的,据说最初的子系统都通过CSRSS来实现,这个东西最初好像包含至少3个子系统,1.win32,2.OS/2,3.POSIX,随着win32的羽翼逐渐丰满,在发行时就不再包含其他两个。但是还是依然叫CSRSS,慢慢看代码才知道,这些都是道听途说)。

    win32k也被划分成两个部分,第一个是USER32,第二个是GDI32,

    ReactOS的win32K估计基本上都是通过wine移植过来的。

    USER32:

    包含了windows管理的操作吧,比如如何创建窗口,显示窗口,隐藏窗口,移动窗口排列窗口z轴,对拥有窗口的Z轴排序,Region(可视区域)操作,鼠标集中测试等。

    GDI32:

    包含图形设备的绘制操作(这些操作也可以叫服务),比如画点,画线,位图操作等,GDI会将一些复杂的绘图操作转变成简单的绘制请求发送给图形驱动程序(如果这个图形驱动程序不支持复杂绘制)还有就是一些设备无关的位图操作,有的可以保存在内存或文件,而如果将设备无关的位图输出的话就会被转换成设备相关的位图然后再输出。

    展开全文
  • Linux操作系统中的文件目录结构 “/”根目录部分有以下子目录: /usr 目录包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux发行版本的主要的...
  • Linux文件系统结构

    千次阅读 2015-07-02 22:20:56
    写在前面linux区别于windows的其中一个很大的特点是linux采用文件系统结构。即linux只有一个单独的顶级目录结构。所有一切都从 ‘root’ 开始,用 ‘/’ 代表, 并且延伸到子目录。一句话:一切皆文件!当有新的...
  • linux的文件系统采用 级层式的树状目录结构,在此结构中的最上层是根目录`/`,然后在此目录下再创建其他的目录。与windows多个根目录不同,Linux只有一个根目录。在Linux的世界中,一切皆文件
  • windows PE文件结构及其加载机制

    万次阅读 多人点赞 2016-04-29 15:00:50
    1. 概述PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软...虽然使用PE作为可执行文件格式的Windows操作系统已经更换了很多版本,其结构的变
  • PE(Portable Execute)文件Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任何扩展名。那Windows是怎么区分可执行文件和非可执行文件的呢...
  • Windows文件系统以及文件粉碎原理

    万次阅读 热门讨论 2012-04-05 16:39:03
    各种存储方式在物理存储介质不同外,在逻辑层面上都是基于文件系统结构的方式,也就是用户看到的任何文件数据都是已文件和目录的形式展现在我们面前。   小小历史  1956年9月蓝色巨人IBM想世界展示了第一套磁盘...
  • Linux文件系统和目录结构

    千次阅读 2020-10-07 15:39:54
    文章目录基本介绍Windows文件系统Linux文件系统具体的目录结构Linux目录小结 基本介绍 Windows文件系统 windows系统每个磁盘都有一个根目录结构,相当于森林。 Linux文件系统 linux的文件系统采用级层式的树状...
  • 文件系统和目录结构

    千次阅读 2018-09-14 16:22:54
      Linux以文件的形式对...而这些种类繁多的文件被Linux使用目录树进行管理, 所谓的目录树就是以根目录(/)为主,向下呈现分支状的一种文件结构。不同于纯粹的ext2之类的文件系统,我把它称为文件体系,一切...
  • 第二章 Windows CE系统结构 一般认为Windows CE是一个适合嵌入式应用的通用操作系统,然而,从系统的角度来看,Windows CE并不只是一个操作系统,它还包括对多种目标处理器以及外围设备的支持,并提供了系统开发...
  • 文章目录目录日志结构文件系统日志文件系统 日志结构文件系统 技术的改变会给当前的文件系统带来压力。这种情况下,CPU 会变得越来越快,磁盘会变得越来越大并且越来越便宜(但不会越来越快)。内存容量也是以...
  • Linux-文件系统以及目录结构简介

    千次阅读 2016-06-29 21:38:35
    Linux文件系统以及目录结构简介Linux和Windows操作系统中的文件系统些不同,在学习使用Linux之前,能够了解这个不同之处助于后续的学习...一、Linux和Windows文件系统下面分别简单介绍一下启动Windows和Linux之后,它们
  • 前言:最近由于项目需要,研究了一下NTFS文件系统,NTFS文件系统windows使用的文件系统,包括NT,2000,xp系列。无奈万恶资本主义的windows将自家的东西全部藏在阴暗的角落,NTFS理所当然地也不开源,尽管没有源代码...
  • Windows文件系统的过滤器驱动程序设计西安电子科技大学 李新摘要:某些应用程序对文件系统的性能有较高要求。例如媒体播放器需要满足最小数据传输率才能保证视觉上的流畅。由于Windows文件系统本身没有提供这样的...
  • Linux文件系统的目录结构

    千次阅读 2016-02-26 19:35:27
     Linux文件系统采用带链接的树形目录结构,即只有一个根目录(通常用“/”表示),其中含有下级子目录或文件的信息;子目录中又可含有更下级的子目录或者文件的信息。这样一层一层地延伸下去,构成一棵倒置的树,如...
  • Linux文件系统以及目录结构简介

    千次阅读 2016-09-13 10:53:51
    转载: Linux命令大全 理解 chrootchroot命令用来在指定的根目录下运行指令。chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统... 在经过 chroot 命令之后,系统读取到的目录和文件将不
  • Windows 文件系统操作之二[概述]

    千次阅读 2008-10-20 18:30:00
    一般文件系统都组织成目录结构用以实现按名存取。文件系统就是用来合理管理外存上文件数据的系统模块。 Windows支持四种文件系统,它们是:NT文件系统文件分配表,CD-ROM文件系统,以及通用磁盘格式。同时随着...
  • linux文件系统结构

    2006-09-23 13:46:00
    linux采用的是树型结构。最上层是根目录,其他的所有目录都是从根目录出发而生成的。/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,...
  • 一、文件目录树1、Linux文件目录分配的依据FHSFilesystem Hierarchy Standard (FHS)Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种...,类似于Windows操作系统中c盘的文件目录...
  • Windows系统日志文件分析

    千次阅读 2012-09-22 09:44:21
    日志文件,它记录着Windows系统及其各种服务运行的每个细节,对增强Windows的稳定和安全性,起着非常重要的作用。但许多用户不注意对它保护,一些“不速之客”很轻易就将日志文件清空,给系统带来严重的安全隐患。 ...
  • 分析NTFS文件系统内部结构

    千次阅读 2014-07-30 08:38:23
    NTFS、用过Windows系统的人都知道,它是一个很强大的文件系统,支持的功能很多,存储的原理也很复杂。目前绝大多数Windows用户都是使用NTFS文件系统,它主要以安全性和稳定性而闻名,下面是它的一些主要特点。安全性...
  • windows的体系结构

    2016-01-12 12:16:18
    了解了windows的体系结构才知道reactos到底要干什么,以及如何干,因为reactos的目标是兼容windows。 下面是windows的体系结构:   这是整个windows的体系结构的总览。从图上可以...
  • Linux 文件系统的目录结构

    千次阅读 2013-04-16 16:47:52
    1. / 文件系统的入口,最高一级目录; 2. /bin 基础系统所需要的命令位于此目录,是最小系统所需要的命令,如:ls, cp, mkdir等。 这个目录中的文件都是可执行的,一般的用户都可以使用。 3. /boot 包含Linux...
  • Mac文件系统结构

    万次阅读 2016-03-12 12:00:59
    在OS X的系统中,不再有Windows用户熟悉的C盘、D盘,这是因为OS X底层是Unix系统,其目录机构符合Unix系统的规范。MAC机器主板使用了Intel主导的EFI标准,硬盘分区格式采用GPT。这种EFI+GPT的方式相比传统的BIOS+...
  • WINDOWS PE文件结构详细介绍(一)

    千次阅读 2011-05-12 19:57:00
    因为我们现在的c++是在WIN32平台下面运行的,为了以后的学习,有必要先了解一下WINDOWS PE文件结构,这些相关资料来于深入Windows编程>这本书。 PE的意思就是Portable Executable (可移值的执行体),是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 223,474
精华内容 89,389
关键字:

windows的文件系统采用结构