嗯,这会儿没事儿,我们接着聊。
自打我把win7干掉了,就悲剧了。
为啥,我回顾了一下,以前年轻时我喜欢装系统,一台计算机装了卸,卸了装,折腾呗。其实那会儿我更多地把自己的计算机当做是玩具,没当做工具,很少长期稳定在一个版本不动。
这呢,一来是自己想学习,喜欢折腾有关,二来也和当年的windows98系列不稳定有关。我一直认为微软当年强行把32bits和16bits整合,整了个不伦不类的Win95~98系列,嗯,还有Me,这事儿有点不靠谱。它里面有写堆的设计是拧着的,属于乱来一级。所以稳定性不高,蓝屏崩溃很常见。
后来大概微软也觉得不靠谱了,所以从2000年开始,彻底废弃16bits平台,转为纯32bits的,稳定性才慢慢提起来。
我呢,后来年纪大了,专注工作,慢慢地,也不喜欢装卸操作系统了,喜欢自己的系统维持在一个稳定的态,胡主席不是说了嘛,不折腾,我们专心工作。
所以,我后来几台机器都是装个XP,或者Linux就丢那不管了,也没怎么崩溃过。所以,我手里没有收集足够的windows版本,这下完蛋了,机器挂了以后,我居然发现手边没有可装的操作系统。
我开始找朋友,到处收集可用的windows服务器版本。
有朋友说了,装win7不能装集群,无法做云,首先啊,这条我不太同意,一台计算机,只要能承接外部的网络请求,提供计算服务,就算服务器,这和是不是装服务器版本无关,我说过,很多工业现场的服务器,跑的都是XP。
还有,集群不是必须的,只有需要了才装,其实windows server2008的集群有个问题,这个问题今年春节在新疆困扰了我三天,后来虽然解决了,但都没有解决太好,这事儿我回头再讲。总之大家记住,集群保的是数据安全性,但是天上不会掉馅饼,这个世界上不可能出现不买单就拿好处的事情,集群的安全性是付出了代价的,效率代价,只是很多人不知道而已。
其次呢,我也想试试windows的服务器版本,因为毕竟好几年都在弄Linux,没弄过windows,到底现在发展怎么样了,还不好说,试试吧,总有好处,所以最终我决定,还是搞套服务器版本来装上。
按照某些高帅富的想法,弄就要弄最好的,最新的,那无非就是windows Server 2008的R2版本了,不过我一开始没这么弄,我首选2003,之所以不选2000是因为它对很多新接口比如USB3.0缺乏支持,确实太老了。
嗯,给大家介绍一点原则啊,工业界在接受计算机软件版本的时候,普遍趋于保守,比如我们很少给现场装最新版的服务器,64bits也很少,2003还很普及,甚至,包括我们的VC开发版本也比较老,我的实时库实际上是VC2008开发的,我们单位是微软的合作伙伴,2010早就有了,但是我没用。
为啥,一切为了稳定性,我们很多时候情愿用有一点缺陷,但是我们已经把缺陷摸透了,都有解决方案的老版本,而不太喜欢冒险使用新版本,因为工业现场稳定性第一。
当然,最后我的服务器使用了Windows Server 2008的R2,那是另外的问题,驱动问题,我本意还是想用老版本的。
嗯,干脆,我也算老人了,这里给大家讲讲windows历史吧,嗯,apple公司的乔大爷过世,我也很悲痛,不过他自传我没买的,这十几二十年我一直在关注他,他有什么状况我知道得比书上多,比如当年的Next公司,所以不需要自传的。微软也一样,89年我就查过,当年它的年报上只有60来个人。
我先问个问题,windows1.0有谁玩过?呵呵,我就玩过。
在很古老的时候,83年那会儿,大家都是文本控制台时代,appleII和PC其实差不多,嗯,Mac当时是个另类,率先推出了GUI,不过,很罕见。
那会儿,软件界其实也很浮躁,大家的兴趣整天都是怎么弄GUI、汉字系统、输入法等等,还有多任务处理,这些都是软件界自己的东东,有点华而不实。反而,计算机存在的本质,即为其他行业,其他生产经营活动服务这一条,大家都还没关注到。
现在好点了,不过我觉得还不够。
现在一说windows就是多任务图形化操作系统,但是我的理解,多任务和图形化是两个概念,各是各,大家别然了。
说多任务的时候,其实就是能同时运行两个以上的任务,这个其实并不难,很古老的时候有个CP/M操作系统,它的发明者,是个老先生了,后来写了个DRDOS,注意,DOS不是微软写的,它也是买的,当时有不少PC的DOS操作系统呢。DRDOS就有个功能,多任务,其实是假的啦,就是当任务切换时,会自动把当前运行任务的所有信息存盘,清空运行区,然后调入新的任务开始执行,老任务此时其实没有在运行,仅仅是保存了,切回来也一样。
这事儿说起来一点不复杂,还是87年那会儿,我在AppleII上做实验,就想到个法子,实现了这种假的多任务,很简单,我其实那会儿连程序状态都不会保存,但我知道怎么操作屏幕数据区,每次按热键,切换的时候,我就把当前的屏幕拷贝到一个内存缓冲区,然后启用另外一个缓冲区的数据,恢复到屏幕,这样看起来就是两个任务切来切去了。呵呵,假不假?
当然实际上呢,还是用了一点手法和技巧,内部我有个表,里面有很多程序段的入口,切换时会依次将表中某一项的数据PUSH到程序运行栈,然后下一次Ret的时候,会自动跳到新入口执行,以此来实现多任务。
我说了这么多,主要是想给大家说明Windows1.0,其实就是这种假的多任务,实际上只有一个程序段落在运行,其他都后面压着呢,处于停滞状态。
至于GUI,其实也不是微软的,DRDOS也有GUI的,IBM当时写的OS/2也有,那会儿计算机烂,程序界也很少用美工,所有的GUI都很烂,图片那叫一个丑,不提也罢。
这种乱七八糟的现象一直持续到1989年,Windows 3.0出世,终于,在386平台上,Intel的硬件支持多任务执行,才出现了真正意义上的多任务图形化操作系统。也就在差不多这个时候,微软公司开始进军网络平台,因为那会NoVell的网络操作系统如日中天,赚了很多钱,呵呵,盖茨眼红了。
Windows退出的第一代成功网络操作系统是Windows NT 3.51,和Windows 3.0很像。
后来,Windows95推出,随之退出了Windows NT 4.0,二者界面也很像,但NT4.0之后,一直维持纯32bits的特性,这和95不一样。嗯,从NT 4.0开始,微软每次推出的时候就是两个版本,Server版和WorkStation版,也就是说,其实当年微软同时在维护三个产品序列,16bits+32bits的9x系列,32bits客户端应用的WorkStation系列,服务器应用的32bitsServer系列。呵呵,累不累?
肯定累啦,所以2000年,当Windows2000Family家族出世后,盖茨终于忍无可忍,宣布结束掉9x系列,windows平台彻底转向纯32bits。
我记得当年一片哀鸿遍野,很多人在报纸上发表文章,论述微软如何不厚道,究其原因呢,很多老程序员,老公司,都习惯了在16bits开发,32bits有很多新特性,不会啊,转起来成本很高,程序员的学习曲线也很陡,包括我,当时转这个也很痛苦。
后来呢,倒了一批公司,也挂掉了一批老程序员,慢慢的,杂音没了,为啥,32bits确实好用啊,新程序员一上来就学习32bits,没有老的包袱,自然不发杂音了。
这个IT业就是这样,不进则退,如果不努力学习新技术,跟踪最新科技,那没什么好说的,肯定被淘汰。所以我养成了看书的习惯。
当然,我的库和0bug这本书是另外一个话题,IT业也是一个行业,尤其固有的客观规律,有些东东也是一百年不变的,比如一个链表,你放到哪个平台它都是链表,这个不会变,我就是想把这些不变的东东提取总结出来,做成规律性的东东,这样以后变的时候,起码成本低点。
不信,呵呵,我现在开始准备写传输的书,但是这本书我差不多要一写几年,写出来大家看,肯定不会过时。很简单啊,因为我只写不会过时的东东。呵呵,YY一下啊,算是做个小广告。
从2000年以后我发现,微软自己的步调也顺了很多,毕竟摘掉了一个大包袱嘛。以后2003年推出Windows Server 2003,它的WorkStation版其实就是WindowsXP,嗯,微软可以,居然把这么专业的一个纯32bits网络操作系统,推成街机模型,几乎是台计算机就装,可以,做的好。
2008年,微软推Vista和Windows Server2008,这两个其实也是一组,不过不太成功,2008的Server版还可以,Vista被骂死。究其原因,微软自己没搞懂,把Unix的垃圾当宝贝了。
嗯,1999年的时候,还是DOS时代,那会32bits的程序已经出来了,主要用两个编译器编译,一个是WatcomC/C++,写DOOM那个,还有一个就是我用的,djgpp,看这个名字就知道,这是Linux下gcc、gpp的DOS变种。
我用它是因为它上面有个现成的图形库,叫做Allegro,我当时也写了很多UI的,我记得当时我把很多写游戏的手法用到工业控制类程序上,界面很酷的,着实震惊了工业界一批老专家,他们哪见过这个啊,全屏动画。
定点数、精确时钟分量,都是那会儿玩出来的。
但是当时有个问题,djgpp资料很少,很罕见,特别是它的库函数和DOS传统的都不一样,因为它继承的是Unix的思想。我当时没办法,就把它的库函数手册翻译了一遍。嗯,我英文很烂的,不喜欢看太多英文,自己翻译一遍,以后写程序用的时候方便一点。
翻译时我一直搞不懂的就是它很多函数带着pid或者uid,直到后来学了Linux才搞懂,就是进程ID和UserID,我后来才明白,Unix很多底层函数都是带着授权在运行的,ID不对,权限不够,系统根本不准你Call,直接就是错误。
所以说Unix安全嘛,它的鉴权信息是做到api函数级别的。
但安全固然有了,方便性就没了,Unix下每一步操作几乎都是陷阱密布,步步为营,因为不像windows,大家习惯了使用Administrator账号登陆,权利几乎无限,Unix和Linux我还真没见过有人敢拿着ROOT账号乱玩的,想死慌了。
基本上都是每个人一个账号,只看得见自己这一亩三分地儿。
所以每个人在Linux上操作,动不动就要su来su去,因为需要临时管理员鉴权,做点系统维护之类的事情,比如安装个什么软件的。
这很不方便,Linux这么多年在客户端应用上一直打不过Windows,这是个很大的原因。
应该说这在工业级、商用系统上很好,系统安全,我这次设计实时库,里面基本上也是参照这个设计的,每个请求信令都带着鉴权信息,不行就打回来,避免非法操作。
但是搁在客户端,就不妥了。普通用户哪管你那个啊,总之就是一句话,老子不爽。
我一直认为,Vista最大的问题就是为了安全性,继承了Unix上述这个特点,它的UAC简直臭名昭著,动不动就蹦出一个框框要求输入管理员密码,获得临时鉴权,甚至,很多时候我就算是Administrator登陆,都要出来要求确认一下,很烦。
所以卖不开嘛。
其实Win7和Vista比,差别真没多大,它就是很聪明地把UAC默认关闭了,用户不打开,就不起作用,这就极大改善了用户体验。呵呵,微软就是这样,大家多拍几下,就变聪明了。
嗯,前面说到哪了?Vista和Windows Server 2008其实是一组。
Win7呢,自然也有它的Server版本,这就是Windows Server 2008 R2,微软大概还像绷面子,打死不承认Vista的失败。当然,这样的话,Vista对应的那个Server版本就被成为R1了。
Win7这组呢,准确地讲,我认为应该叫做Windows 2010 Fimily,即2010版,但是微软就是称为2008,呵呵。
Win8我还没玩,估计应该叫做2012Fimily了。
还有个32bits和64bis的问题,其实从2003开始,windows的服务器版本就同时开发32bits和64bits两个版本,2008R1也一样。
但是,从2008R2开始,只有64bits了,不过只变了一半,Win7还是有32bits和64bits的。所以,下一代windows我预测啊,只有纯正64bits版本了。
嗯,不过难说,因为Win8号称要支持手机的,arm平台目前还是32bits版本,恐怕其客户端还是32与64并存。
嗯,哩哩啦啦说了这么多,卖卖老哈。其实也是顺便说一下我在考虑为小服务器搭配操作系统版本的思考。
软件人员找软件产品,还是很好找的,没多久,我就找到了Windows Server 2003 64bits,Windows 2008 32bits/64bits,于是开始安装。
安装很容易的,C盘单独格式化,D盘资料没事儿,分分钟搞定的,我一个个实验。
结果,驱动把我卡住了。还记得我找小张拷贝的那个U盘吗,它针对盈通这块主板的驱动比盈通网站还丰富。但是,很客气,没有我要用的。
我每次装完系统后装驱动都失败,后来毛了,我自己拆开它的驱动包查,才发现问题,它是有限支持,看起来AMD的CPU以后还是少用为妙,驱动确实不好找。
它支持什么呢,Win7、Windows Server2008的64bits版本,WindoesXP、Windows Server2003的32bits版本,其他就不支持了,呵呵,刚好把我上面准备的版本让过去了。
64bits版本是必须的,因为8G内存嘛。
所以我又找了几天,从个朋友那搞到了一套最新的2008R2,64bits版本,他们单位买的IBM3650服务器带的哦,这可是原装正版,呵呵。
这会没问题了。
一切顺利,朋友单位的服务器工作在内网,永远不上网的。我呢,老实不客气地就把注册号给用了,嗯,正版,可以在线升级。
老规矩,下补丁包就两天,金山快盘同步也差不多这个时候,这样,经过了差不多10天的折腾,我的小服务器终于活了。
擦把汗。休息一下,再聊。
本文转自tonyxiaohome 51CTO博客,原文链接:http://blog.51cto.com/tonyxiaohome/829193 ,如需转载请自行联系原作者