磁盘的分区

装过系统的人都知道必须要分区后才能安装系统,形象点的说比如windows里C:、D:之类的东西;如果你要问硬盘为什么要分区,我也说不上来很严格的原因,首先从使用习惯上来讲,我们不希望数据杂乱无章堆积在一起,其次,如果不分区,如何才能在一块硬盘上使用不同的文件系统(下面讲到)呢,学院派的说法是:数据安全和性能考虑。

先要说硬盘中最最重要的第一扇区,因为整块硬盘的重要信息都在这里:

MBR(Master Boot Record 主启动记录):开机引导程序就在安装在此,占用446byte

DPT(Disk Partition table 硬盘分区表):记录硬盘上的分区元信息,占用64byte

MBR是如何工作的呢,不用深究,反正就是系统开始时会主动读取数据的地方,这样才能引导进行操作系统的启动;DPT要仔细的讲讲,分区的大致意思就如同抢地盘,不过人家比较规矩,按照柱面(最小的分区单位)分配,比如第一个分区从柱面1-200,第二个分区201-500,但三个分区501-1000...(省略并非可以无限分配下去哦)

图1

图2

为啥说不能一直分配下去呢,技术柱面数量足够,因为上面说到硬盘分区表只有64个字节,每条分区记录需要占用16字节,最多只能分4个。疑问在此:我的电脑怎么分了5个(cdefg)?

其实我说的4个分区是所谓的主分区,为了能支持很多分区引入了扩展分区的概念, 也就是说,可以使用DPT中一条记录来记录扩展分区的信息,然后在扩展分区中再继续划分逻辑分区,而逻辑分区的分区信息则记录在扩展分区的第一个扇区中,如此则可以像链表一样划分出很多分区来。但注意,一个分区表中可以有1~4条主分区,但是最多只能有1个扩展分区。

图3

图4

分区表之间是如何关联的,详细讲一下,分区表是一个单向链表,第一个分区表,也就是位于硬盘第一个扇区中的DPT,可以有一项记录扩展分区的起始位置柱面,类似于指针的概念,指向扩展分区(图3),根据这项记录我们可以找到扩展分区的某柱面0磁头1扇区(CHS),而这个扇区中又存放了第二个分区表,第二个分区表第一项记录一般表述了当前所在的逻辑分区的起始/终止柱面,第二项记录表述了下一个逻辑分区所在的0磁头1扇区(CHS),第三、第四项记录不存任何信息(图4)。

请看下图,主引导记录/分区表所在的是硬盘第一个分区,基本分区1、基本分2、基本分区3都是主分区、扩展分区内有2个逻辑分区,每个逻辑分区的第一个扇区都是分区表。

分区后的系统启动

之前提到MBR中安装的引导加载程序,他的作用是什么?

① 提供开机菜单选项:可以供用户选择启动哪个操作系统,这是多重引导功能。

② 加载操作系统内核:每个操作系统都有自己的内核,需要引导程序来加载

③ 转交给其他引导程序:可以将工作移交给其他引导程序来进行上述操作。

其实引导加载程序除了可以安装在MBR中,还可以直接安装在每个分区的引导扇区(DBR)中,注意下,每个分区(主分区、逻辑分区)都有一个自己的启动扇区,专门用来安装引导加载程序,如上图左边“图表3分区结构”。

系统启动过程

① 首先,BIOS启动后,读取硬盘第一个扇区MBR中的引导加载程序(可能是windows或者linux的grub)

② MBR中的引导程序提供开机菜单,你可以选择1)直接加载windows 内核 2)将工作转交给windows 分区内的引导扇区中的加载程序,让他自己去加载内核 3)转交给linux分区内引导扇区,让他去加载linux.

③ 根据用户选择的选项和引导加载程序中记录的分区,到分区表找对应的分区柱面号等分区信息,启动内核或者分区加载程序。

Window安装时默认会自动将MBR和windows所在分区的引导扇区都装上引导程序,而不会提供任何选项给用户选择,因此如果之前装过其他操作系统,然后再另外装一个windows时,会把公用的MBR覆盖掉,如此,原来的操作系统就无法启动了。

如果先装windows,然后装linux,linux 会覆盖MBR,然后让用户选择是否将windows等其他操作系统的启动项添加进来,如果你选择了添加进来,那么你在开机时就会有两个选项让用户进行选择了。

文件系统

文件系统也是很大很复杂的话题,我们仍然以比较通俗、粗颗粒度来讲解,试想一下,我们的文件如何对应到磁盘的扇区上呢,所以光有底层的概念 磁道 扇区是没有用的,需要更加抽象的数据类型或结构来抽象底层的细节。

文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型(Abstract data type)。文件系统是一种用于向用户提供底层数据访问的机制。它将设备中的空间划分为特定大小的块(扇区),一般每块512字节。

数据存储在这些块中,大小被修正为占用整数个块。由文件系统软件来负责将这些块组织为文件和目录,并记录哪些块被分配给了哪个文件,以及哪些块没有被使用。

不过,文件系统并不一定只在特定存储设备上出现。它是数据的组织者和提供者,至于它的底层,可以是磁盘,也可以是其它动态生成数据的设备(比如网络设备)。

