首页 > 其他分享 >文件IO的学习

文件IO的学习

时间:2024-05-07 23:56:03浏览次数:22  
标签:文件 映射 学习 内存 IO 进程 inode 目录

IO编程

概述

了解FAT32 和 NTFS

文件系统是操作系统用于明确磁盘或者分区上文件的方法和数据结构。

一块硬盘就像一个块空地,文件就像不同的材料,我们首先得在空地上建起仓库(分区),并且指定好(格式化)仓库对材料的管理规范(文件系统),这样才能将材料运进仓库保管。

文件系统是对应硬盘的分区的,而不是整个硬盘,不管是硬盘只有一个分区,还是几个分区,不同的分区可以有着不同的文件系统!

  • 1.FAT32是一种较旧的文件系统,具有有限的文件大小和分区大小功能,而NTFS支持更大的文件和分区。
  • 2.NTFS提供了FAT32所缺乏的更好的安全功能,例如文件加密访问权限
  • 3.NTFS支持高级功能,如磁盘配额文件压缩,而FAT32不提供这些选项。
NTFS(New Technology File System) FAT32(File Allocation Table 32)
存储文件大小 4GB-2TB的单个文件 小于4GB的单个文件
读写速度 大于FAT32 不及NTFS
适用设备 大容量磁盘 容量较小的闪存设备
EFS文件加密系统 支持 不支持
文件压缩(系统) 支持 不支持
磁盘配额 支持 不支持
设置权限 支持 不支持
产生的磁盘碎片 较少 适中
常用平台 Windows Linux、Mac或Android系统平台上通用(兼容性好)

NTFS与FAT32

MMU 内存管理单元

内存管理单元1
内存管理单元2

MMU(Memory Management Unit)主要用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件

机制的内存访问授权、多任务多进程操作系统。

  • MMU是负责把虚拟地址映射为物理地址,但凡"映射"都要解决两个问题:映射的最小单位(粒度)和映射的规则。

分页机制
MMU中VA到PA映射的最小单位称为页(Page),映射的最低粒度是单个虚拟页到物理页,页大小通常是4K,即一次最少要把4K大小的VA页块整体映射到4K的PA页块(从0开始4K对齐划分页块),页内偏移不变,如VA的一页0x300040000x30004fff被映射到PA的一页0x000080000x00008fff,当CPU执行单元访问虚拟地址0x30004008,实际访问的物理地址是0x00008008(0x30004008和0x00008008分别位于虚实两套地址空间,互不相干,不存在重叠和冲突)。以页为最小单位,就是不能把VA中某一页划分成几小块分别映射到不同PA,也不能把VA中属于不同页的碎块映射到PA某一页的不同部分,必须页对页整体映射。

简述Linux内核的作用

red-hat

img
  • 内存管理

    • 内存分配调用:包括静态分配方式、动态分配方式;
    • 内存保护:确保每个程序在自己的内存空间运行、互不干扰。方法是使用界限寄存器或存储保护键;
    • 地址映射:实现程序的逻辑地址与存储器的物理地址之间的映射功能;
    • 内存扩充::从逻辑上扩充物理内存,以允许比物理内存更大的程序在机器内运行,为此操作系统必须具有:请求调入功能与置换功能
  • 进程管理

    • 进程控制:包括进程创建、进程撤销、进程阻塞、进程唤醒
    • 进程协调:由于进程运行的异步性,因此进程同步到任务是对诸进程的运行协调,包括两种方式:进程互斥方式与进程同步方式;
    • 进程通信:主要完成同一台机器上不同进程间通信和不同机器上进程间的通信,以共同完成一相同的任务;
    • 进程调度:操作系统按照一定的规则对等待运行的多道程序进行调度,以保证每个程序都能有机会得到运行,并最终完成。
  • 文件管理

    • 文件存储空间的管理:为每一文件分配必要的外存空间。为提高外部存储空间的利用率,系统应设置相应的数据结构,用于记录文件存储空间的使用情况;
    • 目录管理:为了方便对用户的文件进行管理,对文件系统建立一定结构的目录结构,同时要求快速的目录查询手段;
    • 文件的读、写管理和存取控制:利用一定的系统调用对文件进行读写操作。同时,为防止系统中的文件被非法访问和窃取,文件系统中必须提供有效存取控制功能;
  • 设备管理

    • 缓冲管理:管理各种类型的缓冲区,如字符缓冲区和块缓冲区,以缓和CPU和I/O速度不匹配的矛盾,最终达到提高CPU和I/O设备的利用率,进而提高系统吞吐量的目的;
    • 设备分配:根据用户的I/O请求,为之分配其所需要的设备;
    • 设备处理:R又称为设备驱动程序,任务是实现CPU和设备控制器之间的通信;
    • 设备独立性和虚拟设备:一方面保证用户程序独立于物理设备,另一方面保证多个进程能并发地共享同一个设备;
    image-20240507203704037

请简述Linux系统的启动过程

image-20240507104159880

