当前位置: 首页 > news >正文

Linux系统架构与IO解析

一.linux操作系统分层结构​

硬件层

硬件

内核层

系统调用(文件IO)

内核

驱动

应用层C库函数

标准I/O

应用层

app

app

...

二.虚拟内存区间划分

32位操作系统虚拟内存地址

0GB-3GB 用户空间

栈区 (stack)
局部变量、函数形参、函数执行

堆区 (heap)
malloc / new 动态分配

.bss 段
未初始化的全局/静态变量

.data 段
已初始化的全局/静态变量

.text 段
可执行程序指令

低地址

3GB-4GB 内核空间

内核代码 / 数据 / 驱动
用户程序无法直接访问

三.系统调用与库函数的区别

对比维度系统调用库函数
层级定位操作系统内核提供的底层接口(如open)基于系统调用/纯用户逻辑封装的高层工具(如C标准库fopen)
运行空间运行于内核空间需切换CPU特权级(用户态→内核态)运行于用户空间,无需特权级切换
功能本质直接操作硬件/内核资源(如读写磁盘、创建进程)1.封装系统调用实现复杂功能(如printf调用write) 2.纯用户态逻辑(如strlen计算字符串长度)
性能开销因 “用户态↔内核态” 切换,开销较大1.若封装系统调用,开销略低(减少切换次数)2.纯用户态函数开销极小
移植性依赖操作系统内核,移植性差(如Linux与Windows系统调用不同)跨平台库(如C标准库),移植性好(同一函数适配多系统)

四.标准IO介绍

定义:
标准 I/O 是 C 库提供的输入输出函数集合
由 ANSI C 标准统一规范,
为跨平台 IO 操作奠定基础;
跨平台性:
在UNIX 系统、
Windows系统、
Linux 等多系统操作均实现标准 I/O 库,
让代码跨平台开发更顺畅;
高效实现原理:
通过缓冲机制(内存临时存储数据),
减少直接系统调用次数,
降低硬件交互开销,
提升 IO效率;
易用性设计:
基于系统底层调用封装,
屏蔽复杂硬件操作,
开发者无需关注设备细节,
简单调用函数即可完成 IO;

程序

C库函数
(如 printf)

条件触发
缓冲区满/程序结束

系统调用
(用户态→内核态切换)

内核空间
(解析请求,调用驱动)

硬件
(执行 IO 操作)

五.流

定义:
所有 I/O 操作抽象为字节的“移入/移出”程序的过程,这种字节流动形态,称为流。
分类:
文件流:
按字符编码(如 ASCII、UTF-8)处理,注重文本语义
二进制流:
直接操作原始字节,保留数据原始形态(如图片,可执行文件);
默认打开的流:
stdin:
标准输入流(如键盘输入)
stdout:
标准输出流(如屏幕打印)
stderr:
标准错误流(专用于输出错误信息)

六.FILE对象

定义:
FILE 对象是一个结构体,用于存储文件或流相关的所有状态信息(如文件描述符、缓冲区大小、缓冲区当前位置、文件结束标志等等);
FILE对象与流对应关系:
每个流在内存中由一个 FILE 对象表示,通过 FILE* 指针访问;
标准流的特殊 FILE 对象:
stdin:
是标准输入流对应的 FILE 对象指针,
通常关联到键盘输入;
stdout:
是标准输出流对应的 FILE 对象指针,
通常关联到控制台输出;
stderr:
是标准错误流对应的 FILE 对象指针。
通常关联到控制台,
用于输出错误信息;

http://www.jsqmd.com/news/583075/

相关文章:

  • 计算机毕业设计:Python汽车销量智能可视化与预测系统 Flask框架 可视化 机器学习 AI 大模型 大数据(建议收藏)✅
  • python编程语法基础笔记(4.2)(python模块、包、反射、单例)
  • 山西口碑好的实体店获客公司哪家可靠
  • PHP源码运行受主板供电影响吗_供电相数重要性说明【技巧】
  • 告别重复劳动:利用快马ai高效生成模块化ubuntu20.04安装教程网站
  • 【芳芯科技】多种气体采集短信远程无线报警设备设计
  • 计算机毕业设计:Python车市销量大数据看板 Flask框架 scikit-learn 可视化 requests爬虫 AI 大模型(建议收藏)✅
  • C++的std--ranges开发辅助
  • enith.NET v0.0.6 发布 [特殊字符] — API 大幅精简,为 Metal 后端铺路
  • 如何利用SQL子查询进行非结构化数据处理_文本匹配
  • OpenClaw任务调度优化:千问3.5-35B-A3B-FP8资源利用率提升
  • 省时省力!PPT批量转PDF方法请查收
  • 3.30作业
  • Windows + Linux 双系统 完整版全流程教程(新手零翻车)
  • C++的std--bit位操作函数族与硬件指令在算法优化中的映射
  • AA-PEG-Cholesterol,保留了胆固醇对脂质双层的锚定能力
  • 计算机毕业设计:Python汽车数据智能分析中枢 Flask框架 可视化 机器学习 AI 大模型 大数据(建议收藏)✅
  • 2032年全球32mm和53mm热转印(TTO)设备市场达4.7亿美元:驱动与挑战并存
  • 紧急预警!Vim惊现远程代码执行漏洞CVE-2026-34714,开发者必看防护指南
  • Elsevier Tracker:学术审稿状态自动化追踪解决方案
  • 从 Agent 到 Skill:揭秘 AI 产品经理进阶的真正关键!
  • 【洛谷】P1449 后缀表达式
  • C++ 模板元编程工程应用
  • 如何彻底解决Mac滚动方向混乱:Scroll Reverser完整配置指南
  • MPC轨迹跟踪:给定圆形道路的CarsimSimulink联合仿真运动学研究
  • const和#define的区别
  • OpenClaw 从翻车到迎来上百项更新:MiniMax、腾讯、阿里、有道 8 位专家拆解OpenClaw本土化实战解法
  • 基于stm32单片机的智能导盲系统的设计与实现
  • AI医生实战入门到精通,吃透真实EHR看这篇就够了!
  • 从安装到界面实操:ABB RobotStudio 入门核心教程