精华内容
下载资源
问答
  • 文件的逻辑结构是从用户观点...按逻辑结构文件有无结构文件和有结构文件两种类型:无结构文件和有结构文件。 无结构文件(流式文件) 无结构文件是最简单的文件组织形式。无结构文件将数据按顺序组织成记录并积累
    文件的逻辑结构是从用户观点出发看到的文件的组织形式。文件的物理结构是从实现观点出发,又称为文件的存储结构,是指文件在外存上的存储组织形式。文件的逻辑结构与存储介质特性无关,但文件的物理结构与存储介质的特性有很大关系。

    按逻辑结构,文件有无结构文件和有结构文件两种类型:无结构文件和有结构文件。

    无结构文件(流式文件)

    无结构文件是最简单的文件组织形式。无结构文件将数据按顺序组织成记录并积累保存,它是有序相关信息项的集合,以字节(Byte)为单位。由于无结构文件没有结构,因而对记录的访问只能通过穷举搜索的方式,故这种文件形式对大多数应用不适用。但字符流的无结构文件管理简单,用户可以方便地对其进行操作。所以,那些对基本信息单位操作不多的文件较适于釆用字符流的无结构方式,如源程序文件、目标代码文件等。

    有结构文件(记录式文件)

    有结构文件按记录的组织形式可以分为:

    1) 顺序文件。

    文件中的记录一个接一个地顺序排列,记录可以是定长的或变长的,可以顺序存储或以链表形式存储,在访问时需要顺序搜索文件。顺序文件有以下两种结构:

    第一种是串结构,记录之间的顺序与关键字无关。通常的办法是由时间决定,即按存入时间的先后排列,最先存入的记录作为第1个记录,其次存入的为第2个记录,依此类推。

    第二种是顺序结构,指文件中的所有记录按关键字顺序排列。

    在对记录进行批量操作时,即每次要读或写一大批记录,对顺序文件的效率是所有逻辑文件中最高的;此外,也只有顺序文件才能存储在磁带上,并能有效地工作,但顺序文件对查找、修改、增加或删除单个记录的操作比较困难。

    2) 索引文件。

    如图4-1所示。对于定长记录文件,如果要查找第i个记录,可直接根据下式计算来获得第i个记录相对于第一个记录的地址:

    然而,对于可变长记录的文件,要查找第i个记录时,必须顺序地查找前i-1个记录,从而获得相应记录的长度L,然后才能按下式计算出第i个记录的首址:

    注意:假定每个记录前用一个字节指明该记录的长度。


    图4-1  索引文件示意图

    变长记录文件只能顺序查找,系统开销较大。为此可以建立一张索引表以加快检索速度,索引表本身是定长记录的顺序文件。在记录很多或是访问要求高的文件中,需要引入索引以提供有效的访问。实际中,通过索引可以成百上千倍地提高访问速度。

    3) 索引顺序文件。

    索引顺序文件是顺序和索引两种组织形式的结合。索引顺序文件将顺序文件中的所有记录分为若干个组,为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项,其中含有该记录的关键字值和指向该记录的指针。

    如图4-2所示,主文件名包含姓名和其他数据项。姓名为关键字,索引表中为每组的第一个记录(不是每个记录)的关键字值,用指计指向主文件中该记录的起始位置。索引表只包含关键字和指计两个数据项,所有姓名关键字递增排列。主文件中记录分组排列,同一个组中关键字可以无序,但组与组之间关键字必须有序。查找一个记录时,通过索引表找到其所在的组,然后在该组中使用顺序查找就能很快地找到记录。


    图4-2  索引顺序文件示意图

    对于含有N个记录的顺序文件,查找某关键字值的记录时平均需要查找N/2次。在索引顺序文件中,假设N个记录分为N1/2组,索引表中有N1/2个表项,每组有N1/2个记录,在查找某关键字值的记录时,先顺序查找索引表,需要查找N1/2/2次,然后再在主文件中对应的组中顺序查找,也需要查找N1/2/2次,这样总共查找N1/2/2+N1/2/2=N1/2次。显然,索引顺序文件提高了查找效率,如果记录数很多,可以釆用两级或多级索引。

    索引文件和索引顺序文件都提高了存取的速度,但因为配置索引表而增加了存储空间。

    4) 直接文件或散列文件(Hash File)

    给定记录的键值或通过Hash函数转换的键值直接决定记录的物理地址。这种映射结构不同于顺序文件或索引文件,没有顺序的特性。

    散列文件有很高的存取速度,但是会引起冲突,即不同关键字的散列函数值相同。
    展开全文
  • 文件的逻辑结构总结

    千次阅读 2016-10-16 21:57:12
    文件的逻辑结构总结@(OS)逻辑结构:从用户观点出发看到的文件的组织形式,是用户可以直接处理的数据及其结构。独立于文件的物理特性。也称为文件组织。 物理结构:从实现的角度出发,OS看到的文件的存储结构。是...

    文件的逻辑结构总结

    @(OS)

    逻辑结构:从用户观点出发看到的文件的组织形式,是用户可以直接处理的数据及其结构。独立于文件的物理特性。也称为文件组织。
    物理结构:从实现的角度出发,OS看到的文件的存储结构。是文件在外存上的存储组织形式。不仅与存储介质的存储性能有关,也与所采用的外存分配方式有关。

    无论是文件的逻辑结构还是物理结构都会影响文件的检索速度。

    这里首先关注逻辑结构:实际上讲的就是在文件的内部,逻辑上数据是如何被组织起来的。
    根据逻辑结构,文件可以分为两个大类:无结构文件有结构文件

    无结构文件

    最简单的文件组织形式。将数据按照顺序组织成记录(记录指的是一组相关数据项的集合)并积累保存,是有序相关信息项的集合。以字节为单位。对记录的搜索只能是穷举搜索。适用于存储源代码,目标代码等。

    有结构文件

    也可称之为记录式文件。分为顺序文件和索引文件。记录可以定长也可以变长。可以顺序存储也可以链表离散存储。

    顺序文件

    通常是定长记录,但也可以是变长记录

    这个类别下也分为两个子类。串结构和顺序结构。
    串结构:记录之间的顺序与关键字(选取的特别的数据项标识记录)无关。通常由时间决定。
    顺序结构:文件中的所有记录按照关键字顺序排列
    对记录进行批量操作时,即每次需要读or写一大批记录,对顺序文件的效率最高。

    索引文件

    主要是针对变长记录的文件。为什么呢。首先,如果记录式定长的,则可以通过:
    Ai=i×L,iLAi

    这种计算本身并不耗时,因此,不必特别加以索引。那么就该问,变长的记录为何要用索引呢?
    答案是,变长的记录无法通过上面的计算推导。只能顺序查找,所以系统开销极大。

    所以建立索引表就势在必行了。
    索引表本身是定长记录的文件。
    每一个索引项指明了该记录的长度。

    索引顺序文件

    顺序和索引两种组织的结合。即:用索引的方式索引顺序文件。 这是被我忽略了的。可以这么理解:顺序文件通常是定长记录,索引针对的是变长记录。如果结合起来会有什么好处呢?
    具体实施是:并非为每个记录建立一个索引,这样太浪费了,而是为一组记录中的第一个记录设置一个表项。

    索引文件由逻辑文件和索引表组成。

    分析:文件的逻辑结构和物理结构都有索引的概念。逻辑索引的目的是加快文件数据的定位,从用户角度出发。物理索引的主要目的是为了管理不连续的物理块,从系统管理的角度出发。

    对索引文件存取,必须查找索引表。索引表项包含每个记录的长度和在逻辑文件中的起始位置。每个记录都有一个索引项,提高了存储的代价。

    文件由N个记录,则顺序文件下平均查找N2次,索引顺序文件下最好的平均查找次数是N次。

    分析:顺序文件自然不必说,就是求一个期望,严格来说是N+12, 索引文件对索引项也是顺序查找,对分组的记录也是顺序查找。为什么一组记录数是N最好,这就要根据2aba2+b2,当且仅当a=b时取得极值。这里也是一样。共N组,平均查找N2次,找到组后,再平均查找次数是N2,共N次。

    20161223 update :

    简单来说索引文件就是对基本的每个逻辑记录添加索引项,像目录一样,可以查找目录进行随机访问。虽然不同于顺序存储的方式,但本质都是可以通过数学计算得到。顺序文件很常见,就是按照顺序分配存储即可。而索引顺序文件呢是对用索引的方式操作顺序文件,对每一组进行索引。

    一般说顺序文件,在定长记录时才能够随机访问,索引不受这个限制。
    也说明了,顺序文件可以存储非定长记录。

    展开全文
  • Linux文件系统目录结构详解

    万次阅读 2017-10-08 13:09:34
    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux...

    引言

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux目录结构的相关知识。

    在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。

    linux文件系统的最顶端是/,我们称/为Linux的root(根目录),也就是 Linux操作系统的文件系统。Linux的文件系统的入口就是/,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。

    FHS诞生

    谈到目录结构,不得不首先了解一下FHS团队的来由。
    由于linux是开放源代码,最开始各大公司和团体根据linux的核心代码做各自的操作,编程。这样就造成在根下的目录的不同。这样就造成个人不能使用他人的linux系统的PC。因为你根本不知道一些基本的配置,文件在哪里,这就造成了混乱。这就是FHS(Filesystem Hierarchy Standard )机构诞生的原因。该机构是linux爱好者自发的组成的一个团体,主要是是对linux做一些基本的要求,不至于是操作者换一台主机就成了linux的‘文盲’。
    根据FHS(http://www.pathname.com/fhs/)的官方文件指出, 他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都能够遵循FHS的标准。 也就是说,FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。 这样做好处非常多,因为Linux操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风格。
    事实上,FHS是根据过去的经验一直再持续的改版的,FHS依据文件系统使用的频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态,用表格来说有点像底下这样:
     
    可分享的(shareable)
    不可分享的(unshareable)
    不变的(static)
    /usr (软件放置处)
    /etc (配置文件)
    /opt (第三方协力软件)
    /boot (开机与核心档)
    可变动的(variable)
    /var/mail (使用者邮件信箱)
    /var/run (程序相关)
    /var/spool/news (新闻组)
    /var/lock (程序相关)
    四中类型:
    1. 可分享的:
    可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
    2. 不可分享的:
    自己机器上面运作的装置文件或者是与程序有关的socket文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
    3. 不变的:
    有些数据是不会经常变动的,跟随着distribution而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
    4. 可变动的:
    经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。
    事实上,FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
    / (root, 根目录):与开机系统有关;
    /usr (unix software resource):与软件安装/执行有关;
    /var (variable):与系统运作过程有关。

    根目录 (/) 的意义与内容

    根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的, 同时根目录也与开机/还原/系统修复等动作有关。 由于系统开机时需要特定的开机软件、核心文件、开机所需程序、 函式库等等文件数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行。 因为根目录是这么的重要,所以在FHS的要求方面,他希望根目录不要放在非常大的分区, 因为越大的分区内你会放入越多的数据,如此一来根目录所在分区就可能会有较多发生错误的机会。
    因此FHS标准建议:根目录(/)所在分区应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。 如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。说白了,就是根目录和Windows的C盘一个样。
    根据以上原因,FHS认为根目录(/)下应该包含如下子目录:
    目录
    应放置档案内容
    /bin
    系统有很多放置执行档的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被root与一般帐号所使用,主要有:cat,chmod(修改权限), chown, date, mv, mkdir, cp, bash等等常用的指令。
    /boot
    主要放置开机会使用到的档案,包括Linux核心档案以及开机选单与开机所需设定档等等。Linux kernel常用的档名为:vmlinuz ,如果使用的是grub这个开机管理程式,则还会存在/boot/grub/这个目录。
    /dev
    在Linux系统上,任何装置与周边设备都是以档案的型态存在于这个目录当中。 只要通过存取这个目录下的某个档案,就等于存取某个装置。比要重要的档案有/dev/null, /dev/zero, /dev/tty , /dev/lp*, / dev/hd*, /dev/sd*等等
    /etc
    系统主要的设定档几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。 一般来说,这个目录下的各档案属性是可以让一般使用者查阅的,但是只有root有权力修改。 FHS建议不要放置可执行档(binary)在这个目录中。 比较重要的档案有:/etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/等等。 另外,其下重要的目录有:/etc/init.d/ :所有服务的预设启动script都是放在这里的,例如要启动或者关闭iptables的话: /etc/init.d/iptables start、/etc/init.d/ iptables stop
    /etc/xinetd.d/ :这就是所谓的super daemon管理的各项服务的设定档目录。
    /etc/X11/ :与X Window有关的各种设定档都在这里,尤其是xorg.conf或XF86Config这两个X Server的设定档。
    /home
    这是系统预设的使用者家目录(home directory)。 在你新增一个一般使用者帐号时,预设的使用者家目录都会规范到这里来。比较重要的是,家目录有两种代号:
    ~ :代表当前使用者的家目录,而 ~guest:则代表用户名为guest的家目录。
    /lib
    系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库而已 。 什么是函式库呢?妳可以将他想成是外挂,某些指令必须要有这些外挂才能够顺利完成程式的执行之意。 尤其重要的是/lib/modules/这个目录,因为该目录会放置核心相关的模组(驱动程式)。
    /media
    media是媒体的英文,顾名思义,这个/media底下放置的就是可移除的装置。 包括软碟、光碟、DVD等等装置都暂时挂载于此。 常见的档名有:/media/floppy, /media/cdrom等等。
    /mnt
    如果妳想要暂时挂载某些额外的装置,一般建议妳可以放置到这个目录中。在古早时候,这个目录的用途与/media相同啦。 只是有了/media之后,这个目录就用来暂时挂载用了。
    /opt
    这个是给第三方协力软体放置的目录 。 什么是第三方协力软体啊?举例来说,KDE这个桌面管理系统是一个独立的计画,不过他可以安装到Linux系统中,因此KDE的软体就建议放置到此目录下了。 另外,如果妳想要自行安装额外的软体(非原本的distribution提供的),那么也能够将你的软体安装到这里来。 不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下。
    /root
    系统管理员(root)的家目录。 之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分区中。
    /sbin
    Linux有非常多指令是用来设定系统环境的,这些指令只有root才能够利用来设定系统,其他使用者最多只能用来查询而已。放在/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。至于某些伺服器软体程式,一般则放置到/usr/sbin/当中。至于本机自行安装的软体所产生的系统执行档(system binary),则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。
    /srv
    srv可以视为service的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。 常见的服务例如WWW, FTP等等。 举例来说,WWW伺服器需要的网页资料就可以放置在/srv/www/里面。呵呵,看来平时我们编写的代码应该放到这里了。
    /tmp
    这是让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要资料不可放置在此目录啊。 因为FHS甚至建议在开机时,应该要将/tmp下的资料都删除。
    事实上FHS针对根目录所定义的标准就仅限于上表,不过仍旧有些目录也需要我们了解一下,具体如下:
    目录
    应放置文件内容
    /lost+found
    这个目录是使用标准的ext2/ext3档案系统格式才会产生的一个目录,目的在于当档案系统发生错误时,将一些遗失的片段放置到这个目录下。 这个目录通常会在分割槽的最顶层存在,例如你加装一个硬盘于/disk中,那在这个系统下就会自动产生一个这样的目录/disk/lost+found
    /proc
    这个目录本身是一个虚拟文件系统(virtual filesystem)喔。 他放置的资料都是在内存当中,例如系统核心、行程资讯(process)(是进程吗?)、周边装置的状态及网络状态等等。因为这个目录下的资料都是在记忆体(内存)当中,所以本身不占任何硬盘空间。比较重要的档案(目录)例如: /proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/*等等。呵呵,是虚拟内存吗[guest]?
    /sys
    这个目录其实跟/proc非常类似,也是一个虚拟的档案系统,主要也是记录与核心相关的资讯。 包括目前已载入的核心模组与核心侦测到的硬体装置资讯等等。 这个目录同样不占硬盘容量。
    除了这些目录的内容之外,另外要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分区则是在开机完成之后才会持续的进行挂载的行为。就是因为如此,因此根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分区去。那哪些目录不可与根目录分开呢?有底下这些:
    /etc:配置文件
    /bin:重要执行档
    /dev:所需要的装置文件
    /lib:执行档所需的函式库与核心所需的模块
    /sbin:重要的系统执行文件
    这五个目录千万不可与根目录分开在不同的分区。

    /usr 的意义与内容

    依据FHS的基本定义,/usr里面放置的数据属于可分享的与不可变动的(shareable, static), 如果你知道如何透过网络进行分区的挂载(例如在服务器篇会谈到的NFS服务器),那么/usr确实可以分享给局域网络内的其他主机来使用喔。
    /usr不是user的缩写,其实usr是Unix Software Resource的缩写, 也就是Unix操作系统软件资源所放置的目录,而不是用户的数据啦。这点要注意。 FHS建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行建立该软件自己独立的目录。
    因为是所有系统默认的软件(distribution发布者提供的软件)都会放置到/usr底下,因此这个目录有点类似Windows 系统的C:\Windows\ + C:\Program files\这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。 一般来说,/usr的次目录建议有底下这些:
    目录
    应放置文件内容
    /usr/X11R6/
    为X Window System重要数据所放置的目录,之所以取名为X11R6是因为最后的X版本为第11版,且该版的第6次释出之意。
    /usr/bin/
    绝大部分的用户可使用指令都放在这里。请注意到他与/bin的不同之处。(是否与开机过程有关)
    /usr/include/
    c/c++等程序语言的档头(header)与包含档(include)放置处,当我们以tarball方式 (*.tar.gz 的方式安装软件)安装某些数据时,会使用到里头的许多包含档。
    /usr/lib/
    包含各应用软件的函式库、目标文件(object file),以及不被一般使用者惯用的执行档或脚本(script)。 某些软件会提供一些特殊的指令来进行服务器的设定,这些指令也不会经常被系统管理员操作, 那就会被摆放到这个目录下啦。要注意的是,如果你使用的是X86_64的Linux系统, 那可能会有/usr/lib64/目录产生
    /usr/local/
    统管理员在本机自行安装自己下载的软件(非distribution默认提供者),建议安装到此目录, 这样会比较便于管理。举例来说,你的distribution提供的软件较旧,你想安装较新的软件但又不想移除旧版, 此时你可以将新版软件安装于/usr/local/目录下,可与原先的旧版软件有分别啦。 你可以自行到/usr/local去看看,该目录下也是具有bin, etc, include, lib...的次目录
    /usr/sbin/
    非系统正常运作所需要的系统指令。最常见的就是某些网络服务器软件的服务指令(daemon)
    /usr/share/
    放置共享文件的地方,在这个目录下放置的数据几乎是不分硬件架构均可读取的数据, 因为几乎都是文本文件嘛。在此目录下常见的还有这些次目录:/usr/share/man:联机帮助文件
    /usr/share/doc:软件杂项的文件说明
    /usr/share/zoneinfo:与时区有关的时区文件
    /usr/src/
    一般原始码建议放置到这里,src有source的意思。至于核心原始码则建议放置到/usr/src/linux/目录下。

    /var 的意义与内容

    如果/usr是安装时会占用较大硬盘容量的目录,那么/var就是在系统运作后才会渐渐占用硬盘容量的目录。 因为/var目录主要针对常态性变动的文件,包括缓存(cache)、登录档(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如MySQL数据库的文件等等。常见的次目录有:
    目录
    应放置文件内容
    /var/cache/
    应用程序本身运作过程中会产生的一些暂存档
    /var/lib/
    程序本身执行的过程中,需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录。 举例来说,MySQL的数据库放置到/var/lib/mysql/而rpm的数据库则放到/var/lib/rpm去
    /var/lock/
    某些装置或者是文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该装置时, 就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软件所使用。 举例来说,刻录机正在刻录一块光盘,你想一下,会不会有两个人同时在使用一个刻录机烧片? 如果两个人同时刻录,那片子写入的是谁的数据?所以当第一个人在刻录时该刻录机就会被上锁, 第二个人就得要该装置被解除锁定(就是前一个人用完了)才能够继续使用
    /var/log/
    非常重要。这是登录文件放置的目录。里面比较重要的文件如/var/log/messages, /var/log/wtmp(记录登入者的信息)等。
    /var/mail/
    放置个人电子邮件信箱的目录,不过这个目录也被放置到/var/spool/mail/目录中,通常这两个目录是互为链接文件。
    /var/run/
    某些程序或者是服务启动后,会将他们的PID放置在这个目录下
    /var/spool/
    这个目录通常放置一些队列数据,所谓的“队列”就是排队等待其他程序使用的数据。 这些数据被使用后通常都会被删除。举例来说,系统收到新信会放置到/var/spool/mail/中, 但使用者收下该信件后该封信原则上就会被删除。信件如果暂时寄不出去会被放到/var/spool/mqueue/中, 等到被送出后就被删除。如果是工作排程数据(crontab),就会被放置到/var/spool/cron/目录中。
    由于FHS仅是定义出最上层(/)及次层(/usr, /var)的目录内容应该要放置的文件或目录数据, 因此,在其他次目录层级内,就可以随开发者自行来配置了。

    目录树(directory tree)

    在Linux底下,所有的文件与目录都是由根目录开始的。那是所有目录与文件的源头, 然后再一个一个的分支下来,因此,我们也称这种目录配置方式为:目录树(directory tree), 这个目录树的主要特性有:
    目录树的启始点为根目录 (/, root);
    每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等。
    每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
    如果我们将整个目录树以图的方法来显示,并且将较为重要的文件数据列出来的话,那么目录树架构就如下图所示:

    以下是对这些目录的解释:

    /:根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中。


    /bin:/usr/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。例如cp、ls、cat,等等。


    /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可。


    /dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备文件,在Linux中访问设备的方式和访问文件的方式是相同的。访问该目录下某个文件,相当于访问某个设备,其功能类似DOS下的.sys和Win下的.vxd。例如:/dev/hda代表第一个物理IDE硬盘。常用的是挂载光驱mount /dev/cdrom /mnt。


    /etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。注:/etc/X11存放与x windows有关的设置。


    /home:用户的主目录,在Linux中,系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,比如说有个用户叫zhong,那他的主目录就是/home/zhong也可以用~zhong表示。建议单独分区,并设置较大的磁盘空间,方便用户存放数据。


    /lib:/usr/lib:/usr/local/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules。


    /lost+found:这个目录一般情况下是空的,当系统不正常关机后,这里就成了一些无家可归的文件的避难所。对了,有点类似于DOS下的.chk文件。系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于/disk 中,此目录下就会自动产生目录/disk/lost+found


    /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。


    /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。


    /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下。


    /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等。这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all


    /root:该目录为系统管理员,也称作超级权限者的用户主目录。系统管理员root的家目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。


    /sbin:/usr/sbin:/usr/local/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。


    /selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。


    /srv:该目录存放一些服务启动之后需要提取的数据。服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。


    /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。


    /tmp:这个目录是用来存放一些临时文件的。一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。


    /var:这个目录中存放着在不断扩充着的东西,包括各种日志文件。为了保持/usr的相对稳定,那些经常被修改的目录可以放在这个目录下,实际上许多系统管理员都是这样干的。顺带说一下系统的日志文件就在/var/log目录中。放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。建议单独分区,设置较大的磁盘空间。


    /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。应用程序存放目录,/usr/bin存放应用程序,/usr/share存放共享数据,/usr/lib存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc:系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间。


    绝对路径与相对路径


    除了需要特别注意的FHS目录配置外,在文件名部分我们也要特别注意。因为根据档名写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径(relative)。 这两种文件名/路径的写法依据是这样的:
    绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;
    相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 http://www.cnblogs.com/home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的写法
    而你必须要了解,相对路径是以你当前所在路径的相对位置来表示的。举例来说,你目前在 /home 这个目录下, 如果想要进入 /var/log 这个目录时,可以怎么写呢?
    cd /var/log (absolute)
    cd ../var/log (relative)
    因为你在 /home 底下,所以要回到上一层 (../) 之后,才能继续往 /var 来移动的,特别注意这两个特殊的目录:
    . :代表当前的目录,也可以使用 ./ 来表示;
    .. :代表上一层目录,也可以 ../ 来代表。
    这个 . 与 .. 目录概念是很重要的,你常常会看到 cd .. 或 ./command 之类的指令下达方式, 就是代表上一层与目前所在目录的工作状态。
    如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。ls -a 能看见所有目录或文件(包括隐藏的)。
    实例1:如何先进入/var/spool/mail/目录,再进入到/var/spool/cron/目录内?
    命令:
    cd /var/spool/mail
    cd ../cron
    说明:
    由于/var/spool/mail与/var/spool/cron是同样在/var/spool/目录中。如此就不需要在由根目录开始写起了。这个相对路径是非常有帮助的,尤其对于某些软件开发商来说。 一般来说,软件开发商会将数据放置到/usr/local/里面的各相对目录。 但如果用户想要安装到不同目录呢?就得要使用相对路径。
    实例2:网络文件常常提到类似./run.sh之类的数据,这个指令的意义为何?
    说明:
    由于指令的执行需要变量的支持,若你的执行文件放置在本目录,并且本目录并非正规的执行文件目录(/bin, /usr/bin等为正规),此时要执行指令就得要严格指定该执行档。./代表本目录的意思,所以./run.sh代表执行本目录下, 名为run.sh的文件。

    几个比较重要的目录


    在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

    /etc: 这个目录相当重要,如前所述,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。你的开机与系统数据文件均在这个目录之下,因此当这个目录被破坏,那你的系统大概也就差不多该死掉了!而在往后的文件中,你会发现我们常常使用这个目录下的 /etc/rc.d/init.d 这个子目录,因为这个 init.d 子目录是开启一些 Linux 系统服务的 scripts的地方。而在 /etc/rc.d/rc.local 这个文件是开机的执行档。


    /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的,例如 root 常常使用的 userconf, netconf, perl, gcc, c++ 等等的数据都放在这几个目录中,所以如果你在提示字符下找不到某个执行档时,可以在这四个目录中查一查!其中, /bin, /usr/bin 是给系统用户(除root外的通用户)使用的指令,而 /sbin, /usr/sbin 则是给系统管理员使用的指令!


    /usr/local:这是系统预设的让你安装你后来升级的套件的目录。例如,当你发现有更新的 Web 套件(如 Apache )可以安装,而你又不想以 rpm 的方式升级你的套件,则你可以将 apache 这个套件安装在 /usr/local 底下。安装在这里有个好处,因为目前大家的系统都是差不多的,所以如果你的系统要让别人接管的话,也比较容易上手呀!也比较容易找的到数据!因此,如果你有需要的话,通常我都会将 /usr/local/bin 这个路径加到我的 path 中。

     
    /home:这个是系统将有账号的人口的家目录设置的地方。


    /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,不论是登入、各类服务的问题发生时的记录、以及常态性的服务记录等等的记录目录,所以当你的系统有问题时,就需要来这个目录记录的文件数据中察看问题的所在啰!另外mail的预设放置也是在这里。


    /usr/share/man, /usr/local/man:这两个目录为放置各类套件说明档的地方,例如你如果执行 man man,则系统会自动去找这两个目录下的所有说明文件。



    详解几个目录


    /dev:目录

    dev是设备(device)的英文缩写。/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序,这一点和windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
    Linux沿袭Unix的风格,将所有设备认成是一个文件。
      设备文件分为两种:块设备文件(b)和字符设备文件(c)
      设备文件一般存放在/dev目录下,对常见设备文件作如下说明:
      /dev/hd[a-t]:IDE设备
      /dev/sd[a-z]:SCSI设备
      /dev/fd[0-7]:标准软驱
      /dev/md[0-31]:软raid设备
      /dev/loop[0-7]:本地回环设备
      /dev/ram[0-15]:内存
      /dev/null:无限数据接收设备,相当于黑洞
      /dev/zero:无限零资源
      /dev/tty[0-63]:虚拟终端
      /dev/ttyS[0-3]:串口
      /dev/lp[0-3]:并口
      /dev/console:控制台
      /dev/fb[0-31]:framebuffer
      /dev/cdrom => /dev/hdc
      /dev/modem => /dev/ttyS[0-9]
      /dev/pilot => /dev/ttyS[0-9]
      /dev/random:随机数设备
      /dev/urandom:随机数设备
      
      /dev目录下的节点是怎么创建的?  --->   devf或者udev会自动帮你创建得。
      kobject是sysfs文件系统的基础,udev通过监测、检测sysfs来获取新创建的设备的。

    /etc:目录

    包含很多文件.许多网络配置文件也在/etc 中
    ./etc/rc or /etc/rc.d or /etc/rc*.d :启动、或改变运行级时运行的scripts或scripts的目录.
    /etc/passwd:用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息.
    /etc/fstab:启动时mount -a命令(在/etc/rc 或等效的启动文件中)自动mount的文件系统列表. Linux下,也包括用swapon -a启用的swap区的信息.
    /etc/group:类似/etc/passwd ,但说明的不是用户而是组.
    /etc/inittab:init 的配置文件.
    /etc/issue:getty 在登录提示符前的输出信息.通常包括系统的一段短说明或欢迎信息.内容由系统管理员确定.
    /etc/motd:Message Of The Day,成功登录后自动输出.内容由系统管理员确定.经常用于通告信息,如计划关机时间的警告.
    /etc/mtab:当前安装的文件系统列表.由scripts初始化,并由mount 命令自动更新.需要一个当前安装的文件系统的列表时使用,例如df 命令.
    /etc/shadow:在安装了影子口令软件的系统上的影子口令文件.影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow 中,而后者只对root可读.这使破译口令更困难.
    /etc/login.defs:login 命令的配置文件.
    /etc/printcap:类似/etc/termcap ,但针对打印机.语法不同.
    /etc/profile , /etc/csh.login , /etc/csh.cshrc:登录或启动时Bourne或C shells执行的文件.这允许系统管理员为所有用户建立全局缺省环境.
    /etc/securetty:确认安全终端,即哪个终端允许root登录.一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权.
    /etc/shells:列出可信任的shell.chsh 命令允许用户在本文件指定范围内改变登录shell.提供一台机器FTP服务的服务进程ftpd 检查用户shell是否列在 /etc/shells 文件中,如果不是将不允许该用户登录.
    /etc/sysconfig:网络配置相关目录

    /proc: 目录

    档名 文件内容
    /proc/cmdline: 加载 kernel 时所下达的相关参数!查阅此文件,可了解系统是如何启动的!
    /proc/cpuinfo :本机的 CPU 的相关资讯,包含时脉、类型与运算功能等
    /proc/devices :这个文件记录了系统各个主要装置的主要装置代号,与 mknod 有关呢!
    /proc/filesystems: 目前系统已经加载的文件系统罗!
    /proc/interrupts :目前系统上面的 IRQ 分配状态。
    /proc/ioports :目前系统上面各个装置所配置的 I/O 位址。
    /proc/kcore :这个就是内存的大小啦!好大对吧!但是不要读他啦!
    /proc/loadavg:还记得 top 以及 uptime 吧?没错!上头的三个平均数值就是记录在此!
    /proc/meminfo :使用 free 列出的内存资讯,嘿嘿!在这里也能够查阅到!
    /proc/modules :目前我们的 Linux 已经加载的模块列表,也可以想成是驱动程序啦!
    /proc/mounts :系统已经挂载的数据,就是用 mount 这个命令呼叫出来的数据啦!
    /proc/swaps :到底系统挂加载的内存在哪里?呵呵!使用掉的 partition 就记录在此啦!
    /proc/partitions: 使用 fdisk -l 会出现目前所有的 partition 吧?在这个文件当中也有纪录喔!
    /proc/pci :在 PCI 汇流排上面,每个装置的详细情况!可用 lspci 来查阅!
    /proc/uptime: 就是用 uptime 的时候,会出现的资讯啦!
    /proc/version :核心的版本,就是用 uname -a 显示的内容啦!
    /proc/bus/* :一些汇流排的装置,还有 U盘 的装置也记录在此喔!

    /usr: 目录

    /usr :文件系统经常很大,因为所有程序安装在这里. /usr 里的所有文件一般来自Linux distribution;本地安装的程序和其他东西在/usr/local 下.这样可能在升级新版系统或新distribution时无须重新安装全部程序.
    /usr/etc: 存放设置文件
    /usr/games: 存放游戏和教学文件
    /usr/include :存放C开发工具的头文件
    /usr/share :存放结构独立的数据
    /usr/bin :几乎所有用户命令.有些命令在/bin 或/usr/local/bin 中.
    /usr/sbin :根文件系统不必要的系统管理命令,例如多数服务程序.
    /usr/share/man , /usr/share/info , /usr/share/doc: 手册页、GNU信息文档和各种其他文档文件.
    /usr/include: C编程语言的头文件.为了一致性这实际上应该在/usr/lib 下,但传统上支持这个名字.
    /usr/lib :程序或子系统的不变的数据文件,包括一些site-wide配置文件.名字lib来源于库(library); 编程的原始库存在/usr/lib 里.
    /usr/local :本地安装的软件和其他文件放在这里.
    /usr/src: 存放程序的源代码

    /var: 目录

    /var :包括系统一般运行时要改变的数据.每个系统是特定的,即不通过网络与其他计算机共享.
    /var/catman:当要求格式化时的man页的cache.man页的源文件一般存在/usr/man/man* 中;有些man页可能有预格式化的版本,存在/usr/man/cat* 中.而其他的man页在第一次看时需要格式化,格式化完的版本存在/var/man 中,这样其他人再看相同的页时就无须等待格式化了. (/var/catman 经常被清除,就象清除临时目录一样.)
    /var/lib :系统正常运行时要改变的文件.
    /var/local:/usr/local 中安装的程序的可变数据(即系统管理员安装的程序).注意,如果必要,即使本地安装的程序也会使用其他/var 目录,例如/var/lock .
    /var/lock:锁定文件.许多程序遵循在/var/lock 中产生一个锁定文件的约定,以支持他们正在使用某个特定的设备或文件.其他程序注意到这个锁定文件,将不试图使用这个设备或文件.
    /var/log:各种程序的Log文件,特别是login (/var/log/wtmp log所有到系统的登录和注销) 和syslog (/var/log/messages 里存储所有核心和系统程序信息. /var/log 里的文件经常不确定地增长,应该定期清除.
    /var/run:保存到下次引导前有效的关于系统的信息文件.例如, /var/run/utmp 包含当前登录的用户的信息.
    /var/spool:mail, news, 打印队列和其他队列工作的目录.每个不同的spool在/var/spool 下有自己的子目录,例如,用户的邮箱在/var/spool/mail 中.
    /var/tmp:比/tmp 允许的大或需要存在较长时间的临时文件. (虽然系统管理员可能不允许/var/tmp 有很旧的文件.)
    展开全文
  • 文件系统的层次结构的理解总结

    千次阅读 2016-10-18 14:21:05
    文件系统的层次结构的理解总结通过前面的文章对文件系统的逻辑结构总结,到这里再来看文件系统的层次结构就非常自然。 首先还是注意辨明一些基础的名词概念: + 用户接口 + 文件目录系统 + 存取控制模块 + 逻辑...

    文件系统的层次结构的理解总结

    通过前面的文章对文件系统的逻辑结构总结,到这里再来看文件系统的层次结构就非常自然。
    首先还是注意辨明一些基础的名词概念:

    • 用户接口
    • 文件目录系统
    • 存取控制模块
    • 逻辑文件系统与文件信息缓冲区
    • 物理文件系统
    • 辅助分配模块
    • 设备管理模块

    怎样理解这一个层次结构呢?带着日常使用电脑查找文件的经验即可很快理解。

    用户接口:OS通常使用图形桌面作为一个接口,当然还要Windows下的黑黑的cmd以及Linux,Mac上好用的命令窗口,都是用户接口。这个用户是广义的概念,不仅仅指代程序员。比如查看文件F的内容,那么通过接口操作,向操作系统发出命令,这就是第一层,最抽象的也是最顶层的面对用户的接口,连接的是现实世界与虚拟世界。

    文件目录系统: 操作系统得到命令后要干的事情是查找目录,得到文件F的索引信息,这个索引信息可以通过FCB,也可以通过索引结点。前面讨论过抽出文件名得到的i结点,按名存取时找到i结点指针。一个文件有一个FCB或一个i结点(索引结点)。这便是在第二层:文件目录系统做的事情。

    存取控制验证:找到FCB后,不是所有人都有资格见到F文件,还需要考察你的资质。好像你前面费了一番心思到了一个景区,想去看看,得验证你是不是有票,票即资格。FCB上有你是不是可以访问此文件的权限信息,这便是存取控制验证。现在假定的任务是读,也即取,写入是存。存取这个名称也是可以再掰开体会的。

    逻辑文件系统与文件信息缓冲区:这个也很好理解。确定你可以进入后,开始真正的帮你找具体的物理地址。我们应该建立起这样一种感觉:OS通常先是管逻辑地址,再去根据相应的策略得到物理地址。这个部分的功能是:获得相应文件的逻辑地址,而具体的物理地址需要在物理文件系统中获取

    物理文件系统:这是底层的实现。分为两部分内容:辅存的分配管理和设备的管理。在Unix下,设备也是文件。具体的具体再展开。

    这里是一个宏观的认识,也是名词的辨析理解。掌握这个,才能更好的进研究每一个模块。

    展开全文
  • <linux>linux中的文件分为哪几??

    千次阅读 2017-09-01 10:16:39
    在Linux中,有一句经典的话叫做一切皆文件”。...(3)管道文件(pipe):一用于进程间通信的特殊文件,也称为命名管道FIFO。 (4)套接字文件(socket):一用于网络间通信的特殊文件。 (5)链接文件
  • 文件结构

    万次阅读 2020-04-16 10:39:12
    文件结构 JVM 的“无关性” 谈论 JVM 的无关性,主要有以下个: 平台无关性:任何操作系统都能运行 Java 代码 语言无关性: JVM 能运行除 Java 以外的其他代码 Java 源代码首先需要使用 Javac 编译器编译成 ....
  • XML文件结构

    千次阅读 2012-06-05 17:12:18
    XML文件结构性内容,包括节点关系以及属性内容等等。 元素是组成XML的最基本的单位,它由开始标记,属性和结束标记组成。 就是一个元素的例子,每个元素必须有一个元素名,元素可以若干个属性以及属性值。  ...
  • 文件的逻辑结构

    千次阅读 2018-02-12 10:07:45
    文件的逻辑结构是从用户观点出发看到的文件的组织形式。文件的物理结构是从实现观点出发,又称为文件的存储结构,是指文件在外存上的存储组织形式。... 按逻辑结构文件有无结构和有结构文件两种类型:  1.无结构
  • 文件的逻辑结构和物理结构辨析

    千次阅读 多人点赞 2018-12-14 16:16:13
    1.基本概念 逻辑结构:指一个文件在用户面前所呈现的形式。又称文件组织。 物理结构:指文件在外...逻辑结构两种形式:①记录式文件(有结构文件).②字符流式文件(无结构文件),也称流式文件。 其中,有结...
  • 文件的逻辑结构与物理结构

    千次阅读 2018-04-07 21:35:03
    逻辑结构两种形式:①记录式文件(有结构文件).②字符流式文件(无结构文件),也称流式文件.1) 顺序文件,其记录是按某种顺序排列所形成的,记录在文件中的位置由某种顺序决定,第一个位置上的记录,第二个位置...
  • 文件结构及存取方法

    千次阅读 2016-10-11 12:42:22
    从用户角度出发,研究文件的抽象组织方式而定义的文件组织形式为文件的逻辑结构;从系统的角度出发,研究文件的物理组织方式而定义的文件组织形式为文件的物理结构文件的逻辑结构独立于辅存,帮助用户分析信息之间...
  • PE文件结构分析

    万次阅读 多人点赞 2016-03-22 10:40:56
    PE文件分析
  • bt编码格式和种子文件结构

    千次阅读 2013-03-14 16:03:05
    关于这个格式的定义,基本上还是比较简明的,B编码总共只支持4类型,既整数,字符串,列表和字典。整数以i标记开头以e标记结尾,中间是整数数字,字符串以:标记开头然后根接字符串的长度,最后是字符串内容,列表...
  • 提到java,我们可能第一时间想起的就是那句口号,“一次编写,到处运行”,这体现了java与平台无关的优势,而实现这种特性的的基础,是通过将java编译成字节码文件,虚拟机可以载入和执行同一平台无关的字节码,...
  • 称为原生文件,这类文件在被打包成apk文件时是不会进行压缩的,不会自动生成R文件的ID  访问: 获取路径: file://android_asset/test.xml //工程根目录下的assets文件夹中存放,比如assets/test.xml 这样...
  • ELF文件结构详解

    千次阅读 2017-03-07 14:44:48
    ELF文件介绍在linux下,由汇编程序和链接编辑器生成的是目标文件为ELF(Excutable and Linking Format)格式,它们共分为类型: 可重定位文件(Relocatable File) 可执行文件(Executable File) 共享目标文件(Shared...
  • Linux下ELF文件类型分为以下几: 1、可重定位文件,例如SimpleSection.o; 2、可执行文件,例如/bin/bash; 3、共享目标文件,例如/lib/libc.so。 在Linux 可重定位文件 ELF结构一文中,我们已经分析了可重...
  • Torrent文件结构解析

    万次阅读 2012-09-24 17:20:38
    Torrent文件内的数据结构分为以下几部分: announce:Tracker的主服务器 announce-list:Tracker服务器列表 comment:种子文件的注释 comment.utf-8:种子文件注释的utf-8编码 creation date:种子文件...
  • 操作系统 文件的物理结构文件目录 先来说一下文件文件目录。当我们建立一个文件之后,操作系统会给我们生成对应的记录文件信息的文件(记录文件) 的文件名,文件的类型,文件大小,文件访问权限等属性和文件的...
  • 再用最通俗的说法简要介绍一下,磁盘如sd卡只能存放0和1这两种二进制状态序列,数字文件本质上也是一串0和1的序列。那么磁盘存储文件怎么存放呢?你说这个简单,一个个的文件紧挨着排列在磁盘中不就可以了吗。那么...
  • 深入理解Java虚拟机--类文件结构

    万次阅读 2017-05-18 00:20:40
    Class类文件结构 魔数与Class文件的版本 常量池 访问标志 类索引、 父类索引与接口索引集合 字段表集合 方法表集合 属性表集合 Code属性 Exceptions属性 LineNumberTable属性 LocalVariableTable属性 ...
  • PBOC/EMV之文件结构

    千次阅读 2010-01-29 18:07:00
    开始看PBOC/EMV中IC卡的文件结构时,就被DF, MF, EF,DDF,ADF这些概念弄晕了.文档里对这几个概念讲解的都不够通俗.不过这也不奇怪,这种所谓的标准如果讲的太通俗,那么制定这些标准的人又怎么能够称得上是专家呢! ...
  • 分析exe文件结构

    千次阅读 2016-12-19 22:30:43
    分析exe文件结构 转自: http://blog.csdn.net/xiaofengcanyuexj/article/details/37697577 一、EXE文件概念  EXE File英文全名executable file ,译作可执行文件,可移植可执行 (PE) 文件格式的...
  • Class类文件结构

    千次阅读 2016-10-25 15:24:53
    平台无关性 如图,源码经过编译得到的字节码文件可以由运行Java虚拟机的机器运行,因此可以...Class文件是一组以8位字节基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件中,中间没有添加任何分隔
  • EXE文件结构及原理

    千次阅读 2013-11-19 19:53:56
    EXE文件结构及原理 ...EXE文件分为两个部分: EXE头部(包括一些标识信息和重定位表)和程序本体(程序本身). EXE头部的大小由EXE文件的+08处的字表示, 以节(10h字节)单位. EXE的14h处的双字是初始的C
  • (一)文件层次结构 ...文件系统用户提供与文件及目录有关的调用,如新建、打开、读写、关闭、删除文件,建立、删除目录等。此层由若干程序模块组成,每一模块对应一条系统调用,用户发出系统...
  • 文件管理 文件也属于系统资源,其就是一组有意义的信息、数据集合。 计算机中存放了各种各样的文件: 一个文件具有哪些属性? 文件内部的数据应该被怎样组织起来? 文件之间又应该怎么组织起来? 从下往上看...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 455,648
精华内容 182,259
关键字:

为什么把文件分为两种结构