《鸟哥私房菜》 0-3章

写在前面:本系列不会复制原文内容,所有记录的内容都是挖掘原文中自己关注的点。以问题的形式展示。

一、内存读取速度比寄存器慢的原因?

      这个问题是之前@赵德威同学抛出的。但是没有做详细的记录。现在整理一下:

寄存器一般是sram实现,计算机的内存指的是dram.这下面(3)讲解了问什么sram较dram快的原因。

(1)寄存器(register)经常自身就是CPU用的触发器,往往与CPU同时钟同频,当然是最快最方便的。寄存器一般是sram来实现。但这玩意一个要20多个晶体管,多了芯片面积吃不消。
(2)SRAM(静态ram)的优势在于速度较快,与一般半导体工艺兼容,因此被当作cache放在芯片内部离CPU近的地方,发挥其速度快的长处。但是这玩意存储密度小(一个bit要6个晶体管),放太多就贵了。加电情况下,不需要刷新,数据不会丢失,而且,一般不是行列地址复用的。

3)DRAM(动态ram)天生速度慢但存储密度高,一个DRAM存储单元大约需要一个晶体管和一个电容(不包括行读出放大器等),正好适合做内存条这种东西。动态随机存取存储器,需要不断的刷新,才能保存数据。
而且是行列地址复用的,许多都有页模式。

(4)sram较dram快的原因SRAM中的每一位均存储在四个晶体管当中,这四个晶体管组成了两个交叉耦合反向器。这个存储单元具有两个稳定状态,通常表示为0和1。另外还需要两个访问晶体管用于控制读或写操作过程中存储单元的访问。因此,一个存储位通常需要六个MOSFET。对称的电路结构使得SRAM的访问速度要快于DRAM。SRAM比DRAM访问速度快的另外一个原因是SRAM可以一次接收所有的地址位,而DRAM则使用行地址和列地址复用的结构。

补充问题:主存比辅存快的原因:

外存就是硬盘,硬盘里有读写头和盘片,属于物理机械器件。盘片转速会有限制。
内存是存储单元构成的电路,靠脉冲信号工作 

二、磁盘分割的原理?为什么要进行磁盘分割?主要分割、延伸分割、逻辑分割几个名词的含义?

网上一兄弟整理的笔记,比较经典,就在此直接借用了。描述跟鸟哥的描述差不多,但是就为什么只能分四个区进行了描述。

1.磁道,扇区,柱面和磁头数【考研时掌握最深刻的地方微笑】
  硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2的N次方(N=0.1.2.3)字节信息。在DOS中每扇区是128×2的2次方=512字节,盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。硬盘中,不同盘片相同半径的磁道所组成的圆柱称为柱面。磁道与柱面都是表示不同半径的圆,在许多场合,磁道和柱面可以互换使用,我们知道,每个磁盘有两个面,每个面都有一个磁头,习惯用磁头号来区分。扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数,帮这些参数可以得到硬盘的容量,基计算公式为:
存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数
要点:(1)硬盘有数个盘片,每盘片两个面,每个面一个磁头
   (2)盘片被划分为多个扇形区域即扇区
   (3)同一盘片不同半径的同心圆为磁道
   (4)不同盘片相同半径构成的圆柱面即柱面
   (5)公式: 存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数
   (6)信息记录可表示为:××磁道(柱面),××磁头,××扇区
                (7)   硬盘的容量=柱面数(CYLINDER)*磁头数(HEAD)*扇区数(SECTOR)*512B

2.硬盘只能最多有四个主分区
    MBR(Master Boot Recorder)主要开机扇区,放置硬盘的信息。MBR 可以说是整个硬盘最重要的地方了,因为在 MBR 里面记录了两个重要的东西,分别是:开机管理程序,与磁盘分区表 ( partition table )。所以我们所做的硬盘分区,也就是在修改partition table。


   由于这个 MBR 区块的容量有限,所以,当初设计的时候,就只有设计成 4 个分区纪录(这个说法不太准确,下文有详细说明),这些分区记录就被称为 Primary ( 主分区 ) 及 Extended ( 扩展分区 ) ,也就是说,一颗硬盘最多可以有 4 个 Primary + Extended 的扇区,其中,Extended 只能有一个,因此,你如果要分区成四块磁盘分区的话,那么最多就是可以:

