截止到今天,也就是本文下笔的2017年2月12日,我接触过很多操作系统,于是就产生了一个想法,那就是把这些零碎的东西用一根线穿起来,作为我个人的知识库的一部分……
本文主要介绍一些重量级的操作系统的前世今生。
桌面级:Windows,Linux,Unix
移动级:Android,iOS,Windows phone
嵌入式:VxWorks等一干RTOS
1. Windows
Windows来源于Microsoft公司,是世界上最负盛名的桌面操作系统,它的前身是DOS(Disk Operating System),且它的第一个版本就是在DOS环境下运行的,时至今日,Windows系统依然内置DOS环境,作为紧急修复系统的利器。当然,win的优势不在于界面美观,而是它的兼容性,每一代Windows都包含前面几代的API,这种技术叫做WOW(Windows on Windows),如果想运行什么比较老的软件,直接修改兼容性就是了。在最新的Windows 10 1607版本中,Windows内置了Linux子系统(技术源自于Ubuntu),并且Windows Cloud的发布,在在下看来,已经是Windows系统模块化成熟的时候了,依在下愚见,Windows系统应该有如下主要模块:
-
-
- NT内核(桌面是内核态的,这点不同于Linux)
- WDDM驱动模型
- UWP API 子系统
- win32 API 子系统(WOW)
- linux 子系统(WSL,Windows Subsystem for Linux)
- posix子系统(在Windows中的支持一直不完整)
- OS/2子系统(貌似和IBM分家了?)
- etc...
-
接下来是windows(仅个人版本)大事年表以及各种总结(附个人吐槽)
-
-
- 1981年,MS-DOS 1.0发布
- 1985年,Windows 1.0发布
- 1993年,Windows NT 3.1发布,成为首个使用NT(New Technology)内核的Windows操作系统,不得不说NT这个名字很骚啊
- 2000年,Windows 2000发布,是最后一个基于DOS的Windows版本
- 2003年,Windows XP发布,NT 5.0内核,最长寿的Windows,不过很快就要被win10反超了
- 2005年,Windows Vista发布,NT 6.0,因为超前的设计和对配置的高要求成为了Windows史上第一个短命的操作系统,但是加入了UAC等一系列安全措施,使得系统更加安全
- 2009年,Windows 7发布,NT 6.1,此后每一代Windows都以数字命名,Windows 7和Vista真是一个娘生的,长得几乎一模一样
- 2012年,Windows 8发布,NT 6.2,此版本删去了开始按钮并将开始菜单改为开始屏幕以更好的和平板设备结合,事实证明微软被打脸,Windows 8不久前停止支持,成为第二短命的系统
- 2013年,Windows 8.1发布,NT 6.3,此版本恢复了开始按钮但仍然使用开始屏幕,并直接导致了没有Windows 9的存在
- 2015年,Windows 10发布,NT 10.0,此版本改进了开始菜单使之看起来是win7/win8.1的结合体,并大幅度更新内核版本号,开启内测更新,开始了“Windows即服务”的理念,相对来说,Windows 10的设计更像是对用户的一种妥协
- 2016年,Windows 10 周年更新发布,NT 10.1,代号红石(Redstone),集成了WSL,满足了跨平台开发者的需求
-
2. Linux
事实上应该把Unix排在Linux之前的,但是由于本人的工作环境为Windows/Linux,就委屈一下Unix吧
Linux是大神Linus在1992年发布的类Unix开源操作系统(类Unix系统的名字一般都以x结尾),当时他独自完成了该系统的最初的版本并把源代码发布到网上,如今Linux最正统的应该是Linux Kernel(内核),Linux采用宏内核的设计,而Windows是混合内核设计,Linux的设计有一个好处就是任何一个部分都可以被视作可以移除而不影响系统基本运行的,当然,kernel除外,由于Linux一直是社区维护,所以并没有商业动力组织它衍生出一套完整的桌面生态,甚至连某些硬件都无法驱动,好在Linux主要是运行在服务器上,不需要这么多的硬件支持,当然这样就影响了个人的使用。这里有个特例,就是NVIDIA,NVIDIA拒绝开源驱动,于是使得Linux kernel对NVIDIA GTX 9xx系显卡支持很差,发热严重而且无法发挥相应性能……这尼玛就很尴尬了。应该说,Linus的最大贡献是催生了一系列开源协议,比如Linux kernel自己在用的GPLv2,Android使用的Apache协议等等。但遗憾的是,我国法律不承认开源协议。另外,Linux的桌面是用户态的,这使得桌面的效率不那么高……
此处插句题外话,Linus还开发了版本管理系统Git,就是GitHub的那个Git,然而我不会告诉你Git的原意是饭桶的……逃。
不过讲真Linux没那么多好说的,就挑几个有代表性的说一说吧
-
-
- Linux Arch,对新手最不友好的Linux发行版,安装时纯命令行操作,pacman包管理系统,采用滚动更新的模式,每次更新有可能是系统挂掉,非常不推荐服务器使用,类似的还有 Linux Gentoo等等
- Linux RHEL,红帽子系列,史上最稳定的Linux发行版,大公司运维的首选(非软广),该公司以出售yum包管理系统的使用许可和售后的方式盈利,衍生版本 Fedora和CentOS,CentOS免费稳定且能使用yum,成为许多非营利组织例如学校服务器的首选系统
- Linux Ubuntu,桌面操作系统,以开箱即用为卖点,其母公司以Ubuntu Server的售后和出售Ubuntu设备盈利,然而虽然Ubuntu Server有一套完整的迁移方案,但是迁移挂掉的几率依然很高,这就很尴尬了
- Linux Debian,Ubuntu的基础,使用apt包管理系统,最保守的Linux发行版,估计没有之一,非常稳定,若无特殊需求可以用作服务器操作系统
-
3. Unix
很可惜我对Unix的了解并不多,只知道这个系统是C语言的发祥地,并且一直有严格的版权管理,macOS X和iOS的内核有一部分来自于类Unix系统的BSD,而且BSD是Unix最有名的衍生系统了,其中又以SolarisBSD和FreeBSD最有名。Unix和Linux的模式很像,即开发者提供内核,客户负责在内核的基础上开发环境,Unix的版权控制非常严格,诸位可以去看看FreeBSD的故事就明白了。
macOS X和iOS的内核据说是相同的(除了驱动外),且该内核是开源的,但是我手头没有苹果的设备,也就没有过多的关注这一块。
4. Android
Android是现今世界上最负盛名的移动操作系统,市场份额多达80%,其实……严格来说,Android应该是Linux的一个发行版,但是由于Google拒绝采用GPL开源协议而被Linux基金会剔除出发行版的行列。这里我们主要讨论AOSP(Android open source project)以及它的衍生版本,Google 自己的手机采用的Android系统添加了太多私货,并不是很能接受。
首先,AOSP是开源的,采用的协议是Apache,这就决定了开发者使用或者修改源码后不需要把自己的使用结果公开源码,这对硬件厂商是一个非常好的保护,也间接导致了Android设备的碎片化,因为硬件不同的手机刷机包不通用,而基于AOSP的著名ROM(Android刷机包而不是闪存)lineageOS(原CM)、mokee(魔趣)则很好的保留了Android原生的使用体验并增强之,在国内外各大Geek聚集的论坛引起很大反响。其次,国产手机系统做的最好的要数小米了, MIUI是基于CM开发的……
其次,因为AOSP的开源,导致很多漏洞被hacker发现,进而威胁到设备所有者的安全,Google最近一直想收紧Android的控制权,从每个月我的小米5s会更新一个新的安全补丁来看,Google这一步做的还是很好的……当然只有大厂的设备能享受到。同样,因为Android是基于Linux的,不可避免的Android也可以获取root权限,当然这个权限默认是锁死的,且设备出厂时刷写的ROM里一般不含su文件,导致root权限缺失,我觉得这是对不懂手机的用户的一种保护,当然若是有这方面的知识,刷写root也是很有可玩性的,iPhone的越狱和Android的root完全不能相提并论。
再次,Android多方面的可玩性,也都是来自于AOSP的开源,当然若想制作属于自己的ROM,还需要搞到自己手机的驱动文件,这可以提取自官方的ROM,当然,这个我没学会……
每一代的Android都有一种甜点和相应的字母对应,这也是很有趣的
以下是Android版本和代号(附个人解说)
example:Android L->Lollipop->5.0/5.1->棒棒糖
-
-
- Android beta
- Android 1.0(这两版是内部测试版,无相应的甜点代号)
- Android C->Cupcake->1.5->纸杯蛋糕
- Android D->Donut->1.6->甜甜圈
- Android E->Eclair->2.0/2.1-> 法式奶油夹心甜点
- Android F->Froyo->2.2->冻酸奶
- Android G->Gingerbread->2.3.x->姜饼
- Android H->Honeycomb->3.x->蜂巢 专为平板优化的设计,失败
- Android I->Ice cream sandwich->4.0->冰淇淋三明治 采用Holo设计(Android design),使得界面外观更加整洁,但是美观欠缺
- Android L->Lollipop->5.0/5.1->棒棒糖 采用激进的Material Design(质感设计),使得Android的美观度上升了不止一个层次
- Android M->Marshmallow->6.0.x->棉花糖 首次加入用户权限控制,使得APP行为得到一定控制,原生支持指纹解锁
- Android N->Nougat->7.0/7.1.1->牛轧糖 原生支持分屏,启用Google assistant,使得Google在人工智能方面更进一步,支持instant app,类似于微信小程序的设计,外观上强制采用圆形图标,失去了MD的放荡不羁
-
5. iOS
iOS是iPhone专用的操作系统,由于设备型号稀少,故可以得到最佳的优化,此外iOS的安全性理论上比Android更胜一筹,因为这是一个完全封闭的系统,唯一的应用入口就只有App Store,当然App Store染毒的话那真是画美不看。
我对iOS的了解也不算多,但是iOS的任务优先级和内存管理的确是很优秀的设计,在Android上,我点击打开一个程序,系统首先去启动程序,然后再去绘制屏幕内容,如果启动时间过长,屏幕没有变化则会给人一种卡顿的感觉,而iOS上则是先绘制屏幕然后启动应用程序,如果卡顿则是另外一种风景——白屏,但是屏幕的变化使得人们先入为主认为手机没有卡顿,这就是Android和iOS一直争执的流畅问题的根源。另外iOS的伪后台设计也是很好的——除了需要进行后台任务的时候,这个设计最大限度的保证了内存的可用性,当然后台下载会受限制,不过新的iOS已经解决了这个问题。如果考虑省心和易用性,iOS是首选。
6. 移动平台上的Windows
好嘛……你问我为什么没有一个简洁的名字?因为这货名字太多了……从Windows CE开始,到Windows mobile 到Windowsphone再到Windows 10mobile,微软改名部,实至名归……如果只是改名字还好了,每一代的开发模式都是推倒重来,微软你知不知道这样会玩死开发者的?!于是导致了一个尴尬的局面,就是Windows 10 mobile没有什么优质APP,连基本的社交都不能保证。虽然微软一直喊着要统一平台,但是您至少能让ARM平台跑得了win32 APP再说啊……要不然Windows的生产力还能用什么去保证……然后据说高通下一代旗舰CPU可以硬件级模拟win32 API,那就拭目以待吧……我是不怎么看好这个的。吐槽完毕
这个系列我只用过Windows 10 mobile,说下体验,就是极其类似苹果,伪后台,封闭系统,但是和传统的Windows差别很大,类似于Windows 8发布时同时发布的 Windows RT,只能运行uwp(universal Windows platform)即商店应用,文件系统只能看到自己的个人文件夹等等,不过这个系统有大量的游戏是几个意思……于是我的Lumia 950很愉快的被我当游戏机玩,当然很明显并没有发挥出高通骁龙808的真正性能……这个系统还很不成熟,另外,近期发布的Windows Cloud应该是移除了win32 API的Windows桌面版,这就等于把这个版本搬到了桌面设备上,我仿佛又看到了Windows RT悲剧的重演……
7. RTOS
RTOS,全称Real Time Operating System,实时操作系统,多用于嵌入式设备,从理论上讲,实时操作系统是保证在一定时间限制内完成特定功能的操作系统,且分为软实时和硬实时,然而这样做的优点是显而易见的,迅速,正是由于它的迅速,RTOS被广泛应用于军工和航空航天领域,当然,RTOS是一类操作系统的统称,其中VxWorks是个中翘楚,也是我现在正在学习的方向,以后学习VxWorks时有什么感悟或者技巧,会继续发布在我的博客里的,我爱学习,学习爱我!
8. 说明
完成时间:2017-02-13 01:37:47
这是我在我校安卓社团技术培训第一课的内容,然而在那次培训中因为时间关系我只讲了Android和Linux的相爱相杀,所以把想讲的内容整理在这里,但是那次培训我看到了一个明媚的女孩子,我看到她在台下一直笑得很开心,我希望她在我身边能一直这么开心的笑下去,她现在是我的女朋友,虽然不懂技术但依然很有耐心的听我瞎BB,我很爱她,也想我们在一起的时候能够开开心心,不需要去考虑什么繁琐的事情……现在是情人节前夕,她应该睡熟了吧,如果她知道我因为想她失眠而爬起来写技术博客,不知她会作何感想呢?反正不会再容忍她熬夜了,哈哈