[linux专题]基于linux文件系统编程

目录

1.硬盘的存储机制

 2.文件系统

2.1 文件类型简介

2.2 基于inode文件系统

2.3 创建文件过程

2.4 挂载

3.linux 文件系统

3.1 VFS

3.2 文件的分类

3.3 文件目录

4 .linux 文件系统 编程

4.1 文件权限控制

4.2 文件打开

4.3 文件创建

4.4 文件关闭

4.5 文件读写

4.6 文件定位

4.7 文件描述符复制

4.8 文件控制

4.9 文件状态

4.10 文件移动和删除

4.11 目录的创建和删除

4.12 目录的打开和关闭

5.参考文献


1.硬盘的存储机制

扇区:扇区是硬盘上存储的最小物理单位,如512bytes

簇: N个扇区可以组成簇,N取决于文件系统的配置,如N=1024,簇是文件系统中最小存储单位

柱面:所有盘面上的同一磁道构成一个圆柱,柱面是系统分区的最小单位

硬盘分区是硬盘结合到文件系统的第一步,本质是「硬盘」这个物理概念转换成「区」这个逻辑概念

 2.文件系统

2.1 文件类型简介

以下针对一些常用的文件系统,简要说明,主要是有个初步了解。

文件系统  说明
ext2  早期linux中常用的文件系统
ext3  ext2的升级版,带日志功能
ext4 目前主流的Linux文件系统
RAMFS 内存文件系统,速度很快  
NFS 网络文件系统,由SUN发明,主要用于远程文件共享
MS-DOS MS-DOS文件系统
VFAT Windows 95/98 操作系统采用的文件系统
FAT Windows XP 操作系统采用的文件系统
NTFS indows NT/XP 操作系统采用的文件系统
HPFS OS/2 操作系统采用的文件系统
JFS IBM的AIX使用的日志文件系统

2.2 基于inode文件系统

以下针对ext2文件系统做更详细了解说明,(基于inode的文件系统)

 各个属性说明

启动扇区(boot sector) 安装开机管理程序
块组 (block group) 每个块组有独立的inode/block体系
Superblock filesystem挂载时间、最近一次写入资料的时间、最近一次检验磁碟(fsck) 的时间
Filesystem Description 描述每个block group的开始与结束的block号,以及每个区段(superblock, bitmap, inodemap, data block)分别介于哪个block号间
block bitmap 记录使用与未使用的block号
inode bitmap 记录使用与未使用的inode 号
inode table 记录文件的属性-文件实际数据是放置的block包括 大小、真正内容的block号(一个或多个)-访问模式(read/write/excute)- 拥有者与群组(owner/group) -=建立或状态改变的时间、最近一次的读取时间、最近修改的时间,一个文件占用一个 inode,node 大小均固定为128 bytes
data block 用于存放数据

2.3 创建文件过程

当在ext2下建立一个一般文件时, ext2 会分配一个inode 与相对于该文件大小的block 数量给该文件;

当在ext2文件系统建立一个目录时(就是新建了一个目录文件),文件系统会分配一个inode与至少一块block给该目录,inode记录该目录的相关权限与属性,并记录分配到的那块block号,而block则记录在这个目录下的文件名与该文件对应的inode号 ,block中还会自动生成两条记录,一条inode指向自身,另一条inode指向父文件夹 。

因为文件名是记录在目录的block当中,因此当读取某个文件时,就一定会经过目录的inode与block ,然后才能找到那个待读取文件的inode号,最终才会读到正确的文件的block内的内容。

2.4 挂载

所谓挂载,就是将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体。

挂载时,需注意,挂载点必须是一个目录,一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用

 挂载使用 mount命令

其格式:mount [-参数] [设备名称] [挂载点]

其中常用的参数有:

-t 指定设备的文件系统类型(什么提到的文件类型)

-o 指定挂载文件系统时的选项。

 卸载使用umount

3.linux 文件系统

3.1 VFS

VFS(virtual file system),即虚拟文件系统,只存在于内存,不存在磁盘中,只有系统运行时才存在,VFS提供一种机制,它将不同的文件系统整合在一起,提供统一的应用程序的编程接口。

3.2 文件的分类

普通文件(-) C语言元代码、SHELL脚本、二进制的可执行文件等。分为纯文本和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值