Why Partition your Disk Device?

昨天,看到金山快盘出了Linux版,就想来用用。但是,在同一台电脑上,我既装了Windows也装了Ubuntu,Windows里面自然也安装了金山快盘,所以,就想着让Linux版的金山快盘能够和Windows里面的共用一个文件夹,从而防止数据冗余。另一方面,也希望在Windows和Linux之间能够方便的交换文档。之后,就开始在Windows的里面整理文档代码等等,以适应这些需求。

整理的过程中就产生了这样的一个问题,我到底应该将硬盘分成几个分区呢?

从我拿到第一台电脑开始,就是分成4个分区的,C盘装系统,DEF自选,哪怕当时只有80G大小的硬盘。直到现在这台1T硬盘的电脑,我也是按照习惯分成了4个分区。但是,这样的分法科学性和合理性又在哪里?之前,一个同学就提出了对这样分法的异议,你很难估计每一个分区要分多大,很有可能一个分区已经满了,但是其他分区只填了一半。而这样的问题,确实在使用过程中发生过多次。最后的解决方案,一般也就是将满了的盘里面的内容拷贝到其他盘中,而这样做的问题在于盘符上的标签和它的内容已经不相符合了。为什么我不直接就一个盘呢?像Ubuntu那样,所有个人的文件都放在Home下面,硬盘有多大,就能放多大的东西。当同学提出这个想法的时候,有一个古老的说法跳入到了我的脑海中,那是在我进入CS专业之前就听说过的说法,并一直长期持有——运行效率会下降。有一个经典的建议,不要将软件安装到C盘,因为,那样会降低系统的运行速度,前不久我还用过这个建议。但这是真的吗?有什么理由呢?根据实验还是理论推理?

所以,来考究一下硬盘分区的理由。

多系统

因为,使用环境不一样,那么理由也是有很大不同的。首先就有多系统和单系统环境之分。

支持

  1. 一般来说,在一块硬盘上有几个系统,就至少需要几个分区。所以,多系统就一定避免不了多分区的情况。(在此Linux可以产生一个例外,它在特殊处理下可以和Windows共享一个盘。)参考【1】【7】【8】
  2. 多操作系统之间的数据共享。参考【1】【8】

反对

  1. 无反对理由。

单系统

此处单系统,既指整个硬盘只有一个系统,也指多个系统中每一个系统内部如何划分。

支持

  1. 效率
    1. 分区越大,效率越低。这是常识。出自【3】相当一部分人的观点。【12】中认为
    2. 将程序装到系统盘会降低系统的运行速度。经典的说法。
    3. 降低文件碎片,从而提高效率。
    4. 机械硬盘盘片外圈读写速度相对内圈要快,分区可以把常用数据限制在读写速度较快的盘片外圈。所以将操作系统和软件安装在外圈,启动和运行速度会更快些。参考【5】中2.2节,【6】中回答。【1】【10】
    5. swap分区。【12】
  2. 安全性
    1. 一个分区出错,不影响另一分区的数据。
    2. 如果中病毒了,或者操作系统损坏了,重装起来更方便,重装系统时也不用担心会破坏到个人数据。
  3. 管理&维护
    1. 将每一个分区都表上一个名字,比如:游戏、视频、文档等等。比如:【4】
    2. 方便备份。一方面方便手工备份(将非系统盘全部拷贝下来,而不用区分哪些应该备份),另一方面方便软件自动备份(不会将操作系统或程序软件备份下来)。【7】【8】【1】
    3. 制作系统恢复分区,很多OEM的电脑出厂的时候都有这样的分区。【7】【8】
    4. 将分区分小一点,有利于磁盘检查软件更快能够完成检查,当然,前提是小分区满足需求。【12】

反对

  1. 效率
    1. 分区越大,效率越低,完全出自一部分人的类比论证。
    2. 如果将软件安装到系统盘之外才会有效率问题。当软件启动的时候,它既要加载自己的程序文件及动态链接库,他也需要加载系统的动态链接库,就可能出现磁头在两个相聚较远磁道上来回切换。而如果都装在一个盘里面,那么来回切换的成本就小得多了。【9】
  2. 历史原因,现在不需要了。(我没经历过DOS&Win98的年代,所以历史原因都是别人的陈述。)
    1. 可能Windows 2000之前的民用Windows系统,系统很不稳定,数月乃至一两个月就需要重装。在重装系统时需要格式化掉整个系统盘才行,如果,个人数据也放在这个上面的话,就需要备份,非常麻烦。所以,要弄另一个分区来存储数据,这样重装起来十分方便。但是现在的系统一来,稳定的多,也就不需要频繁重装了,二来,根本不需要格式化分区才能装系统。重装后,系统盘里面的个人文档依然还在。参考【2】中李五知答案第二点。【9】
    2. 重装系统除了拿光盘装,还有就是用GHOST来覆盖,这确实是一个方便的重装方案,目前,我自己也比较喜欢这种重装方式。这可能是一个不错的理由,但是,现在系统越来越稳定了,对于一般用户,他可能是一个操作系统用到电脑淘汰为止。
    3. 分区就是一个历史兼容问题,先于Windows(DOS)出现的UNIX就没有这个概念,如果说它有好处那么也是附带的。【11】
  3. 安全性
    1. 早些年软盘、硬盘质量不行,容易出错,但是,现在已经好很多了。而且,分区并没有降低每一个文件内容被损坏的概率,它降低的仅仅是每个文件因为分区中文件系统的索引数据被破坏而导致的文件损坏的概率。解决文件安全性问题,应该使用备份而不是靠分区。比如:现在非常流行的各种云盘就是一个好的解决方案。参考【5】中2.5节。
  4. 管理&维护
    1. 分区是一种管理方式,但是,从逻辑上,文件夹或者Windows下的库的概念也完全可以完成这个功能。所以,为这个而分区,不是什么太好理由。
    2. 分区是一种人为的将磁盘分段的行为,因为,很难把握每个分区要用多大的空间,很容易出现一个分区已经装不下了,而其他分区还空着很多的尴尬局面。【1】
    3. 文件在分区内移动,几乎不需要时间,但是在分区之间移动却可能需要很长时间,如果文件比较大的话。

