免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 13646 | 回复: 1
打印 上一主题 下一主题

[C] c真的可以直接操作文件吗? [复制链接]

论坛徽章:
0
1 [报告]
发表于 2008-01-31 16:05 |显示全部楼层
sihan 说的大致没有错
一般情况下,我们并不能直接对磁盘进行读写操作
事实上,操作系统会维护一个内存区域,这个区域由很多小块内存组成
每一内存小块对应磁盘的一个小单元,比如一个扇区
然后我们对磁盘的所有读写操作,实际上都是对相应的内存镜像的操作
而磁盘与内存镜像之间的同步工作由操作系统完成(即所谓的读磁盘,写磁盘)

当然,这只是大概的一个描述,操作系统对于文件系统的管理
涉及到的磁盘读取,镜像分配,数据定位,文件组织,数据同步有很多复杂的机制跟算法
如果感兴趣,可以找本介绍内核的书,找文件系统相关的章节翻翻

[ 本帖最后由 halve 于 2008-1-31 16:07 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-01-31 16:29 |显示全部楼层
对磁盘的操作,都是根据一个最小单位来进行的,比如扇区,一次读取一个扇区,一次更改一个扇区
根据你的流程
open() 得到这个文件磁盘布局的索引信息,即每个位置的数据存在磁盘哪个扇区上
lseek() 得到文件指定位置处数据对应的扇区位置
write() 修改扇区内容
这个过程中,所有的操作都是作用于磁盘的内存镜像
有可能你要修改的扇区并没有对应的内存镜像
这个时候系统会负责将这个扇区读入内存(总的镜像数目有限制,若没有多余空闲区域,系统会释放一个已经不再使用的镜像)
然后你修改这一小块内存之后,系统会在一个合适的时间将这块内存的内容写入扇区
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP