首页 > 其他分享 >文件IO学习【一】

文件IO学习【一】

时间:2024-05-09 15:12:40浏览次数:17  
标签:文件 硬件 文件系统 学习 内核 IO Linux 目录

目录

计算机的组成部分

硬件系统

计算机的硬件主要是由五部分组成:控制器、运算器、存储器、输入设备、输出设备。

  • 运算器和控制器的总称是中央处理器(CPU),指的是计算机中对信息进行高速运算处理的主要部件。

  • 存储器则是用来存储程序、数据和文件,一般是由快速的内部存储器(容量可达数百兆字节,甚至数G字节)和慢速的外部存储器(容量可达数十G或数百G以上)组成,比如计算机中的内存条和固态硬件就属于存储器。

  • 输入设备与输出设备就是用于实现人机交互的信息转换器,由计算机的输入输出控制系统负责管理外部设备与主存储器之间的信息交换,常用的输入设备主要有键盘以及鼠标,输出设备则是显示器、打印机以及其他可连接到计算机上的I/O设备。

image

软件系统

如果计算机只有硬件系统,那么计算机是无法正常工作的,因为计算机是由基本的电子元件组成的,而电子元件的状态是需要由软件来控制的,所以计算机必须要搭载软件系统,计算机的软件系统与硬件系统是互相依赖的。

计算机的软件系统一般由两部分组成:系统软件、应用软件

  • 系统软件指的是计算机中的操作系统以及硬件驱动程序等。
  • 应用软件指的是用户可以使用的各种程序设计语言以及利用程序设计语言设计的应用程序的集合。

文件系统

计算机的系统软件和应用软件其实都是大量的程序和数据组成的,也就是说两者都需要存储在计算机的存储器中,这些程序和数据以什么样的格式存储到存储器中就由文件系统决定。

大家可以把文件系统理解为是一种“标准”或者“格式”,只要遵循这套标准就可以正确的访问存储在磁盘中的数据。

当然,标准的制定则是至关重要,但是由于技术原因或者商业利益考虑,导致现在文件系统没有办法统一。所以目前存在多种文件系统,常见的有FAT32、NTFS、ext4......,比如电脑的本地磁盘的文件系统就是NTFS格式。

image

当大家有的时候发现磁盘出现某些扇区损坏导致数据丢失时,就可以对磁盘进行格式化,在格式化磁盘的时候就可以选择指定的文件系统类型。

image

Linux系统也支持多种文件系统类型,可以在Linux系统根目录的/proc目录下查阅filesystems

image

计算机中搭载的Linux操作系统就属于系统软件,操作系统的作用是用来连接应用软件和底层硬件,因为涉及到Linux内核的安全管理机制,所以用户空间是没有办法直接访问硬件设备的。

image

由上图所示,用户想要实现对硬件的控制,必须通过Linux内核提供的相关函数接口才行。这样做的好处是用户无需了解硬件是如何控制的,只需将对应的参数提交给内核,内核便会将控制参数传递给硬件设备,最终由内核控制硬件设备完成相关动作。

也正因如此,用户需要先利用程序设计语言设计出源文件(xxx.c),然后操作系统内核需要从磁盘中访问源文件,再通过编译器把源文件编译生成可执行文件,最后内核再访问存储在磁盘中的可执行文件,从而把控制硬件的参数读取出来。

  • 知识点回顾:.c如何变为可执行文件?

    预处理(-E,生成.i文件)-> 编译(-S,生成-.s文件)-> 汇编(-c,生成.o文件)-> 链接(-o,生成可执行文件)

所以访问磁盘中的文件也是操作系统要做的工作之一。所以操作系统和文件系统可以理解为一种“合作”关系,文件系统指定了读写文件的标准,而操作系统会按照这套标准去完成访问文件的动作。

Linux系统的目录

根文件系统说明

Linux系统是离不开文件系统的,在Linux内核启动之后首先搭载的就是根文件系统rootfs,根文件系统rootfs本质就是文件系统,只不过是Linux内核挂载的第一个文件系统。而Linux内核源码是存储在文件系统中,所以在linux系统启动的过程中启动引导程序uboot会加载内核并利用内核挂载根文件系统。

image

根文件系统被挂载之后,一些服务程序和一些脚本文件才可以存储在文件系统中,其他的文件系统才可以被挂载。

根文件系统会提供一些服务:比如根文件系统会提供一个根目录(存储文件和目录)、提供一个shell终端(用户才可以输入命令)、根文件系统会存储应用程序。总而言之,Linux内核离开根文件系统是无法正常工作的。

image

Linux系统的所有程序和数据都是以“*文件*”的形式存储在文件系统中,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。这种机制有利于用户和操作系统的交互,这也是Linux系统一切皆文件的原因。

其实就是借鉴了Unix系统的设计风格,体现了*面向对象*的设计思想,把脚本、文档、硬件设备等都抽象为文件对象,再通过统一的POSIX操作接口对文件进行操作,简化了操作难度。

目录的结构分析

在 Linux 操作系统中,所有的文件和目录都被组织成以一个根节点“/”开始的倒置的树状结构。如下图:

image

文件系统的最顶层是由*根目录*开始的,*系统使用“/”来表示根目录*,在根目录之下的既可以是目录(目录就相当于 Windows 中的文件夹,但目录并不是一个“容器”,其中包含的是目标文件的索引),也可以是文件,而每一个目录中又可以包含(子)目录或文件。如此反复就可以构成一个庞大的文件系统。