动态分区分配_关于硬盘的磁盘分区,干货分享!相关推荐

  1. 磁盘分区怎么分?(附磁盘分区后数据恢复)

    磁盘分区怎么分?有时,我们可能会发现自己的电脑和他人的电脑有些许不同,什么不同?硬盘的分区会有一些不同,甚至是只有一个或两个硬盘的分区,或者是有多余的硬盘分区. 对于我们日常的娱乐办公文件归类来说,会 ...

  2. linux导出分区的数据,QNAP 威联通磁盘分区探索与数据导出

    QNAP 威联通磁盘分区探索与数据导出 2015-06-20 08:06:35 162点赞 692收藏 109评论 之前晒了一单Qnap的TS-231,并且讲了我的一些基本偏好设置.这篇文档打算介绍一 ...

  3. java动态分区分配_操作系统动态分区分配算法课程设计java版解析.doc

    湖 南 文 理 学 院 实 验 报 告 课程名称 操作系统课程设计 实验名称 存储管理--动态分区分配算法的模拟 成绩 学生姓名 曹乐 专业 计算机 班级.学号 13101 18 同组者姓名 实验日期 ...

  4. java动态分区分配_操作系统 动态分区分配算法课程设计 java版.pdf

    操作系统 动态分区分配算法课程设计 java版 湖 南 文 理 学 院 实 验 报 告 课程名称 操作系统课程设计 实验名称 存储管理--动态分区分配算法的模拟 成绩 学生姓名 曹乐 专业 计算机 班 ...

  5. 计算机上没有足够的硬盘空间,磁盘分区时显示“磁盘上没有足够的空间”解决方法...

    人的一台台式电脑,新添加了一块硬盘后想把原来的分区减少,所以就删除了分区,但是在新建简单分区时却提示"磁盘上没有足够的空间完成此操作",经过努力,问题终于搞定,现分享经验如下 使用 ...

  6. win10固态硬盘分区 整数_电脑硬盘分区大小多少才合理【详细介绍】

    120.500G.1T电脑硬盘分区大小多少才科学合理?很多小白一直非常好奇这个问题,虽然有些非小白可能知道怎么分,但是下面有些内容你不一定知道哦,下面跟着小编一起来了解详细知识点吧. 首先,大家都知道 ...

  7. 四种Linux硬盘分区方式,首次安装Linux之磁盘分区

    首次安装Linux之磁盘分区 大多数朋友首次安装Linux,通常会选择图形界面的方式.采用这种方式的好处是在安装过程中基本上不会遇到太多的问题,现在的Linux安装界面已经是只需你一路点击Next,就 ...

  8. linux划分5t硬盘,关于磁盘分区(以linux系统为例)

    一.关于硬盘种类.物理几何结构及硬盘容量.分区大小计算: 1.硬盘种类.物理几何结构 硬盘的种类主要是SCSI .IDE .以及现在流行的SATA等:任何一种硬盘的生产都要一定的标准:随着相应的标准的 ...

  9. 如何使用计算机管理来为硬盘分区,电脑如何硬盘分区合理_电脑硬盘分区的基本步骤-win7之家...

    我们都知道,在给电脑安装完系统的过程中,有些用户也会顺便将自己电脑中的硬盘进行分区处理,以此来帮助用户在使用电脑时更好的对文件进行分类管理,让用户寻找文件时更加的快速,那么电脑如何硬盘分区合理呢?今天 ...

最新文章

  1. 方向:AI研究方向历史性转变!从机器学习到人类研究
  2. 华为:憧憬6G,共同定义6G
  3. (原創) 由一維陣列模擬二維陣列(多維陣列) (C/C++)
  4. web版本 开源压测工具_标星 1.3K 的 Web 框架压测库,助你更好的选择框架
  5. 若川的2016年度总结,毕业工作
  6. C# WinForm窗体四周阴影效果
  7. 限时|领取黄博士整理的人工智能数学资料
  8. java 根号_没见过的 Java 入门教程之三!例程使用中文标识符代码:各种变量
  9. keras 中 reuse 问题
  10. TeaVM编译JAVA感想:看着简单,做起来真难
  11. 京东支付SDK重构设计与实现
  12. pandas填充空数组_Pandas 数据处理:空值清理、联级、合并、缺省空值填充
  13. 华硕固件Linux-arm,AC86UASUS固件交叉编译的问题
  14. 黑群晖6.1.4-DS3615xs_65217安装使用教程、含下载资源、亲测有效
  15. 非负矩阵分解与K-means聚类
  16. 大气数据计算机仿真算法,自适应光学系统中大气湍流的模型分析与计算机仿真...
  17. fqa什么意思_FQA是什么意思
  18. promise终止方案
  19. openGL之API学习(七十八)SPIR-V
  20. 英语和汉语的区别10大区别点

热门文章

  1. 大数据在农业农村的应用
  2. spark-sql如何删除表_SparkSQL数据源之Hive数据库
  3. 月历1997年php代码_php自动生成月历的代码
  4. php session gc_maxlifetime,PHPsession 有效期 session.gc_maxlifetime
  5. AcWing 892. 台阶-Nim游戏(nim博弈变种)
  6. c语言怎么确定输出数的坐标,c语言printf实现同一位置打印输出的实例
  7. Python爬虫之(四)urllib库的高级用法
  8. 无监督学习︱GAN 在 NLP 中遇到瓶颈+稀疏编码自学习+对偶学习
  9. 基于tensorflow深度学习的中文的命名实体识别
  10. 《必须知道.NET》3.OO之美