文件系统、系统调用

来源:互联网 发布:windows硬盘安装工具 编辑:程序博客网 时间:2024/06/01 09:57

文件系统

1.概述

此处讨论的文件系统是指内核用来管理文件系统以及对文件操作的机制和实现。Linux的文件系统

包括1.磁盘文件2.设备文件3.特殊文件。

a.磁盘文件

就是侠义上的文件,包括ramdisk、ext2等文件类型

b.设备文件

设备驱动设计的文件

c.特殊文件

/dev/null,管道等。

2.vfs

Linux为支持各种不同的文件系统,设计了VFS这一层。VFS向下为各种不同的文件系统提供接入口,

向上为用户提供open、close、read、write、ioctl等文件操作接口。所以在用户层可以忽略文件类

型,不论底层是何种文件类型都可以采用统一的系统调用。每种文件系统都有自己的file_operations,

用于实现对具体文件的open、write等操作(因为底层不同的文件类型,open、write

等方法肯定不一样)。VFS的作用就是根据用户空间的参数找到具体文件的file_operations。从这个意义

上来说一个设备相当于一个文件系统,例如rtc设备是一种文件系统,i2c是另外一种文件系统,因为他

们都有自己对应的file_operations。

具体的VFS和文件的关系如下图。


3.VFS和具体文件的关联

每个进程通过open操作与具体的文件关联起来,这中连接以file数据结构作为连接,其中file数据结构中有一个

file_operation的指针f_ops。通过open操作找到具体的文件系统,然后将此文件系统的file_operations操作集

找到并赋值给file数据结构中的f_ops,即相当于指定了这个file所属的文件系统,并且open在用户层返回的就是

这个file描述符,所以后续可以直接通过这个描述符进行file_operation中的其他如read、write等操作了。


这部分的内容可以参考《情景分析》一书。

系统调用

系统调用本质上是通过swi这条软指令实现,执行这条指令之后会触发一个异常使cpu进入特权模式。ARM除用户

模式之外都可称之为特权模式,用户模式不能访问芯片的某些寄存器比如cpsr,所以用户模式不能切换到其他模

式,但是可以从其他特权模式切换回用户模式。swi可以传递软指令号,这里就是传递系统调用号,然后内核可以

根据这个swi传递进来的调用号查找内核对应的系统调用的实现。

系统调用(open)的具体实例可参考

http://blog.chinaunix.net/uid-15141543-id-2775959.html


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怀孕腰两侧长肉怎么办 怀孕四个月半月吃点就饱怎么办啊 怀孕四个月睡眠不好怎么办 二胎七个月肚子太大怎么办 上火牙疼牙龈肿怎么办 孕30周乳房胀痛怎么办 怀孕长妊娠纹了怎么办 坐久了肚子胀疼怎么办 怀孕后胖的太快怎么办 怀孕牙齿全坏了怎么办 怀孕脸胖了好多怎么办 孕晚期不爱吃肉怎么办 怀孕期间胖了怎么办啊 孕期长得太胖怎么办 狗吃马肉脸肿了怎么办 狗过敏了脸肿了怎么办 孕初期外阴很痒怎么办 怀孕了吃了田鸡怎么办 孕妇睡眠质量差怎么办吃什么 39周2天了还不生怎么办 孕中期体重猛长怎么办 4个半月胎位不正怎么办 41周不产生宫缩怎么办 生完孩子胎盘没有脱落怎么办 39周还是臀位怎么办 怀孕7个月胎位不正怎么办 怀孕六个多月胎位不正怎么办 怀孕七个月了胎位不正怎么办 怀孕七个月胎位不正怎么办 怀孕肚子上有妊娠纹怎么办 怀孕九个月肚子长痱子怎么办 怀孕前体重偏胖怎么办 怀孕打胰岛素血糖控制不好怎么办 孕后期憋的难受怎么办 怀孕6个月不想生怎么办 孕六个月不想要怎么办 怀孕9个月喝酒了怎么办 怀孕8个月喝醉了怎么办 怀孕6个月胃酸烧心怎么办 怀孕7个月胃酸怎么办 怀孕5个月胃酸怎么办