系统IO

发布时间:2024年01月22日

OS:操作系统
????????管理和分配硬件资源的系统软件,现代操作系统必须提供并发功能
? ? ? ? 介于应用与硬件之间的


在linux下做应用开发,其实就是调用操作系统提供的API函数的接口操作硬件

一、文件IO是什么?

文件IO分为系统IO和标准IO


IO:input ?output? ? ?对文件的输入和输出操作的基本函数接口

Linux有一个设计思想:Everything is a file in Linux(一切皆文件)

文件系统:是用来存储,组织和管理文件的一套方法和规则(NTFS,fat32,exfat......)

存储文件一般分为两个部分:
? ? ? ? 文件的属性:inode唯一标识一个文件的存在与否(文件名,文件类型,文件大小......)
? ? ? ? 文件本身的内容(用户数据)

Linux中到底如何组织和存放文件的呢?

大概步骤:
? ? ? ? struct inode{}?
? ? ? ? 用来描述一个文件的物理inode信息.系统识别到一个文件的存在,就会为它创建一个struct inode的结构体,一个文件只会唯一的对应一个struct inode

? ? ? ? 如果打开了某一个文件
? ? ? ? 使用struct file的结构体表示这个打开的文件

? ? ? ? 一个文件可以同时被多个进程打开,一个进程也可以同时打开多个文件
? ? ? ? 一个进程同时打开了多个文件,意味着需要保存每一个打开的文件的struct file
? ? ? ? 使用一个数组保存了所有struct file结构体的地址(结构体指针数组)

? ? ? ? 对于用户来说,我们操作文件的时候只需要知道数组的下标,就可以去操作这个文件,这个下标在用户的眼中叫做文件描述符

? ? ? ? 操作文件的内部流程:
? ? ? ? ? ? 数字(文件描述符)
? ? ? ? ? ? ? ? ------->
? ? ? ? ? ? 进程文件表项的内容(结构体指针数组)
? ? ? ? ? ? ? ? ------->
? ? ? ? ? ? struct file?
? ? ? ? ? ? ? ? ------->
? ? ? ? ? ? struct inde?
? ? ? ? ? ? ? ? ------->
? ? ? ? ? ? 硬件上面的inode
? ? ? ? ? ? ? ? ------->
? ? ? ? ? ? 文件的本身的内容
? ? ? ? ?
为了方便,Linux把上面所有的流程都封装起来了,用户不需要知道具体的操作细节
只需要调用OS提供给我们的API函数接口就可以了

Linux提供的这些用于操作文件的接口(如:open,read,write...)我们称之为系统IO
系统IO:操作系统提供给用户操作文件的接口!!!!

文章来源:https://blog.csdn.net/qq_68915288/article/details/135756138
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。