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系统平台上通用(兼容性好) |
MMU 内存管理单元
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内核的作用
-
内存管理
- 内存分配调用:包括静态分配方式、动态分配方式;
- 内存保护:确保每个程序在自己的内存空间运行、互不干扰。方法是使用界限寄存器或存储保护键;
- 地址映射:实现程序的逻辑地址与存储器的物理地址之间的映射功能;
- 内存扩充::从逻辑上扩充物理内存,以允许比物理内存更大的程序在机器内运行,为此操作系统必须具有:请求调入功能与置换功能
-
进程管理
- 进程控制:包括进程创建、进程撤销、进程阻塞、进程唤醒
- 进程协调:由于进程运行的异步性,因此进程同步到任务是对诸进程的运行协调,包括两种方式:进程互斥方式与进程同步方式;
- 进程通信:主要完成同一台机器上不同进程间通信和不同机器上进程间的通信,以共同完成一相同的任务;
- 进程调度:操作系统按照一定的规则对等待运行的多道程序进行调度,以保证每个程序都能有机会得到运行,并最终完成。
-
文件管理
- 文件存储空间的管理:为每一文件分配必要的外存空间。为提高外部存储空间的利用率,系统应设置相应的数据结构,用于记录文件存储空间的使用情况;
- 目录管理:为了方便对用户的文件进行管理,对文件系统建立一定结构的目录结构,同时要求快速的目录查询手段;
- 文件的读、写管理和存取控制:利用一定的系统调用对文件进行读写操作。同时,为防止系统中的文件被非法访问和窃取,文件系统中必须提供有效存取控制功能;
-
设备管理
- 缓冲管理:管理各种类型的缓冲区,如字符缓冲区和块缓冲区,以缓和CPU和I/O速度不匹配的矛盾,最终达到提高CPU和I/O设备的利用率,进而提高系统吞吐量的目的;
- 设备分配:根据用户的I/O请求,为之分配其所需要的设备;
- 设备处理:R又称为设备驱动程序,任务是实现CPU和设备控制器之间的通信;
- 设备独立性和虚拟设备:一方面保证用户程序独立于物理设备,另一方面保证多个进程能并发地共享同一个设备;
请简述Linux系统的启动过程
了解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