了解Linux目录和文件

  • 文件的组成

    在 Linux 中,文件本质上是由 inode数据块构成的。

    inode 是文件的元数据,包括了文件的所有者、权限、大小、创建和修改的时间戳等信息,以及指向实际存储文件数据的数据块的指针。每个 inode 有一个唯一的编号,系统通过这个编号来识别文件。

    数据块则是存储了文件的实际内容,比如文本、图片、视频等。

    所以,一个文件在文件系统中的存在,实际上就是一个 inode 和一系列数据块的组合。inode 提供了关于文件的元数据和找到文件数据的路径,数据块则存储了文件的实际内容。文件名和目录项则是在目录的数据结构中定义的。目录包含了一组目录项,每个目录项都是一个文件名和一个inode 编号的对应关系。通过这种方式,用户可以通过文件名来访问文件,而系统通过文件名找到对应的 inode,进而找到文件的数据。

  • 目录的组成

在 Linux 中,目录本质上也是由 inode 和数据块构成的。

不过,目录和文件的数据块中存储的内容是不同的:文件的数据块中存储的是文件的实际内容,比如文本、图片、音频、视频等。

目录的数据块中存储的是一系列目录项。每一个目录项包含一个文件名和一个inode 号。这样,用户可以通过文件名找到文件,系统则通过 inode号找到实际的文件内容。

  • Linux的文件类型 / 七类文件
    • - 规则文件 regular
    • l 链接文件 link
    • d 目录文件 directory
    • p 管道文件 pipe
    • s 套接字文件 socket
    • c 字符设备文件 character
    • b 块设备文件 block

标签:文件,映射,学习,内存,IO,进程,inode,目录
From: https://www.cnblogs.com/san39/p/18178737

相关文章

  • FAT32和NTFS两种文件类型的特点
    FAT32和NTFS两种文件类型的特点。FAT32和NTFS都是Windows操作系统中常用的文件类型,它们有以下特点:1.FAT32:FAT32是一种较早的文件系统类型,它支持较小的文件大小和较小的磁盘容量,最大文件大小为4GB,最大磁盘容量为2TB。FAT32文件系统不支持文件权限、加密、压缩等高级功能,但它的......
  • 如何批量重命名,把文件(夹)名的内容位置调整(前后移动)
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z情况是这样,把“中文[数字]”的名称,改为"中文-数字"打开工具,切换到文件批量复制模块,快捷键Ctrl+5找到右下角的“重命名”按钮,打开把那些文件拖入进去,也可以用右侧的导入按钮(如果是文件夹的话,要勾选“针对......
  • Linux文件系统-目录
    如果你最开始使用的是Windows电脑,你很可能会使用“文件夹folder”这个术语。但当你换到Linux时,你会发现文件夹通常被称为“目录directory”。事情是这样的。如果你愿意,你可以叫它文件夹,如果你喜欢,也可以叫它目录。这没有什么区别。但是,如果你想知道为什么文件夹在Linux中......
  • 快速找出存(不存在)在某个(或多个)文件的文件夹
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z想要找出有下面这个文件存在的文件夹切换到批量文件复制版块,快捷键Ctrl+5右侧,搜索添加选定范围,勾选搜索文件夹、包含子目录下面就把要存在文件(夹)的条件拖入进去,就会出现路径,再点击开始搜索等待工具提示搜......
  • 原始翎风CLIENT8位 (11) fsata的学习
    本单元提供系统中的所有对话框显示MAINIMAGEFILE='Data\Prguse.wil';MAINIMAGEFILE2='Data\Prguse2.wil';MAINIMAGEFILE3='Data\Prguse3.wil';CHRSELIMAGEFILE='Data\ChrSel.wil';MINMAPIMAGEFILE='Data\mmap.wil......
  • 原始翎风CLIENT8位 (12) playscn的学习
    绘图关键的数据地图客户区,以主角的地图坐标为中心左右各9格,上下9,8格一切以主角为中心进行计算,换算。Map.m_ClientRectLeft:=g_MySelf.m_nRx-9;Top:=g_MySelf.m_nRy-9;Right:=g_MySelf.m_nRx+9;Bottom:=g_MySelf.m_nRy+8; 地图地面绘图m_MapSurface的像素大小......
  • 原始翎风CLIENT8位 (10) tscenc的学习
    IntroScn.pas嗟夫DELPHI输入法相关知识凡是窗口类都有TImeMode这是个集合其中包含有:TImeMode=(imDisable,imClose,imOpen,imDontCare,imSAlpha,imAlpha,imHira,imSKata,imKata,imChinese,imSHanguel,imHanguel);指定imDisable的话IME变得无效。既无法作使......
  • 原始翎风CLIENT8位 (13) actor的学习
    functionGetOffset(appr:integer):integer偏移大于1000退出nrace:=apprdiv10nrace0-90npos:=apprmod10npos0-9这个找的是怪物图片在文件中图片索引偏移量分为很多种,有偏移280,280是一个怪物的一组图片,例如MON1有偏移230,例如MON2有偏移360的,例如MON3appr应该......
  • Git 学习日志1
    目录1.Git安装2.Git最小配置3.创建第一个仓库并配置local信息3.1初始化仓库3.2查看新创建的仓库,并配置local信息3.3添加readme.md文件3.4过程详解4.查看版本历史5.gitk图形化界面6.增加远程库出现的问题7.版本回退1.Git安装官网下载并安装Git官网指导教程中文版资源......
  • 原始翎风CLIENT8位 (14) mapunit的学习
    8.MaxInt格式:constMaxInt=High(integer);说明:MaxInt常量代表Integer类型的最大可能值.MaxInt的真正的值会随着Delphi的版本不同而改变,目前它的值是21474836472g?地图好像是分块?40*40个地图坐标分为一个广场块一次读取是当前块的-1X/Y+2合计4*4块合计160*160个......