总结系统IO和标准IO的区别

news/2024/11/15 0:54:58/文章来源:https://www.cnblogs.com/hhail08/p/18299423
Linux系统IO:除了open函数之外,其它的函数第一个形参都是文件描述符。对文件进行IO操作:写入和读取操作是没有缓存操作。write因为没有缓存的操作,如果IO操作的数据很多的情况下是不建议使用,特别是那种多媒体数据文本文档数据。因为没有缓存的操作,如果IO操作的数据不多的情况下,而且是操作硬件设备的信息数据,最好就用他。
标准IO:除了fopen函数之外,其它的函数最后一个形参都是文件流指针。对文件进行IO操作:写入和读取操作是有缓存(有个缓冲区)操作。因为有缓存的操作,如果IO操作的数据很多的情况下最好用它,特别是那种多媒体数据文本文档数据。因为有缓存的操作,如果IO操作的数据不多的情况下,是不建议使用,而且是操作硬件设备的信息数据,最好不要用他。函数接口总结:Linux系统IO:是Linux系统提供的系统接口,系统内部运行的时候也在调用的,简称系统调用函数,man 2open、close、read、write、lseek、mmap、ioctl标准IO:是C标准库提供的,那是可以跨系统平台的fopen、fclose、fread、fwrite:读写若干个数据fgets、fputs、gets(已经遗弃了)、puts:读写一行数据fgetc、fputc、putchar、getchar:读写一个字节的数据ftell:获取当前读写位置到文件首部的偏移量feof:判断当前的读写位置时候到了文件的末尾fseek:偏移读写位置 (fseek和lseek的区别)ferror:判断当前读写操作时候有错两种IO的使用理解:原来标准IO是系统IO的升级版(C库给你升级的,库函数),这个升级版一般用于应用层(数据库文件管理)。是不是说没有缓存区的很垃圾?不是的,看情况,在开发环境中,系统IO 用于 对设备文件的数据进行IO操作:设备文件产生的信息本来就不多,实时性要求很高(硬件产生的数据对实时性要求很高)标准IO 用于 磁盘中的普通文件的数据、以及数据库对库中的数据进行IO操作等等 其实数据库里面就是用标准IO实现的。因为这些数据都是很大的,那么使用有缓存区的操作就会更好提高CPU的IO操作性能。

标准IO分析,fflush主动刷新缓存区,设置缓存区的大小,设置缓存区机制(setbuff)

image


系统IO分析

image


简述FAT32与NTFS的区别:
安全性:NTFS 安全性更高,可以针对不同用户设置不同的访问级别,并且作为日志类磁盘,即便在数据传输过程中遭遇突发状况造成传输中断,也可通过日志恢复数据,防止数据丢失。而 FAT32 不支持这些安全性功能。

兼容性:FAT32 兼容性较好,在 Windows 系统和 macOS 系统中均能被正常读写,常被制作成 U 盘。NTFS 兼容性较差,虽然是 Windows 开发的磁盘格式,但 Windows 2000 之前的系统版本无法正常读写,macOS 系统对其仅有只读权限,不能取出/写入数据。

单个文件容量限制:FAT32 格式磁盘在传输单个文件时,数据不能超过4GB。而 NTFS 格式磁盘则没有此限制。

分区容量:FAT32 格式磁盘最大扩容仅能达到32GB,NTFS 格式磁盘的最大扩容可以达到2TB(在 GPT 分区下可支持高达128PB)。

使用功能:FAT32 推出较早,功能相对简单。NTFS 功能丰富,如支持文件索引、加密操作、压缩分区等。

闪存性能:NTFS 采用的“日志式”分区形式会对 U 盘等闪存介质造成较大负担,降低其使用寿命。而 FAT32 在闪存性能方面更优。

在实际应用中,如果需要在不同操作系统之间频繁交换数据,且存储设备不需要存储大于4GB 的单个文件,那么 FAT32 是一个较好的选择;如果是在 Windows 系统下使用磁盘(包括机械硬盘和固态硬盘),且需要利用 NTFS 的高级功能,如文件加密、权限控制等,那么 NTFS 是首选;如果需要使用 U 盘等移动设备来存储大文件,并且希望这些设备能在多个操作系统上都能被识别和使用,那么 exFAT 是最佳选择,它是微软为闪存 U 盘量身定制的格式,突破了 FAT32 单个文件容量的限制,支持大于4GB 的文件,同时在台式机或笔记本和移动设备之间的互操作能力较强,且支持访问控制,在多个操作系统上也有较好的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/742717.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32驱动-DHT11(温湿度模块)