P + P + P + P

P + P + P + E

的情况来分区了。需要特别留意的是,如果上面的情况中, 3P +E 只有三个『可用』的磁盘,如果要四个都『可用』,就得分区成 4P 了!( 因为 Extended 不能直接被使用,还需要分区成 Logical 才行)

思考一:如果我要将我的大硬盘暂时分区成四个 partition ,同时,还有其它的空间可以让我在未来的时候进行规划,那么该如何分区?

由刚刚的说明,我们可以知道, Primary + Extended 最多只能有四个 partition,而如果要超过 5 个 partition 的话,那么就需要 Extended 的帮忙。因此,在这个例子中,我们千万不能分区成四个 Primary 为什么呢?假如您是一个 20 GB 的硬盘,而 4 个 primary 共用去了 15 GB ,您心想还有 5 GB 可以利用对吧?错!剩下的 5 GB 完全不能使用,这是因为已经没有多余的 partition table 纪录区可以记录了,因此也就无法进行额外的分区,当然啰,空间也就被浪费掉了!因此,请千万注意,如果您要分区超过 4 槽以上时,请记得一定要有 Extended 分区区,而且必须将所有剩下的空间都分配给 Extended ,然后再以 logical 的分区区来规划 Extended 的空间。

思考二:我可不可以仅分区 1 个 Primary 与 1 个 Extended 呢?

当然可以!基本上, Logical 可以有 64 个,因此,你可以仅分区一个主分区,并且将所有其它的分区都给 Extended ,利用 Logical 分区来进行其它的 partition 规划即可!

思考三:假如我的硬盘安装在 IDE 1 的 Master ,并且我想要分区成 6 个可以使用的硬盘扇区,那么每个磁盘在 Linux 底下的代号为何?

说明:

由于硬盘在 Primary + Extended 最多可以有四个,因此,在 Linux 底下,已经将 partition table 1 ~ 4 先留下来了,如果只用了 2 个 P + E 的话,那么将会空出两个 partition number 呦!再详细的说明一下,假设我将四个 P + E 都用完了。其中Extended /dev/hda4包括三个逻辑分区。

实际可以使用的是 /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda5, /dev/hda6, /dev/hda7 这六个 partition!至于 /dev/hda4 这个 Extended 扇区本身仅是用来规划出让 Logical 可以利用的磁盘空间而已!

那么万一我只想要分区 1 个 Primary 与 1 个 Extended 呢?

因为 1~4 号已经被预留下来了,所以第一个 Logical 的代号由 5 号开始计算起来,而后面在被规划的,就以累加的方式增加磁盘代号啰!而其中 /dev/hda3, /dev/hda4 则是空的,被保留下来的代号。


这个问题,结合历史来说会说得比较准确。为什么最多只可以分四个主要分区,并不是单由操作系统所决定的。

第一,为什么一个扇区只有512字节,为什么不是1024字节呢?
首先,我想说一个扇区是多少字节是可以自己(硬盘生产厂家)定义的,可以是1024字节的。所以说,一个扇区是512字节并不是理论值,而是习惯值。也就是一个扇区的大小为
512字节对于硬盘的生产厂家来说都是习惯的这样定义了,谁也不想更改这种习惯。
第二,硬盘的第一扇区可以分成三个部分:第一部分MBR,需要占用446字节,第二部分DPT,需要占用64字节,这是因为一个分区表需要占用16字节,64/16=4,所以刚好能存放
四个分区的表,这就是为什么只能分四个分区。还有两个字节就用来存放结束标志。这样
446+64+2=512字节。
对硬盘加密其实就是改写最后两个字节的结束标志。
三、多重引导?

鸟哥对多重引导的描述非常详细。由于该部分比较重要,故总结一下:

