文件系统(1)

先补充一些小知识

为什么会有0,1,2,以及0,1,2的作用是什么

在我们写程序的时候,本质上都是在对数据进行处理(计算、存储),而0,1,2的出现,就涉及到一个问题,在处理数据的过程中人们要不要看到这个过程,所以就会有了0(标准输入),1(标准输出),2(标准错误)

首先0的作用就是标准输入,我们可以把从scanf,get等代码中获取到的字符存放到一个缓冲区,这个地方就是0。那么1和2他究竟是什么?我们可以做一个实验

我们可以看到,好像在这个方面上,他们好像是没什么区别,这确实是没毛病,因为程序会默认打开标准错误和标准输出,然后标准错误和标准输出对应的都是显示器

那如果我们把他输出重定向到log.txt呢?会发现这个时候,他把输出到显示器上面的内容重定向到log.txt了。

这是为什么呢?

因此结论就是,当我们做重定向的时候,Linux只会改变标准输出的重定向,并不会改变标准错误的重定向。

那么2的作用到底是什么呢?

我们在编写代码的过程中,总是会有输出正确信息和错误信息,而这两种信息通常都只会输出到标准输出中,而2的出现,就可以使得我们可以把正确信息和错误信息分类开来,正确信息输出到标准输出中,错误信息输出到标准错误中,方便我们对代码的管控和观察

而如果我想把正确的消息放到一个文件,错误的消息放到另一个文件,我就可以这样做

那如果我想把所有的消息都打印到一个文件里面,该怎么做?

这个的原理来简单说一下

首先一开始1和2都默认指向显示器

然后让1指向all.txt

而后面的2>&1是什么意思呢?

就是把1的地址拷贝到2上面,由于1和2的地址一样,所以此时2的指向也被改变了

ok接下来就到了我们的正题

1.文件打开之前是什么样子的?

每一个文件在打开之前,都是被存储到磁盘里面的,那磁盘是什么呢?

一个磁盘(如一个 1T 的机械硬盘)由多个盘片叠加而成。盘片的表面涂有磁性物质,这些磁性物质用来记录二进制数据。因为正反两面都可涂上磁性物质,故一个盘片可能会有两个盘面。

磁道、扇区

每个盘片被划分为一个个磁道,每个磁道又划分为一个个扇区。其中,最内侧磁道上的扇区面积最小,因此数据密度最大。

柱面

每个盘面对应一个磁头。所有的磁头都是连在同一个磁臂上的,因此所有磁头只能“共进退”。所有盘面中相对位置相同的磁道组成柱面

2.那我们又如何找到指定的扇区?

1.找到对应的磁头(Head)

2.找到指定的磁道(Cylinder)

3.找到指定的扇区(Sector)

这个被称为CHS定址法

3.对磁盘的存储进行逻辑抽象

对于磁盘,我们可以把他抽象成一个巨大的线性结构

我们可以惊奇的发现,当我们抽象出来一个线性结构的时候,其中的每一格都是一个扇区,这就相当是说得到了一个数组 sector disk_array[N],而每一个sector就是数组的下标

我们因此可以得出,操作系统就可以通过获取下标来定位到某个指定的扇区。

但是对于硬件上来说,他们需要的是CHS地址,也就是说,我们需要把下标转换成CHS地址

该怎么去转换呢?

我们首先举个例子,一个线性结构有1000个扇区,10个磁道,那么就是每个磁道有100个扇区

我们就可以这样来计算出CHS的地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值