首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • Linux IO协议

     图片来源自网络,保持更新;更多内容请关注 cnblogs.com/xuyaowen 

    5.2K30发布于 2020-12-30
  • 来自专栏刘晓杰

    5(标准IO)

    *restrict buf, int mode, size_t size); Returns: 0 if OK, nonzero on error 2 打开流 三个函数可以打开一个标准IO 3 读和写流 一旦打开了流,则有三种不同类型的非格式化IO进行选择,对其进行读写操作 (1)每次一个字符的IO。 一次读或者写一个字符,如果流是带缓冲的,则标准IO会处理所有缓冲 (2)每次一行IO。就要使用fgets和fputs,每行都以一个换行符终止。 (3)直接IO。 fread和fwrite支持这种类型的IO。 fp); int fputc(int c, FILE *fp); int putchar(int c); All three return: c if OK, EOF on error 5

    87540发布于 2019-02-21
  • 来自专栏肉眼品世界

    Linux内核IO技术详解

    所以后面的讨论基本上是讨论IO相关的系统调用和文件系统Page Cache的一些机制。 Linux内核中的IO 这一小节来看Linux内核的IO的结构。 先上一张全貌图[4]: 由图可见,从系统调用的接口再往下,Linux下的IO致大致有三个层次: 文件系统层,以 write 为例,内核拷贝了write参数指定的用户态数据到文件系统Cache中,并适时向下层同步 块层,管理块设备的IO队列,对IO请求进行合并、排序(还记得操作系统课程学习过的IO调度算法吗?) 设备层,通过DMA与内存直接交互,完成数据和具体设备之间的交互 结合这个图,想想Linux系统编程里用到的Buffered IO、mmap、Direct IO,这些机制怎么和Linux IO联系起来呢 这里给篇参考文章[5],不再赘述(更好的选择是去读TLPI相关章节)。 文件读写遭遇断电时,数据还安全吗?相信你有自己的答案了。使用O_SYNC或者fsync刷新文件就能保证安全吗?

    3.3K10编辑于 2022-01-20
  • 来自专栏梦在深巷

    IO的内核原理与5IO模型

    通过系统调用会返回一个文件描述符、那么剩下对socket的操作就会转化为对这个描述符的操作、不能不说这又是一种分层和抽象的思想、 这里的I/O指缓冲I/O; 根据UNIX网络编程对I/O模型的分类,UNIX提供了5种 TCP/IP协议维护着两个缓冲区:send buffer和recv buffer,它们合称为socket buffer。 两者的区别就在于同步做IO操作的时候会将进程阻塞、按照这个定义、之前所述的阻塞IO、非阻塞IOIO复用、信号驱动都属于同步IO、有人可能会说、非阻塞IO并没有被阻塞啊、这里有个非常狡猾的地方、定义中所指的 这里之所以单独拿出来是因为如果还没有清除IO概念很容易混淆、所以理解IO模型之前一定要理解IO概念、如果看完前面两个问题、相信也能理解信号驱动IO与异步IO的区别在于启用异步IO意味着通知内核启动某个IO 缓存I/O 缓存 IO 又被称作标准 IO,大多数文件系统的默认 IO 操作都是缓存 IO

    2.5K54发布于 2020-04-21
  • 来自专栏悠扬前奏的博客

    Groovy-5.文件IO

    1.概述 Groovy提供的文件I/O方法有: 读取文件 写入文件 便利文件树 读取和写入数据对象到文件 涉及到的标准Java类有: java.io.File java.io.InputStream java.io.OutputStream java.io.Reader java.io.Writer 2.文件读取 以下例子将文本文件的所有行依次读取并打印 import java.io.File class Example { static File file = new File("E:/Example.txt") println file.text } } 3.写入文件 import java.io.File ("E:/Example.txt") println "The file ${file.absolutePath} has ${file.length()} bytes" } } 5.

    45520发布于 2019-06-02
  • 来自专栏微信公众号:Java团长

    理解一下5IO模型、阻塞IO和非阻塞IO、同步IO和异步IO

    5IO模型、阻塞IO和非阻塞IO、同步IO和异步IO 看了一些文章,发现有很多不同的理解,可能是因为大家入切的角度、环境不一样。所以,我们先说明基本的IO操作及环境。 IO有内存IO、网络IO和磁盘IO三种,通常我们说的IO指的是后两者。 2、5IO模型 《UNIX网络编程》说得很清楚,5IO模型分别是阻塞IO模型、非阻塞IO模型、IO复用模型、信号驱动的IO模型、异步IO模型;前4种为同步IO操作,只有异步IO模型是异步IO操作。 特点:回调机制,实现、开发应用难度大; 2-5、异步IO模型 ? 当进程发起一个IO操作,进程返回(不阻塞),但也不能返回果结;内核把整个IO处理完后,会通知进程结果。 3-1、阻塞IO调用和非阻塞IO调用、阻塞IO模型和非阻塞IO模型 注意这里的阻塞IO调用和非阻塞IO调用不是指阻塞IO模型和非阻塞IO模型: 阻塞IO调用 :在用户进程(线程)中调用执行的时候,进程会等待该

    38.8K71发布于 2020-08-24
  • 来自专栏LINUX阅码场

    浅墨: 聊聊Linux IO(中)——Linux内核中的IO

    由图可见,从系统调用的接口再往下,Linux下的IO致大致有三个层次: 文件系统层,以 write(2) 为例,内核拷贝了write(2)参数指定的用户态数据到文件系统Cache中,并适时向下层同步 块层,管理块设备的IO队列,对IO请求进行合并、排序(还记得操作系统课程学习过的IO调度算法吗?) 设备层,通过DMA与内存直接交互,完成数据和具体设备之间的交互 结合这个图,想想Linux系统编程里用到的Buffered IO、mmap(2)、Direct IO,这些机制怎么和Linux IO联系起来呢 那Direct IO做了什么?这个机制更狠,直接让用户态和块IO层对接,直接放弃Page Cache,从磁盘直接和用户态拷贝数据。好处是什么? 除了传统的Buffered IO可以比较自由的用偏移+长度的方式读写文件之外,mmap(2)和Direct IO均有数据按页对齐的要求,Direct IO还限制读写必须是底层存储设备块大小的整数倍(甚至

    2.7K20发布于 2019-10-08
  • 来自专栏小鹏的专栏

    tf API 研读5:Data IO

    数据IO {Data IO (Python functions)} 一个TFRecords 文件为一个字符串序列。 数据IO {Data IO (Python functions)} 操作 描述 class tf.python_io.TFRecordWriter 一个用于将记录(records)写入TFRecords 文件的类 tf.python_io.TFRecordWriter. __init__(path, options=None) 打开文件路径,并创建一个TFRecordWriter以供写入 tf.python_io.TFRecordWriter.write(record) 将一个字符串records写入文件中 tf.python_io.TFRecordWriter.close() 关闭文件 tf.python_io.tf_record_iterator(path, options

    60260发布于 2018-01-09
  • 来自专栏电子技术研习社

    Linux笔记(5)| 文件IO操作(续)

    今天继续说一下文件IO操作。 5、fcntl函数介绍 int fcntl(int fd, int cmd, ... /* arg */ ); fcntl的常用cmd F_DUPFD这个cmd的作用是复制文件描述符(作用类似于dup 6、标准IO库介绍 标准IO和文件IO有什么区别 (1)看起来使用时都是函数,但是:标准IO是C库函数,而文件IO是linux系统的API (2)C语言库函数是由API封装而来的。 譬如IO,文件IO是不带缓存的,而标准IO是带缓存的,因此标准IO比文件IO性能要更高。 主要参考:朱老师物联网大讲堂

    1.2K40发布于 2020-07-10
  • 来自专栏算法其实很好玩

    Day5-线性表--最小问题

    第一次,空时,来了个-3,数据,最小 第二次,来了个-5,数据-5,-5<-3,最小-5 此时我getMin,最小顶是-5,没毛病~ 第三次,来了个0,数据0,0>-5,则最小再压当前的最小元素,即-5 第四次,我执行pop,弹出顶,最小也要弹,-5弹出 第五次,我再执行 pop,最小再弹-5,此时最小顶是-3,getMin也是-3,没毛病 ? ()); minStack.push(-5);//此时getmin应该是-5 printf("top:[%d]\n", minStack.top()); printf("min minStack.push(0);//0入,此时getmin还是-5 printf("top:[%d]\n", minStack.top()); printf("min:[

    45620发布于 2019-07-16
  • 来自专栏逍遥剑客的游戏开发

    Nebula3学习笔记(5): IO系统

    IO子系统 Nebula3的IO系统相对于Nebula1和2是一个巨大的进步, 新系统的主要设计目标有: 使用更标准的机制, 如用URI来定位资源, 用MIME类型来区分数据格式 一个灵活的流模型, 所以在保证可移植性的前提下不损失性能, 必须使用特定平台的IO函数 IO子系统的一些主要概念: 一个中枢的IO::Console 对象连接控制台处理器(console handler)来进行文本的输入和输出 例如你可以把IO::XmlReader连接到IO::FileStream来从文件系统读取XML格式的数据, 或者连接到IO::HttpStream来从HTTP连接读取XML格式的数据. 让我们来看看有哪些重要的类: IO::FileStream: 提供了访问主机文件系统的功能 IO::MemoryStream: 一个具有流接口的动态内存缓冲 IO::HttpStream: 提供了一个流接口来访问 CreateStream("http://www.radonlabs.de/index.html");  4:     Ptr<XmlReader> xmlReader = XmlReader::Create();  5:

    85840发布于 2018-05-23
  • 来自专栏Android点滴分享

    汇编学习(5),函数,

    本篇介绍 本篇介绍下汇编中的函数,帧内容。 帧 对于intel处理器,在调用函数的时候需要保证rsp是16字节对齐的,这样设计是为了更好的支持SIMD。那体现到代码上是怎样呢? 本来在调用main函数之前rsp是16字节对齐的,可是在调用main时候,由于会将返回地址压,这时候rsp就不是16字节对齐了,就需要prologue中再次执行一个进操作,就可以保证是对齐的了。

    69310编辑于 2022-12-07
  • 来自专栏达达前端

    PHP全学习笔记5

    PHP全学习笔记5 php与mysql数据库,PHP支持很多数据库,与mysql为牛逼组合,mysql数据库的基础知识的掌握是由必要的,要了解如何操作mysql数据库,数据表的方法。

    2K20发布于 2019-07-03
  • 来自专栏黯羽轻扬

    铁定不纯的IO_Haskell笔记5

    Show类参数,返回一个IO (),称之为I/O Action,也是一种类型,如下: > :k IO IO :: * -> * > :k IO () IO () :: * > :i IO newtype (IO a) -- Defined in ‘GHC.Base’ 从类型上看,IO与Maybe :: * -> *类似,都是接受一个具体类型参数,返回具体类型(比如IO ()) P.S.其中,newtype 在I/O List的场景(把m换成IO,t换成[]),参数的类型约束是[IO a],返回值的类型约束是IO [a],所以相当于: sequence' [] = do return [] sequence > IO () putChar :: Char -> IO () putStr :: String -> IO () -- 输入 getChar :: IO Char getLine :: IO String :: Handle -> IO String hClose :: Handle -> IO () openFile接受一个FilePath和IOMode参数,返回IO Handle,拿着这个Handle

    1.9K30发布于 2019-06-12
  • 来自专栏微信公众号【Java技术江湖】

    Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO

    希望看完本文,读者可以对非阻塞 IO 和异步 IO 的迷雾看得更清晰些,或者为初学者解开一丝丝疑惑也是好的。 非阻塞 IO 说完了阻塞模式的使用及其缺点以后,我们这里就可以介绍非阻塞 IO 了。 NIO.2 异步 IO More New IO,或称 NIO.2,随 JDK 1.7 发布,包括了引入异步 IO 接口和 Paths 等文件访问接口。 首先,我们就来关注异步的文件 IO,前面我们说了,文件 IO 在所有的操作系统中都不支持非阻塞模式,但是我们可以对文件 IO 采用异步的方式来提高性能。 到这里,异步 IO 就算介绍完成了。 小结 我想,本文应该是说清楚了非阻塞 IO 和异步 IO 了,对于异步 IO,由于网上的资料比较少,所以不免篇幅多了些。

    65910发布于 2019-11-21
  • 来自专栏小工匠聊架构

    高性能网络编程 - 解读5IO模型

    ,服务器接受请求(1-3); 2)构建响应,当服务器接收完请求,并在用户空间处理客户端的请求,直到构建响应完成(4); 3)返回数据,服务器将已构建好的响应再通过内核空间的网络 I/O 发还给客户端(5- 实际应用程序在系统调用完成上面的 2 步操作时, 调用方式的阻塞、非阻塞, 操作系统在处理应用程序请求时,处理方式的同步、异步处理的不同,可以分为 5 种 I/O 模型 五种I/O模型 I/O模型1:阻塞式 缺点:信号 I/O 在大量 IO 操作时可能会因为信号队列溢出导致没法通知。 信号驱动 I/O 尽管对于处理 UDP 套接字来说有用,即这种信号通知意味着到达一个数据报,或者返回一个异步错误。 而在 Linux 系统下,Linux 2.6才引入,目前 AIO 并不完善,因此在 Linux 下实现高并发网络编程时都是以 IO 复用模型模式为主。 5 种 I/O 模型总结 从上图中我们可以看出,越往后,阻塞越少,理论上效率也是最优。

    69830编辑于 2023-11-11
  • 来自专栏Java小白成长之路

    5次文章:关于IO流的基本操作

    本周学习了关于Java中的IO流,IO流中有许多基本的操作方法,此处不便于列举,我们使用三个具体的程序,顺带的整理一下本周的学习情况!

    48030发布于 2019-09-27
  • 来自专栏bisal的个人杂货铺

    IO相关的等待事件troubleshooting-系列5

    在这样最优执行计划就是多块读扫描的场景,可以通过调整多块IO的容量进行调优,需要修改实例参数DB_FILE_MULTIBLOCK_READ_COUNT,计算:DB_BLOCK_SIZE x DB_FILE_MULTIBLOCK_READ_COUNT = 系统的max_io_size。 这个默认值和可以高效执行的最大IO容量相关。参数值依赖于平台,对于大多数平台是1MB。因为参数是以块表示的,所以也可以设置为一个和可以高效执行的最大IO容量相当的值(被标准块容量切分)。 5. 最后,可以考虑最长访问的段包含的数据数量(通过将旧的、不需要的数据移出数据库),或将这些段移动到新的、更快的磁盘,以降低IO的响应时间。 (未完待续)

    55020编辑于 2022-12-01
  • 来自专栏趣学算法

    数据结构 第5讲 顺序

    数据结构 第5讲 顺序        小张终于攒钱买了车,可是他家住在胡同的尽头,胡同很窄,只能通过一辆车,而且是死胡同,每天小张都为停车发愁,回家早了停在里面,早上上班就要让所有的人挪车,先让胡同口那辆出去 不按套路出牌啊~~~ 下面讲解顺序的初始化、入,出,取顶元素等操作(元素以int类型为例)。 1. 顺序初始化         初始化一个空: ? 入前要判断是否满,如果已满,则入失败,否则将元素放入顶,顶指针向上移动一个空间(top++)。 例如输入1,入: ? 接着输入2,入: ? 出前要判断是否空,如果是空的,则出失败,否则将顶元素暂存给一个变量,顶指针向下移动一个空间(top--)。 ? 取顶元素 取顶元素和出不同,取顶元素只是把顶元素复制一份,而出是指内不再包含这个元素。

    64530发布于 2018-09-13
  • 来自专栏LINUX阅码场

    打通IO:一次编译服务器性能优化实战

    作者简介 廖威雄,就职于珠海全志科技股份有限公司,负责Linux IO研发、性能优化、开源社区开发交流、Linux 内核开源社区pstore/blk,mtdpstore模块的作者(与maintainer 由于认知的局限性,如有考虑不周的地方,希望一起交流学习 整体认识IO 如果有完整的IO的认识,无疑有助于更细腻的优化IO。循着IO从上往下的顺序,我们逐层分析可优化的地方。 在网上有Linux完整的IO结构图,但太过完整反而不容易理解。按我的认识,简化过后的IO应该是下图的模样。 ? 用户空间:除了用户自己的APP之外,也隐含了所有的库,例如常见的C库。 根据这个流程,考虑到我没要到KVM host的权限,我只能着手从Guest端的IO做优化,具体包括以下几个方面: 交换分区(swap) 文件系统(ext4) 页缓存(Page Cache) Request 默认值是5,表示如果此时掉电,你最多丢失5s的数据量。设置更大的数据,就可以缓存更多的数据,相对的掉电也有可能丢失更多的数据。在此服务器不怕掉电的情况,把数值加大可以提高性能。

    2.4K51发布于 2020-05-13
领券