1 Linux 多重引导MBR
简单的说,从开机到进入操作系统之前的流程应该是这样的: 
1.BIOS :开机主动执行的程序,会依据使用者的设定去取得能够开机的硬盘,并且到该硬盘里面去读取第一个磁区的MBR位置; 
2.MBR :仅有446 bytes,位于的第一个磁区内的主要开机记录区块,内含开机管理程序;
3.开机管理程序(boot loader) :一支可读取核心档案来执行的软件; 
4.核心档案 :开始操作系统的功能。
由上可知,BIOS与MBR都是硬件本身会支援的功能,至于Boot loader则是作业系统(操作系统)安装在MBR上面的一套软件。 由于MBR仅有446 bytes而已,因此这个开机管理程
式是非常小而美的。这个boot loader的主要功能如下:
•提供选单 :使用者可以选择不同的开机项目(Linux或Windows),这也是多重开机的重要功能;
•载入核心档案 :直接指向可开机的程序区段来启动操作系统(开始作业系统); 
•转交其他loader :将开机管理功能转交给其他loader负责。 
其中, 第三点是多操作系统实现的基础。虽然,我们的硬盘只有一个MBR。但是开机管理程序GRUB除了可以安装在MBR之外,还可以安装在每个分区的开机磁区(boot sector)

举一个例子,假设你的个人电脑只有一个硬盘,里面切成四个分区,其中第一、二分区分别安装了Windows及Linux,你要如何在开机的时候选择用Windows还是Linux开机呢?假
设MBR内安装的是可同时认识Windows/Linux作业系统的开机管理程式。
MBR的开机管理程式提供两个选单,选单一(M1)可以直接载入Windows的核心档案来开机;选单二(M2)则是将开机管理工作交给第二个分区的开机磁区(boot sector)。
当使用者在开机的时候选择选单二时,那么整个开机管理工作就会交给第二分区的开机管理程式了(注意:这就是“转交其他loader ”的应用)。
当第二个开机管理程式启动后,选择相应的开机选单(上图中仅有一个开机选单),就能够使用Linux的核心档案来开机了。 这就是多重开机的工作情况! 我们作个总结:
•每个分区都拥有自己的开机磁区(boot sector) 
•图中的系统槽为第一及第二分区;
•实际可开机的核心档案是放置到各分区内的; 
•loader只会认识自己的系统槽内的可开机核心档案,以及其他loader而已; 
•loader可直接指向或者是间接将管理权转交给另一个管理程式。 
现在想一想,为什么人家常常说:如果要安装多重开机,最好先安装Windows再安装Linux 呢? 这是因为: 
•Linux在安装的时候,你可以选择将开机管理程序安装在MBR或各别分区的开机磁区(boot sector),而且Linux的loader可以手动设定选单(就是上图的M1, M2...),所以你
可以在Linux的boot loader里面加入Windows开机的选项; 
•Windows在安装的时候,他的安装程式会主动的覆盖掉MBR以及自己所在分区的开机磁区,你没有选择的机会,而且他没有让我们自己选择选单的功能。 
因此,如果先安装Linux再安装Windows的话,那MBR的开机管理程序就只会有Windows的项目,而不会有Linux的项目(因为原本在MBR内的Linux的开机管理程式就会被覆盖掉) 。


四、mount挂载  与Linux文件系统

 Linux发行版本之间的差别很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不同。目录结构基本上都是一样的。 Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如:C,D,E,F等。

Linux的文件结构是单个的树状结构.可以用tree进行展示。 在Ubuntu下安装tree(sudo apt-get install tree),并可通过命令来查看。

每次安装系统的时候我们都会进行分区,Linux下磁盘分区和目录的关系如下:

–      任何一个分区都必须挂载到某个目录上。

–      目录是逻辑上的区分。分区是物理上的区分。

–      磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。

–      根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。

以下是我们可能存在的一种目录和分区关系:



 图1:目录和分区关系

Q:如何查看分区和目录及使用情况?

–      fdisk查看硬盘分区表

–      df:查看分区使用情况

–      du: 查看文件占用空间情况

Q: 为什么要分区,如何分区?

–      可以把不同资料,分别放入不同分区中管理,降低风险。

–      大硬盘搜索范围大,效率低

–      磁盘配合只能对分区做设定

–      /home /var /usr/local经常是单独分区,因为经常会操作,容易产生碎片

 

2.Mount挂载和NFS简介

挂载的概念 :当要使用某个设备时,例如要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为“挂载点(mount point)”,这样才可以读取这些设备,而这些对应的动作就是“挂载”。 将物理分区细节屏蔽掉。用户只有统一的逻辑概念。所有的东西都是文件。Mount命令可以实现挂载:

