首页 > 其他分享 >总结系统IO和标准IO的区别

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

时间:2024-07-12 21:43:03浏览次数:14  
标签:总结 文件 缓存 区别 FAT32 IO 操作 数据

Linux系统IO:
        除了open函数之外,其它的函数第一个形参都是文件描述符。
        对文件进行IO操作:写入和读取操作是没有缓存操作。write
        因为没有缓存的操作,如果IO操作的数据很多的情况下是不建议使用,特别是那种多媒体数据文本文档数据。
        因为没有缓存的操作,如果IO操作的数据不多的情况下,而且是操作硬件设备的信息数据,最好就用他。
标准IO:
        除了fopen函数之外,其它的函数最后一个形参都是文件流指针。
        对文件进行IO操作:写入和读取操作是有缓存(有个缓冲区)操作。
        因为有缓存的操作,如果IO操作的数据很多的情况下最好用它,特别是那种多媒体数据文本文档数据。
        因为有缓存的操作,如果IO操作的数据不多的情况下,是不建议使用,而且是操作硬件设备的信息数据,最好不要用他。
        

函数接口总结:

Linux系统IO:是Linux系统提供的系统接口,系统内部运行的时候也在调用的,简称系统调用函数,man 2
     open、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 的文件,同时在台式机或笔记本和移动设备之间的互操作能力较强,且支持访问控制,在多个操作系统上也有较好的支持。

标签:总结,文件,缓存,区别,FAT32,IO,操作,数据
From: https://www.cnblogs.com/hhail08/p/18299423

相关文章

  • 暑假模拟赛总结
    csp-j模拟赛2A公式求值加入前缀和思想的高精度加法。B最长的Y我永远喜欢IOI赛制。考场写了两份代码,调了两个小时,结果到最后10分钟发现第一个代码能够subtask1,第二个能过subtask2,于是结合起来喜提\(60\)分。我们先找到每一个\(Y\)块,然后循环找到左右两边离他......
  • EtherCAT总线耦合器:在欧姆龙Sysmac Studio软件里的配置步骤
    EtherCAT总线适配器XD7000作为网络接口,连接主控制器(如PLC)和其他EtherCAT设备,实现实时、高效的数据交换。通过EtherCAT总线耦合器,用户能够将所有设备连接在一个主网络上,并通过一个以太网端口进行控制。EtherCAT总线耦合器能够自动检测和确定不同的设备连接方式,从而实现快速、直接和......
  • zzuli-production practice 2
    1.安装配置Redis并练习基础命令操作官网:https://redis.io中文网:Redis中文网解压直接可以使用:redis.windows.conf:配置文件redis-cli.exe:redis的客户端redis-server.exe:redis服务器端安装Redis服务1、由于上面虽然启动了redis,但是只要一关闭cmd窗口,redis服务就会......
  • 7.12 模拟赛总结
    这是暑假的第一个模拟赛,和新高一的一起打的T1T2T3T4tot50pts45pts100pts0pts195tps总的来说不是很满意,最近的状态有点低迷,但考虑到刚刚结束文化课还是情有可原,一切都会好起来的!T1[USACO09DEC]CowTollPathsG题意:给定\(n,n\le300\)个点,\(m,m\le1e4......
  • 如何在函数中使用return返回axios的请求结果
    使用场景:在添加学生上课记录的时候,需要先获取学生的剩余课时,需要通过接口获取。所以需要封装一个方法,能够通过接口获取学生的课时数量。解决方案:通过异步解决封装方法的代码如下:constgetStudentCourseCount=async()=>{letnum=0awaitaxios({method:......
  • Vue2与Vue3的区别
    Vue2官方已经发布不再维护了,很多公司也开始纷纷使用vue3了。那么vue3和vue2有哪些不同呢?vue3(下面简称v3)又在vue2(下面简称v2)上做了哪些拓展与改进呢?(1)首先最大的区别是数据双向绑定的改进,v2用的是es5的数据劫持Object.definedProperty,这个会一开始就给所有的数据设置了监听,比......
  • 周总结7.12
    本周呢个人基本掌握了java当中的一些基本的语法,和之前所学的c++,c有很多出入,所以学习起来会轻松很多,最主要的是本人学习了MySQL语句的基础篇已经学完了,了解到了MySQL的基本语法DDL,DML,DQL,DCL根据学习呢我明白了对于以后进行软件开发主要学习的是DML与DQL增删改查的一些操作,其中......
  • dremio 25.0.5 docker 镜像
    就在今天dremio提供了25.0.5社区版的下载地址,但是目前docker镜像暂时还没提供,以下是基于eclipse-temurin:11.0.23_9-jdk基础镜像的一个可用镜像DockerfileFROMeclipse-temurin:11.0.23_9-jdk LABELmaintainer=Dremio COPYdremio-community-25.0.5-2......
  • Visio 2019 中文版安装下载教程【32/64位】,图文步骤详解,超简单,无套路!!!
    文章目录前言软件介绍软件下载安装步骤激活步骤前言本文针对visio2019的下载安装进行详细讲解,没有任何套路,大家可以放心使用,由于该类文章容易被和谐,大家可以收藏关注,以免迷路,若安装出现问题,请移步本文章收入的专栏,里面有解决方法,专栏内收入了超多好用软件,欢迎大家......
  • 浅谈HTTP中Get与Post的区别
    Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/......