IO、存储、硬盘、文件系统

1. 输入/输出(IO)

  • IO是计算机与外部设备之间进行数据交换的过程。
  • 输入是将数据从外部设备传输到计算机,如键盘、鼠标等。
  • 输出是将数据从计算机传输到外部设备,如显示器、打印机等。

2. 存储

  • 存储是指计算机中用于保存数据的介质,可以分为主存储器(内存)和辅助存储器(硬盘、SSD、光盘等)。
  • 主存储器是计算机中直接与CPU进行数据交换的部分,速度较快但容量较小。
  • 辅助存储器主要用于长期存储数据,容量较大但速度相对较慢。

3. 硬盘

  • 硬盘是一种常见的辅助存储设备,用于永久存储数据。
  • 它由多个可旋转的磁盘组成,数据通过读写磁头在磁盘上进行读写操作。
  • 硬盘的传输速度较慢,但容量较大,适合存储大量的数据和文件。

4. 文件系统

4.1 文件系统的定义
  • 文件系统是操作系统用于组织和管理文件和目录的方法。
  • 它提供了文件的命名、存储、检索、保护和共享等功能。
4.2 常见的文件系统类型
  • FAT32:最早的Windows文件系统,支持跨平台使用,但文件大小限制为4GB。
  • NTFS:Windows主要使用的文件系统,具有更高的性能和安全性,支持较大的文件和分区。
  • HFS+:Mac OS X之前使用的文件系统,用于管理硬盘上的文件和目录。
  • APFS:Mac OS X及其后续版本中使用的新一代文件系统,提供更快的性能和更好的数据保护。
  • EXT4:Linux系统中常用的文件系统,支持高性能和大容量存储。
4.3 文件系统的组成
  • 文件:在文件系统中,数据以文件的形式进行存储和组织。文件可以是文本、图像、音频或其他类型的数据。
  • 目录:目录是文件系统中用于组织和管理文件的容器。它可以包含文件和其他目录,形成层次结构。
  • 文件路径:文件路径是指定文件位置的字符串。它可以是绝对路径(完整路径)或相对路径(相对于当前工作目录)。

5. 文件路径 

文件路径是用来指定文件在文件系统中位置的字符串。它可以是绝对路径或相对路径。

5.1 绝对路径
  • 绝对路径是从文件系统的根目录开始的完整路径。
  • 在Windows系统中,绝对路径通常以盘符(如C:\)开始,后面跟着目录层级和文件名(如C:\Documents\file.txt)。
  • 在Unix/Linux系统中,绝对路径以斜杠(/)开始,后面跟着目录层级和文件名(如/home/user/file.txt)。
5.2 相对路径
  • 相对路径是相对于当前工作目录的路径。
  • 在Windows系统中,相对路径可以使用当前目录(.)表示,上一级目录(..)表示,或者直接省略表示当前目录下的文件(如.\file.txt)。
  • 在Unix/Linux系统中,相对路径可以使用当前目录(.)表示,上一级目录(..)表示,或者直接省略表示当前目录下的文件(如./file.txt)。
5.3 注意事项
  • 文件路径的格式和规则可能因操作系统的不同而有所差异,请根据所使用的操作系统选择正确的路径格式。
  • 在编程中,通常使用特定的函数或方法来操作和处理文件路径,以确保正确性和可移植性。

以下是一些示例文件路径:

  • 绝对路径:C:\Documents\file.txt、/home/user/file.txt
  • 相对路径:./file.txt、../folder/file.txt

6. 常见问题

6.1 什么是IO阻塞和非阻塞?
  • IO阻塞指的是当应用程序进行IO操作时,如果没有获取到需要的数据或无法立即完成IO操作,应用程序将被阻塞,一直等待直到IO操作完成。
  • IO非阻塞指的是应用程序在进行IO操作时,如果无法立即完成IO操作,将不会被阻塞,而是立即返回并继续执行其他任务。
6.2 什么是同步IO和异步IO?
  • 同步IO指的是应用程序进行IO操作时,必须等待IO操作完成后才能继续执行后续的代码。
  • 异步IO指的是应用程序发起IO操作后,不需要等待IO操作完成,可以继续执行后续的代码,当IO操作完成后,通过回调或轮询等方式得到通知。
6.3 为什么SSD比传统硬盘快?
  • SSD(固态硬盘)使用闪存芯片而不是磁盘和读写磁头,因此没有机械部件,访问速度更快。
  • 传统硬盘需要等待磁盘旋转并移动磁头来读取数据,而SSD可以直接访问存储的数据,因此速度更快。
6.4 文件系统的选择有什么影响?
  • 不同的文件系统具有不同的特性,如性能、可靠性、安全性等。
  • 文件系统的选择可能受到操作系统的限制,也可能取决于应用程序对数据的访问模式和需求。
  • 例如,对于大型数据库应用程序,需要选择一个支持高性能和并发访问的文件系统。

你可能感兴趣的:(java,linux,windows)