系统相关
首页 > 系统相关> > 《Unix/Linux系统编程》第七章学习笔记

《Unix/Linux系统编程》第七章学习笔记

作者:互联网

第七章 文件操作

7.1 文件操作级别

fdisk 将硬盘、u盘或sdc盘区分
mkfs 格式化磁盘区分,为系统做好准备
fsck 检查和维修系统
碎片整理 压缩文件系统中的文件
FILE mode I/O: fopen(), fread(), fwrite(), fseek(), fclose(),fflush()
char mode I/o: gete(), getchar(), ugetc(), putc(), putchar()
line mode I/O: gets(), fgets(), putc(), puts(), fputs()
formatted I/O: scanf(), fscanf(), sscanf(), printf(), fprintf(), sprintf()
kumount(),kumount()
                  (mount/umount file systems)
kmkdir(),krmdir()
                    (make/remove directory)
kchair(),kgetCwd()
                   (change directory,get CWD pathname)

klink(),kunlink()
                    (hard link/unlink files)

kchmod(),kchown(),kutime()           (change r|w|x permissions,owner,time)
kcreat(),kopen()
                     (create/open file for R,W,RW,APPEND)
kread(),kwrite()                     (read/write opened files)
klseek(),kclose()                    
(Lseek/close file descriptors)
keymlink(),kreadlink ()
              (create/read symbolic 1ink files)

kstat(),kfstat(),klatat()            (get file status/information)
kopendir(),kreaddir()
                (open/read directories)


7.2 文件I/O操作


如图为文件操作示意图

分为用户模式和内核模式操作

7.3 低级别文件操作

1.分区
(1) 主引导记录(MBR)
一个块存储设备,如硬盘、U盘、SD卡等,可以分为几个逻辑单元,称为分区。各分区均可以格式化为特定的文件系统,也可以安装在不同的操作系统上。
(2)格式化分区
fdisk只是将一个存储设备划分为多个分区。每个分区都有特定的文件系统类型,但是分区还不能使用。为了存储文件,必须先为特定的文件系统准备好分区。该操作习惯上称为格式化磁盘或磁盘分区。在Linux中,它被称为mkfs,表示Make文件系统。Linux支持多种不同类型的文件系统。

7.4 ET2文件系统简介

Block#0:
引导块,文件系统不会使用它。它用于容纳从磁盘引导操作系统的引导程序。
Block#1:
超级块(在硬盘分区中字节偏移量为1024)。用于容纳关于整个文件系统的信息。
Block#2:
块组描述符(硬盘上的s_first_data_blocks-1)EXT2将磁盘块分成几个组,每个组有8192个块(硬盘上的大小为32K)
Block #8:块位图(Bmap)
用来表示某种项的位序列。0表示对应项处于FREE状态,1表示处于IN_USE状态。1个软盘有1440个块,但Block#0未被文件系统使用,所以对应位图只有1439个有效位,无效位视作IN_USE处理,设置为1.

Block #9:索引节点位图(Imap)
一个索引节点就是用来代表一个文件的数据结构。EXT2文件系统是使用有限数量的索引节点创建的。各索引节点的状态用B9 中 Imap中的一个位表示。在EXT2 FS 中,前10个索引节点是预留的。所以,空EXT2FS的Imap 以10个1开头,然后是0。无效位再次设置为1。

Block #10:索引(开始)节点块(bg_inode_table)
每个文件都用一个128字节(EXT4中的是256字节)的独特索引节点结构体表示。

标签:文件,编程,文件系统,fbuf,Unix,fd,内核,Linux,磁盘
来源: https://www.cnblogs.com/ruier/p/15387982.html