linux学习
参考资料:
http://vbird.dic.ksu.edu.tw
1. 操作系统的理解
操作系统的文件系统:
考虑2个问题:
① 数据如何存储
CPU提供一些基本指令来访问硬件,例如硬盘,CPU可以通过使用 in ,out 指令来访问硬盘的指定扇区,指定位置的某个字节。
这是最为低级的硬件操作。而在硬盘上存储数据时,常常是比较大的。例如一个1MB的文件如何存储到硬盘上。
(1). 使用指令连续的存储到某个扇区中。
(2). 使用指令存储到某个柱面上。
如果以第一种方式来存储数据,则读取数据的时候,硬盘的磁头就要通过移动来读写,这是一种顺序的读写方式,因为某个具体的扇区,同时只能由
一个磁头来读写,
如果以第一种方式来存储数据,则读取数据的时候,相当于一份文件存储在多个扇区中,此时就可以并发的读取改文件的数据。
② 数据如何索引
使用上面的两个机制实现了数据在硬盘中的存放,但是又有一个问题就是,在硬盘上存放的数据不止一个,可能会有很多个,那么,
系统该如何区分这些文件呢,或者说,系统如何正确的索引到这些文件。以及文件自身的一些属性信息,例如:文件名,文件的读写权限等这些信息
又该如何存储。例如可以还是用一个链表,链表的每一个结点就存放一个文件的信息。那么这个链表有存储在什么位置?是的操作系统可以知道呢?
操作系统拿到这个链表的信息之后就可以正确的访问,该分区中的所有文件了。
CPU按自己的职责已经提供好了,访问硬盘的指令(例如:in, out), 那么操作系统就可以直接通过in,out来访问硬盘中的数据了,但是要真正能够
合理的使用和管理硬盘,则需要解决上面的两个问题,所以操作系统就将上面的问题的解决称谓文件系统,操作系统的文件操作,就是确定了数据(文件)的存储方式
数据的索引方式,文件索引链表的结构,及其存储位置等这些信息,所以,基于文件来操作硬盘,其实是操作系统给我们提供的一种对硬盘等存储介质的操作的抽象,
我们不能也不应该直接操作硬盘,而是使用操作系统给我们提供的文件系统来完成对硬盘的访问。
这也说明,当操作系统在启动的时候就可以以文件的形式来操作硬盘了。
2. linux 的文件系统和目录树
Linux的文件系统是对硬盘(等存储介质的抽象),而其目录树,则是系统功能的抽象,一个目录树代表的系统的各种功能,特定的文件夹,具有特定的含义,或作用
所以就出现了所谓挂载点的问题。所以这里目录树就有点类似于上面讨论的文件系统中的那个硬盘中文件的索引链表,这个链表,其实是一个静态的系统功能的抽象,例如:
home目录下从逻辑上来讲应该存储不同用户的私有数据,也就是不同的目录已经具有了逻辑含义,但是具体这种目录在硬盘中存储在何处就,取决于这个目录的挂载点,也就是
这个目录和那个磁盘分区关联了起来,则在该目录下产生的数据就存放在那个挂载点上。(这个挂载点,就类似于文件在磁盘上的起始位置一样)所谓的『挂载』就是利用一个目录当成进入点,将磁盘分区槽的数据放置在该目录下; 也就是说,进入该目录就可以读取该分割槽的意思。这个动作我们称为『挂载』,那个进入点的目录我们称为『挂载点』。