文件系统
谁不小心的
过于复杂,无法简介
展开
-
linux系统目录定义说明
概述:对linux还不太熟练的时候,我们往往发愁:bash的配置文件在~/.bashrc,开机启动的配置文件在/etc/initd等等等等。我们如何知道某个文件的大致位置呢?本文,主要为你讲解linux目录的大致组织方式,让你对要查找的文件可能位于的地方有一个大致的了解。1)“.”表示当前目录,“..”表示上级目录2)尽管所有的目录都存在于根目录下面,但它们可以存在于不同的驱动器上原创 2013-06-03 16:45:38 · 1376 阅读 · 0 评论 -
由结构体成员地址计算结构体地址——节点地址的函数list_entry()原理详解
概述:在进行编程的时候,我们经常在知道结构体地址的情况下,寻找其中某个成员的地址;但是知道了成员的地址,如果找到这个结构体对应的地址呢?Linux内核中,获取节点地址的函数list_entry()非常常用,它被用来解决这个问题。1.list_entry的宏定义:#define list_entry(ptr, type, member) ((type *)((char *)(ptr)原创 2013-07-15 17:52:56 · 2642 阅读 · 0 评论 -
linux 2.4内核中双向链表的实现/include/linux/list.h
概述:在linux 2.4内核中,于平台无关头文件/include/linux主要用于实现linux内核中的双线链表,对于很多内核中的功能都起到了很好的支撑作用,而且只有100多行,本文主要为你讲解这些函数的实现。 先浏览代码: 1 #ifndef _LINUX_LIST_H 2 #define _LINUX_LIST_H 3 4 #ifdef __KERNEL_原创 2013-07-16 19:59:55 · 1457 阅读 · 0 评论 -
查看linux设备文件系统类型的几种方法
概述:在进行文件系统的相关测试或者操作的时候,往往需要知道文件系统的相关类型。 在linux操作系统中,挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。在实际情况下,我们可能需要在设备挂载之前或者之后查看设备的文件系统类型。1.mount命令hyk@hyk-l原创 2013-05-14 11:38:59 · 9307 阅读 · 0 评论 -
/dev/loop与设备文件系统
摘要:在进行测试的时候,我们往往需要新建一些磁盘分区或者设备等,此时对硬盘进行重新划分往往不太方面。这种情况下,我们可以通过伪设备来实现循环挂载,从而达到目的。本文主要为你讲解什么是循环挂载,什么是虚拟设备,设备和文件系统有什么关系。1.循环挂载在类Unix系统中,/dev/loop(或称vnd (vnode disk)、lofi(循环文件接口))是一种伪设备,原创 2013-08-15 19:40:49 · 7742 阅读 · 0 评论 -
ext2 源代码解析之 “从路径名到目标结点” (二)
3.3.1)接下来查看chached_lookup()的代码(namei.c)[path_walk()>> cached_lookup()]/**Internal lookup() using the new generic dcache.*SMP-safe*给定name和parent进行查找,如果找到而且合法,那么返回找到的dentry;否则,返回NULL原创 2013-07-16 15:27:24 · 2123 阅读 · 0 评论 -
inode结构体成员详解
概述:inode译成中文就是索引节点,它用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。inode分为内存中的inode和文件系统中的inode,为了避免混淆,我们称前者为VFS inode, 而后者以EXT2为代表,我们称为Ext2 inode。在阅读文件系统源码的时候,必须对这个结构有着清醒的认识。下面分别对VFS inodee与Ext2 inode做一下简单的描述:原创 2013-07-17 14:34:54 · 8093 阅读 · 0 评论 -
文件系统专题之 “索引节点高速缓存”
VFS也用了一个高速缓存来加快对索引节点的访问,和块高速缓存不同的一点是每个缓冲区不用再分为两个部分了,因为inode结构中已经有了类似于块高速缓存中缓冲区首部的域。索引节点高速缓存的实现代码全部在fs/inode.c,这部分代码并没有随着内核版本的变化做很多的修改。1.索引节点链表每个索引节点可能处于哈希表中,也可能同时处于下列“类型”链表的一种中:·转载 2013-07-17 14:10:59 · 1351 阅读 · 0 评论 -
ext2 源代码解析之 “从路径名到目标结点” (一)
两个主要函数,path_init和path_walk,他们结合在一起根据给定的文件路径名称在内存中找到或者建立代表着目标文件或目录的dentry和inode结构。注意,最终是信息是读取到内存中的。其中有个函数__user_walk()将path_init()和path_walk()包装在一起。本节中的所有代码在fs/namei.c中。 1.分析外包装“__user_walk()”原创 2013-07-11 20:48:35 · 2188 阅读 · 0 评论 -
临界资源 互斥访问 内核中的up和down函数
信号量(semaphore)是用于保护临界区的一种常用方法。只有得到信号量的进程才能执行临界区代码,而没有得到信号量的进程进入休眠等待状态。Linux系统中与信号量相关的操作主要有如下4种。1 定义信号量下面代码定义名为sem的信号量。struct semaphore sem;struct semaohore结构体在内核中定义如下:在/include/linux/semap转载 2013-07-16 09:29:15 · 7023 阅读 · 0 评论 -
深入理解proc文件系统
概述:linux 内核提供了一种获取其内部数据结构和在系统运行时改变内核参数设置的方法,这种方法就是凭借proc文件系统。1.proc ——一个虚拟文件系统proc文件系统用来提供给内核和内核模块发送消息给进程,之所以说它是虚拟的文件系统,是因为1)虚拟是指的是它没有对应具体的存储介质,比如磁盘;2)文件系统指的是它的确实现了必须的文件系统接口。可以通过如下命令查询:$原创 2013-06-18 11:04:41 · 1803 阅读 · 0 评论 -
linux 读写文件接口
linux中,计算机将时间的概念抽象为进程,将空间的概念抽象成文件。1.文件描述符linux为每一个打开的文件在内核中建立一个文件表项,该文件表项包括文件的状态信息,存储文件内容的缓冲区,当前文件的读写位置等。一个文件两次被打开的时候会创建两个这样的文件表项。这些文件表项保存在内核中的一个数组里面——文件表。每个进程在内核中保存有一个整型数组,该数组中每个元素是文件表的下标。因原创 2013-06-17 23:41:56 · 2760 阅读 · 0 评论 -
文件系统预备——磁盘管理
概述:要想了解文件系统,了解文件的载体——磁盘是相当必要的。本文主要为你介绍磁盘的相关概念,为文件系统的学习,打下基础。1.各个设备在linux中的文件名IDE硬盘/dev/hd[a-d]SCSI/SAT/USB硬盘/dev/sd[a-p]U盘/dev/sd[a-p]打印原创 2013-05-14 11:35:50 · 1447 阅读 · 0 评论