MS-DOS的那个命令行,叫做User Interface(UI),对应的是http:// COMMAND.COM 这个文件实现的。
拿MS-DOS的后续版本Windows95做例子:用户直接看到的桌面、资源管理器这些东西,只是由Explorer.EXE实现的一个Graphical User Interface(GUI)。
下图是Windows95的架构图:
用户能直接接触到图形界面只是左上角的那一块32bit shell,通过EXPLORER.EXE和SHELL.DLL实现;
Windows95的内核里还有大量的东西,包括:
内核:KERNEL32.DLL ADVAPI32.DLL GDI32.DLL USER32.DLL ...
驱动:IO.SYS HIMEM.SYS SYSTEM.DRV VMM32.VXD IFSHLP.SYS IFSMGR.VXD IOS.VXD ...
注册表:SYSTEM.DAT USER.DAT
作为对比:对于MS-DOS来说(7.0以前,不含),真正的内核文件只有两个:IO.SYS和MSDOS.SYS,从文件数量上就能看出来二者之间的差别非常大。
操作系统真正复杂的地方是在于内核的和驱动。用户界面部分,不管是图形还是命令行,都不是重点,有些嵌入式操作系统甚至连用户界面都不存在。
继续开发MS-DOS,先得说清楚是要继续开发MS-DOS的什么功能:
MS-DOS是一个 实模式 下、 单任务 、基于 命令行 的操作系统。
实模式:地址空间只有1M多。
单任务:没有线程、进程的概念,任何情况下只有一个任务独占CPU的全部资源。
命令行:系统默认不自带图形界面,只有命令行的方式控制计算机。
如果要给MS-DOS续命,最大的瓶颈就是实模式的1M内存上限和单任务。
现在主流的PC配置里,内存的容量都上G了,实模式1M的限制是非常坑人的。在实模式下要访问大内存,如果通过HIMEM.SYS的话,一个句柄在某一个时刻只能访问KB级别的内存。为了访问1M的内存,不能直接访问,而是可能需要重置句柄1000多次,中间可能还要涉及1000多次的内存拷贝,效率极低,而且要是访问1G内存的话,所有句柄全申请完,可能640K的常规内存都放不下。
单任务问题虽然不想内存上限那么严重,但相当于把很多硬件资源都浪费了,比如想一边开着下载一边玩游戏同时还开着音乐,就不要想了。
FreeDOS至今仍然存在上述问题 ,所以FreeDOS可以用来怀旧,可以用来跑一些老软件,但别想让FreeDOS发挥出硬件的完整性能。
至于命令行的问题,本质上,这只是一个用户接口(User Interface), Explorer.EXE, CMD, powershell, 甚至是bash shell, 都是UI,如果有人肯出钱,肯定有人能搞出来跟MS-DOS一样的,基于Win10的命令行出来。
给MS-DOS续命的唯一出路, 就是保留命令行,内核的其它工作方式全换掉 ,那为啥微软不这么做呢?因为微软要是不把界面改改,用户肯定不会花更多的钱去升级系统。
看看微软从Windows9x开始,每个版本界面都有很多变化,说到底,就是提醒用户: 花钱买新的系统是值得的,因为界面不一样 ,界面更好看。Windows95出来的时候,零售价是1995元,要是微软敢把Win95做成跟DOS一样的界面,在1996年的时候肯定没人掏将近2000块钱去买这么一个系统,因为用户根本不懂得内存上限、多任务这些东西。
操作系统的最重要的部分是内核和驱动,UI只是一个壳子,但大多数用户只看到了这个壳子。
参考链接:
Architecture of Windows 9x
FreeDOS - Wikipedia