建议分区方案

如果,有多个系统,那么自然至少要分那么多个分区,但就每一个系统而言(系统恢复分区、系统引导分区、swap分区除外),要么就一个分区(系统+个人数据),要么就两个分区(一个放系统,一个放个人数据)。软件不管大小都装到系统盘去,只需要系统盘开足够大的空间即可。


参考

  1. Why Partition your Disk Device?
  2. 知乎问题:Mac 的 OS X 系统,为何只有一个分区?重装的话是否对数据不安全?
  3. 搜狗问问:windows 7只有C盘 不分盘有没有关系?
  4. 百度知道:硬盘分区的作用、意义
  5. 我对“硬盘分区”的愚见  详细的比较
  6. 知乎问题:Windows 系统分区与否对性能有什么影响?
  7. How (and Why) to Partition Your Hard Drive
  8. Five reasons to partition a disk
  9. 百度知道: 硬盘分区有无意义
  10. 真实的谎言 硬盘分区对性能影响有多大?
  11. 为什么苹果电脑硬盘不分区? 考虑到了Windows分区的来源。
  12. wikipedia:Disk partitioning  详细的比较
  13. Should I partition my hard disk?  详细的比较
电子时钟设计是一个基于单片机的综合性电子项目,涵盖硬件设计、软件设计、模块代码编写以及运行展示等多个环节。以下是该项目的详细分析与知识点总结: 电子时钟设计是一项课程设计任务,目标是开发一个功能完善的电子时钟系统。该系统以单片机为核心控制器,具备时间显示、设置和控制等功能,旨在满足用户的日常使用需求。 硬件设计的核心是系统方案原理图,它明确了系统的整体架构以及各组件之间的连接关系。外设设计方面,键盘输入模块和数码管显示模块是关键部分。键盘输入模块的工作原理包括键盘扫描、按键识别以及状态机控制等环节;数码管显示模块的工作原理则涉及数码管的驱动、显示控制和状态机控制等内容。 软件设计的核心是项目软件系统总架构图,它详细介绍了系统的软件框架,涵盖单片机编程、键盘输入模块流程图与代码、数码管显示模块流程图与代码等方面。顺序图则展示了软件的运行流程,包括系统初始化、键盘输入处理、显示控制和状态机控制等环节。 模块代码是系统各模块功能的具体实现。例如,键盘输入模块的代码实现了键盘扫描、按键识别和状态机控制等功能;数码管显示模块的代码实现了数码管驱动、显示控制和状态机控制等功能。 运行展示是项目的最终成果呈现环节,展示了电子时钟的实际运行效果,包括时间的准确显示、便捷的设置操作以及稳定的控制功能等。 单片机原理:掌握单片机的架构、指令系统和编程方法。 Proteus仿真:熟悉Proteus仿真原理、仿真环境及仿真操作。 C语言编程:理解C语言的语法、数据类型、控制结构、函数和数组等基础知识。 电子时钟设计:了解电子时钟的工作原理、设计方法和实现技术。 硬件设计:掌握硬件设计的基本原理、方法和工具。 软件设计:熟悉软件设计的基本原理、方法和工具。 模块代码实现:掌握模块代码的设计、编程和调试技巧。 电子时钟设计项目融合了硬件与软件设计,通过模块代码实现功能,并通过运行展示呈现最终效果。掌握
一、ZBB 语言概述 ZBB 是一种类汇编语言,它在设计上借鉴了传统汇编语言的低级特性,同时融入了一些现代编程理念,旨在为底层硬件操作和高性能计算提供一种灵活且高效的编程工具。它通过简洁的指令集和直接的硬件交互能力,让程序员能够更精准地控制计算机的运行过程,适用于嵌入式系统开发、操作系统内核编写以及对性能要求极高的应用领域。 二、Python 模拟阶段的资源需求与利用 在使用 Python 模拟 ZBB 的工作原理阶段,主要的资源集中在以下几个方面: (一)开发环境 Python 的跨平台特性使得开发环境的搭建相对简单,只需要安装 Python 解释器即可在多种操作系统上运行模拟代码。此外,利用 Python 的丰富库资源,如 sys 模块用于模拟系统调用,struct 模块用于处理二进制数据,以及 unittest 模块进行测试,这些都为初步实现 ZBB 的指令模拟提供了便利。 (二)学习资源 对于开发团队来说,需要掌握 Python 编程基础以及对汇编语言原理的深入理解。可以通过阅读经典的汇编语言书籍、Python 编程教程以及参考开源的汇编语言模拟项目来积累知识。同时,利用在线编程社区和论坛获取技术支持和经验分享,也是重要的学习资源。 (三)测试资源 在模拟过程中,需要大量的测试用例来验证 ZBB 指令的正确性。这些测试用例可以基于已有的汇编语言测试集进行改编,也可以根据 ZBB 的特性自行设计。同时,利用 Python 的调试工具和日志记录功能,能够有效地定位和修复模拟过程中的问题。 三、Rust 重写阶段的资源规划与优势 随着 ZBB 语言的发展,为了提升性能和稳定性,计划使用 Rust 进行重写。在这一阶段,资源的规划和利用将发生显著变化: (一)开发环境 Rust 的开发需要安装 Rust 编译器和 Cargo 包管理工具。与 Python 不同,Rust 更
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值