Linux 文件IO、虚拟地址空间

1、标准C库IO函数

在这里插入图片描述

通过FILE文件指针操作

1、文件描述符:索引到对应的磁盘文件; 文件句柄(Windows)

2、文件读写指针位置:读写文件过程中指针的实际位置。对文件数据进行操作,有读指针和写指针。

3、I/O缓冲区:提高程序执行效率(降低写磁盘次数),缓冲区满了,只调用一次Linux系统I/O写入磁盘;
缓冲区默认8192byte,大概8K,不建议修改它。

内在剖析:
FILE.h
在这里插入图片描述
libio.h
在这里插入图片描述
通过指针来维护:
在这里插入图片描述
在这里插入图片描述

标准C库IO函数 首先调用 系统的IO函数,系统IO函数会返回文件描述符fd,标准C库IO函数得到 fd 后再给 _fileno 赋值。然后通过 _fileno的值 找到对应的文件,再通过各种指针对数据进行操作。

2、标准C库IO和Linux系统IO的关系

在这里插入图片描述

3、虚拟地址空间

在这里插入图片描述
问题:
1、4G的内存加载三个大小分别为1G、2G、3G的应用程序时会出现内存不够的问题;
2、释放部分程序后会出现内存不连续没法加载新程序的情况。

因此发明虚拟地址空间技术!

用户区:

  • 用户区占用3G,内核区占用1G
  • CPU中的MMU将虚拟地址和物理地址之间进行转换。
  • 受保护地址:比如NULL
  • .text是一些代码,二进制机器指令
  • .data 已初始化的全局变量
  • .bss 未初始化的全局变量
  • 堆:new/malloc创建(由 低地址 往 高地址 存)
  • 共享库
  • 栈:局部变量 (由 高地址 往 低地址 存)
  • 命令行参数
  • 环境变量:env
    在这里插入图片描述
    内核区:
    只能通过Linux系统调用来操作,调用Linux系统的API。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值