mount [-fnrsvw] [-t vfstype] [-o options] device dir

Q:所有的磁盘分区都必须被挂载上才能使用,那么我们机器上的硬盘分区是如何被挂载的?

A:这主要是它利用了/etc/fstab文件。每次内核加载它知道从这里开始mount文件系统。每次系统启动会根据该文件定义自动挂载。若没有被自动挂载,分区将不能使用。 如下是我的/etc/fstab的定义,主要是根据装机的分区来的:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>

proc            /proc           proc    defaults        0       0

#/dev/sda1被自动挂载到  /

UUID=cb1934d0-4b72-4bbf-9fad-885d2a8eeeb1 /               ext3    relatime,errors=remount-ro 0       1

# /dev/sda5 被自动挂载到分区/home

UUID=c40f813b-bb0e-463e-aa85-5092a17c9b94 /home           ext3    relatime        0       2

#/dev/sda7 被自动挂载到/work

UUID=0f918e7e-721a-41c6-af82-f92352a568af /work           ext3    relatime        0       2

#分区 /dev/sda6被自动挂载到swap

UUID=2f8bdd05-6f8e-4a6b-b166-12bb52591a1f none            swap    sw              0       0

 

Q:移动硬盘如何挂载?如何挂载一个新的分区?

移动硬盘有驱动模块会自动挂载,如果有个新硬盘,要先进行分区,并通过mount命令挂载到某个文件夹。如果要自动挂载则可以修改/etc/fstab文件.

NFS简介:NFS相信在很多地方都有广泛使用,是一个非常好的文件共享方式。我们公司所使用的上传服务就是把文件上传到某台网络服务器上,中间就是通过NFS实现。

使用NFS客户端可以透明的地访问服务器端的文件。NFS也是通过mount来实现,底层是通过NFS通信协议实现。基本原理:


图2:NFS基本原理

文件存储结构

Linux正统的文件系统(如ext2、ext3)一个文件由目录项、inode和数据块组成。

目录项:包括文件名和inode节点号。

Inode:又称文件索引节点,是文件基本信息的存放地和数据块指针存放地。

数据块:文件的具体内容存放地。

 

 

Linux正统的文件系统(如ext2、3等)将硬盘分区时会划分出目录块、inode Table区块和data block数据区域。一个文件由一个目录项、inode和数据区域块组成。Inode包含文件的属性(如读写属性、owner等,以及指向数据块的指针),数据区域块则是文件内容。当查看某个文件时,会先从inode table中查出文件属性及数据存放点,再从数据块中读取数据。

 

站在2w英尺视图,文件存储结构大概如下:


图3:文件存储结构2w英尺视图

 

其中目录项的结构如下(每个文件的目录项存储在改文件所属目录的文件内容里):



 图4:目录项结构 

 

其中文件的inode结构如下(inode里所包含的文件信息可以通过stat filename查看得到):

 

 

图5:inode结构

 

以上只反映大体的结构,linux文件系统本身在不断发展。但是以上概念基本是不变的。且如ext2、ext3、ext4文件系统也存在很大差别,如果要了解可以查看专门的文件系统介绍。

5.软连接、硬链接

软链接和硬链接是我们常见的两种概念:

硬连接:是给文件一个副本,同时建立两者之间的连接关系。修改其中一个,与其连接的文件同时被修改。如果删除其中[color=red]任意一个[/color]其余的文件将不受影响。

软连接:也叫符号连接,他只是对源文件在新的位置建立一个“快捷(借用一下wondows常用词)”,所以,当源文件删除时,符号连接的文件将成为无源之水->仅仅剩下个文件名了,当然删除这个连接,也不会影响到源文件,但对连接文件的使用、引用都是直接调用源文件的。

具体关系可以看下图:

 


图5:软链接和硬链接

 

从图上可以看出硬链接和软链接的区别:

1:硬链接原文件和新文件的inode编号一致。而软链接不一样。

2:对原文件删除,会导致软链接不可用,而硬链接不受影响。

3:对原文件的修改,软、硬链接文件内容也一样的修改,因为都是指向同一个文件内容的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值