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

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

    5.2K30发布于 2020-12-30
  • 来自专栏肉眼品世界

    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联系起来呢 除了传统的Buffered IO可以比较自由的用偏移+长度的方式读写文件之外,mmap和Direct IO均有数据按页对齐的要求,Direct IO还限制读写必须是底层存储设备块大小的整数倍(甚至Linux

    3.3K10编辑于 2022-01-20
  • 来自专栏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
  • 来自专栏猫头虎博客专区

    LeetCode 6-10 题 详解 Java版 ( 万字 图文详解 LeetCode 算法题6-10 =====>>> <建议收藏>)

    上边就是先压,然后出,其实我们可以直接倒过来求,可以省略压的过程。 今天我们一起学习了LeetCode 6-10 题的算法分析,感谢大家阅读,觉得不错记得收藏哦! 喜欢 请点个 + 关注

    22710编辑于 2024-04-07
  • 来自专栏C语言例题100题

    C语言经典例题100(6-10

    思路: 使用循环嵌套来写这个代码,我们首先要让i=1的时候,做一遍1的乘法运算,也就是说我们的j<=i,所以我们第二个for循环就可以写成是让j也从1开始遍历,范围要小于等于i,以此递增。

    26510编辑于 2025-06-04
  • 来自专栏python、mysql、go知识点积累

    07-02 django 6-10

    字段查询 all():返回模型类对应表格中的所有数据。 get():返回表格中满足条件的一条数据,如果查到多条数据,则抛异常:MultipleObjectsReturned, 查询不到数据,则抛异常:DoesNotExist。 filter():参数写查询条件,返回满足条件 QuerySet 集合数据。 条件格式: 模型类属性名__条件名=值 注意:此处是模型类属性名,不是表中的字段名 关于 filter 具体案例如下: 判等 exact。

    91840发布于 2020-04-14
  • 来自专栏大数据成长之路

    Hadoop源代码分析【6-10

    小结 Hadoop源代码分析【6-10】主要为大家科普了RPC实现通信的流程,以及 DataNode在升级 / 回滚/ 提交时底层的变化。

    64120发布于 2021-01-27
  • 来自专栏全栈开发那些事

    6-10 二分查找 (20分)

    L是用户传入的一个线性表,其中ElementType元素可以通过>、==、<进行比较,并且题目保证传入的数据是递增有序的。函数BinarySearch要查找X在Data中的位置,即数组下标(注意:元素从下标1开始存储)。找到则返回下标,否则返回一个特殊的失败标记NotFound。

    27320编辑于 2023-02-27
  • 来自专栏Gorit 带你学全栈系列

    编程入门、进阶100例(6-10题)

    本期用先用java去实现代码,后面我会慢慢补全c语言和python的代码 题目索引 六、温度转换问题 6.1 问题描述 6.2 示例 6.3 代码实现 七、求阶乘之和 7.1 问题描述 7.2 示例 7.3 代码实现 八、打印水仙花数 8.1 打印100~1000之间的水仙花数 8.2 示例 8.3 代码实现 九、求100~200以内的素数 9.1 问题描述 9.2 示例 9.3 代码实现 十、实现冒泡排序 10.1 问题描述 10.2 示例 10.3 代码实现 六、温度转换问题 6.1 问题描述 输

    59110编辑于 2021-12-09
  • 来自专栏机器学习/数据可视化

    MySQL50-4-第6-10

    MySQL50-4-第6-10题 本文中介绍的是第6-10题,涉及到的主要知识点: 模糊匹配和通配符使用 表的自连接 in/not in 连接查询的条件筛选 ?

    24810发布于 2021-03-01
  • 来自专栏Corley的开发笔记

    C语言经典习题100例(二)6-10

    给大家推荐一门大数据Spark入门课程https://www.bilibili.com/video/BV1oi4y147iD/,希望大家喜欢。

    46020发布于 2020-07-23
  • 来自专栏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 层(IO调度算法) 由于源码以及编译的临时文件都不大但数量极其多,对随机IO的要求非常高。

    2.4K51发布于 2020-05-13
  • 来自专栏沉默王二

    明白了的基本操作后,我们需要去深入地思考一下,是如何工作的。换句话说,为了使这个数据结构按照的方式去工作,它需要什么? 1)需要有一个指针,我们称之为 TOP,用它来指向中最顶部的那个元素。 2)当我们初始化一个的时候,我们把 TOP 的值设置为 -1,这样我们就可以通过 TOP == -1 来判断是否为空。 空的时候,TOP 等于 -1;把元素 1 压入中的时候,stack[0] 为 1,TOP 加 1 变为 0;把元素 2 压入中的时候,stack[1] 为 2,TOP 加 1 变为 1;把元素 3 假设中的元素是 int 类型,我们可以用 Java 语言来自定义一个最简单的。 3)用于浏览器:浏览器的后退按钮会把我们访问的 URL 压入一个中,每次我们访问一个新的页面,新的 URL 就压入了的顶部,当我们点了后退按钮,最新的那个 URL 就从中移除,之前的那个 URL

    89320发布于 2021-03-16
  • 来自专栏这里只有VxWorks

    IO之Standard IO

    VxWorks provides a standard I/O package (stdio.h) with full ANSI C support that is compatible with the UNIX and Windows standard I/O packages.

    1.1K30发布于 2020-08-11
  • 来自专栏搬砖记录

    Java学习笔记-全-Java基础-09-IO流中的总结

    标准代码(try-with-source) import java.io.*; public class TestIO { public static void main(String[] args) 2.2 IO中的装饰器模式 ? 3. (2)字符流和字节流的区别 ①字节流操作本身用不到缓冲区(内存),直接与文件进行操作;字符流有缓冲区,写后需要flush(close后会自动flush) ②使用io流时,先考虑目标对象是字节流还是字符流

    63120发布于 2021-08-18
  • 来自专栏这里只有VxWorks

    IO之Formatted IO

    Formatted I/O /* ANSI */ /* write a formatted string to the standard output stream */ int printf(char *, ...); /* write a formatted string to a buffer */ int sprintf(char *, char *, ...); /* write a formatted string to a buffer, not exceeding buffer

    1.1K40发布于 2020-08-11
  • 来自专栏linux驱动个人学习

    buffer io和direct io

    总的来说,Buffer I/O为了提高读写效率和保护磁盘,使用了页缓存机制,不过由于页缓存处于内核空间,不能被应用程序(用户进程)直接寻址,所以还需要将页缓存数据再拷贝到内存对应的用户空间中。这样,需要两次数据拷贝才能完成用户进程对数据的读取操作。写操作也是一样,将页缓存的数据写入磁盘的时候,必须先拷贝到内核空间对应的主存,然后在写入磁盘中。

    1K50编辑于 2023-07-09
  • 来自专栏这里只有VxWorks

    IO之Basic IO

    Basic I/O system的7个函数:creat(), remove(), open(), close(), read(), write(), ioctl()。creat()与remove()主要用于文件系统。函数声明如下

    1.3K30发布于 2020-08-06
  • 来自专栏月梦·剑心的技术专栏

    IOIO模型

    这是普通的IO操作,除此之外还有各种方式用于加快IO,譬如DMA、零拷贝技术等。 网络IO 服务端如何实现高并发、海量连接与网络IO的方式有着千丝万缕的联系,与磁盘IO不同的是,网络IO是从网卡拿数据,仅此而已 在讨论网络IO的方式之前,我们应该先对阻塞/非阻塞、同步/异步的概念有一个比较清晰的认识 ,可以将网络IO分为阻塞IO和非阻塞IO 具体来说,用户态进程发起了读写请求,但是内核态数据还未准备就绪(磁盘、网卡还没准备好数据), 如果进程需要阻塞等待,直到内核数据准备好,才返回,则为阻塞IO; 如果内核立马返回,不会阻塞进程,则为非阻塞IO; 同步IO与异步IO 在一次IO中数据传输的两个步骤中,但凡有一处发生了阻塞,就被称为同步IO;如果两个步骤都不阻塞,则被称为异步IOIO多路复用 为了解决上面提到的NIO会导致大量系统调用的问题,出现了IO多路复用模型。

    85700编辑于 2023-12-09
  • 来自专栏北京马哥教育

    IO类型与IO模型

    IO类型 同步与异步(synchronous,asynchronous):关注消息通知机制 同步: 进程发出系统调用之后,不会立即有返回信息,但是一旦有返回信息,则一定是最终结果. IO模型的分类 阻塞I/O 非阻塞I/O 复用I/O 事件驱动I/O 异步I/O 自己画的 ? 画完之后参考网上的 ? 阻塞I/O模型 ? 当用户进程发起系统调用之后,该进程可以发送多个处理请求交给内核处理,select,poll,epoll都是IO多路复用的机制。

    2K70发布于 2018-05-03
领券