当前位置: 首页 > news >正文

佛山制作做网站建设信用卡申请进度查询官方网站

佛山制作做网站,建设信用卡申请进度查询官方网站,网站页脚怎么做,厦门公司黄页IO类型 缓存 I/O 缓存 I/O 又被称作标准 I/O#xff0c;大多数文件系统的默认 I/O 操作都是缓存 I/O。在 Linux 的缓存 I/O 机制中#xff0c;数据先从磁盘复制到内核空间的缓冲区#xff0c;然后从内核空间缓冲区复制到应用程序的地址空间#xff08;用户空间#xff0…IO类型 缓存 I/O 缓存 I/O 又被称作标准 I/O大多数文件系统的默认 I/O 操作都是缓存 I/O。在 Linux 的缓存 I/O 机制中数据先从磁盘复制到内核空间的缓冲区然后从内核空间缓冲区复制到应用程序的地址空间用户空间。 读操作操作系统检查内核空间的缓冲区有没有需要的数据如果已经缓存了那么就直接从缓存中返回也就是将数据复制到应用程序的用户空间否则从磁盘中读取数据至内核空间的缓冲区再将内核空间缓冲区的数据返回。 写操作将数据从用户空间复制到内核空间的缓冲区这时对用户程序来说写操作就已经完成。至于什么时候将数据从内核空间写到磁盘中这步由操作系统决定除非显示地调用了 sync 同步命令。 缓存 I/O 的优点 在一定程度上分离了内核空间和用户空间保护系统本身的运行安全 可以减少读盘的次数从而提高性能。 send数据图解 缓存 I/O 的缺点存在四次上下文切换用户态与内核态之间切换四次数据拷贝CPU参与 这些数据拷贝操作所带来的 CPU 以及内存开销是比较大的。CPU参与四次拷贝的计算机好像已经不多见了内核到磁盘的数据拷贝更多的是采用DMA。 如果采用DMA的IO完整流程图 这里还是发生了 4 次用户态与内核态的上下文切换发生了 4 次数据拷贝但其中两次是 CPU参与的拷贝降低了CPU压力。 直接 I/O Linux提供了对这种需求的支持即在open()系统调用中增加参数选项O_DIRECT用它打开的文件便可以绕过内核缓冲区的直接访问这样便有效避免了CPU和内存的多余时间开销。顺便提一下与O_DIRECT类似的一个选项是O_SYNC后者只对写数据有效它将写入内核缓冲区的数据立即写入磁盘将机器故障时数据的丢失减少到最小但是它仍然要经过内核缓冲区 #include stdio.h #include stdlib.h #include fcntl.h #include unistd.h #include sys/types.h #include sys/stat.h #include sys/mman.h #include string.h #define FILE_SIZE 4096 // 假设文件大小为4KB为了示例简单 #define BLOCK_SIZE 512 // 假设块大小为512B int main() { int fd; char *buffer; off_t offset 0; ssize_t bytes_read, bytes_written; // 打开文件使用O_DIRECT和O_SYNC标志 fd open(testfile, O_RDWR | O_CREAT | O_TRUNC | O_DIRECT | O_SYNC, 0644); if (fd -1) { perror(open); exit(1); } // 分配内存对齐的缓冲区 // 注意直接I/O要求缓冲区是块大小的整数倍并且内存对齐到块大小的边界 posix_memalign((void **)buffer, BLOCK_SIZE, FILE_SIZE); if (buffer NULL) { perror(posix_memalign); close(fd); exit(1); } // 写入文件 memset(buffer, A, FILE_SIZE); // 填充数据 bytes_written pwrite(fd, buffer, FILE_SIZE, offset); if (bytes_written ! FILE_SIZE) { perror(pwrite); free(buffer); close(fd); exit(1); } // 重置偏移量以进行读取 offset 0; // 读取文件 bytes_read pread(fd, buffer, FILE_SIZE, offset); if (bytes_read ! FILE_SIZE) { perror(pread); free(buffer); close(fd); exit(1); } // 打印读取的数据可选 // ... // 清理 free(buffer); close(fd); return 0; } 注意对齐问题直接I/O要求缓冲区在内存中是块大小的整数倍并且从块大小的边界开始。在上面的示例中我们使用posix_memalign来分配内存对齐的缓冲区。 文件大小为了简单起见上面的示例假设文件大小为4KB并且块大小为512B。在实际应用中你可能需要处理更大的文件和/或不同的块大小。 错误处理在生产代码中你应该更详细地处理错误情况并为用户提供有用的错误消息。 性能考虑虽然直接I/O可以提高性能但它也可能增加复杂性并可能不适用于所有用例。在决定使用它之前请确保你了解其优点和缺点。 内核参数在某些情况下你可能需要调整内核参数来启用或优化直接I/O。例如/proc/sys/vm/dirty_bytes、/proc/sys/vm/dirty_background_bytes等参数可能会影响直接I/O的性能。
http://www.zqtcl.cn/news/38293/

相关文章:

  • 网站一个人可以做吗网站项目团队介绍怎么写
  • 网站怎么推广效果最好沈阳做网站的互联网公司
  • 网站平台开发报价单外链吧
  • 苏州专业设计网站怎么查询网站的备案号
  • 杨凌住房和城乡建设局网站公司已有网站 如何自己做推广
  • 网上做一道题2元的网站本地wordpress 上传到服务器
  • 用wordpress仿a站网站建设开发兴田德润
  • 做网站市场价格小程序sdk开发
  • 无锡网站推广公司排名wordpress user role
  • 服务器外面打不开网站正规手机网站怎么做
  • 代做毕设网站推荐搜资源
  • 高端大气上档次的网站模板网页设计与制作简答题答案
  • 旅游网站介绍怎么写app运营方案
  • 有哪些专门做减肥内容的网站工商管理局注册查询
  • 国外怎么做直播网站wordpress 主页面错乱
  • 桂林网站开发公司电话top域名的网站打不开
  • 咸宁网站设计公司4006668800人工服务几点
  • 广州做网站基本流程北京城乡住房建设厅网站
  • 网站设计计费深圳本地招聘网站
  • 网站正在建设页面制作网站免费建站
  • 做3ds磁铁卡网站微信网络推广方案
  • 金华英文网站建设做网站中的镜像是什么
  • 个人博客网站的建设结构图广安发展建设集团官方网站
  • php做网站如何架构app软件网站开发
  • 卖渔具的亲戚做网站怎么样做一家装修竞标网站
  • 六一儿童节网站制作seo的工作内容
  • 代发新闻稿的网站商品的销售网站总体设计
  • 服务网站建设公司百度论坛首页官网
  • wordpress网站翻译插件网站开网站开发设计公司
  • 没固定ip怎么做网站新品怎么刷关键词