Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re^3: Nobody Expects the Agile Imposition (Part VI): Architecture

by ELISHEVA (Prior)
on Jan 25, 2011 at 15:09 UTC ( [id://884135]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Nobody Expects the Agile Imposition (Part VI): Architecture
in thread Nobody Expects the Agile Imposition (Part VI): Architecture

The comment about NT and *nix - that was based on my memory of press reports at the time it was being developed. If I recall correctly they originally wanted to do a green field system and then found that they had to borrow certain parts of the *nix architecture - what exactly I don't remember. I know many of the developers came from DEC, but the few things I'm finding on the web focus on the VMS influence. Business press reports on technology often get it wrong, so I might be remembering someone reporting the DEC hirings and just assuming it was DEC UNIX rather than VMS that ended up in NT.

  • Comment on Re^3: Nobody Expects the Agile Imposition (Part VI): Architecture

Replies are listed 'Best First'.
Re^4: Nobody Expects the Agile Imposition (Part VI): Architecture (Signals are a crock :)
by eyepopslikeamosquito (Archbishop) on Jan 25, 2011 at 15:55 UTC

    I also got the early history of NT wrong going from memory. That won't stop me from continuing though and I'm sure BrowserUk will correct me if I'm wrong again. :-) I tried doing some googling just now but couldn't find any citations to support a couple of anecdotes I remember reading about years ago. I would have read these in a book not the press, but can't remember which one. One was that Dave Cutler was a very "passionate" guy, so much so that on one occasion he punched a hole in the wall when one of his junior programmers disobeyed him and made a "safe" last minute change that broke an OS release. Apparently, the hole he punched in the wall was later cut out, framed, and mounted on the wall of Dave's office.

    I also remember reading he was pretty passionate about not liking Unix very much, one quote I remember was that Win32 will never have Unix-like signals because Dave shouted "Signals are a crock!". BTW, I'm not a fan of signals either - especially when writing (async-signal-safe) signal handlers - and signals certainly don't mix very well with threads. Update: see also Re: Signals vs. Windows by BrowserUk

    Another anecdote I remember was Dave responding angrily when one of his team said "Unix did it this way". Dave responded something like "Just because Unix did it this way, it doesn't mean it's right". Anyway, the overall impression I got was that Windows NT was strongly influenced by the (non-Unix) Digital operating systems Dave and the other Digital guys hired by Gates had worked on.

    Apart from the history and the anecdotes, the Win32 API "feels" very different to Unix - for example, compare and contrast the many complex parameters and sub parameters of the Win32 CreateProcess call with Unix fork and exec. Generally, Unix system calls have far fewer parameters than Win32 ones.

      one quote I remember was that Win32 will never have Unix-like signals because Dave shouted "signals are a crock".

      I've also heard that one. And from memory, it was related to me by someone (who claimed to be) in the meeting at the time. Which is about as good a defintion of hearsay as I can think of, but it did reinforce my long term impression that if anything, NT went out of its way to trying to avoid borrowing anything at all from unix.

      There are obviously many things that every OS has to have in common. And many more that are so obvious that when independent teams set out to solve the same problem, similar solutions are bound to arise.

      Hence, virtual memory, developed by IBM (as Virtual Storage) for OS/VS and MVS is an integeral part of any modern OS, including *nix and NT, but it would be churlish to say that they borrowed (often written as "stole") the concept from IBM.

      BTW, I'm not a fan of signals either and they certainly don't mix very well with threads.

      One analogy I read about signals was imagine what would happen if your car just instantly stopped, frozen in place--mid-corner or wherever--when your mobile phone rang. Cos that's what signals do to your code. And that kind of speaks to the fundamental difference between *nix and NT.

      for example, compare and contrast the many complex parameters and sub parameters of the Win32 CreateProcess call with Unix fork and exec.

      The NT kernel was written from the ground up to me multitasking. The entire kernel was written to be reentrant. That is, all the of the state associated with a given process (actually, thread) is maintained within the auspices of that entity, or keyed by a handle specific to that entity. It is effectively object oriented, albeit it that the restrictions of C mean that it doesn't use object syntax at the API level so you have to manually pass the object reference (handle) to the relevant APIs manually.

      This shows up (at the kernal API level) in such things as the pids, tids and fids; which are available but are mostly not used at the API level, where opaque handles are used instead.

      Another example is memory buffers. In *nix, these are routinely allocated by the kernel and passed back to the application program. The Win32 API forces the application program to allocate the memory for the buffer and pass it's address into the kernel.

      The advantages of this approach really show up when writing code that will live in a dynamically linked library, where the same code may be executing concurrently in the auspices of many threads and many processes.


      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

        Your reply above was why I had belated moved my comment about NT/Unix to a separate reply from my IBM history reply (I hadn't realized you were already composing a response - sorry about that). I wanted to see a fuller discussion from you.

        I've been doing some more browsing because that memory of some ribbing in the press for "unix borrowings" (whatever that means) is fairly firm. Based on your comments above and also a book review I found covering a book on the development of NT, I suspect the ribbing quality came from some rather public anomisity towards Unix by the NT team, but I only suspect. I have no memory of that either way and haven't read the book - just the "so there" quality in the press.

        The comment about claiming A is like B because of superficial similarities rings a bell. While browsing around the web looking for where and what was behind whatever it was I remember being reported, I came across an article in InfoWorld way back when in 1987 arguing that *DOS* "borrowed" from Unix because it had pipes. InfoWorld, Aug 3, 1987:

        from the start, DOS has been influenced by Unix. DOS 2.0 explicitly incorporated directory structures, pipes, redirection and other features that had long been hallmarks of other systems.

        It may also be that those reporting on NT and OS/2 development falsely understood the built-in POSIX support as "Unix borrowings". According to Wikipedia,

        Windows NT-based operating systems up to Windows 2000 had a POSIX layer built into the operating system, and UNIX Services for Windows provided a UNIX-like operating environment.

        My only quibble with your post is this line: "There are obviously many things that every OS has to have in common."

        They may have to, but by what definition? There are many things we now assume as must haves in OS's that were not part of some early operating systems - including multi-tasking. I agree that superficial borrowings of features are not the same as borrowing core internal architecture. On the other hand, the features that eventually became attractive enough to be "must-have" s in other systems, were built-in right from the start in *nix.

        I do think we have to be careful about assuming that what now seems to us a no-brainer was always commonly accepted as so. The best innovations are tricky that way: once they are stated they seem so obvious we wonder why they are even innovative.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://884135]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (3)
As of 2024-04-19 22:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found