使用这种树状、具有层次的文件结构主要目的是方便文件系统的管理和维护,想象一下,如果所有的文件都放在一个目录下,其文件系统的管理和维护将变成一场噩梦。

同样,为了方便观察Linux系统的目录结构,所以Linux内核也提供了一个shell命令:*tree*,该命令可以以树状结构打印出目录的层次,当然,tree命令需要在Linux系统中提前安装。

在shell终端中输入命令: sudo apt-get install tree 安装tree命令

提示:后续在编写工程文档“READ ME”时会用到该指令来阐述工程的架构。

Linux 的文件类型

由于程序和数据在Linux系统中都是以文件的形式存在,那不同格式的数据所对应的文件类型也各不相同,在Linux系统下可以把文件的类型分为*以下七种*

  • 普通文件(-) :存在于外部存储器中,用于存储普通数据。
  • 目录文件(d) :用于存放目录项,是文件系统管理的重要文件类型。
  • 管道文件(p) :一种用于进程间通信的特殊文件,也称为命名管道FIFO。
  • 套接字文件(s) :一种用于网络间通信的特殊文件。
  • 链接文件(l) :用于间接访问另外一个目标文件,相当于windows快捷方式。
  • 字符设备文件(c) :字符设备在应用层的访问接口。
  • 块设备文件(b) :块设备在应用层的访问接口。

标签:文件,硬件,文件系统,学习,内核,IO,Linux,目录
From: https://www.cnblogs.com/fly-home/p/18182300

相关文章

  • 第一章:Introduction to Interconnection Networks
    第一章:互联网络介绍数字系统三个基本组件逻辑(logic)存储(memory)通信(communication)随着技术进步,当前大部分数字芯片系统的瓶颈在于通信,组件之间的通信偏绿远远落后于处理器时钟频率,因此互联是未来数字系统成功的关键因素。关于互联网络的三个问题什么是互联网络互连网络是......
  • 2024 ICPC National Invitational Collegiate Programming Contest, Wuhan Site
    目录写在前面IBKFMEDC写在最后写在前面补题地址:https://codeforces.com/gym/105143正式赛全程犯大病打铜了呃呃,以下按个人向难度排序。AIEEEEE!忍者为何!队长=san实际战犯!罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚罪罚......
  • C:$Mft(NTFS主文件表)C:$LogFile(NTFS卷日志)C:$BitMap(NTFS可用空间映射) C:$Mft$BITMAP C
    C:$Mft(NTFS主文件表)是NTFS文件系统中的一个重要组成部分。它是一个特殊的系统文件,用于记录NTFS分区中所有文件和目录的元数据信息。MFT实际上是MasterFileTable的缩写,意为主文件表。在NTFS文件系统中,每个文件和目录都有一个对应的记录,这些记录存储在MFT中。MFT中的每个记录......
  • 如何写好Simulation证明(二): 半诚实模型下MPC的定义
    3.SecureComputation–SimulationforSemi-honestAdversaries我们在这里考虑的模型是staticsemi-honest敌手下的两方安全计算.这样的敌手能够在协议开始之前决定控制某一方,并且需要按照协议的描述执行.需要注意的是,这是一个非常弱的假设.如果敌手没有按照协议流......
  • 如何写好Simulation证明(三): 半诚实敌手模型下的OT
    4.ObliviousTransferforSemi-HonestAdversaries在本文中,我们将给出一个证明:基于enhancedOWP,构造一个半诚实敌手模型下的OT.首先我们先介绍enhancedOWP概念.4.1EnhancedOWP.对这个特殊的OWP我们先不做过多的解释,我们先关注参数.一般正式的定义中,一个OWP具......
  • LeetCode 1186. Maximum Subarray Sum with One Deletion
    原题链接在这里:https://leetcode.com/problems/maximum-subarray-sum-with-one-deletion/description/题目:Givenanarrayofintegers,returnthemaximumsumfora non-empty subarray(contiguouselements)withatmostoneelementdeletion. Inotherwords,youwa......
  • 一文读懂顺序读写、随机读写、4K读写、IOPS值等,值得一读的科普文
    闪存应用产品主要包括固态硬盘SSD、移动固态硬盘PSSD、U盘、microSD卡(TF卡)、SD卡等,在描述这些产品性能的时候,经常会提到顺序读/写速度、随机读写/4K读写性能、IOPS等参数,相关的测评文章往往会将这方面的测试结果用截图的形式来表达某某闪存应用产品性能如何。以下是某款高速移动......
  • 如何写好Simulation证明(一): 语义安全
    密码学中很多证明需要用到Simulation,尤其是ZK,MPC等等.对于初学者来说,涉及Simulation的证明往往不容易理解,更别说自己独立证明,所以有必要学习一下如何写这样的证明.文章主要参考YehudaLindell的讲义:Howtosimulateit.1.Introduction什么是Simulation?中文翻译......
  • 如何把多个文件(夹)随机复制到多个文件夹中
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z 先看文件的情况一共20个兔兔的图片,4个文件夹,把全部的图片随机的复制这些地方去打开工具,切换到文件批量复制版块找到右下角的设置,点击打开勾选“随机复制”,把文件进行随机的复制选中全部的兔兔图片,Ct......
  • 如何把多个文件(夹)平均复制到多个文件夹中
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z 假定的情况是,共有20个兔兔的图片,想要平均的复制4个文件夹里,那么每个文件夹里面就有5个图片(如果是5个,那每个自然是4个,具体除数是多少,根据实际情况即可)打开工具,切换到文件批量复制版块找到右下角的设置,点......