Linux编程手册学习笔记3

第十四章:系统编程的概念

4、5、13章介绍了文件I/O,本章和后续章节则会深入探讨与文件相关的一系列主题。15章讨论文件的各种相关属性,16章和17章则会关注linux2.6的两个新特性,18章讨论目录和链接。

一、设备专用文件(设备文件):
设备专用文件与系统的某个设备相对应,有些设备是存在,比如鼠标、磁盘和磁带设备;有些则是虚拟的,但内核会通过设备驱动程序提供一种抽象设备,设备无差异性。

设备分为两种类型:字符型设备(基于每个字符处理数据)和块设备(每次处理一块数据)。mknod命令创建设备文件;

设备ID:主、辅ID,主设备号与驱动程序相对应。

二、磁盘和分区:fdisk -l命令列出磁盘上的所有分区; /proc/partitions文件记录了磁盘分区的主辅设备号、大小和名称。
通常磁盘分区容纳的信息分类:文件系统、数据区域、交换区域(mkswap创建交换区域),swapon、swapoff,/proc/swaps文件可以查看当前已经激活交换分区的信息。

三、文件系统:
1、ext2文件系统:
2、文件系统结构:引导块(操作系统引导)、超级块(参数信息)、i节点表(i-list)、数据块。

四、i节点:文件类型,文件属主、组,访问权限,时间戳,硬链接数量,文件大小,块数量,指向文件数据块的指针;

ext2文件系统,数据块不一定连续;每个i节点15个指针,0~11(直接指针),12(间接指针),13(双重间接指针),14(三重间接指针);理论可以存储略高于4TB文件(4096数据块大小);文件黑洞对应的文件指针打上标记0,无需分配数据块。

五、虚拟文件系统(VFS):应用程序-VFS-具体文件系统;通用接口,

六、日志文件系统:文件元数据更新以事务的方式存储在专用的磁盘日志文件中,以便于恢复文件的一致性。linux支持日志文件系统有:Reiserfs(将小文件和元数据放入同意磁盘块)、ext3(追加日志功能的ext2)、JFS、XFS、ext4、BtrFS。

七、单根目录层级和挂载:mount device directory;mount;进程也可以挂载自己的文件系统;

八、文件系统的挂载和卸载:/proc/mounts可以查看当前已挂载的文件系统列表;/etc/mtab;/etc/fstab;
mount系统调用:source,target;fstype,mountflags,data;
卸载文件系统:umount和umount2(扩展版,增加控制参数);

九、高级挂载特性:
1、在多个挂载点挂载文件系统;
2、多次挂载同一挂载点;
3、基于每次挂载设置不同挂载标志;
4、绑定挂载:无需复制目录就可改变访问方式。
5、递归绑定挂载:复制子挂载(–bing和–rbind);

十、虚拟内存文件系统:tmpfs
mount -t tmpfs source target;
改善应用程序性能,比如编译器,频繁访问的/tmp目录;
默认tmpfs系统大小可以提高到RAM容量的一半,但在创建和重新挂载的时候可以使用mount的size=nbytes选项为文件系统的大小设置不同的上限值;一旦卸载tmpfs,或者遭遇系统崩溃,数据将丢失;

两个用途:内核隐形挂载tmpfs,用于实现System V共享内存和共享匿名内存映射;挂载于/dev/shm的tmpfs文件系统,为glibc用以实现POSIX共享内存和POSIX信号量;

十一、获得与文件系统相关的信息:statvfs()和fstatvfs();块片段和数据块;statfs()和fstatfs()系统调用返回f_type字段,内含文件系统的类型;

第十五章:文件属性

获取和改变文件的各种属性(文件元数据);

一、stat(),lstat(返回符号链接本身),fstat();

1、利用宏major()和minor()获取dev_t值得主、辅ID,linux中宏定义在

你可能感兴趣的:(学习笔记)