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:操作系统提供给用户操作文件的接口!!!!