Microsoft referred to its own MS-DOS as its "single-user, single-tasking operating system",[30] and advised customers that wanted multiuser or multitasking support to buy Xenix.
【 在 wdong (万事休) 的大作中提到: 】 386bsd 1992年就出来了。问题是根本没有市场。当时牛逼的是内存驻留程序这种奇技 淫巧。 我甚至怀疑微软当时根本没有能够写操作系统的程序员。386是85年出来的, dos的himem.sys用到啥年代? 比尔盖茨自己应该也不懂。 我记起来了:微软有个unix叫做xenix,80年代就开始卖了。上面几乎没有 app可以跑。 摘自wikipedia: Microsoft referred to its own MS-DOS as its "single-user, single-tasking operating system",[30] and advised customers that wanted multiuser or multitasking support to buy Xenix.
【 在 wdong (万事休) 的大作中提到: 】 386bsd 1992年就出来了。问题是根本没有市场。当时牛逼的是内存驻留程序这种奇技 淫巧。 我甚至怀疑微软当时根本没有能够写操作系统的程序员。386是85年出来的, dos的himem.sys用到啥年代? 比尔盖茨自己应该也不懂。 我记起来了:微软有个unix叫做xenix,80年代就开始卖了。上面几乎没有 app可以跑。 摘自wikipedia: Microsoft referred to its own MS-DOS as its "single-user, single-tasking operating system",[30] and advised customers that wanted multiuser or multitasking support to buy Xenix.
【 在 wdong (万事休) 的大作中提到: 】 386bsd 1992年就出来了。问题是根本没有市场。当时牛逼的是内存驻留程序这种奇技 淫巧。 我甚至怀疑微软当时根本没有能够写操作系统的程序员。386是85年出来的, dos的himem.sys用到啥年代? 比尔盖茨自己应该也不懂。 我记起来了:微软有个unix叫做xenix,80年代就开始卖了。上面几乎没有 app可以跑。 摘自wikipedia: Microsoft referred to its own MS-DOS as its "single-user, single-tasking operating system",[30] and advised customers that wanted multiuser or multitasking support to buy Xenix. ...................
himem.sys加载时DOS会显示打开a20地址线,这个a20是实模式和保护模式之间的一个坑,进保护模式需要打开但本身和保护模式没关系。 https://en.wikipedia.org/wiki/High_memory_area In Memory management, the high memory area (HMA) is the RAM area consisting of 65520 bytes beyond the upper memory area of an IBM AT or compatible computer.
【 在 xiaoju (可爱的龙猫) 的大作中提到: 】 不是说你没用过,说的是你记错了 himem.sys加载时DOS会显示打开a20地址线,这个a20是实模式和保护模式之间的一个坑 ,进保护模式需要打开但本身和保护模式没关系。 https://en.wikipedia.org/wiki/High_memory_area In Memory management, the high memory area (HMA) is the RAM area consisting of 65520 bytes beyond the upper memory area of an IBM AT or compatible computer. DOS下想用大内存,方法就那么几个,EMM,DPMI或者win16
是愤怒的小鸟的原型!太牛了!
1995年支持32位GUI需要的内存都可以一样一样算出来,微软有现成的nt为啥要搞出个
奇怪的9x来,不就是为了省点?
1996年标准的win95机器需要大概一万五千块,标准的nt4机器需要四万块,界面完全一样
NT就是微软理想中OS2应有的样子
算角度扔香蕉
花200万元建一个高大漂亮的房子,却不愿意多花5万元建一个牢固的地基。为什么这样做呢?因为大妈用户看不到地基。可是从做这一行的人看来,这样做毫无道理,因为当时已经有了二十年的经验,已经是教科书知识,知道怎么把这个地基打好,也知道花不了多少钱。
多任务,抢占,权限,保护模式,虚拟内存,全双工的硬件驱动,加上每个特性都有其硬件和软件的标价,你全放篮子里一结账,价钱就是90年代初的图形工作站,体积也有大型复印机那么大,前台既买不起也没地方放
你都知道简单的微软还不知道么?问题是NT4界面和95一样但硬件贵3倍,用户不买账啊。就算NT4,微软为了省点内存甚至把GUI子系统都给移植到内核态了。
不说远了吧,Linux实现类似NT4的GUI,用1999年主流硬件才做得到
这其实是教科书知识。如果谁告诉你这些OS功能要花很多硬件资源,哪怕是微软说的,那也是谣传。
简单,程序员又都是野路子,unix那套在pc程序员那里并不能引起共鸣。
其实说来说去,保护的其实是恶意代码和错误代码。这些问题都要到windows时代才大
行其道。
1995年的Unix需要贵得多的工作站才能跑,你查查1970年的几十kb的机器是什么架构,能干什么,这些系统还不如Linux 0.01甚至minix有用
虽然unix很多传统从70年代开始就有了,但系统本身是有了天翻地覆的变化的。早期
unix整个系统基于c和汇编,巨内核不能加模块,自己的程序也只是一个二进制目标文
件,这种系统还不如dos好用,就是分个时多人共享硬件而已。
一个字就是钱,你买得起工作站或者小型机,肯定unix最好,可惜pc机十几年前才达到要求。
淫巧。
我甚至怀疑微软当时根本没有能够写操作系统的程序员。386是85年出来的,
dos的himem.sys用到啥年代? 比尔盖茨自己应该也不懂。
我记起来了:微软有个unix叫做xenix,80年代就开始卖了。上面几乎没有
app可以跑。
摘自wikipedia:
Microsoft referred to its own MS-DOS as its "single-user, single-tasking
operating system",[30] and advised customers that wanted multiuser or
multitasking support to buy Xenix.
微软可以不用Unix,但实现那些基本的写在教科书中的OS功能,并不需要多少硬件资源。当时的硬件,微软都可以跑GUI了,难道还省不下一点点来...
这就好像有人说,我得造一个大的漂亮的房子,得把每一分钱都省下来。那个地基什么的就少花几元钱吧,反正来买房子的人不懂。
前面卫东说的,有一定道理。九十年代的时候,很多人对微软开发软件的水平,表示过怀疑。
盗版。:)
himem.sys这个东西我也用过很久。有个项目,要在286/386的机器上装Oracle+汉化DOS,640KB的基本内存死活不够,就得用这个把汉化DOS调入到扩展内存里去。现在从专业的角度来看,这都是些什么搞法,完全是浪费硬件资源。:) 不过当时用了很多年的DOS,想起来还是有些感情成分在内的。DOS可以让我们随意改13号中断和21号中断,加个
新功能,或者写个病毒什么,还是很方便的,呵呵。
在80年代PC用保护模式,不管是286的还是386的首要难题就是没硬件驱动,少数支持保护模式的硬件也都是瞄准大金主,开价不是一般的高。以至于不管是Win95还是DPMI,
都是程序跑在32位驱动层跑在16位。等微软琢磨着大部分Win98都切换到32位驱动了,
就把产品线和NT合并了。
70年代的unix占内存小,是因为人家内核一坨应用程序还一坨,不分模块不支持今天大部分特性,这玩意连也就是多终端算个数,功能连DOS都不如。
你把今天教科书上的内容都加进去,一个列个清单算每个模块用标准算法占多少内存,写出来的东西比Win9x体积大10倍。
支持EMS模拟的是EMM386,这玩意实际上是让你软件跑在386的vm86模式的,就是Win16
的简化玩法
himem是打开A20地址线的,即十六位汇编理论上寻址能表示,但8086访问不了的64KB。
举个例子,画窗口api有大量共享数据结构,但32位保护模式,进程之间空间独立。给
每个进程复制一份的话内存不够,开一个server搞IPC的话CPU主频又不够,所以微软在NT4里面特意把整套画窗口代码移入了内核态,利用进程在内核态共享地址空间的办法
省了几兆内存。
微软最牛的地方是PC机有多大饭量就加上多少教课书技术,直到2001年所有东西都放上去为止。
慢半拍。这都20多年了,居然只能做到将将可以用,这么烂的程序员们是常态吗?
如果靠课本就能搞定,微软哪里可能发展到今天的规模?开源界那么多所谓的“牛人”,有哪个搞出来过哪怕能稍微威胁一下win$的OS?我等了20年,就等来了一个又一个的嘴炮,理论上,我们觉得,应该是。。。这玩意儿在学校里蒙一下刚成人的大一新生还行,在工业界说这话完全无意义。
想起一个题外话:原来在学校的时候,我们系有个挺好的做OS的老师,当时MS给了他一个OFFER。当然他不用刷题,MS是直接打电话过来,上来就是谈待遇的。那个老师当时
很纠结,因为。。。待遇确实不错,而且他会有人有权,实际做他在学校里只能写论文的东西。。。也不知道他后来去没去。。。
最厉害的两家,一个是微软,另一个是苹果。Linux不行。
课本这东西,光靠它是不行的,但不知道基本知识,也是不行的,要走很多弯路。
Linux的图形界面...具体是哪个?Ubuntu?这个见仁见智了。
开源桌面主要是没企业测,项目内部还打得一塌糊涂
Himem本身就是A20地址线对应的那高64kb的意思,你说的扩展内存是微软等搞的一个分页切换插卡内存架构,这是8位机玩法早就绝迹了,emm386是把标准线性地址用vm86模
式模拟emm的。
80286因为不支持vm86模式,即使配了两兆内存,也跑不了实模式下需要大基本内存的
软件,因为emm386用不了模拟不出emm来
和windows比也就是一坨坨的翔,完全没经过设计和
视觉上的优化。设计图形界面和码程序是两码事。
windows的任务栏是我见过最合理的设计。
别的几个,像CDE,windowmaker啥的,都没有做到
最有效地利用屏幕资源。
还有就是以前开源桌面没有一个好的字体。
http://baike.baidu.com/item/扩展内存
在386以上档次的微机中,有两种存储器工作方式,一种称为实地址方式或实方式,另
一种称为保护方式。在实方式下,物理地址仍使用20位,所以最大寻址空间为1MB,以
便与8086兼容。保护方式采用32位物理地址,寻址范围可达4GB。DOS系统在实方式下工作,它管理的内存空间仍为1MB,因此它不能直接使用扩展存储器。为此,Lotus、
Intel、AST及Microsoft公司建立了MS-DOS下扩展内存的使用标准,即扩展内存规范
XMS。我们常在Config.sys文件中看到的Himem.sys就是管理扩展内存的驱动程序。
http://baike.baidu.com/item/扩充内存
EMS的原理和XMS不同,它采用了页帧方式。页帧是在1MB空间中指定一块64KB空间(通
常在保留内存区内,但其物理存储器来自扩展存储器),分为4页,每页16KB。EMS存储器也按16KB分页,每次可交换4页内容,以此方式可访问全部EMS存储器。图2给出了EMS的工作原理。符合EMS的驱动程序很多,常用的有EMM386.EXE、QEMM、TurboEMS、
386MAX等。DOS和Windows中都提供了EMM386.EXE。
苹果界面设计是牛,但macos稳定性也不如windows啊
XMS是可以直接通过实模式访问的(具体方法书上没写),也可以通过保护模式或者dpmi
之类的接口操作,不需要驱动
himem是也支持80286的,和386的xms内存无关
这个要实际用过,概念会比较清楚。
himem.sys加载时DOS会显示打开a20地址线,这个a20是实模式和保护模式之间的一个坑,进保护模式需要打开但本身和保护模式没关系。
https://en.wikipedia.org/wiki/High_memory_area
In Memory management, the high memory area (HMA) is the RAM area consisting of 65520 bytes beyond the upper memory area of an IBM AT or compatible
computer.
DOS下想用大内存,方法就那么几个,EMM,DPMI或者win16
其实这个没什么好辩论的,这是很古老的东西,知道的就知道,不知道的一时也搞不清楚。花时间搞清楚,对现在来说,也没有什么意义。:)
这东西两个用处,1是打开A20,2是把一部分DOS数据移到himem去.所以最直观结果是基本内存变大但没有emm386大的那么多。MSDOS 5以后安装程序自动装himem但不装emm386.
我写过dos下不要himem访问xms的代码,手册现成的例子