【Linux】解析 [用户/文件(内核)缓冲区 ],总结画图演示【系统调用与库函数的根本区别】

前言

大家好吖,欢迎来到 YY 滴Linux系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁
主要内容含:
在这里插入图片描述

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

一.C语言缓冲区的机制与策略(无缓冲,行缓冲,全缓冲)

1.缓冲区机制:

  1. 无缓冲(立即刷新)
  2. 行缓冲 (行刷新)
  3. 全缓冲 (缓冲区满了,再刷新)

例子:

  1. 一般对于显示器文件,进行行缓冲(行刷新)
  2. 对于磁盘上的文件,进行全缓冲 (缓冲区满了,再刷新)

2.缓冲区策略:

  1. 一般策略:强制刷新
  2. 特殊情况: 进程退出 的时候,一般要进行刷新缓冲区,即上述强制刷新

二.重新理解【用户/文件(内核)缓冲区 】【刷新】【数据的读写本质】

1.用户缓冲区方面:

  • 刷新: 把数据从C语言缓冲区写入操作系统
  • 我们日常中使用最多的,就是C/C++提供的语言级别的缓冲区
  • 而像一些系统调用,例如write()就没有使用C语言的缓冲区

2.文件缓冲区方面:

  • 而文件缓冲区,属于操作系统层面,存在于FILE结构体中;
  • 无论读写都要把数据加载到文件缓冲区中

3.内核缓冲区方面

  • 文件系统的缓冲区属于内核缓冲区的一种
  • 我们在应用层进行数据的读写本质 是将内核缓冲区中的数据进行来回的拷贝

三.总结画图演示【系统调用与库函数区别】:

  1. 系统调用直接到文件缓冲区一步到位
  2. 库函数还要经过用户缓冲区

在这里插入图片描述

四.样例模型演示

1.现象演示——引出原理

  • 我们打印一段代码
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YY的秘密代码小屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值