STM32驱动-DHT11(温湿度模块) 一、DHT11模块简介 DHT11是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片…

输出的魅力

关于一份代码不同输出的不同结果。。(luogu能A) printf快写正常cout解绑cout就离谱

大厂性能优化的10大顶级方案 (万字图文史上最全)

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

[学习笔记] 长链剖分 - 图论

长链剖分 字面意思,不同于重链剖分,每次选取最长的树链进行剖分,直到剖完为止。其原理和重链剖分相似。建议学习长链剖分前,先学习 重链剖分。 重链剖分能做的,长链剖分都能做(当然不包括找重儿子),长链剖分还能以 \(O(nlogn)-O(1)\) 的优秀复杂度找到 \(k\) 级祖先(当…

腾讯云加速企业和个人开发创新公开课直播预告

直播预告:07/18(周四)15:00-16:00 随着人工智能与大模型的蓬勃发展,我们正步入一个由技术驱动的创新时代。Al不仅是技术革新的先锋,更是每位程序员不可或缺的“搭子”,掌握AI工具的创造、加工与使用技巧,成为广大从业者当下的挑战之一。 腾讯云高性能应用服务HAl,打造一系…

CSP提高组模拟1

T1很明显的最短路floyed算法,但是这个最大的点权却不是很好维护,但我们可以想到枚举最大的点权其实就可以相当于枚举floyed中的k,那么这时我们要对k进行一个排序操作,使得我们每次枚举的中转点k为枚举经过路径的点权最大的点从而达到同时走最短路并维护点权最大值。点击查看…

【服务器搭建】为啥虚拟主机不能用IP直接访问?

需求 直接用IP访问了自己在线上的网站,结果发现被拒绝❓因为,IP映射的是一整台服务器,而服务器上可以部署的的服务是多种多样的。除了web网站服务,还可能有ftp文件传输服务,mail邮箱服务等。这时仅仅给出IP是不够的,需要在IP后添加端口号作进一步区分。 当然,如果用浏览…

应急响应命令(Linux)

netstat -anultp 查看进程(用来判断开启了哪些服务等)ls -al 查看目录下所有文件,包括隐藏文件 ls -alt 查看目录下所有文件,包括隐藏文件,按时间顺序排序cat access.log | wc -l 查看文件的行数 wc -l是查看文件行数的意思cat -e access.log | grep 1.php 查…

U7-11课综合练习+12课阶段测评练习——复习练习题目

[2的n次方] 高精度乘法复习资料:https://www.cnblogs.com/jayxuan/p/18287673重复做以下操作 $n $ 次:对每一位乘以 $2 $,然后进位。(当然也可以使用正常的高精度乘法)【参考代码】 #include<bits/stdc++.h> using namespace std;int ans[59]; int main() {int n;ci…

telegram发卡机器人

iDataRiver是一家提供telegram发卡机器人的发卡平台,商家上架商品后,自动获得平台提供的免费telegram发卡机器人。iDataRiver是一家提供telegram发卡机器人的发卡平台。 商家上架商品后,自动获得平台提供的免费telegram发卡机器人。 如果希望将机器人头像/名称设置成自己的,…

发卡网收益如何usdt提现

iDataRiver是一家支持直接使用加密货币USDT提现的发卡平台, 支持TRON(波场)、BSC(币安)、ETH(以太坊)区块链。iDataRiver是一家支持直接使用加密货币USDT提现的发卡平台, 支持TRON(波场)、BSC(币安)、ETH(以太坊)区块链。 由于iDataRiver天然的web3属性,加密货币拥有第一原生地…

《JavaScript权威指南第7版》中文PDF+英文PDF+源代码 +JavaScript权威指南(第6版)(附源码)PDF下载阅读分享推荐

JavaScript是Web编程语言。绝大多数网站都使用JavaScript,所有现代Web浏览器(无论是桌面、平板还是手机浏览器,书中以后统称为浏览器)都包含JavaScript解释器,这让JavaScript成为有史以来部署最广泛的编程语言。过去十年,Node.js让浏览器之外的JavaScript编程成为可能,N…