文件系统、系统调用
来源:互联网 发布: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
- 文件系统--mknod系统调用
- 文件系统、系统调用
- 文件系统的系统调用过程
- linux系统调用与文件系统
- linux:文件系统的系统调用
- Linux0.12-文件系统-系统调用接口
- [文件系统]read系统调用剖析(一)
- [文件系统]read系统调用剖析(二)
- 第五章 文件系统的系统调用
- Linux文件系统编程 系统调用 文件复制
- unix系统之与文件系统相关的系统调用
- 文件系统过滤驱动 重要系统调用总结--part1
- RTEMS文件系统(4):系统调用开发信息(上)
- RTEMS文件系统(4):系统调用开发信息(中)
- RTEMS文件系统(4):系统调用开发信息(下)
- Linux文件系统学习(四)之read open系统调用
- open系统调用流程--从vfs到底层文件系统
- Linux文件系统(七)---系统调用之open操作(一)
- mysql 导入导出
- CPU寄存器的种类
- 编译内核到模块(无需加载)
- MySQL5绿色版windows下安装总结
- 黑马程序员-----张孝祥-7K月薪面试题破解之一_交通灯管理系统视频教程观后总结
- 文件系统、系统调用
- 微信一亿用户背后架构秘密
- MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程
- 第二章 Linux-2.6.32.2 内核移植详细步骤
- 成功移植Mplayer到OK6410开发板上了
- 【打基础】高级语言程序设计·厦大出版社 课后习题个人记录1
- 在Linux开放3306端口
- paip.提升安全性---选择一个安全的加密算法
- Lenovo E40