I was reading an article on differences between unix and windows. One major difference was that unix is multiuser environment while windows is not. what does this mean ? I have worked on windows server 2003 and we were able to log on 3 users at the same time through remote desktop connection. There were other computers connected to the server, which can access it simultaneously. So isnt this multi user environment ?
Is it possible that the text you read was a bit dated? Early versions of Windows (pre Windows NT, I think) didn't used to have multi-user capabilities, nor was remote desktop available then. Unix, on the other hand, has had that for ages.
Right from the start, Unix was an operating system designed to be used by multiple users at the same time. It was developed for servers which have multiple dumb terminals (not much more than a monitor and keyboard) attached to them.
In contrast, Windows was originally developed for PCs. A PC is a single-user machine. So the architecture of Windows is made in such a way that it was meant to be used by a single user at a time.
Later, with Windows NT and its descendants, Microsoft introduced a version of Windows for servers, on which multiple users can log on at the same time.
The Remote Desktop Connection from Windows is still a much less elegant solution that X Windows, the GUI system used on most versions of Unix. X Windows is a fully networked GUI system, designed from the ground up to work with multiple users.
Pretty much any Unix/Linux app can run in a multi-user environment, though if resources are to be shared between multiple users, that has to be taken infot account (this is also often true of network resources accessed by multiple computers).
Windows apps, on the other hand have to be specially designed to run well in multi-user mode. Their registry usage is typically quite a bit different from the way you work in single-user mode.
An IDE is no substitute for an Intelligent Developer.
Originally posted by jignesh soni: I was reading an article on differences between unix and windows. One major difference was that unix is multiuser environment while windows is not. Please explain.
It means you need to read articles from better sources. As others have said, NT was designed from the start as a multi-user OS. It came out in 1992 or so. Windows 2000 and XP are children of NT. The article is simply wrong. No one should be using Windows 98 or Win ME these days.
NT was designed from the start as a multi-user OS.
Windows NT was a multi-user OS in the sense that you could log out from one user account and log in as another and it would switch user registry hives to reflect who had logged in. To run two or more separate users at the same time wasn't possible without something like Citrix. Window's concept of "current user" was one layer deeper into the OS than it is in true multi-user system, which is why a certain amount of rewriting is required to make Windows apps run as true multi-user apps.
Originally posted by Tim Holloway: Windows NT was a multi-user OS in the sense that you could log out from one user account and log in as another
That is not what I mean.
NT was designed as a server OS with no GUI. Much like VMS. Why would anyone do that? Because Dave Cutler, who designed RSX11M and VMS, was in charge of NT.
As a pure server, NT has always been multi-user. This was critical for its target use of replacing NetWare servers. As with NetWare, you could have many computers (clients) logged into the server and accessing separate file systems. And as with NetWare, there was no GUI or windowing system.
NT's Windowing system was implemented well after the basic design was done. It was written in C++, and was the first serious C++ code within Microsoft. This effort is what lead to MFC, the Microsoft Foundataion Classes. All of the GUI stuff on NT used MFC.
The GUI system, and the way users interact with Windows, Icons, Mice and Pointers, has always been single user. But the GUI is not NT, if you read the actual history.
Pat - it appears you are arguing something tangential to the other discussions. You are talking about client/server capabilities, rather than multi user capabilities. You are correct that Windows NT was designed to have client/server capabilities, but that alone does not make it multi user.
All of these are explicit in stating that NT is designed to be client/server. None of these talk about multi-user capabilities (the ability for multiple users to log onto the server, start their own applications on the server and terminate them when finished).
Internet Explorer is an integral part of Microsoft Windows
NT in its core form has never, to my knowledge, been seen in the wild. As distributed, it is an integrated amalgam of stuff that cannot easily be separated. Unlike Unix, where the login listeners and command shells and even GDMs are components that can not merely be swapped, but multiple types can be installed and running at the same time, the GUI command shell component of Windows NT is so firmly welded into the OS that the only time many Windows OS components can be updated is at boot time. This is a significant difference from Linux, where about the only update that cannot be done without a reboot is replacement of the kernel itself.
It's not only the GUI that's single-user in Windows NT. The DOS legacy component is also single-user and so, as I mentioned earlier, is the configuration of the Windows Registry.
The bottom line is this. When a programmer creates an application for Unix, it's a given that the program will run in a multi-user environment, so long as it pays attention to resource sharing. In contrast, a program developed for Windows cannot be so optimistic. To run as as generic app in a multi-user environment - and by that I don't necessarily mean that the program itself is serving multiple users - the program must be written to use facilities that are not part of the standard environment.
There have been "multi-user" versions of DOS. However, to run properly, the DOS apps had to be well-behaved or the core OS had to support hardware virtualization. The key distinction between true multi-user and non multi-user isn't in what can be done with effort, but in what will be true with any randomly-selected application.
Originally posted by Andrew Monkhouse: Pat - it appears you are arguing something tangential to the other discussions. You are talking about client/server capabilities, rather than multi user capabilities. You are correct that Windows NT was designed to have client/server capabilities, but that alone does not make it multi user.
No, I'm not, but I'm also not talking about how Microsoft has revised their history.
I've been following NT since the beginning, I have the NT3.1 alpha and beta disks. I used RSX-11M and VMS in their early days.
The roots of both RSX and VMS were exactly the common usage of multi-user. NT was designed to do the same. But PC hardware of the time could not dream of handing it. In 1992, getting a PC with more than 16MB was very hard, and NT really needed 32MB to run as a single user system. So practically, when NT was released, it was only single user. But it was designed to be multi-user by the DEC-west folks lead by Cutler.
Read "Showstopper" ISBN-13: 978-0029356715
When NT was designed, it was to have *no GUI* at all. But the marketing folks insisted on a GUI to make it more like a normal PC, and more like Windows 3.0/3.1
I'm not arguing because I think anyone would have used multi-user abilities of NT on a PC back then, if you needed that, you would use *nix. Rather, I believe that any comparisons should be based on historical facts.
Linux has more than enough good reasons that are based on fact. No need for the revisionist fiction. [ July 10, 2008: Message edited by: Pat Farrell ]
author and jackaroo
Originally posted by Pat Farrell: I used RSX-11M and VMS in their early days.
I haven't use RSX-11M, but I used to administer a VMS system, a Xenix system, a SCO Unix system, and an RS 6000. I have done worked on HP/UX, FTX, VOS and IBM OS/VS. And those are just the multi-user systems. I'm not sure what your point is. We (and many others on this site) can point to multi-user systems we have worked on, and we (as with many others) have generations of experience. And?
Originally posted by Pat Farrell: The roots of both RSX and VMS were exactly the common usage of multi-user. NT was designed to do the same. But PC hardware of the time could not dream of handing it.
PC hardware could not dream of handling what exactly? Xenix was a multi user system that started on 8086 architecture (back when Microsoft owned Xenix). I used to run Coherent on my 286. I ran Linux on my 386. (Both Coherent and Linux were able to run the X Windows System, so I had my GUIs back then - albeit nowhere near as flashy as Microsoft Windows, which was nowhere near as nice as Macintosh OS).
I am not doubting that there may have been some architecture issue that stopped NT from being multi user on the hardware of the time, but that would have been an issue with the NT design / requirements. Not with the hardware capabilities.
Originally posted by Pat Farrell: Read "Showstopper" ISBN-13: 978-0029356715
Possibly this will answer the questions I am asking here. It looks interesting - I have added it to my list to read.
Originally posted by Pat Farrell: I'm also not talking about how Microsoft has revised their history.
Linux has more than enough good reasons that are based on fact. No need for the revisionist fiction.
Any ideas why Microsoft would revise their own history?
I really hope that the "multi-user" part of NT didn't require 16MB in 1992. In 1992, I was running pre-emptive real-time multi-tasking on a Commodore Amiga in 6MB, and a full Linux X desktop system (sawfish) only took 16MB in 1996.
Going back into pre-GUI days, however, I believe that when we maxed out the RAM on our Prime 300 minicomputer, it had a total of about 128 kilobytes. The was the machine that the local engineer raided when the system down at NASA needed parts in a hurry. Ford also liked them as CAD systems. Primos III was a full-fledged VM OS, IIRC up to 32 users. Many of the older multi-user OS's swapped in and out user workspaces, but Primos III (a/k/a DOS/VM) was a true virtual memory symmetric multi-user OS.
I'm going to semi-agree with Pat, here -- weird, I know, but what can you do. On the other hand, I'm going to semi-agree with Tim.
I know just enough about the NT architecture to be dangerous, but in any case: there's a microkernel, and sitting around that microkernel is a big, fat, drippy layer of services called the "Executive". The Executive and the ukernel is that part that Pat's saying was designed in VMS' image, and as far as I know, it does indeed support the notion of multiple users.
Then sitting on top of all that ring 0 stuff is the user-mode stuff. In user mode, there are "subsystems" that implement programmer APIs: the Win32 subsystem, the POSIX subsystem, etc; only the Win32 subsystem is anything of substance. As of NT 4, multiple instances of the Win32 subsystem can run on the same machine at the same time. That's how Windows Terminal Server works. Each Win32 subsystem can support a separate user.
EXCEPT (and here's where I start agreeing with Tim)
... that big, fat, squishy Executive layer includes a bunch of stuff that really ought to be in user space. The Registry is the number one problem. Because the Registry manager lives in the Executive, all Win32 subsystems share it. By default, the registry has no idea if there are multiple Win32's running on the machine, because that all happens in user space. Therefore it has no idea how to keep data separate for the separate Win32s, and therefore, as Tim says, applications have to carefully store their data in such a way that multople Win32's will not interfere with one another.
Originally posted by Tim Holloway: [I really hope that the "multi-user" part of NT didn't require 16MB in 1992. In 1992, I was running pre-emptive real-time multi-tasking on a Commodore Amiga in 6MB, and a full Linux X desktop system (sawfish) only took 16MB in 1996.
From a practical standpoint, NT 3.1 required 32MB to "run" from the start. The official specs said it required 16MB, but it was not practical, and I would not call it "run" it was more "walk" or "crawl"
I agree that other systems could run with far less. The Amiga OS was amazing nearly a decade before NT was released. But VMS was always a bit of a pig, DEC wanted to make a lot of hardware, and so memory requirements were not as small as one could make if there was incentive.
The big improvement between NT 3.1 and "Daytona" NT 3.5 was that some folks other than Cutler got involved and made parts of the kernel swappable. In 3.1, it was a big monolith. Not at all the micro-kernel designs that were the rage in the last 80s. See Mach and NextStep's kernel.
Again, I'm not arguing that NT's design was good, I think Dave Cutler ruined several sets of good hardware with his NIH thinking. Part of his thinking is shown when NT wasn't supposed to have any GUI at all. While there was no plans for an X-Windows style design, the basic idea of a smart display terminal that handled GUIs while the server did all the computation and disk IO, is part of the NT vision from the start. Just that DEC sold smart terminals, Gigi, and GT40 are two that come to mind, so the display agnostic vision that X-Windows brings was not part of the DEC world.
Again, I'm focusing on the claim in the initial post on this thread, it is not historically accurate.
From a practical standpoint, it was probably NT 4.0 that had any semblance of user switching, where more than one GUI user could be logged on at any time, altho only one could do anything at any one time.
PC hardware could not dream of handling what exactly?
Run NT in multi-user mode. NT is special, at least in the 3.1 version. Its always been aimed at the upper end of PC hardware, even today when its been relabeled Vista.
Lots of machines supported multiple users. Tenex typically ran on machines no faster than a half MIP with 512kb to maybe 1.2MB of memory. They could support ten users or 40 students.
Originally posted by Andrew Monkhouse: Any ideas why Microsoft would revise their own history?
Why did Stalin? History is written by the victors. One revises history to make those in charge seem smarter. Stalin went so far as to airbrush out folks who fell into disfavor.
NT was aimed squarely at Novell NetWare. There was a little bit of dreaming that as PC grew up with Moore's law, that it could dig into VMS's world. Of course, VMS was dying in 1992 and was no longer a player in the last years of the century. The early versions of NT didn't have any TCP/IP stack. I think it came along with 3.5, but I don't remember that exactly.