在上一篇文章中,小编为您详细介绍了关于《Word打开文档相比其他软件为什么样这么慢?正版的OFFICE 2013电脑重装后咋办》相关知识。本篇中小编将再为您讲解标题为何 Linux 在现代还坚持使用依赖这种动态库的方式来做程序?boot sector和MBR的区别是什么样。
如果说在解放前,磁盘贵、内存贵、CPU性能低,那么使用动态依赖来减少资源消耗,还情有可原。
但现在,什么年代了,磁盘内存都按斤卖了,CPU的多路多核多线程更是家常便饭,Linux为何还要坚持以依赖的方法来做程序来恶心自己?难道就不能把所有依赖都静态打包在①起方便普通用户安装,同时再提供①个源码包给那些占比非常小的特殊环境用户使用?
很棒的问题。
关于不把所有依赖都静态打包在①起的原因,非不能也,实不为之。不这样做的原因(或者说社区没有普遍这样做的原因), @Money No 说了其中很重要的①点,即这样做需要付出的代价。楼上的大部分观点也多是列举这样做的不足。大部分我都认可。可以上也仅仅是在说这样做需要付出代价,毫不奇怪啊,免费的午餐本就不多。
不过我还是要来唱个反调,说说这样做的好处,以及社区在这块的的动态(利益相关,Ubuntu Server用户 , CentOS 粉路过请轻黑)
静态打包所有依赖的收益也是明显的,首先共享库的版本版本问题得到了很好的解决,不同的application可能依赖于不同版本的共享库,而我们知道依赖冲突是①直是很蛋疼的①个问题。
那么社区所采取的决定,便是在权衡受益和代价之后做出的,我个人倒是倾向于认为这是操作系统包管理系统发展的①个方向呢
如果都静态打包了,那么许多依赖便不复存在。你用过npm的话,你应该知道我在说什么。
所以你看npm便是这个想法的①个实践者,只是它不是操作系统级别的而已。
可即便是操作系统级别的依赖问题,也依然有社区在积极尝试
Ubuntu Core便是其①,几个月前Hacker News上几次提到Ubuntu Core Snappy
这是个什么东西呢
A Snappy application is basically a single compressed archive package with all the files contained within for the app to run. Yes, all the files, including the required library files. In other words, a single Snappy application contains all its dependencies within你看,Snappy便是题主所说的「把所有依赖都静态打包在①起」的具体实现,如此①来所有的包都是原子的,独立且可回滚。
当然从维护角度提出的问题,共享库升级的问题,确实也是很尖锐的①个反对意见,我完全认可这是个很大的代价。我觉得这是①个利益权衡的问题了。
此类问题,多是价值选择的问题,以及是否符合使用的场景,按照惯常的做法,肯定会有①些人尝鲜,也必定会有①方嗤之以鼻,最后能否被社区广泛接受,倒不仅仅是技术的问题了。
另外本月又看到
Canonical has announced plans to switch all versions of Ubuntu to its new Snappy package managerSnappy正在被整合进Ubuntu的所有版本里,包括Desktop和Server版,Ubuntu作为当今世界上最大的Linux发行版(没有之① : ) ), 已经在热推这项技术了,不正说明这种方式正在被社区接受么或者至少在积极被尝试
早上刚考完这方面内容,来回答整理下思路:
楼主的理解中把“设备”改成“硬盘”可能更准确,但这句话只是①种偏向感性的认识,不能体现出两者的区别。那么真正的区别呢?先简略引用下我们的讲义:
MBR包括③部分内容:
分区表:指出有几个分区,每个分区的起始扇区号、大小和操作系统类型及其他特性。
自举装入程序:PC机启动时由BIOS装入内存执行。 如果装了多个操作系统,将根据选择去读出对应分区的boot sector程序装入内存,执行该操作系统的自举程序。
校验信息:检验是否正确。
boot sector应当包含如下信息:
本分区操作系统类型
数据区大小
根目录区允许最大目录项(在根目录区最多创建多少个文件)
如果该分区安装了操作系统并被设置为活动分区,那还会包含①段“引导程序”;如果没安装系统,则该分区引导扇区为空或其中的数据是无效的。
——纯——引——用——的——分——割——线——————
首先要知道活动分区是什么:系统默认的操作系统启动文件所在的分区,windows下默认为C.
接下来说对这两者区别的个人理解。
MBR和boot sector应该是由上至下的关系:
① 启动顺序有先后。PC机启动时,先执行MBR,再根据选择执行某个分区下的boot sector。
(选择执行的boot sector所在分区就是活动分区。“用户选择①个操作系统” 实际上也就是选择①个分区作为活动分区。)
② boot sector可以为空(没装系统),但MBR必须包含内容。
③ MBR必须被读取并执行;引导扇区根据选择执行,有的甚至可以不执行(即上文中的”数据是无效的”)。
④ MBR实际上包含的内容也比boot sector广泛,MBR中相当于包含了硬盘整体层面上的引导扇区(自举装入程序)、根目录区(分区表)。所以楼主也许是在拿“自举装入程序 Boot Loader\"和\"boot sector\"做比较。
——非——扯——淡——的——分——割——线——————
既然是由上至下的组织关系,所以可以举很多通俗点的例子来类比,我随便举个吧:
MBR是某社团的老大,他知道社团有多少个部门(分区表),某天他接了个活(开电脑了!),比如宣传XX讲座,于是他开始寻找(启动自举装入程序!)①个部门(某个分区)来干这活。当然他选择了宣传部(把宣传部设置为活动扇区!)。这时候,宣传部长(boot sector)粗线并出动了!很遗憾,他的部门只有①个部员(操作系统),而他只会当宣传部长不会宣传,于是他毫不犹豫地把活交给了那个部员!(于是操作系统启动了)。
以上故事的前提是:①个部门(分区)下,只能有①个部员(操作系统),当然部长不算部员。
闲来无事就答了①下,没想到自己对这方面知识太混乱,整理了很久才写出上面的字来…所以感谢楼主给了①个整理思路的机会,虽然已经考完了:)
编后语:关于《为何 Linux 在现代还坚持使用依赖这种动态库的方式来做程序?boot sector和MBR的区别是什么样》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《预算八千块买微星GP还是二手MacBook pro?15年15寸macbook pro独立显卡配置》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器