Windows NT is VMS re-implemented? - 刀目村的专栏 - CSDNBlog

来源:百度文库 编辑:神马文学网 时间:2024/04/28 18:03:36
OpenVMS + IA-32 ?
"Windows-NT" is "VMS re-implemented"
some 1997Usenet Research
An excerpt from the book"Inside Windows NT" (from the forward)
January-2006 Update
facts:
in the 1980s, DEC (Digital Equipment Corporation) started the Prism project to develop technology which would eventually succeed VAX
Dave Cutler headed a Prism sub-project named Emerald which would attempt to port VMS to an Intel IA-32 platform
March 1988, DEC killed Prism (and with it Emerald) so they could build new systems based upon RISC chips from MIPS
Summer 1988, Dave Cutler contacts Bill Gates with an offer to build a more crash resistant version of Windows
October 1998, Dave becomes a Microsoft employee and is put in charge of developing Windows-NT (new technology) which will run on multiple target platforms (initially: DEC-Alpha, MIPS. Later inclusions: Intel 486, Intel Pentium)
in 1992 DEC finished porting VMS from VAX to Alpha and renamed VMS to OpenVMS 6.0
Windows-NT 3.51 was popular and the GUI looked like Windows-3.11
Windows-NT 4.0 was even better and looked like Windows-95
Windows-NT 5.0 was released as Windows-2000 and, at the time, was the most stable OS ever released by Microsoft
Windows-2000 and portions of Windows-ME (millennial edition) merged to become Windows-XP (experience)
A commercial version with SMP support was released called Windows 2003 Server Edition
"VMS + 1 = WNT" makes no more sense than "IBM - 1 = HAL" (see other web trivia regarding "2001: A Space Odyssey")
links:
DEC PRISM @ Wikipedia
Smithsonian Resources An interview with DEC engineerTransition from VAX to Prism, MIPS, and Alpha: Losing momentum
excerpt: "DEC tried to kill Prism in order to build MIPS based systems"
Dave Cutler @ Wikipedia
Microsoft Resources: biography
An interview with
Read Dave Cutler's to the book "Inside Microsoft NT" (bottom of this page)
click then search the page for "Digital Equipment Corp"
Usenet News archive searches: search for "Dave Cutler" and "Emerald" (sometimes he's referred to as David so just search on "Cutler")
search for "Charlie Matco" and "Emerald"
search for "Ken Olsen" and "Emerald"
search for "Cutler" and "VMS" you'll find many references but the one listed just below is especially interesting...
look for the sections describing "process scheduler", "memory management", "interrupt handling"
http://groups.google.com/groups?selm=1997May28.101149.7776%40cmkrnl&output=gplainFrom: jeh@cmkrnl.com (Jamie Hanrahan, Kernel Mode Systems)Subject: Re: FX!32, affinity etc.Date: 1997/05/28Message-ID: <1997May28.101149.7776@cmkrnl>#1/1References: <009B44A8.70132C31.4@maxwell.ph.kcl.ac.uk> <338A488D.6FC7@videotron.ca>Organization: Kernel Mode Systems, San Diego, CANewsgroups: comp.os.vmsIn article <338A488D.6FC7@videotron.ca>,jfmezei <"[nospam]jfmezei"@videotron.ca> writes:> David Cathey (Remove MX to mail) wrote:>> culmulated into OpenVMS. The sad thing is Cutler had to capitulate>> to a Windows assimilation of his theoretically sound base O/S.>> You'd think he would have taken the tenets of procedure calling>> standards with him as well.>> I think it is quite pretentious of the VMSer to think that Cutler> had so much design authority over NT and that he would have taken> his VMS knowledge with him.Not pretentitious at all. We're simply aware of facts you apparentlyhaven't heard about.From the internals point of view there is utterly no question that NTis VMS re-implemented. > Cutler was told to replace DOS with a real kernel over which Windows> could run, over which teh windows API could run etc etc.This is off-topic, but you're incorrect here also. Originally therewasn't even going to be a Win32 API - 16-bit Windows had not gottenall that popular when NT was conceived. NT was originally to be afollow-on to OS/2, and a cooperative effort with IBM. But somewherealong the way Windows got pretty popular, IBM and MS split the beast,IBM getting the OS/2 parts and MS keeping the NT parts.> If you look at the PSION PDA operating system (called EPOC), you'll also> find many many similarities with VMS. Event Flags, Interprocess> Mailboxes, shared memory between processes, process priorities, and even> a utility (SPY) which is the equivalent to SHOW SYS. Its IO system is> similar to VMS (an equivalent to $ASSIGN with the device name> determining which driver to use, and $QIO which is more or less> independant of the device itself.).That's out at the UI and API level. We're talking about internalsimilarities.> NT is an WINDOWS operating system with modern operating systems> services. They were implemented with the Windows API mentality.> Stop thinking that NT is VMS with WINDOWS above it.No, not "VMS with Windows above it", but a VMS-derived design withWindows above it, most certainly.> NT differs from DOS in that it has real operating system features, but> the later are not the exclusivity of VMS.The "real operating system features" you speak of are at the UI andAPI level. They are not the reasons we consider NT to be areimplementation of VMS at the internal level.How about:The scheduler. (process scheduler in VMS, thread scheduler in NT)32 scheduling priorities, divided into the "real-time" (16-31) and"variable" (0-15) priority ranges. identical preemption at ready byhigher-priority threads; identical quantum and priority boostimplementations; identical CPU starvation avoidance mechanism to getout of priority inversion situations; a null thread for each CPU;etc., etc.Memory management. 0-7FFFFFFF is per-process, mostlyuser-mode-accessible only; 80000000-FFFFFFFF is systemwide, mostlykernel-accessible only. Functionally identical implementations ofpaging vs. swapping.I/O. I could write a book (in fact, I am), but briefly, IRPs areIRPs, UCBs are "device objects", CRBs are "controller objects", ADPsare "adapter objects", FDT routines are "dispatch routines",EXE$QIODRVPKT is IoStartPacket, StartIO routines are StartIO routines,fork routines are DPC routines, ASTs are APCs... etc., etc., etc.,etc., etc.Interrupt handling. 32 levels of interrupts (some simulated but thisis nevertheless the way the code is written). IPLs on VMS, IRQLs onNT. In order: Passive level, APC (AST) Level, Dispatch (fork) level,then the IO hardware interrupts, then some "hardware maintenance"functions like the hardware timer, IPI, power fail notification, andHIGH_LEVEL to block all interrupts.Face it, JF, you're wrong. Worse, you are writing not just inmisunderstanding but in ignorance of the facts. Please go read_Showstopper_ and _Inside Windows NT_ (Custer) before opining furtheron this subject.--- Jamie Hanrahan, Kernel Mode Systems, San Diego CAInternet: jeh@cmkrnl.com (JH645) CompuServe: 74140,2055drivers, internals, networks, applications, and training for VMS and Windows NTNT driver FAQ, links, and other information: http://www.cmkrnl.com/If you post a reply in news, please don't e-mail it too.
Editor's Notes:
I've added some highlighting to the above newsgroup posting but have not changed anything else
To develop a useful technology and then not use it is almost a crime against humanity. Unlike some others in this news group, I do not see Bill Gates or Microsoft as evil; likewise I do not see Dave Cutler as a traitor. Kudos to all involved.
An excerpt from "Inside Windows NT" by Helen Custer
Copyright (c) 1993 by Microsoft Press
Note: In 2003 this book was out of print but is still available from used Book sellers (my copy came fromwww.bookfinder.com)
FOREWORD (By David N. Cutler)
In 1965, I graduated from college with aB.A. in mathematics, a minor in physics, and an overwhelming desire tobe an engineer and to build things. So I took a job with DuPont inWilmington, Delaware, as a materials testing engineer. After about ayear of absolute boredom, I was lent to the mathematics and statisticsgroup assigned to construct a computer simulation model for a newfoam-making process that the Scott Paper Company was developing. Workingwith machines that never did what I meant them to was humiliating, butwithin six months I was hooked, and what I had shunned coming out ofschool -- computers -- turned into my life's vocation.
Soon after, I transferred to DuPont's engineering department, whereI could program full time. DuPont had a small group that built onlinecomputer system applications. My real motivation for joining this groupwas to get closer to computers, and in fact, I wanted to work onimplementing an operating system. While in the group, I had the goodfortune to work on several stand-alone real-time systems where theproject involved writing the central control program that scheduled thevarious tasks and monitored system activity as well as writing theactual application code.
It soon became apparent that the only way I was going to get theopportunity to work on implementing a real operating system was to joina company that made computers for a business. And so in 1971 I leftDuPont for a job in Maynard, Massachusetts, with Digital EquipmentCorporation (DEC). As it turned out, this put me in the operatingsystem business for quite some time to come. Little did I know that Iwould be fortunate enough to develop several operating systems in mylifetime; developing one is a rare opportunity for anyone.
My first operating system project was to build a real-time systemcalled RSX-11M that ran on Digital's PDP-11 16-bit series ofminicomputers. At the time, our goals seemed very ambitious. We wereasked to build a multitasking operating system that would run in 32 KBof memory with a hierarchical file system, application swapping,real-time scheduling, and a set of development utilities. The operatingsystem and utilities were to run on the entire line of PDP-11platforms, from the very small systems up through the PDP-11/70 whichhad memory-mapping hardware and supported up to 4 MB of memory.
I have many fond memories of how RSX-11M took shape, I had a rubberstamp made that proclaimed "Size Is the Goal" and proceeded to stampevery last bit of correspondence to make sure that all the programmersand project managers understood how important it was to achieve ourgoals. We also learned the power of conditional assembly (high levellanguage use in operating systems was in its infancy at this time), andwhenever someone added a feature, we just made it a system-generationoption.
While developing RSX-11M, we spent most of our time engineeringsolutions to memory problems. Because the system had to run in 32 KB,we generated a memory budget that divided available memory equallybetween the between the operating system and the utility programs. Thatleft a mere 16 KB for utility programs and led to long hours tuningoverlay structures to achieve acceptable performance for many of theRSX-11M system programs.
Although RSX-11M had some very stringent size and performanceconstraints, of the systems I've worked on it was probably the easiestone to develop. It involved re-implementing an existing system butallowed us the freedom to change and subset the programming interfacesas long as programs could be reassembled or recompiled with minimalsource-code changes. RSX-11M was introduced in 1973, 18 months after westarted building it. It proved to be very successful and helped makethe PDP-11 the most popular 16-bit minicomputer of its time.
The PDP-11 provide better price/performance than mainframes, wasaffordable at the department level, and along with other popularminicomputers of the same era, led to the first wave of "downsizing" inthe computer industry. Downsizing was an attempt to "bring down"mainframe applications to the minicomputer systems. Many of themainframe programs were larger than the PDP-11 could easilyaccommodate, and almost immediately Digital was up what Gordon Bell hasdeemed the single most important reason that computer architecturesbecome obsolete: the lack of enough address bits.
Out of this need, the VAX architecture was born, and it became oneof the most popular architectures of the late '70s and remained popularthroughout the '80s. The VAX architecture provided 32 bits of virtualaddress space and eliminated the need to wrestle programs into whatinto what seemed to be an ever-decreasing amount of virtual addressspace.
My second opportunity to develop an operating system arrived withthe VAX. I was very fortunate to be chosen to lead the operating systemeffort for the VAX-11 architecture, the result of which was the VMSoperating system.
VMS was Digital's second general-purpose time-sharing system,developed specifically for the VAX architecture. Because the VAXarchitecture had grown out of the tremendous success of the PDP-11,however, this time it was mandatory to provide more than source-levelcompatibility for applications.
Thus the VAX-11 architecture included a PDP-11 compatibility modewhich PDP-11 instructions were executed directly by hardware. At thattime, it was inconceivable that a single operating system could supportmore than "compatibility environment". Although it wasn't the bestknown of the PDP-11 operating systems (amazingly, Digital had no fewerthe 10 PDP-11 operating systems at one time or another!), RSX-11M waschosen as the operating system interface that would be emulated inPDP-11 compatibility mode on the VAX. This decision probably didn'tmake sense to a number of people outside the company, but RSX-11M hadthe largest number of application development tools, and had the mostgeneral-purpose operating system features, supporting multitasking, andhad a file system structure that could be compatibly extended.Ultimately, the VAX-11 systems ran the RSX-11M binaries right off thedistribution kit; it allowed RSX-11M volumes to be directly mounted andtheir files to be accessed and shared between RSX-11Mcompatibility-mode programs and native VMS programs.
From a technical perspective, the biggest mistake we made in VMS wasnot writing it in a high level language. At that time, we had a groupof very accomplished assembly language programmers, some stringent sizeconstraints, and no complier with the appropriate quality for operatingsystem development. So to ensure that we would ship the system in amarketable time frame, we wrote it in assembly language. Looking backon what happened, it would still be hard to make the decision to writeVMS in a high-level language. (Moral: The right thing to do technicallyisn't always the best thing to do financially.)
Early in the '80s, while minicomputers were busy absorbing mainframeand other new applications, two important technologies were emerging:the personal computer (PC) and workstations. After the VMS project, Ispent a few years developing compliers and then led a group that builtDigital's first MicroVAX workstation -- the MicroVAX I.
Workstations like the MicroVAX provided individual, high-performancecomputing for applications such as computer-aided design (CAD), whereasPCs supported business applications aimed at personal productivity,such as spread sheets and word processors -- two very successful earlyPC products. Although workstations were relatively pricey, personalcomputers had to be affordable to small businesses.
In order to meet price objectives, the original PCs were built with8-bit, and later with 16-bit, microprocessors. They were constrained inmuch the same way RSX-11M had been and required considerable effort onthe part of programmers and operating system designers to accommodatetheir limitations. Hardware resources were so scarce that operatingsystems existed mainly to handle a few low-level hardware functions andto provide a set of file system libraries. But the personal computeroffered something that minicomputers did not -- a market in whichindependent software developers could sell their programs at a highervolume. As a result, the breadth and variety of applications that runon PCs and exploit their capabilities is truly amazing.
In the mid-'80s, microprocessors gained 32-bit addressing,and workstations were quick to take advantage of this capability.However, because of the very large installed base of personal computersand their applications, it was not easy to simply roll in anothercomputer and then recompile and relink all the application software.End users of PCs simply didn't have the source code for all theirprograms, and they demanded binary compatibility.
In the summer of 1988, I received and interesting call from BillGates at Microsoft. He asked whether I'd like to come over and talkabout building a new operating system at Microsoft for personalcomputers. At the time, I wasn't too interested in working on personalcomputers, but I thought this would be a good time to meet Bill anddiscuss what he had in mind. What Bill had to offer was the opportunityto build another operating system, one that was portable and addressedsome of the concerns people had about using personal computers to runmission critical applications. Form me, it meant the chance to buildanother operating system!
Bill finally convinced me that this was an opportunity I couldn'tpass up, and in October of 1988, I came to Microsoft and started tobuild the team that would build the new operating system. I didn'trealize it at the time, but this would be the most ambitious operatingsystem project on which I had ever embarked.
Our goals for the system included portability, security, POSIXcompliance, compatibility, scalable performance (multi processorsupport), extensibility, and the ease of internationalization. Of allthese goals, by far the one that was hardest to achieve and that hadthe most profound effect in the structure of the system wascompatibility. Hundreds of thousands of PDP-11 systems had been sold,but tens of millions of personal computers were in operation! As ifthat weren't enough, we needed to compatibly support three separate16-bit operating environments and add new 32-bit capabilities to freepersonal computer applications from the same kind of virtual addressconstraints that had existed for the PDP-11. To top it off, we wantedto support the UNIX standard interface specification called POSIX.
Now almost four years later, we are on the brink of bringing thissystem, Windows-NT, to market. Helen Custer started work on this bookwhen the operating system design began. As our design has matured, thebook has undergone continual change to track the operating systemarchitecture. This has been an arduous task -- keeping up-to-date andwriting and rewriting the various chapters of the book as the designevolved. Although it is our design, Helen is the one who has capturedthe essence of that design and made it understandable to more than justserious operating system implementers. For this, we owe Helen a greatdebt.
It is impossible to acknowledge all the people who have contributedto the design of Windows NT. I must say that I did not design WindowsNT -- I was merely one of the contributors to design the system. As youread this book, you will be introduced to some, but not all, of theother contributors. This has been a team effort and has involvedseveral hundred-person years of effort. Perhaps the most importantcontribution of all was made by the people who have tested and stressedthe system. Without their effort, Windows NT could not have achievedthe level of quality that it has achieved.
I hope you enjoy this book about Windows NT as much as we enjoyed designing the system.
Dave Cutler
Director, Windows NT Development
January-2006 Update
This next paragraph came to me last week (Jan-2006) in a personal email from an ex-Intel employee.

"Given yourinterest in VMS you might find this amusing. In the early 1990's wevisited Microsoft to try to ensure that their new OS "Windows NT" wouldbe available on IA32. We met with Dave Cutler, and he was adamant thatIA32 was doomed and would we please get lost so he could target Alphaand then
whatever 64-bit architecture was certain to replace IA32 byIntel. It was not a polite disagreement; that guy HATED IA32 and wasn'treluctant to transfer his displeasure to IA32's representatives (us).What an ugly business meeting. Smart guy, though."

I asked for aclarification on the phrase "IA32" as it pertains to this quote and wastold that it refers to both 486 (which was in production in 1990) andPentium (586 or P5) which was still in development.
{ note: P6 is the core name forPentium-Pro which was actually somewhat different fromPentium }
Back toHome
Neil Rieck
Kitchener - Waterloo - Cambridge, Ontario, Canada.