Linux系统的I/O操作涉及的内核缓冲区
admin
2024-05-14 01:44:40
0

一.  Linux系统中I/O操作

Linux系统中,常见的I/O操作,如 read() 函数或 write() 函数。

在调用 write() 函数时,我们认为该函数一旦返回,数据便已经写到了文件中,但是这种概念只是宏观上的。实际上,操作系统实现某些文件 I/O 时(如磁盘文件),为了保证I/O的效率,在内核通常会用到一片专门的区域(内存或独立的I/O地址空间)作为 I/O 数据缓冲区。它用在输入输出设备和CPU之间,用来缓存数据,使得低速的设备和高速的 CPU 能够协调工作,避免低速的输入输出设备长时间占用CPU,减少系统调用,提高了 CPU 的工作效率。

二.   Linux 系统中的内核缓冲区

1. 延迟写:

UNIX 或 Linux 系统在设计时使用了内核缓冲区。

Linux系统的延迟写原理:大多数磁盘 I/O 都通过缓存进行,当将数据写到文件上时,通常该数据先由内核复制到缓存中,如果该缓存尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要刷新缓冲时,再将该缓存写入输出队列,然后等待其到达队首时,才进行实际的 I/O 操作。这种输出方式被称为延迟写。

2.  Linux系统中同步接口函数

为了保证磁盘上实际文件系统与缓存中内容的一致性,系统提供了同步接口,包括 sync() 函数、fsync() 函数与 fdatasync() 函数。同步缓存函数如下:

sync() 函数:

#include

void sync(void);

函数sync() 始终成功。但是 sync() 只是将所有修改过的块的缓存排入写队列,然后就返回,它并不等待实际I/O 操作结束。系统守候进程一般每隔一段时间调用一次 sync() 函数。这就保证了定期刷新内核的块缓存。

fsync() 函数 与 fdatasync() 函数:

int fsync(int fd);

int fdatasync(int fd);

fsync() 函数则等待 I/O 结束,然后返回。fsync() 多用于数据库相关的应用程序,它确保修改过的块立即写到磁盘中。

fdatasync() 只是更新内容,如果没有必要,并不更新元数据(即该文件的属性,例如上次修改内容的时间)。

如果执行成功时,fsync()函数/fdatasync()函数返回0;否则返回-1,同时设置 errno 以指明错误。

三. 总结

磁盘I/O操作中提供的这种延迟写机制,虽然减少了磁盘读写次数,可以有效的提供 CPU 工作效率。但是缺点是:降低了文件内容的更新速度,使得欲写到文件中的数据在一段时间内并没有写到磁盘上。当系统发生故障时,这种延迟可能造成文件更新内容的丢失。

所以,这种延迟读写机制,有利有弊。

相关内容

热门资讯

和讯投顾王宇:还剩三天,题材能... 2月10日,和讯投顾王宇表示,当下市场题材分歧愈发明显,节前仅剩三个交易日,到底还能不能继续博弈?极...
美股三大指数集体高开 新闻荐读 美东时间周二,美股三大指数集体高开,截至北京时间23:00左右,道指涨逾360点,续创盘中...
华润置地,任命新的集团营销负责... 近日,市场消息,华润置地原杭州公司分管副总朱勇,被任命为集团运营管理部副总经理,分管整个开发销售型业...
原创 比... 当地时间2月9日,路透社的一则报道引发广泛关注:中国汽车制造商比亚迪已正式对美国政府提起诉讼,剑指美...
裕同科技拟4.49亿元收购华研... 苹果、泡泡玛特主要供应商裕同科技(002831)2月10日晚间公告,拟4.49亿元收购东莞市华研新材...
巨亏50亿!AI制药独角兽IP... 2月4日,AI+可编程药物公司Generate:Biomedicines向美国证券交易委员会(SEC...
多家知名品牌宣布:春节期间,涨... 过年脚步临近,春节假期是线上消费的高峰期,也是运力最为紧张的时期。顺丰、京东物流、圆通、申通、中通、...
担忧受AI冲击 美国微软公司股... (央视财经《天下财经》)据彭博社等媒体9日报道,当天,美国梅利乌斯研究公司将微软公司的股票评级从“买...
原创 2... 写在文章前的声明:在本文之前的说明:本文中所列的投资信息,只是一个对基金资产净值进行排行的客观描述,...
青藏高原发现天然氢:可以拉开能... 近日,中国科学家在青藏高原的岩石里,第一次实实在在地“看到”了天然氢气。 它不是通过计算或地表泄漏推...
上海小南国回应餐厅停止营运 北京商报讯(记者 郭缤璐)2月10日晚间,上海小南国控股有限公司发布公告,对于上海小南国品牌在上海经...
招金矿业致歉:向遇难者表示沉痛... 2月10日,招金矿业在港交所发布公告: 最近,招金矿业股份有限公司蚕庄金矿(“蚕庄金矿”)上庄矿段...
君乐宝上市布局细分赛道领跑增长... 2026年1月19日,中国领先的综合乳制品企业君乐宝乳业集团股份有限公司(简称“君乐宝”)正式向香港...
酒业渠道商再闯港股,名品世家董... 蓝鲸新闻2月10日讯(记者 朱欣悦)2月10日,港股GEM上市公司环球印馆控股有限公司(08448....
上市银行,迎密集调研! 2026年以来,上市银行迎来机构密集调研,其中沿海经济发达区域的中小银行是机构重点调研对象。 截至2...
豆包压哨参战,决战春节流量窗口... 本报(chinatimes.net.cn)记者卢晓 北京报道 春节AI红包大战继续升温。 2月10日...
小米汽车准备进入美国市场?雷军... 2月10日,针对小米YU7被拍到行驶在美国加州的高速公路上,挂着当地的测试车牌或进入美国市场的消息,...
春节后部分黄金产品将调价?周大... 2月10日,有消息称,黄金珠宝品牌周大福在春节后将对黄金产品调价,此次调价或于3月中旬启动,目前部分...
标普500指数高开9.67点,... 标普500指数高开9.67点,涨幅0.14%,报6974.49点; 道琼斯工业平均指数高开57.6...
中国银行调整春节期间代理个人上... 中国银行2月10日发布关于2026年春节期间代理个人上金所业务相关调整的公告称,2026年春节假期临...