什么是操作系统?
操作系统Operating System,简称OS)是管理和控制计算机硬件软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。

现在世面上的操作系统个可以说是百花齐放,但是它们的基本功能都是类似的, 包括:
进程管理, 内存管理,文件系统,网络通讯,安全机制,用户界面,驱动程序等。

同时我们会发现它们的基本架构也都是类似的,包括应用层, API层, 内核层。


先说应用层, 系统应用(System Application)是指系统自带的关键进程, 比如Windows和Mac都会有自己的Shell进程, Windows是Explorer.exe, Mac是Find.com. 用户应用(User Application)是指我们自己开发的应用程序, 比如QQ,Photoshop。系统应用和用户应用本质上没什么区别,都是通过系统API实现的,但是系统应用因为是操作系统开发公司的自家程序, 很多时候可以调用未公开的API。

再说API层,API层内部很多时候可以分更多的层, 比如Android会把这层分为Library和Application Framework, Mac和ios会把它分为分为Core Service和Media。API层尽管最底层都是C/C++, 但是上层不同平台会用不同的语言实现, 比如Android选择用Java封装Framework; Mac/ios选择用Objective-C封装Cocoa框架; Windows就更丰富了,有Windows C API,也有COM API,甚至还有WinRT API, 在这些C/C++ API上层,还有为不同语言(.net)封装的新API。

最后说Kernel层,内核既是程序在CPU处理器上运行的调度器,也是访问外部设备的桥梁,同时又提供了安全服务。操作系统内核类型, 包括微内核,宏内核,混合内核。宏内核(Monolithic, 也称单内核,巨内核), 将所有系统功能都放在同一地址空间中,甚至将该地址空间映射到所有进程,Linux/Unix都是典型的宏内核。 微内核(Microkernel), 内核只负责最关键的任务调度和内存管理,其他功能全都交给外部用户态的服务程序完成,该架构下内核会很稳定,但是效率太低, Mac OS X内核XNU的核心Mach是一个微内核。混合内核(hybrid kernel)结合了2种内核的优点, Windows和Mac是典型的混合内核。
Windows的基本架构可以参考我的这篇<<理解 Windows API 调用过程>>和<<理解WinRT >>。

我们再看当前市面上流行的操作系统的种类以及它们之间的关系,主要包括桌面端(PC),移动端(Mobile), 还有服务器端(Server),大概分布如下:
PC: Windows, Mac, ChromeBook
Mobile: Android, ios, WinPhone
Server: Linux, Unix

这些操作系统之间有何关系?
这些系统实际上都不是独立存在的,很多系统是从另外一个系统"进化"而来,下图展现了这种关系:

其中ChromeOS可能国内大家用的不多, 它Google ChromeBook的OS系统,北美学校比较流行,主要以Web为界面开发工具,C/C++为后台开发工具。

上面我也可以看到系统的2个大分支, 一个是Unix/Linux, 另外一个视Windows分支,我在<<关于字符集,编码格式,大小端的简单总结>>最后也提到了2个分支关于UFT8和Unicode16的区别。

最后,上面我也可以看到几家操作系统大公司的布局:

苹果希望借助Mac OS和ios统一PC和Mobile市场, 这2个系统尽管运行在不同的硬件架构上(x86和ARM), 但是苹果应该视用同一份代码代码开发的(内部用宏做区分),应用层也用同一套API(Cocoa).

微软希望借助Win10的UWP统一PC和Mobile市场,Win phone7本来是采用Win CE架构的, Win Phone8之后微软改成了NT架构,这样和PC就实现了统一,具体我在<<GDI VS Dxgi>>也有相关阐述。

Google以开放的姿态,它的Android和ChromeOS分别有个应用市场(Google Play Store和Google Chrome Store),好像有合并的打算,同时Google内部也在开发”Fuchsia“新操作系统。

苹果和微软的战略很相似,Google相对有些不一样,未来会谁胜谁负,我们拭目以待吧。

posted on 2016-11-27 22:25 Richard Wei 阅读(1727) 评论(0)  编辑 收藏 引用 所属分类: 行业动态

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理