Linux内核的系统调用以及文件I/O和标准库I/O的关系

Linux kernel结构

  1. 内存管理单元
    • 内存分配和管理:虚拟地址(0~4G)线性地址,物理地址。
  2. 进程管理单元
    *程序---->任务(单进程,多进程,单进程多线程)
    死的---->活的
  3. 文件系统
    • 文件系统是操作的系统提供给用户和计算机交互的接口。
    • 组织文件管理文件
  4. 网络模块:提供网络协议栈等功能
  5. 驱动模块:提供设备驱动

Linux文件系统的结构

shell命令或应用程序
系统调用函数
虚拟文件系统VFS
FAT文件系统
通用块层
I/O调度层
EXT4文件系统
其他磁盘文件系统etc
/proc虚拟文件系统
内存缓冲区
devfs设备文件
其他IO接口etc
块驱动程序
IDE接口
块设备
SCSI接口

系统调用

用户或者程序通过系统kernel提供的系统调用接口(一系列函数),实现对kernel的使用,从而访问硬件。

为什么使用系统调用

  1. 保护稀有资源
  2. 提供用户访问稀有资源的接口
  3. 防止用户访问稀有资源的竞态导致稀有资源被破坏

计算机I/O

计算机I/O即计算机输入输出,根据封装来源的不同,分为标准I/O和文件I/O。

区别点标准IO文件IO
来源标准C库的函数POSIX系统调用
效率效率高效率低
缓冲机制
可移植性只要有标准C库就能用仅限于类UNIX操作系统
使用的函数fopen,fread,fwrite,fcloseopen,read,write,close
可操作性的对象在Linux下只能操作普通文件可以操作文件和设备
操作对象FILE*(文件流指针)文件描述符

两种I/O数据传输过程

实际上标准库I/O也是使用系统提供的系统调用接口实现I/O功能,只不过在堆区自动开辟了缓冲区。

通过标准C库使用标准I/O进行文件读写,和直接通过系统函数进行系统调用的过程为下图:
ppeiGAP.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值