What Makes A UNIX System UNIX?
ian asks: "Since there are now so many different flavors of UNIX out there (Linux, Free BSD, AIX, Solaris, AT&T UNIX, etc...) what do they all have in common that lets these all be called UNIX? Programs written for one flavor of UNIX typically cannot be ported to another without considerable effort. The features offered by the different implementations vary widely: some are more secure than others, some cluster better than others, some offer journaling file systems, some are more robust. The differences between the different kinds of UNIX seem to be as great as the differences between any particular implementation and other OSs. Could one port all the standard command line utilities to NT, clone one or two of the popular shells, set up the directory structure in the standard UNIX layout and call it Microsoft UNIX?"
No, no. It's actually "Solarix". All the use of Solaris has been a typo so disagreeing is just a spelling flame.
No, operating system and interface SHOULDN'T have anything to do with one another. NT has a GUI built into the kernel.
CE is not based on NT in anyway, they share the Windows API, that's all.
I know source doesn't just plug right in over all the different UNIX releases. I also know experienced developers can localize the inconsistencies to a few modules and move on to more important problems.
So quit whining like a PHB w/M$ on his tiny brain. Portability isn't that hard these days.
So does linux with GGI.
Linux also has an httpd and an nfs server in the kernel.
Is linux no longer Unix?
Except the crashes...
Geez, enought with the trademark nonsense.
I propose that we come up with a word that means UNIX.
UNIXq
The q is silent.
There! Shut up about it already!
Anyone know of an Abandonware site where you can download OS/2 (the OS, not apps)? It would neat to play around with it with these ports of enlightenment, etc.
If you know of a hyperlink, then by all means post it :)
tempus fugit; screweth not with this thread!
That nice little logon prompt that you get in Windows NT 4.0 is NOT "Explorer". Go ahead and change your default shell away from Explorer in the registry, you'll still boot to a GUI logon prompt -- there are still GUI elements that are part of NT that aren't "Explorer". You'll notice that you still have your Task Manager around if you don't use "Explorer" as your default NT shell, too. How else would you log out if you used Notepad (for maximum productivity!) as your shell?
Only products that pass the Open Group tests can be called UNIX and then ONLY if they licence the UNIX name from the Open Group.
The Open Group manages the UNIX trademark as the UNIX vendors could not agree on anything and kept fighting - just like the Linux vendors.
Trouble is, ALMOST EVERYONE ON SLASHDOT IS SO FUCKING BIASED, BIGOTED IN ADDITION TO NOT KNOWING SHIT ABOUT UNIX. ALL THAT SEEMS TO MATTER IS OPEN SOURCE.
There is one and only one legal definition for UNIX, and that is what carries the UNIX brand. The Open Group says who gets that brand, period. Whatever is on their list is UNIX, plain and simple. The problem with that is that they're giving UNIX branding to operating systems that are fundamentally different to traditional UNIX. While they technically meet the requirements, they do so through add-ons and subsystems. So for my own personal definition, I define "Unix" as a true branded UNIX that can be traced to the original AT&T UNIX. So for example, Solaris is UNIX because it has the brand, and it has the family tree. That leaves out NT-based POSIX subsystem add-ons, OS/390, *BSD (based on 4.4BSD-Lite), Minix and Linux. I'm a big fan of Linux, and while on one hand I would love to see it gain the legitimacy of the UNIX name, I feel that Linux actually transcends it and even obsoletes it. Linux has managed to bring together diverse concerns where they couldn't get together with UNIX. I don't want to see this progress inhibited by arguments over what may very well be passe. WCK
, is its well thought-out design. It was noticably not designed so that any newbie could use it.
Uh, no. UNIX was hacked together by K&R just so they had an OS to put an otherwise idle VAX to work. They had no design other than to start with ideas from MULTICS; new features were added ad-hoc to get to what we today call UNIX.
My CS prof used to deride UNIX as a hack put together by amateurs, which indeed is correct. To him the OS paragon was VMS, which went on to become NT.
From a system programmer's perspective, a fairly complete POSIX+BSD+SVr4 implementation of the system calls is enough for me to warrant colloquial usage of the word `UNIX', regardless of whether the kernel is Mach, AIX, NT, or even Linux.
TummyX, do you ever post anything that's not pro-MS? This is not a troll. I use w2k at work and have to admit it kicks ass. But, seriously, you must be the Microsoft Developers Cheerleading Squad captain.
Since all the versions of Windows NT are POSIX 1003.1 compliant, they're already Unix by some limited, government approved, measure.
Unix, Linux, AIX, A/UX, Xenix (well, bad example, the Xs must cancel), Irix, QNX (they want to be Unix, OK?), Ultrix, Minix, HP-UX
On the other hand there are:
OSF/1, Solaris, BSD (FreeBSD, OpenBSD, NetBSD)
And others I forgot...
The forum here seems to be confusing several issues here. The definition of UNIX can be taken on 2 levels: technical and perception. Most of what I've read here today seems to be based on rumor, hearsay, and end-user perception.
UNIX specification set by Open Group, by P.J. Hinton (above) comes closest to hitting the mark on reality. UNIX is a creation of AT&T. BSD was originally based on this code, but has morphed far away from it by now ... made better and non-AT&T code dependent through research/improvement and legal battles.
Most other UNIX-like flavors basically fall into 2 catagories: original creations which aren't UNIX, and morphed monsters which at some point in time were based on the original UNIX source.
The legal definition of UNIX is to whoever holds the UNIX source code and licenses of such. That started with AT&T, was sold to Novell, and is now in the hands of SCO I believe (shudder). Most of the other players market their UNIX-like OS's based on some end-user perception, like development API, standards conformance, X window system interface, etc.
End-user perception is not necessarily a wrong angle to take, just don't confuse it with the legality of source licensing/ownership, and branding programs based on conforming standards.
Some of the messages above were interesting ... here are some views of mine:
The way I recognize if something is Unix, is through its boot sequence
Just a silly remark. I can make DOS or OS/2 behave just like Solaris, and even print out the same console messages. Boot sequence has nothing particular to UNIX.
I really liked A/UX. Whatever happened to it? When did Apple officially abandon it ... too bad they never ported it to the PPC architecture.
When Apple realized A/UX sucked rocks and leaked kernel memory like a sieve, and that nobody was taking it seriously, they abandoned it sometime in the early 90's. I thought it was cute
And correct me if I'm wrong, but isn't win2k supposedly "POSIX-compliant"
Standards, particularly POSIX, are never perfect, and are typically abused by the implementer for marketing purposes. NT POSIX was a nice stab at trying to market NT as a UNIX competitor, to bad their POSIX implementation was a joke and never taken seriously (except maybe by our government, who eventually paid the price of a crippled battle ship when their NT control system had to be re-booted)
think of the user experience. For the most part, end users of a unix system experience the same behavior ... try sitting down with like 10 flavors of UNIX-like vendors one day and really compare them. HP-UX, IRIX, and AIX are some good examples of really non-standard stuff bolted onto the side of filesystem and command structure.
Hmmm
well written software is inherently portable, especially among UNIX family operating systems ... then throw in DG/UX, BSD, Linux, etc. Ugliness galore. Most are getting better, but don't fool yourself into thinking that UNIX == trivial source porting.
I'm not sure where this one came from. Try porting things between HP, AIX, and IRIX some day
If everything is accessed as a file, it's probably a Unix. No special hidden "registries", no extended invisible attributes, just files. ... it's just data and the magic to access it. UNIX like systems tend to prefer using human readable config data, but some like AIX almost completely abandon this notion. As for invisible attributes, take a look at what file attributes your UNIX like vendor really supports. Some (like Sun) support ACL's which are hidden, hard to use, and require special commands. Some (like Linux ext2 and HP-UX) have special fs attributes which require special commands to invoke non-standard filesystem tuning behavior. Some (like HP-UX) support strange hidden architecture specific extensions which can be completely lost if you don't know what you are doing.
The UNIX metaphor is the filesystem, not really the files. Things like device files are nice, but they are really just filesystem tricks used by the kernel to invoke special behavior. If you want a real file based metaphor of computing, look at something like Plan9, Inferno, etc. BTW, registries can be used/emulated easy enough on UNIX like systems
Ever try to remove/rename a NTFS file while it is open in some process? ... you get "segment busy". (you can move it, but not remove). Handling VM is not something particular to UNIX ... it's a kernel design issue.
(grin) try this on HP-UX with a running executable
It is just a common trait for most Unixes, that they are very stable.
Ha! Every try using SCO? NCR MP-RAS was a real treat as well. Some days I can't decide which is worse.
Someday, take a hard look at the UNIX vendors you use. SunOS 4.x and Ultrix are clearly derived from BSD, which is pretty far from the AT&T code. SunOS 5.x gets closer to the feel of the UNIX source, except that Sun's put a few cool things in (like SMP, kernel threads, etc.) which were at best bolt-ons to traditional UNIX source. AIX is some weird object data base beast from mars trying to wear a UNIX facade.
Stability and standards compliance are not things particular to UNIX ... VMS, MVS, and QNX are examples of stable non-UNIX standards compliant (to some degree) OS's.
NT is not an inherently evil thing. From what I've seen/read, the kernel isn't really that bad. Integrating an unstable GUI and bolting on horribly broken device drivers is probably more at fault here than anything else. MS is an evil corporation ... they just don't have a notion of clear design and product testing/releasing. The NT kernel could serve as a UNIX-like clone with the right combination of shimming, shelling, command structure, etc.
Big long message. Hope I step on to many toes there ..... maybe some info above proves useful ....
DOS didn't have real pipes. All it did was send the output from the first program to a temp-file, wait for it to finish, and then start the second program with stdin set to the same temp-file. So, you could say that it emulated pipes, but it has none of the things that make pipes so nice on Linux :-)
/* Steinar */
I have to run NT on my laptop for work, but I do a lot of things to make it as Unix-esque as possible. I run 4NT and MKSToolkit, which mimic(somewhat poorly in many cases) bash an a bunch of standard Unix command line commands and programs. I also use GVIM for WinNT. Makes it feel a bit more like home. (I used to have an Ultra-10 on my desk)
The major requirement is to be male and have no testicles... Oh, Unix? I thought you said Eunuchs...
Anybody have a link to the "Don Knotts playing hacker Emmanuel Goldstein" page? I was trying to show a friend and now I can't find any troll posts with the link...
And Windows NT is POSIX 1003.1 compliant. I wonder if anybody has bothered to get any Linux flavor certified? If not, technically, Windows NT is more Unix than Linux!
even if microsoft decides to make a UNIX, what would they call it? MSUNIX? or more compactly
MSUX?
Geez, i wonder what it means.. i frequently see that around slashdot, but could never figure out the meaning, *wink*
its gotta have a /dev directory with shitloads of files in it.
Hey, with the new devfs in kernel 2.4, linux is no more a *nix
Actually, as much as I hate to admit it, Xenix, by MicroSoft was a significant player in Unix's history. One of the things that made SVR4 so likeable was that it incorporated Xenix features along with BSD features. You can hardly find an older Unix variant that doesn't show some kind of Xenix copyright upon startup or somewhere else on the system. Motorola Unix, Alpha Unix, most SVR4s and even SunOS. Then again, back then, everyone had their hands in Unix. Xenix had its shortcomings as well though, which I won't go into here. But, back to the original question of what makes Unix, Unix - the answer is simple: The kernel. All of the Unix variants are just that - variations of the same kernel that had been augmented over time. Linux however(my favorite) is not Unix because its kernel is different. The scheduling is different, the threading is different as well as the interaction between user space and kernel space and other things. However, to the user, it is so Unix like, that it is often called a Unix - which is a technical mis-statememnt. But, for all practical purposes, it looks like Unix, it feels like Unix, it smells like Unix and sounds like Unix. NT is a whole different story. Completely different kernel design...not just doing the same thing as Unix, but with a different algorithm. Completely different - in look and feel and operation. Can't even compare the two.
The OP was talking about files, pipes and sockets. ioctl is used as a "catch-all for operations that don't cleanly fit the Unix stream I/O model." according to the manpage. An example of this is terminal options. The OP meant that to write to a file you can use write(), to write to a pipe you can use write() and to write to a socket you can use ... write().
"Everything is a file" is shorthand for "everything is a stream of bytes" -- open, pipe, socket, socketpair, etc. all return file descriptors. While not all files support the exact same operations (you cant seek a pipe or set the address of a file other than a socket, they are basically the same (+ ioctls for operations that don't fit). In fact, a pipe or socket *CAN* be a file (mkfifo, UNIX sockets), or they can be anonymous (ala pipe and socketpair). In linux and Solaris 2.^H^H7, all files are represented in the /proc/*/fd directories.
Plan 9, did, however, take this one step further to say that all files are in the same namespace (filesystem inodes, in particular) This is perhaps interesting, but the fact is that usually at file creation time, you know what type of file you are looking for, you just want to be able to pass the FD you get back to code that does the IO.
It cuts both ways -- Win2K dropped support for my AMD PC-SCSI controller, Linux still has it.
Ick, it would probably be mouse driven!
Again, and again I'm surprised by how gullible a lot of /.'ers are. If you want the truth about M$, or especially WinNT(4, or 2k) slashdot is NOT the place to look - just to many errors. Some of the posts here suggests that NT does not protect the apps from the kernel(which it does, kernel runs in ring0, while apps or userland programs runs in ring3), that it is not posix compliant out of the box, which it is (POSIX subsystem) etc etc. As a microsoft trainer, cisco trainer and linux trainer I can only say: get a life - focus on the good stuff different vendors have to offer, and get your facts straight before you paint something black!
1. no DLLs 2. Being able to install software without rebooting the system. Being able to start and stop services without requiring a reboot of the entire OS. 3. Having ASCII files to grep and change that e.g., configuration parameters and log files in ASCII. 4. I always think of NT computers as being dead and Unix computers as almost being alive. 5. There exists a clear separation between application software and OS software.
As an oldtime Unix and NT hacker, I have to disagree. NT's handle-based, sure; but a handle is essentially the same thing as a file descriptor. NT's handle semantics are different, but after getting used to the model, they're surprisingly cleaner than Unix's fds. A handle can be a file, or a socket, or a device, just like Unix... or an event which can be signalled, or a mutex, or a section of mappable memory, or a process, or a thread, or a registry key, &c. The security model is the same on all of these. You can select on any of them, or a set of them, selecting for "any" or "all", and selecting on them means something (unlike /proc filedescriptors). In Unix, try atomically releasing a pthread_mutex_t and waiting for a signal (event) to arrive -- you can't. There are definitely good things about Unix fds, but NT really is better on this one.
Good point. I see them on my Slowlaris box, but not on my Linux box. (ifconfig -a shows devices I can look up in /dev, and these are symlinks to the /devices directory)
It would seem that the ethx interfaces are created by the driver and are present inside the kernel, but not in the file system. Seems like a bit of a deviation from the philosophy.
I probably should have checked that out first, but my home machine doesn't have ethernet.
Microsoft apologist. Friends don't let friends run NT.
So, Locutus of OS/2: "Resistance is Futile, You will be Emulated" ?
You guys should spend some time writing native OS/2 apps rather than trying port everything under the sun to keep your dying star shining. Either that, or write a Workspace Shell clone for Linux and just switch over.
And you can port Unix stuff all you want, but OS/2 will never be Unix. It's a single user system, for one.
Maybe going between Unix & NT is, but we can port our product (which takes over 45 minutes to compile...to give you an idea of it's size) in under a week.
To me unices are systems sharing a very similar POSIX system call API, and the hierarchical file system starting from /. ( no, not slashdot :)
Also, the "everything is a file" methodology is important in a unix system.
Further add-ons that do not define to me unix, but are very typical: strong multi user and networking support, simple and robust kernel, BSD or SYSV init system, and the powerful shells.
Funny, thinking back to my early computer days, I thought all unix boxen have a sun logo on it, are very expensive and run high resolution desktops and only engineers can understand it... oh well.
> In HPUX you can only have the permissions of a > single group at any given moment,
.depot file.
Uh, not that I have ever noticed, and I work on HP systems all day long. Perhaps I have just never noticed it.
> For instance, tar doesn't understand tar.gz
> files
This is standard. tar, by definition, regoginzes the -Z flag to handle a tar.Z (Z is UNIX compression). Not Unix tar (ie, GNU tar) supports the extension of the -z flag to support gzip, the gnu compression tool. If it bothers you that much, go to the HP porting center and download the GNU tar
This flag is only a convenience anyway, the UNIX way (each command performs one operation) is "gzip -dc foo.tar.gz | tar -xvf -".
Actually, GNU differes from UNIX in many such cases--very common pipelines or pipline components are often added as extended switches. This is nice for novice users to learn, certainly, and also improves performance (pipes are not the most efficient IPC mechanism in the universe), but is not the "traditional UNIX way". Note that there is nothing wrong with this, it is just different. And, of course, GNU supports the UNIX way, as well.
NT has a GUI built into the kernel.
Actually, GUI functions in Win32 are in a separate DLL than the kernell (GDI.DLL and USER32.DLL).
The "Shell" is more correctly GUI, not the kernell (now, arguably, the OS cannot boot w/o the GUI loading, but the kernell code IS separate from the GUI).
Thats it. Doesnt mean anything.
Like what? Name an OS innovation that came from Linux. (and that wasn't on Solaris or Windows earlier).
Take your time, we'll all sit here and wait for you to answer. After all, we've been waiting for an OS innovation from the "Linux community" for years now...
It's undergoing certicfication, so NT+Interix could be MORE UNIX than Linux! (technically)
I have it running here, and it sites besides the Win32 subsystem on NTs kernel, NOT on top like emulation would do. This is a true Unix in NT!
Check out these pages:
Interix PR
Interix Info
it'
As long as it compiles under Linux :)
Not only could you, but it has already been done! It's called DJGPP, .
Right,
MartinS
Have I forgotten anything?
... true multi-user
Yes
Yes, it's interesting that OpenVMS, Microsoft Interix, and IBM OS/400 are "UNIX" certified, while Linux and the BSDs are not.
Lookit Microsoft Windows Services for Unix (free).
"Unix isn't so much an operating system as it is a painstakingly compiled oral history of the hacker culture."
That is from Neal Stephenson's "In the Beginning was the Command Line", very good stuff.
Its gotta have a command line interface where the commands you type are really cryptic. i.e. du, grep, ps, ls, akw, vi, etc.. its gotta have a /dev directory with shitloads of files in it. Its gotta have lots of daemons for serving up everything from telnet to news to http to news to smtp to whatever. Its gotta be non-trivial to learn, but worth it. --This is Linux country, on a quiet night you can hear NT reboot.
modularity - shells and other elements that are not required by the core OS, but which can be added as desired. a shell is not required to run other programs (in general)
functionality - shells are not required to make use of the core functionality. you can do pretty much anything from the command line alone.
customization - the ability to set it up almost anyway you want, including without a shell, if that is what you need.
They have it there to meet government purchasing requirements. Some people in the gubernmint use the NT POSIX subsystem -- nobody else does.
A secured NT webserver usually have the POSIX subsystem removed. So it really gets in the way far more often than it helps.
If Dan Bernstein's software runs on it, it's Unix.
Hey moderators... Get this to -2. This kind of thing has no place in an open forum.
Windows NT 3.1 wasn't seriously marketed at Unix users. It was positioned towards NetWare and OS/2 shops.
If it looks like Unix, feels like Unix, behaves like Unix who cares what it is - it must be Unix!
If the codebase can be traced back to AT&T then you can call it Unix, other wise, you have ot call it *nix because it is not realy Unix. If I recall right MOST (but not all) SysV systems are 'Blue Blooded' Unix's.
Posix complience just makes it easier for you to take code made for one *nix box and port it to anouther.
Binary compatabilty would be such a waste of system resources. For example I have a Multia, a PII, and Im looking for a cheap PowerPC. I would rather recompile the source for each box rather than try to emulate the other CPU's. Could you imagine emulating a 64 bit machine on a 32 bit one?
A UNIX is a UNIX if you can go 'kill 1' and stop everything. ;) Just my two cents.
NT doesn't regard everything as a file. As far as NT's kernel is concerned, files are a special case of objects. It's different to UNIX.
There are a few superficial similarites between NT and OpenVMS, mainly involving similar naming conventions for internal memory structures, which makes NT a familiar environment for VMS wizards who write device drivers. Beyond that, the similarities end. This is a shame though, If NT WERE more like VMS, it would actually be robust, secure, and scalable.
Bear in mind, David Cutler was just one member of the team which developed the first few iterations of VMS. He was not involved with VMS developement in the mid to late 80's when VMS evolved into its current position of being one of the highest quality operating systems on the planet...*
* Not trying to start a religious war here. I readily admit to a personal bias based on the fact that the OpenVMS systems I run are far more reliable than any of the Unix or NT systems on our campus. It is only poor marketing by DIGITAL, and bad decisions by Bob Palmer that have lead to OpenVMS as being viewed as moribund by todays IT managers. The fact of the matter is that OpenVMS brings Compaq over $4 billion in annual revenues at a profit margin of about 50%. If the Q wants to keep this cash cow alive, they had better get off their duffs and do some marketing, and get ISVs to resume developement of OpenVMS apps. But I digress...
VMS -> WNT . thats your proof. (for dimwits - add one letter to V M & S.
Just readin the interesting comments, it feels like a discussion of pornography: I can't define it but I know when I see it!
I remember reading that SCO was Microsoft, but they sold it/spun off when Windows started making some headway.
I don't remember the link to the article, but it was a great read, it talked about the complete history of all Unices, and called Linux/BSD post-apocalyptic Unix.
Hmm.. a few things that define UNIX to me are:
- Remote access (telnet,ssh,rsh, Xdm)
- X-Windows (I know, not technically part, but really..)
- Secure
- Scalable
- Completely Multi-User
- Root
-----------GOOD UNIX ONLY---------
- Open Source
- ships with compilers, gcc, perl, python
- ships w/ servers (apache, ftp, telnet, ssh, rsh)
- community supported
- flexible, fast
- not something Windows users would understand.
I guess by that definition Solaris doesn't count.
Is it really? The Open Group is open in terms of standards (sure you can buy a copy), rather than beer kegs.
Call me crazy, but you dont have to read every single topic posted.
Now, on to the attack!
I would suggest that if you honestly believe that reading the history of UNIX at BEll Labs answers this topic, you should do a bit of research yourself. Maybe start with Multics. Then on to BSD and GNU. Next take in a bit concerning SysV, and of course OSF/1. Then for day 2....
Had UNIX remained what came out of Bell in 1970, I dont think so many of us would be using it. Im pretty sure I wouldnt, for anything more than idle amusement.
The source line count of Linux is a question which can be answered in a straightforward deterministic fashion (man for wc and find, for those of you who dont sleep at night due to this) , at least for any particular revision. The concept of Unix has long since left behind such simplicity. Even in the early days of use, individual sites modifed the system to fit their particular requirements. Each was still Unix, but a bit for bit comparison would not find them to be the same.
I dont think it's slashdot that has the problem. If you're so jaded, perhaps it's time to scrape off the dead skin, and look at the world from a fresh view.
By Law in the US Unix is any operating system that licenses that right to call itself Unix from the Unix copyright/trademark holder. I believe that there are some kind of tests that need to be passed along with the $ that needs to be paid but in America I am sure that passing less tests for more Money is always possible.
Linux is not Unix it is *nix like for this very reason.
Actually, there have to be some other differences. I work on HP3000 mainframes, which run an operating system called MPE/ix. It is posix compliant and meets all the things you listed, but that seems to be added as an afterthought. There has to be something else to make it unix. For example, I have to log in by typing: MPE/IX: HELLO MANAGER.SYS to get into the O.S. that is the equivelant of the root account. Also, the file systems are set up differently. Yes, you can see them the unix way, but usually they are easier organized in the MPE way, which is filename.group.account, where the group is more like a directory, and the account is like a group in unix. Anyways, I don't know what the point of this post is other than to say there has to be more qualifiers than that.
first comment to first post dudez!!! bah
I don't believe this is blanketly true. You could certainly have well written software that isn't portable (unless your definition of well written is portable software). So software by definition isn't portable (device drivers) and some take advantage of the special features of the OS (like when only a one or two Unix were multithreaded, when different thread versions).
My point is that general statements of what is good and bad generally isn't true, even this one.
free speech should be protected even if you don't like it.
plus since when did -2 become a valid moderation at all? If I want to read a post I shold be able to read said post and you shouldn't be able to stop me from reading it.
Yes, actually I _NEVER_ configure Solaris servers with the Desktop Login enabled. ToolTalk has one too many security bugs, plus a terminal is needed for console debug...I bet you've never seen anything newer than a sparc20.. dej@hcetgw.moc
Zzzzzz.....Zzzzzz.....Zzzzzz..... Scintillating topic, eh?
WOOHOO!!! SUCKAZ!!!
You're right, the Posix libraries and functionality was added to MPE with the /ix release.
We used them a lot primarily because we all developed on 715 Series workstations and it was easier to test on them under HP/UX than it was to transfer the whole kit and caboodle up to the MPE System to test.
I will say in its defence, that I did like MPE; the data structures were pretty clever, and the application software seemed to have been well planned to fit together.
However, offline editors (in which you commit every page of a document back to the system before moving to another pagefull) will be the death of me.
Cheers,
ex-HP'er.
It's a Windows/Unix hybrid.
"Hey, where's the UNIX?"
Oops. What I meant to say was modular kernel, not microkernel. There are still several kernels that are mostly non-modular (BSD variants, Tru64 UNIX, HP-UX). Anyway, I think you forgot BeOS in your list of unix-like microkernels - it is very unix-like. I think my main point is still valid - the structure and design of current *nix kernels varies widely enough that it is no longer a feature that defines a UNIX.
Is it just me, or is anyone else confused by the inappropriate bold text in this post?
I don't think he was being serious. It's funny. I guess that means that my Vectrex is a Unix machine!
Seriously you are a Linux Nazi. Just read over your post.
The comment that you made about "considerable effort" in porting is a bunch of nonsense. Poorly abstracted, poorly written code is hard to port. Well abstracted, good code is usually a cinch to get going, if requiring any effort at all. Having worked in unix for over 13 years now, I have seen many a flavor of unix and there are certain things that are fundamentally the same: -everything is a file -standard set of unix calls for OS/system related stuff. Granted some flavors had a few anomalous takes on these... -security models -multi-user, networked OS -... At one of my first jobs using UNIX, we built 11 different OS/architecture binaries from the SAME source code EVERY night and that was over 500000 lines of C code. Are you an MS crony trolling on /.? -Ralph
Funny thing is... sys V most definitely doesn't make soething unix, and if anyhting leads to discussion and heavy differentiation its init (BSD vs SYSV style inits) A kernel is something that virtually every OS has... and the boot lbefore the kernel gets loaded is different on each Unix.. nah, those are not what makes something Unix.
Granted the GNU utilities can be added to NT, but the low level interface of NT is just plain different and looks like some green alien from outer space. Where is /dev, /etc? How do you easily change the services by writing to a text file? Can I pipe stuff around between devices and files? I just can't imagine NT as a Unix, except for a superficial shell and utilities.
And.. what you are refering to is filesystem layout (which as a matter of fact is not standarized in Unix, they all just pretty much look alike, tho there are a few very signifcant differences between different Unices) and yes, you can pipe stuff around in NT (and actually ypu could in DOS) ;) but they are far from generic for anything we recognize as Unix nowadays.
All the things you mention are things many people associate with Unix, but they do not make it Unix.
What makes Unix? well.. for now AT&T/Novell?SCO's blessing that you can call your product Unix, nothing more and nothing less.
For the rest, the 'look and feel', ie: the structure of command syntax, the structure of user/machine interaction, the interfacing between applications and the kernel and a basic set of functionality provided by kernel and librariues is what makes people recognize something as Unix.
Sorry, but all you said has nothing to do with it. They may be the case for your particular Linux install (redhad prolly
UNIX is the original core from Bell Labs. All true UNIX systems licensed this code. The code is probably no longer in their... but the current code is still a derivitive. Thats what makes a UNIX a UNIX. Hence Linux is not a Unix. And neither will Windows ever be. IMHO the /dev filesystem is also something which is very UNIX. Being able to read and write to a device just like it was a file unifies a great deal of the operating system. I wish Linux had /dev/le0 type interfaces (for those of you who don't know there are no ethernet device files on linux. Porting between UNIXs only becomes hard when you start using specific features. The most common difficulty is sound from what I know. And that is getting less and less of a problem as some of the sound daemons run on multiple platforms thus providing a standard interface.
Arcane? the requiring a well documented api implemented in any OS that you buy is not arcane if you also have a few thousend people working and developing with such products. Basicly the US governments requires products to conform with open standards, not so much with Posix. Posix just happens to be the open standard of choice here. If you say requiring compliance with open standards is arcane then you are entirely clueless. And those who believe that the US government still actually requires this is even more clueless.
Well, yeah, crashing the OS steals lots of resources!
If you haven't read this book, go now, buy it, read it. Here's the basic concepts: http://www.cix.co.uk/~dunnp/unix-philosophy.html
I remember my first time on Unix, I was in grade 9 in high school. The OS was actually called QNX on a 8086 machine called the Icon that was made here in Canada. Didn't take me long to get out to the shell either, after that it was heaven for the next 4 years in High school. I think I spent all my free time in high school in the computer room.
This is exactly the reason POSIX compliancy was developed. For the most part, as long as your code is following the POSIX standard, it will be portable across platforms. Avoid extensions and optimizations if your goal is entirely portability.
Sounds to me that you might need more RAM - your system may be thrashing when you are doing something that results in a lot of disk grinding.
Dude, you're a dick. Chill out, and let the guy ask his question - he was looking for information, not a flame. Not everybody can be the all-knowing god that I'm sure you are, so humour us little people in our quest for knowledge, all right? *****Anti-flame flame*****
Here they are in no particular order -
/dev, /bin, /tmp, /var, /usr
If it walks like a duck, quacks like a duck, etc...
1. Unix has a multiuser, client/server design
2. In the Unix process model, init is the father of all processes
3. Each process has it's own protectecd environment
4. New processes creation is via fork, or fork/exec
5. Each process has a process id, a parent process, and a controlling tty
6. Processes become daemons by disconnecting from their controlling tty
7. Job control via nice, signals and foreground/backgrounding facilities
8. Each user has a unique user id and belongs to one or more a groups
9. There is a unique superuser with uid 0, not subject to normal limits.
10 Filesystem characteristics - quotas, hard/soft links, directory files
11 Files - The dir links inodes to filenames, inodes contain all other info
12 Filesystem layout - "/", transparent mount points, no "drive letters".
13 Overall filesystem hierarchy -
14 Generally recognizable as either SysV or BSD
15 Includes X windows as the native GUI framework
16 nfs is the native file sharing protocol, can also support ipx, pc-lan
17 Generally includes a mail delivery system, c compiler, and debug tools
18 Philosophy of many small tools from which to build big tools
19 Remote multiuser shell access - 'r' commands, telnet,, secure shell
20 Remote mutliuser GUI access via network transparent X protocol
Under UNIX it does not matter which computer on the network you happen to be working on - you can access any computer at any time without leaving your desk. Distributed X11 graphic apps are just the icing on the cake. Sure you can add all this stuff to NT, but it does not ship with the basic operating system, so as far as I am concerned, it ain't real. UNIX is also a simpler model where acsii configuration files make administration easy and predictable compared to obscure Windows dialog boxes that change with every OS release.
No, I want them to administer them.
I thought Linux was a kernel ;-) Or do you mean GNU/Linux?
LOOK ON TUCOWS YOU LAMER!
Question is do they use it or do they just have it there to look pretty and say that it is Posix compliant.
Oh yes, the pine editor. How many times have I had to tell the new guy that we don't have pico? Quite a few. (I took some graduate courses and pico seems to be what they are pushing of on the students today.) Never had to do that with emacs since no one uses it./* --- this joke */
I think when it comes done to it ed is the only "all unix" unix editor with vi a close runner up. Can anyone think of a system without. I am talking default install here.
Real old men use ed.
All other real men use vi.
Women tell men what to do and use whatever they want.
Blasphemy! Microsoft could never be as powerful as Unix.
Actually, QNX is used quite a bit in embedded systems because it is a Real-Time OS. I have never used it (I have used RTEMS, thats sort of like QNX), but I understand that it is POSIX compliant
Speaking of Autoconf/Automake, PLEASE can somebody point me to resources on how to create configure scripts and/or set up a GNU autoconf-based source package! Or for that matter, something to explain GNU m4 simply and concisely, so I can at least get my feet into the water before I dive in. I like how Glade creates the GNU autoconf setup automatically, but I'd love to change some of my other various utilities I've written to use Autoconf.
Thanks.
the real at&t mix
Ok, I give up. Why didn't this get moderated up? :-)
--
Patrick Doyle
Patrick Doyle
I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
Why is it that under related links, there is a link listed as nothing but "Linux" that links directly to Linux.com (aka VA Linux, aka parent company of Andover.net, aka parent company of slashdot)? The other links there are to ian, the person asking, cliff, the story's poster, and other Linux stories on slashdot. First of all, since when did Linux.com become the definitive source of Linux information so that it would be chosen as the most representative for a link to "Linux." Second, why doesn't the link say VA Linux? By linking to linux.com and just having the link say "Linux," you're making a pretty big leap. Slashdot be more descriptive in its links to VA Linux and should also be more careful about linking to it unless the situation is more appropriate.
All the others are A) going to go away or B) be merged into Linux. Linux is simply a more competitive paradigm. When IBM, HP, SUN, DEC (Compaq) and every other PC, Computer embeded device run Linux - the market pressures to toss out the others will be enormous. They already are, sumoe people like Sun though just don't (want to) get it yet.
Kernel design & structure varies wildly among the *nix variants. Remember that the original UNIX kernel (and nearly all kernels prior to the early '90s) was monolithic. Now, I believe the majority of current kernels are of the microkernel variety, which is entirely different in structure. In fact, the basic design of the NT kernel is modeled after Mach, as are many other *nix kernels. The structure of the kernel is really irrelevent.
However, the interface does matter. For a while, most *nix variants were either based on the UNIX System V source tree or the BSD source tree, and some even provided compatibility libraries for running applications written for either. Now, the POSIX standard specifies a C language interface and a command set which are loosely based on the SysV interface and commands. Most current *nix variants try to adhere to the POSIX standard, except for the BSD variants. So, any operating system that is more or less POSIX compliant or BSD compatible is at least a candidate for being labeled a UNIX variant. That includes NT, BeOS, and MacOS X.
In addition to being compliant/compatible with POSIX and/or BSD, UNIX variants also share a UNIX like filesystem structure, which differentiates them from NT, BeOS, and MacOS X. Also, most UNIX variants use X for their native window system.
Earlier in NT's life cycle, if you had replaced the native Windows GUI with X and installed all the common UNIX utilities, you could have made a case for calling it a UNIX variant, although I still think the filesystem structure is different enough to preclude that. However, in its current form, NT has grown to include a lot more stuff that makes it more clearly different than UNIX. However, BeOS and NeXT are still probably close enough to call UNIX variants if you disable their native GUIs and use X.
Yes, I have no doubt that there's a ton of code out there that requires considerable effort to port.
There's also always a fresh crop of green programmers out there making mistakes, and as they learn (hopefully from good mentors and good code), hopefully their code will improve so they don't make these sorts of mistakes...
There's also a huge body of code that was properly designed, abstracted and written such that moving it from one unix to another requires no to minimal effort. Furthermore, that effort should be spent in bettering the abstractions such that, in the future, it will move to other OSes more easily.
In short:
"portability problems" == "need for abstraction"
One of my major caveats about unix has always been that there's an enormous pool of talented and brilliant people working, but in opposing camps. Unix companies have rarely been very good at marketing (certainly nowhere near as good as Microsloth) and collaberating.
If unix companies had come together on standards for guis and other essential "desktop" components a long time before now, the unix environment would have had a much nicer facade than it currently does.
-Ralph
http://www.mybrain.org/Pics/Fun/msToilet.jpg
If everything is accessed as a file, it's probably a Unix. No special hidden "registries", no extended invisible attributes, just files.
/dev/le0, /dev/eth1, etc...
/dev/sda, /dev/c0t0d0s0 (or whatever))..
Ethernet on
Entire physical or logical disk drives accessible under one filename (/dev/hda,
Serial ports as a file, printers as a file, etc...
That's UNIX. Accept no substitute.
Pain in the ass to install.
.8.
Pain in the ass to use.
All software has a version number of less than
Everyone who uses it thinks themselves to be some sort of guru.
It attracts a bunch of frothing nuts who had microsoft.
Microsoft would have to change NT to NTX or NTIX or NTNIX or UNtIX.
I vote for UNtIX 2001!
Do you mean that it's not possible, or that the person to whom you were replying hasn't?
Just in case it is the former, I have used several Origin2000s through text terminals and Indigo2s w/o the windowing system (you get a console instead of XDM and X). AFAIK, any sgi box can have a console over the first serial port.
I haven't used AIX, but I would assume it's pretty much the same.
I expect that the 'UNIX' tools you used under NT were the GNU tools. Had you used the GNU tools on Solaris and HP, you'd be better off for compatibility.
Not to mention that HP breaks just about all code of any sort that works on other UNIXs. HPUX is my worst nightmare, I'm not sure that I wouldn't rather use the Win95 CLI. At least I would expect Win95's CLI to be useless ahead of time.
HP can make some darn good chips, but the sooner they ditch HSUX, er HPUX, the better. I may even be interested in their hardware again once the Puffin group gets Linux going on the PA.
No, it does not (nor does linux, GGI is an interface for accessing the graphics subsystem, not a user interface). The explorer shell is the user interface, and this is NOT part of the NT kernel.
--
Why couldn't you compile and load a driver under NT? Just because you don't have the control or option to do so currently doesn't mean it's not possible.
Do you think the NT kernel has support for all that hardware built right into the kernel? Certainly not.
Please list some "OS level interfaces" that NT is missing to accomplish this.
--
And once again, that nice little login screen is not part of the kernel. It's not even part of GDI. Not even close. Changing my shell is akin to changing my window manager -- the fact that I still get an XDM login screen before I login does not mean it's part of the Linux kernel.
--
You're mixing up the operating system with the interface... they have little to do with eachother.
It would be possible, however unlikely, for Microsoft to create an interface that completely resembles your Linux boxen in every respect, right down to the shells and applications you run. Nothing in their kernel (I'm speaking of NT here, not DOS) prevents them from doing so.
I think the question is asking for a more low level answer. ;)
--
much more unixy than OS 9...
Do not meddle in the affairs of sysadmins, for they are subtle, and quick to anger.
--
--
Unix would fall apart if it weren't for source compatibility (since there's no such thing as binary compatibility). Therefore you'd need at least ISO 9899 (which I think is similar to POSIX.16?), POSIX.1 and POSIX.2. It really depends on what perspective you're coming from. If you're a developer, then if a platform is compliant enough to those standards that everything's source compatible, then it's effectively Unix to you. But from a user's point of view, there seems to be more to Unix than just that.
Ya my point was that WNT wasn't POSIX.2, which makes it a bit awkward to use. BTW Linux spouts out an "POSIX conformance testing by UNIFIX" at boot-up, but I'm not sure what that's all about exactly.
This one is very easy:
;)
Everything that is not from Microsoft is called UNIX these days.
There is a failure though when NumLock is on. The idea of "NumLock" is pretty bogus, when you think about it, it dates back to the original IBM PC, where they were too cheap to put seperate function keys. In X this the NumLock bit is stored as a shift flag, but the basic X design was that the shift flags were things like Shift, Alt, and Ctrl: the fact that they were on probably meant something, and the user was holding them down on purpose. Therefore a lot of programs think that *any* shift key being on makes the keys being typed "special" and that they should be not be treated as letters. This is the source of the common X bug, especially with Motif programs, where *nothing* works when NumLock is turned on. Modern X programs seem to ignore all shift bits that they are not interested in, this is a better solution.
Anyways it would be nice if this problem goes away, but I think it should go away by getting rid of the whole "NumLock" concept, I mean it is painfully obsolete and just a hack for a forgotten keyboard layout. If the function keys are in the "ideal arrangement" there, then the main arrow and functions should be in that arrangement. We should get rid of NumLock.
And on Win32, bit 24 of the lParam of the keyboard event can be used to tell the normal function keys from the "NumLock-off" ones.
The terminal driver only allowed one code to delete backwards a character, so it had to be either ^H or ^? (or #, which I have never seen, but I do remember teletypes where it was '_' (underscore) which actually was a backarrow in the earliest versions of ASCII).
If the keyboard driver instead translated keys to "what they do", it would have been trivial to have both ^H and ^? work.
Quite seriously, they should chuck all this obsolete stuff from the terminal driver. Just hard-code everything into the driver so it works for the maximum number of people. The most common usages don't intersect (for instance nobody uses ^H for anything other than backspace) so just merge the most common settings. Off the top of my head:
I would almost suggest that the terminals be in raw mode all the time and that we rely on readline libraries, but I can see this breaking things. Another possibility is to put this sort of editing into the FILE library.
It doesn't have a segmented filesystem. The way QNX works is that you can specify a node on the network with //. So, //1/tmp/ is the /tmp/ directory on node 1, and //3/usr/ is the /usr/ directory on node 3. All machines on a QNX network have node numbers, and root privileges are not quashed. (!) But, you can also NFS mount //3/usr/local as /usr/local on all machines and stuff, so it's not really segmented. With QNX, not only can you access the filesystems of the other machines in this way, but you can also access other processors and shared memory! QNX was designed from the ground-up to support clustering and all that stuff that's just becoming sexy now.
Linux was modeled after Unix and it looks & feels like Unix but it is still
a Unix clone. All the Unix flavours you mentioned, and the ones you didn't are
all descendants of the original AT&T Unix. (i.e. *BSD, AIX, Solaris, Irix,
HP-UX were all derived from AT&T Unix at some point).
Programs written for one flavor of UNIX
typically cannot be ported to another without considerable effort.
Huh? Who told you that, smart guy? Programs written for one flavor of UNIX
typically can be ported to another by simply recompiling them.
The differences between the
different kinds of UNIX seem to be as great as the differences between
any
particular implementation and other OSs.
Now this statement does not make any sence. *BSD is much closer to Solaris
than it is to Windows. And even Linux is much closer to Irix than it is to
MacOS
Could one port all the standard
command line utilities to NT, clone one or two of the popular shells,
set up
the directory structure in the standard UNIX layout and call
it Microsoft
UNIX?"
uhhm, no. btw, do you work for Microsoft? It's just that your questions seem to
suggest that you are planning to port a few shells to NT and rebrand it as
Unix. hmmm, back in NT 3.1 days, MS was marketing is as "better Unix than
Unix". Is that the plan again?
___
___
If you think big enough, you'll never have to do it.
I think you exagerate the differences between Unices. In my experience porting is fairly trivial, particularly after you have ported the fist time.
You're wrong!!!!!! The name is, "Windows NT SUX". Because it has an 'x' sound in the name, it is, by sillygism, True Unix.
Graham
Graham
Linux - Fast Pane Relief
But if you could, then the ultimate extrapolation of that would be emulations running emulations until you had the original Intel 4004 running the latest bloatware at glacial speeds.
Might be interesting to see a screen change at about 1 pixel per second.
I see even classic Slashdot is now pretty much unusable on dial up anymore.
Anyone?
pronoblem
Unix - what everyone else is trying to copy.
Know what I like about atheists? I've yet to meet one that believes God is on their side.
Gnome/2 and Enlightenment/2
Posible because there is a full implementation of XFree86 at the current level available:
XFree86OS2
Even though Mr Veit (XFree86 porter) built a driver to handle /dev/* devices, could OS/2 be considered UNIX? In some respects I believe so. I think that it is more about the API then about the kernel.
We know MSFT won't support a full *NIX API on Windows because they NEED to control the API's (Windows) too keep profitable. They WILL bring Win32 to Linux but not Linux to Windows. On OS/2, IBM has shown they were attempting to build a tool to solve problems and the tool is very flexible.
Oh yeah, EXT2 has been ported to OS/2 also. :)
"Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
They would also need the core APIs and X11. There is a specification called "X/Open" which is far more reaching than POSIX, that you must sort-of comply with to be seen as a "real" UNIX. Microsoft's core is very heavily Win32 based, and as such, it's not going to be anything like UNIX any time soon.
BTW, It's got nothing ( or very little ) to do with kernels. You probably could beat the NT kernel into something upon which you could build a UNIX system.
Even with seamless remote access, NT isn't UNIX. If you don't believe me, try to compile a hello world UNIX program on NT. OK, now try adding SYS V IPC. Now try adding some APIs like curses and X11. The main diff is that NT is win32 based and UNIX isn't.
Except that UNIX has moved on since POSIX, and the latest sepcification is UNIX 98, which requires what one would think of as the "core UNIX APIs" to be available.
POSIX at the very least is a good start, and with a couple of other APIs thrown in , one can usually get workable code.
NT looks more like VMS under the hood than like unix.
Ben "You have your mind on computers, it seems."
The big problem is that the default setting NT Server 4.0 is "Give Foreground Application Highest Priority". (Why is this the default on NT Server? Who knows.)
Next thing you know, some MCSE-wannabe has enabled one of the software OpenGL screensavers, and as the 'foreground' application, it's eating 98% of your CPU and has ground your server to a halt.
So, what they should be teaching the monkeys is to (A) Let background services have their share of the CPU, and (B) Don't run CPU intensive things like OpenGL Screensavers on a server. But that would be far to complex to explain, so 'Don't run a screensaver' is the 25 cent answer.
(A kernel because of the video driver is possible, but practically, it never happens with a screensaver and the vanilla SVGA video hardware on a server.)
--
Business. Numbers. Money. People. Computer World.
Realistically, if a Linux distribution has this problem out-of-the-box, it's broken. The common (99%) case here is the IBM PC AT Keyboard, not some VT220 terminal, and not some Sun X Terminal.
The idea of a 'distribution' is that someone is doing the integration work to make all these software parts floating around the Internet work with your hardware. If that's not being done, it's really too bad.
--
Business. Numbers. Money. People. Computer World.
The Apple Network Servers were actually pretty nice boxes -- hardware RAID, 2-4 PPC604 CPUs, AU/X only. I know a few people that would love to run Mac OS X server on a similar box, rather than some G3 desktop.
At about the same time, Apple came out with MkLinux, which runs on 601 NuBus hardware.
--
Business. Numbers. Money. People. Computer World.
I mean ... "AIX only". Press Preview, dammit!
--
Business. Numbers. Money. People. Computer World.
You should look at Microsoft Interix, which is a loadable UNIX subsystem for Windows NT. It doesn't emulate "Linux", but it does meet the UNIX specifications.
--
Business. Numbers. Money. People. Computer World.
Late response, but does "bugger all" mean it does nothing? If so, that's not true.
Q160656
Last Reviewed:
February 1, 1999
The information in this article applies to:
Microsoft Windows NT Workstation version 4.0
Microsoft Windows NT Server version 4.0
Windows NT 3.51 and earlier boosts the foreground application responsiveness by boosting the foreground thread priority base. Windows NT 4.0 boosts the foreground responsiveness by assigning a longer timeslice (quantum) to the foreground thread than what background threads receive, not by assigning a higher thread priority.
And a OpenGL screensaver can still impact performance on a server quite seriously. This can be easily tested by putting WinNT on a Pentium-level machine and doing some file copy tests.
--
Business. Numbers. Money. People. Computer World.
When people say "UNIX", in this context, they really mean "POSIX", which is an IEEE standard that, supposedly, defines the function call interface between a program and an operating system. That's the general idea.
Well, if you do write a strictly POSIX program, it should compile and run just fine on any one of those unixes. The problem is that POSIX does not really cover everything what you can do, on a typical box. Still, you can come pretty close. If you use GNU's autoconf and automake tools, your package can have a good shot at compiling and running on anything that claims to have POSIX compliance.
--
This is supposed to be an Ask Slashdot but you are making a lot of wrong statements:
I have worked on many free software applications for Unix. I start off GNU/Linux, using the manuals available on it, and then release the stuff. It usually works perfectly on BSDs, Solaris, Irix and HP/UX (other than those, I don't know). There are a *few* minor differences but it usually takes very little time to find them out. I'd say I have devoted 1/1000 of the total development time porting my software to other platforms (always Unix). And no, this isn't simple Hello World stuff, it usually contains network code, crypto code, standard Unix stuff (such as calls to open, dup2, pipe, fork...), string functions (strcasecmp, strcat, strtok, etc), graphical user interfaces (I always stick to GTK) and POSIX threads.
This is completely wrong. If I were to port my software to Windows or MacOS, I know I'd have to spend far more than 1/1000 of the time I spend developing my software.
Thanks.
Alejo.
Did you guys know that LINUX stands for Linux Is Not UniX ?
;)
Heheheh.
Alejo.
Have you tried running debian/linux with some shell other than bash as /bin/sh? Doesn't work. So much for modularity. Modular in theory, I suppose.
What does "shells are not required to make use of the core functionality" mean?
Seems your initial decision to go with a proprietary solution is the problem. If a business makes a stupid decision, then they are going to have to cough up the money to dig their way out of it, one way or another.
Cobbling something together to make use of a buggy windows device driver isn't going to buy you anything. The only way to get truly bug-free software and drivers is to make all the specs free and open. And the only way to do that is to stop buying products made by stupid companies who refuse to properly document their stuff.
The solution is simple:
Get a different SCSI interface...
yeah that's right, I wouldn't trade (Windows NT && cygwin && bash && grep) for *nix anytime.
;-).
Grand unified theory of OS's:
OS has BSOD => OS != unix
um, please, that's no flamebait
Seriously. All these comments that are marked as "Troll" but aren't really. They're just like this one. Spam. We seriously need a "spam" moderation category. And that would include posts about goatse.cx, Don Knotts and that super-scroller thing.
They're all spam.
Oh, and "Spam" should carry an automatic -5.
--
It's a fine line between trolling and karma-whoring... and I think you just crossed it.
- Sean
It's a fine line between trolling and karma-whoring... and I think I just crossed it.
- Sean
Unix is any operating system derived from the source code of the original unix developed by Bell Labs. Linux is not a UNIX, but a UNIX-like operating system. A Unix-like operating system is any operating system which reimplements the spirit and designs of the operating system drempt up by Dennis Ritchie et al. *BSD on the other hand has a pedigree which goes all the way back, so is a "true unix", although the definition varys a little depending on who you are talking to. Some people think UNIX is any OS that Bell Labs says. Go look at these web pages:
Unix History
and be sure to visit the history of unix written by Dennis Ritchie himself:
Dennis Ritchie's History of Unix.
If I had no sense of humor, I would long ago have committed suicide. -Ghandi
You are quite correct.
To be able to advertize your OS and "Unix", you do indeed have to certify your OS with the current trademark holder, namely The Open Group.
You have to at least pass the Unix95 specification testing. I believe that if you pass Unix98, that's fine too.
As to the assertion that portability is difficult in the Unix world, I would disagree strongly. It is easy to write bad code that is highly non-portable (I find a lot of people who pretty much only use Solaris fall into this trap). It is however possible to write code which will run on most if not all Unices with little or no modification. However, that puts the onus on the developer to familiarize themselves with the relevant standards, and also use as many systems as are available to them. Sadly whether it's laziness or unreasonable deadlines, this doesn't appear to be happen that often.
Tim
Could one port all the standard command line utilities to NT, clone one or two of the popular shells, set up the directory structure in the standard UNIX layout and call it Microsoft UNIX?
I run just such an environment, using Cygnus' Cygwin on NT, and believe me, it isn't Unix. Not by a long shot. Even if it were nothing more than the process scheduling, Unix would have it all over NT. On a Unix system you can run processes in the background and just forget about them unless they are real resource hogs. With NT you have to be always thinking "is this going to kill performance?". But there's more. Pop up a telnet window and you have the same old DOS prompt window. Even though it's running Bash, it still feels like Windows. And, of course, all the applications are the clunky Windows apps. And of course, there are the constant crashes and running out of memory. Run Cygwin next to an X server running an xterm on Unix, and you'll see the difference very clearly. I've done that in the past, and I'm working very hard to get that set up now. I'll still have memory and stability problems, but at least the apps will run right.
Always and inevitably everyone underestimates the number of stupid individuals in circulation
Information is not Knowledge
Is it useful? Hardly. Can it be called "compliance"? With a very big stretch of imagination.
--AP
Microsoft actualy hired some of the main VMS programers to build NT. As such NT's kernal has alot of similarity to the VMS kernal.
In addition to all the good information above, especially the Open Group links. It's worth noting that "UNIX" is commonly used to mean "UNIX-like". Thus Linux is often considered a flavor of UNIX, though not officially.
Unix is in the eyes of the beholder. Think of this, if you are a simple user, all you care about is your normal unix tools, shells and what not. If we recreate this environment on NT, then as far as you are concerned, you have a Unix or Unixlike system. But if you are a kernel hacker, once you get into NTs kernel, you will scream and not call it Unix. Likewise, if we take a Unix kernel say linux and provide it with a GUI that functions just like windows98, a user will not call it Unix, as far as he is stuck in the GUI he will call it windows or windowslike, whereas a hacker working with the kernel without the GUI will still call it Unix. Take a case of a car, if we get a BMW take out the engine and put in a toyota engine, what is it? People who just see the car from afar will call it BMW, whereas the guy that fixes it will call it toyota. Thus Unix is in the eyes of the beholder.
------ Curiosity killed the cat. {satisfaction brought it back | it didn't die ignorant | lack of it is killing mankind
I think that most of what makes something UNIX or UNIX-like is "it's look, it's feel, and the tools available" but to enumerate some of these I would say:
This is the biggest difference to me. There are lots of programs for X, but lets be real... most of them are just GUI wrappers for CLI tools to save you time.
all the *nix boxes I've ever played with LOVE being on a network.
By this I don't mean the directory structure being one way or another per-say but the fact that there are certain folders almost dedicated to a certain job (eg:
I know a couple of NT admins that when they got a hold of Solaris they wanted to install perl... they made a directory (/programs/perl heheh) and then installed it to that directory.
Some of the above may be common with NT or OS/2 but the fact is the combination of ALL of these makes it my UNIX.... Have I forgotten anything?
__
__
nothin' says lovin' like an open source penguin.
well sortof. interix was mentioned before but i thought it should be restated:
Interix.com
i used this for a while back when it was called opennt. then (i believe) the microsoft nazi's put the smack down and they had to change their name. its pretty neat. i believe it came with ksh and csh and some other neat utilities.
john
-- john
it looks like ms bought interix to quote:
Microsoft acquired Softway Systems, Inc. to help ensure that customers have reliable interoperability tools between Windows and Unix
whatever.
john
-- john
uuh. youre right about most of it but NT is a Windows/VMS hybrid not a windows/unix hybrid. vms != unix.
I thought I've heard before that *nices have to be POSIX compatible to be considered a *nic.. or is that just a recommended aspect of the OS? (or is it just a standard for Linux distros?)
hmmm.......
Insert mind here.
Plain vanilla symlinks.
I understand it's an exaggeration but the fact that *simple* (yep - simple!) things like that reliably working together IS what makes a UNIX UNIX.
OLE based computing - no, thank you!
siri
The major exceptions that spring to mind are network devices. You can't send a raw ethernet frame using "echo hello >/dev/eth0".
$ find
Are you kidding me? In HPUX you can only have the permissions of a single group at any given moment, and you have to issue a command to change which group's permissions you will take on. Most of the commands are less developed as well. For instance, tar doesn't understand tar.gz files. This applies to 10.20 which is still in common use.
hmmm... i remember that the nt resource kit for 4.0 came with posix complient layer...
- tim -= remove "-spam-" from address before spamming =-
The solution is not that simple for a gigantic company that has standardized on one particular SCSI interface for every computer, and then discovering that there are no linux drivers for it when they decide to start using Linux. And again, a SCSI interface is a bad example... what if i've built a network on a proprietary gigabit ethernet solution. Am I going to rebuild my network just to gain some stability? Certainly not, I would say "Well, our current hardware is not supported by anything but NT, and making a changeover to linux compatible hardware will be ridiculously expensive, so i guess we're sticking with NT for now. You'll be rebooting a bit longer." Get the idea?
--
linuxisgood:~$ man woman
Restating the obvious since nineteen aught five.
I think the thing that makes UNIX what it is is this:
ANY of the various Unix flavors all have a UNIXISH kernel. They have all got either BSD or SYSV commands (many nowadays have a mix of both) and thay are all modular OS's. If you take away the GUI from NT, it will not work, If you take X (any version) away from UNIX it will still be the same functional rock solid OS, just with out a GUI. Dont forget that all UNIX variants are supposed to be POSIX compliant.
Of course this is just my opinion.
"If ignorance is bliss, why aren't there more happy people in the world?"
gsd fgsdgsdfg sdg sdfg sdfg sdfg sdfg sdfg
Oops :) I meant to ask: Does anyone know a good telnet server for NT? I am using cygwin a lot to make NT work more friendly. telnet would take this a step further.
Thanks for the tip. I'm downloading now. I saw a reference on the M$ page how to use it with Korn shell. (of course I will use bash :)
There is one major feature of UNIX that has not yet been mentioned.
:-)
That feature is the community that has grown up in and around UNIX and the "UNIX-like" systems. Look at all the sharing that goes on between people in the community. We have open ideas as well as open source. Sharing and community has been a part of UNIX since AT&T first started giving it to universities. There is also the competition that is integral to the UNIX community. Yes, this does include the "holy wars" that break out occasionally. We have competition of APIs and new features. Need I mention the ongoing debate between GTK+ and QT, as well as that between GNOME and KDE. There is competition in the community and that keeps developers on their toes. It also continues the evolution of the system.
Where in the Windows community is there such a sense of openness, sharing, and competition.
When talking about what makes UNIX we must not forget the people involved. People make up the system just as much as the code base.
To me UNIX and the community surrrounding it are like a huge family. We may not like each other. We may not always agree, but there is something that brings us all together.
Just my two bits.
If it looks like a duck, and quacks like a duck, it must be a duck.
Are you sure the network was not ARCnet? I remember working on QNX and using ARCnet cards. Very cool OS.
This is symptomatic of the underlying difference; Unix is written in C and NT is written in C++.
Your nit picking now because he picked some non-standard programs. But, I bet you could find the following programs on any "unix" system unless it was severely stripped down:
1) vi
2) man
3) cp
4) rm
5) mv
6) ls
7) man
8) grep
9) find
10) ping
11) netstat
12) ifconfig
13) awk
14) sed
If you don't have them on your linux system then I feel for you...
Does it have the same system calls and directory structure as Unix? If not, then it's just a compatibility layer that could be built on top of any OS.
It's that 5% that's the killer. Might as well be a totaly different OS.
There are certain OS level interfaces that are not directly mappable onto NT syscalls. This would make it impossible to provide an interface "exactly" like Linux on NT without having some sort of emulation layer. Could you compile a device driver and load it as a loadable module on the NT box that emulates Linux? Probably not without something like VMWare or WINE or a Frankensteinian combination of the two.
Yes, they could do it, but it would be more like Bochs, with all the inherent performance loss. And you thought NT was a slow memory and CPU hog now!
ugo/rwx permissions
While the rest is a good point, this phrase is, IMHO, incorrect. A Unix with full Access Control Lists [somethign already implemented, but easy to work around, in NT] wouldn't make Linux or Unixes suddenly not become Unix compatible. The ACL concept is a noble one and more flexible than ugo/rwx - I believe an implementation on Linux was discusses in Slashdot Jeremy Allison interview recently.
Ah, Xenix.
My first-ever exposure to Unix was Xenix running on an Altos86 in my high school. The basic login script for all student users was a text menu from which you could choose BASIC, a spreadsheet, some simple database and a couple of other things.
It wasn't long before we learned we could ! out to the shell, and with the Unix System Administrator's guide on our laps, we pretty much had free run of the thing. Right before I graduated, I got stuck in a Programming 101 class. I looked at the syllabus, realized the teacher was teaching straight from the book and did the whole quarter's worth of assignments in about a week, after which I had 9 weeks to screw around, though I spent most of them playing Hunt The Wumpus.
I still get nostalgic for that old beast (the machine, not the wumpus).
Thanks for the memories!
The REALLY interesting issue is what makes a system an EROS-like system :)
Yup, a friend of mine bought one of those Apple Network Server boxes this week and we were playing around with it last night. I believe ou meant to say AIX only, though.. I thought AU/X only ran on 68k hardware.
I was reading some of the training manuals that came with it.. interesting stuff. It was talking about secure dynamic DNS.. which made me wonder what all the hype is about with W2k, when it was available in AIX in 1996. (maybe before then, I don't know)
Stability has nothing to do with UNIX(tm). :)
It's very clear what UNIX(tm) is. It's very clear what Unix-like is. I refer you to the preaching of the Rev. Don Kool on computing.unix.admin
unix' great contribution is the fact that it treats everything as I/O...
-r
That said, I'd certainly recommend running nothing more outre than the VGA drivers on a production server anyway, simply because there's no need for anything more (do people ever get disappointed: "I've spent $400 000 on this Proliant 7500 and it's only got a VGA card and no SoundBlaster"?)
--
Cheers
Cheers
Jon
See here for a discussion of the similarities and differences between VMS and NT
--
Cheers
Cheers
Jon
Win32 is implemented as a subsystem on top of the NT kernel in a similar way to the "OS/2" (sic) and "Posix" (sic) subsystems - there's no particular reason why you couldn't build a subsystem which implemented the POSIX and X/Open specs (and, from a pragmatic point-of-view, supported the whole of man(3) fully), but why? After all, if you want a Unix box, you buy one.
Agreed re. the on-kernel implementation: since several Unices have been built on the Mach kernel, it would probably not prove exceptionally difficult to build one on the (similarly-architected) NT kernel. IMHO it would, however, be fairly pointless.
--
Cheers
Cheers
Jon
However, the internals of the kernel aren't from NT: it's a whole different set of code (unsuprisingly, since hardware on the desktop is somewhat different to hardware in the palm) and, as Mr Burdick points out, this project was Pegasus, intended as a successor to the WinPad and Pulsar. Meanwhile (and more recently), Microsoft Israel (IIRC) have built Embedded NT, which is a cut-down NT kernel for embedded use (although not intended, I think for handhelds, palmtops and other such pseudo-computers ) - here, there is commonality between the code-bases.
--
Cheers
Cheers
Jon
Quick heads up: object-oriented design != C++ implementation (ask all the old Simula hackers out there... or read D&E some day)
--
Cheers
Cheers
Jon
Programs written for one flavor of UNIX typically cannot be ported to another without considerable effort.
1. Where does the "effort" end, and porting begin?
2. Check freshmeat you'll find many counter examples of no hassle porting.
The message on the other side of this sig is false.
Yes I do.
/..
But why would that matter anyway? One finds his place in a community such as
CE was designed to make it easier for Win32 developers to develop software for CE.
Binaries should not 'run', you need to 'port. But the porting process is releatively painless, anyway since that 5% is the most least used, or inappropriate or CE devices.
Go back and read the article. Symlinks are new to W2K, but a system that USES the symlinks is new technology. It looks for identical files and stores only one copy of the file, linking to it. If one of the files is changed, it de-links it and creates an actual file for it.
It's a good idea because of the way dlls are spread across the system, making way for identical libraries to be stored more than once. I'm not sure that this would be useful in a *nix environment because of the way libraries are stored in one or more specific location(s) in the first place.
I'm a Linux advocate, but atleast I READ THE ARTICLE and understand what it is before I cite it as more Microsoft crap.
Hello little man. I will destroy you!
First off, let me say that I am not going to attempt to actually answer the question, since so many others have already done a much better job that I ever could.
/. as the bona fide mix of experts and neophytes in all ranges of technology, it is being used -- and abused -- as a 1-step shortcut instead of RTFM.
/. will not tolerate, it is obviously laziness!
/. altogether.
Instead, I would like to look at the nature of the question itself. "What makes a UNIX a UNIX?" Others have pointed to the absurdity of this. What makes a computer a computer? What makes an HTML file an HTML file? This question shows a harrowing trend in the quality of the Ask Slashdots. Instead of people using
Perhaps the next Ask Slashdot should be just that: "What does RTFM mean?" Please. This is not the first time, nor will it be the last, that Cliff has grossly misjudged the appropriateness of a submission.
I want to generalize this condition as much as possible, so I will not suggest that ian actually think about doing some work and looking up some easily-found documents on operating system history. I will not state how dumbfoundingly easy it is to punch `+unix +history +"bell labs"` into any of a dozen popular search engines.
I don't want to do that, because then I might be accused of being shallow. Lazy, even. And that would be a terrible crime, because if there's one thing
Ask Slashdot is not a place for idle questions to be treated with the gravest of attitude. It is being treated with the same respect that would exist of asking Our Beloved Linus how many total lines are in the kernel source. That would be wasting his time, just as this question wastes ours. These sorts of thing can be looked up independently with no need to involve everyone in this.
There was a time when Ask Slashdot handled deep questions that did not have easy answers. That time is clearly gone. I can only conclude that this feature must be heavily overhauled and strictly maintained by someone of higher intuition than Cliff, or be retired from
---
---
Remember when "Truth, Justice, & the American Way" wasn't contradictory?
The big difference as I see it how unix creates processes, ie the fork() system call and copy-on-write memory pages.
Some features of the process management system (kill -9) are not replicated well elsewhere, or are replicated poorly. You can kinda fake it with NT but sometimes you get a permission denied message. And you never really know if the app was signalled before it died.
There's also a design philisophy that says build small, reusable tools and make it easy to attach them together.
Finally, there's access to hardware at a much lower level than with competitors.
IIRC, MS lost it's UNIX producing rights (not the TOG sort) when it sold Xenix to SCO. Oh yeah, I dont think that TOG cares what you call Unix, as long as you give proper note, payment, etc to UNIX(TM)(R)(etc)
Im guessing you've never tried to port a large program. Just because there is a common language does not mean that porting is a non-issue. While it may be ideal that every program that is written in C sticks to ANSI functions and syntax, sometimes this isn't convenient/efficient/interesting. So you probe in system specifici functionality. For an example of this, there the dldump() function in Solaris. To go a step further, some systems support concepts that don't quite mesh with C. String handling in VMS. Or, you could come across difference of opinions with C compilers. I've written code that GCC would handle without so much as a single warning, that the MIPS Pro compiler (SGI) would refuse to compile. The existance of a program on two platforms does not mean that they came from the same code, or use the same general implementation.
Users, sure.
But the VAR crowd who used SCO were approached.
If it was said on slashdot, it MUST be true!
It is nice to know that such informed knowledge makes the backbone of the /. community.
If it was said on slashdot, it MUST be true!
How many remember:
Windows NT 3.1 will be a better Unix than Unix?
How that same maketing material was saying the idea of having a big sever serving you graphics (like X) was dead due to PC's?
And, how having the graphics outside the kernel would add stability to NT?
Anyone have some of this old add copy?
If it was said on slashdot, it MUST be true!
Yeah, right. And everyone running a Unix server
is told not to run an X11 server on it.
Where's the difference?
...among the most beautiful device abstraction layers ever built.
Actually, I would nominate Plan 9 for "most beautiful device abstraction". There is a lot of stuff that came along after the initial development of UNIX that just doesn't fit the original scheme and are not accessible like a file. For instance: network sockets, shared memory, semaphores, and message queues.
Unfortunately, the days of "everything looks like a file" belong to a much simpler time when all UNIX was doing was calculating satellite orbits. Now, you could make the argument that it is time for a more inclusive abstraction, but it would fall on deaf ears because it "isn't UNIX."
Hopefully, in the long term, being UNIX-like will not stifle the advancement of highly general systems forever.
"What's the point of going abroad, if you're just another tourist..."
Just because you have some shells and a kernel does not mean you're running Unix. It just means you're running an OS.
"Evil will always triumph over good, because good is dumb." - Dark Helmet (Spaceballs)
I thought that they were told not to run a screensaver because it steals system resources.
Instability of kernel-mode drivers is really a key cause of BSOD's, which is why one would be a fool to run an NT server at anything above VGA.
"The best way to do mathematics is to be creatively lazy." -I. M. Isaacs
I read a good book that helped me in the Unix learning curve. Unix is a system that adheres to principles, and is descended from the Original AT&T project.
BOYCOTT AMAZON
--- Nothing clever here: move along now...
The X-Box must be unix then.
As far as I know - isn't NT supposed to be Posix compliant ? I am yet to see any Posix-compliant software to be used with NT 4 though...
-- http://z80.org - all opinions, all the time --
Don't forget to change the corresponding entry in /etc/shadow, or you'll be locked out :)
Duh. The Unix 98 standard. You can yak all you want, but Unix is defined by it's interfaces. Why is this question on slashdot?
"Hex, Bugs, and Rockn'Roll"
QNX is not UNIX in the sense that it was not derived from the original UNIX operating system
or based on its spec (i.e. Linux). QNX is a Real Time Operating System which has a UNIX-like
interface, in the manner that BeOS has a UNIX like environment and possibly POSIX compliance,
in order to simplify the porting of programs.
Are binaries compiled for a BMW compatable with a Honda?
----
Don't underestimate the power of peanut brittle
ADVENTURERS! - ANTIHERO FOR HIRE - CARDMASTER CONFLICT
Legally, UNIX is anything that follows the AT&T System V UNIX code.clone of existing UNIX.
Technically, we include BSD, because it follows the UNIX code before System V.
Linux is neither System V nor BSD, it is a
Linux is a UNIX in a very technical sense.
Programs written for one flavor of UNIX typically cannot be ported to another without considerable effort.
HUH?!?! It is hard to port C code?!?! I thought I saw the program "ls" on both Solaris and HP-UX!
The features offered by the different implementations vary widely: some are more secure than others, some cluster better than others, some offer journaling file systems, some are more robust. The differences between the different kinds of UNIX seem to be as great as the differences between any particular implementation and other OSs.
Did you attend some stupid marketing seminar on UNIX or something????
Another way to tell is that the frickin' number pad keys never work! (eg. in Netscape)
The 'number pad' grid a much more sensible layout of up-arrow, page up, home, end &c than the one in the middle of the keyboard, and apparently the X-windows keyboard abstraction layer forces developers to explicitly activate them, which apparently many are too lazy to do. (or maybe they're mac users)
Making keys with the same markings implicitly identical (as they appear to be on the keyboard) is one thing micro$oft did right.
I think being Unix has a lot to do with it's roots, it's look, it's feel, and the tools available. For example, they all have similiar file systems in regards to structure and permissions. Many basic concepts as these exist in all the unix flavors.
A Similar thing happened to me. Although the computers were running windows 95, I installed linux on a couple of them, and we played network hunt for the duration of the class. I knew the sysadmin, so he didn't care about the systems having linux on them.
He who knows not, and knows he knows not is a wise man
"Unix" is not an OS, it is a family of OS's. "UNIX" is AT&Ts SVR4 (and older) versions of Unix. Solaris/SunOS sure is Unix, it's based on SVR4, and the BSDs are based on Berkley Unix. Linux is a mix of SVR4 and BSD Unix-like things, but it's more based on SVR4.
I read the book, they are told not to enable the screensaver because it may crash the system. It may required things from the display adapter driver.
This is due to the movement of the display adapter to the kernel. They also recomend you only use a 16 bit color, display adapter (640 * 400); because it was written by some NT Guru. They claim any other adapter driver will "put your system in serious danger of crashing in the near future." If they can't right bug free display adapter drivers no wonder they can't right stable kernels.
Nate Custer
"The poet presents his thoughts festively, on the carriage of rhythm; usually because they could not walk" Nietzsche
No! a majority of the instability in Win32 has to do with poor device drivers. This is due to poorly documented API's. So why do you want to add that instability to Linux?
Nate Custer
"The poet presents his thoughts festively, on the carriage of rhythm; usually because they could not walk" Nietzsche
We used to have a group of Mac Quadra 700s running A/UX and a suite of applications we'd created for news wire stuff. We wanted to stick with Apple hardware when they switched to the PowerPC, but we were told to transition to IBM's AIX (the RS/6000 boxes with the PowerPC 601). I believe Apple even sold a server for awhile with AIX on it.
This argument (named "*X" means UNIX®-like) has already been made here. It would classify the Windows® CE-based X-Box console from Microsoft as a Unix system.
Will I retire or break 10K?
Actually, Linux-based systems are GNU systems; GNU's not Unix (NetBSD is stealing this tagline).
Mac OS 10 has a BSD-heritage public-source kernel called Darwin and can be spelled with an X; does that count?
I'd say any system with multitasking, multiuser, devices with filenames (/dev/*), full POSIX compliance (refer to the Single UNIX® Spec available from the official Unix site), etc. could be called Unix-like.
Will I retire or break 10K?
If the X-Box is a Unix-like system, that would make Windows® CE a flavor of Unix. Actually, Windows 9x and NT almost are, thanks to Red Hat's Cygwin port of GNU and (to a lesser extent) the minimal GCC for Windows.
freepuzzlearena was made with DJGPP, the DOS version of GCC. freepuzzlearena is not Tetris.Will I retire or break 10K?
You should go get Cygwin (look for it on Google). You'll have a good time, as Cygwin emulates Unix on Windows NT (also works on 9x but crashes a bit more).
Will I retire or break 10K?
Heck, you can get POSIX in DOS through the C libraries in DJGPP, a port of the GNU C++ Compiler to protected mode DOS.
I get paid to read /.; why don't you?
Will I retire or break 10K?
Unix is a trademark but in order to qualify to be known as a Unix system the vendor must comply with the specifications above.
In its core Unix is not about proprietory software
Unix is about Open Standards (not the same as open source) for system interfaces, network components, thus MS can not really build a Unix system unless they comply with the specifications.
UNIX is not about any single piece of code, not even the kernel. However Unix is about paradigms for networking, code execution, file system management, user utilities.
UNIX is not GNU.
You can't handle the truth.
we just installed their stuff on the NT boxes, opened command windows, and off we went.
management could strut around the building, proudly rapping off the lines they read in "PC Week" (or whatever) about "lowered TCO", and we ended up with a system that was somewhat as reliable as true unix, we just had a frequent reboot schedule to keep the machines stable.
kind of a lose-lose situation...but hey, i was outta there at the first convenient point in time.
by the way, i don't dislike microsoft because of quality issues or the interface, i dislike all things microsoft because they have over 33% market share of a powerful industry -- their 90% market share was achieved by violating a number of state and federal laws.
i hope any settlement takes this into account, and has logic that will drop them to a more reasonable market share, as punishment for their behavior. you and i can't drive 90 on the freeway, so bust 'em down. that's part of the government's function -- enforcing the law, and preserving the common good.
Treatment, not tyranny. End the drug war and free our American POWs.
See my user info for links.
NT may have earned POSIX compliance through some loophole, but you can't run vanilla posix unix programs as is, there are a lot of implementation details that are different in NT that sneak up on you and bite you.
For instance, you can't do socket I/O without calling some socket init functions that you don't have to do in unix.
root=power on every machine.
If I remember correctly, the screen saver is started in the system context in NT. The screen saver then switches to the user context. I think this was solved in Service Pack 329078 or something similar :) (probably 6) I did see a patch our for it. Mind you, I doubt that was the reason why they told MSCE students not to use it. Everyone starts putting Big ass 3d graphics and the cpu utilisation zooms up to 50% right off the bat!
My memory of the Amiga has faded severly in the past 8 years, Maybe I'll try and find an old Miggy and try this out.
--AROS is an Open Source AmigaOS clone, and source compatible with AmigaOS! Try the x86 build at http://www.aros.org
I think you're having a neurological meltdown. WNT borrows some ideas (but not code) from VMS. But what on Earth makes you think VMS is a "true Unix"? I can't think of anything in VMS that is remotely like Unix...
The original UNIX kernel was written in bell labs. The most direct descendant of this kernel is the UNIX system V kernel, which has been widely used since before I was born. The other true UNIX kernel is BSD (Berkely System Distribution), which was written based directly on the same kernel as System V is. There is the BSD compatibility package which allows for unification of BSD with the System V implementation. These 2 distributions are very compatible.
The free/open/net/etc BSD's run off of the BSD kernel.
UNIX untilities can be aquired from the gnu project, which is another operating system, which is UNIX compatible, but it is a CLONE operating system.
LINUX is another kernel, and another operating system as such, but can run all of these UNIX utilities, and is used compatibly with UNIX.
There are others too...
If we want to go back to UNIX's older cousins, we can get into MULTICS and other such operating systems.
When it gets right down to it. A UNICE is any operating system that uses these classical commands from the history of computer science. They are still in use because they make sense. They are quite simply, the most basic and most perfect way to run a computer, but UNIX is the kernel.
Eh...
Microsfot my not be offering Unix but they sure are working at providing access and control.
go check out the features in Windows Services for UNIX .
Do you want some NT head to administrate your Unix Boxes?
Pontiac
Got Beer?
If you think it's expensive to hire a professional to do the job, wait until you hire an amateur. --Red Adair
By this definition, the latest versions of Compaq's OpenVMS could be considered a UNIX. Although shell tools do not ship standard with VMS, they could likely be ported without too much trouble. And yet I can't quite bring myself to consider a VMS system to be UNIX...
And 'mid this tumult Kubla heard from far
Ancestral voices prophesying war!
Seriously, while you're at it, you should ask exactly what Windows is. It's in the same boat - there's several flavors of a single OS that really don't have much in common. Windows CE and Windows NT don't share much except a start button, when it comes down to brass tacks.
We can also ask just exactly what CE is, since the soon-to-be-out-don't-call-it-CE Pocket PC platform is radically different than the CE of today.
--Mythos
Apart from the fact that Windows NT has a POSIX subsystem (which I dont think anyone really uses), most of the GNU Unix like stuff has been ported to Windows as part of the CygWin project.
http://sourceware.cygnus.com/cygwin
"In a short time, it will be the most popular form of Unix ever. Windows NT will outsell those other incompatible versions of Unix."
-benjy
When the hell did that matter? Like so many of us are actively writing in POSIX compliant C. Duh. Please stop before you give me a headache.
*** Stop trying to be cool. ***
The guy who lead the NT project, I believe, was the same guy who desgined VMS, Dave Cutler. But I've yet to be presented with any literature which indicates that NT resembles VMS. If you have any concrete evidence of this, please use it to back up this statement. Anyway, I don't think you realize how good VMS actually is. It's been stated by many people that VMS is actually mroe stable than most Unixen. Of course, even my female collie could tell you that most people who claim their preferred platform is stable are simply showing favouritisim to their preferred platform. Nothing more, nothing less. At the corporation I work for we run several platforms. NT is one of them. I set up an NT/Apache server on it in June 1999. Admittedly the load wasn't great, it's internal and only serving ~30 people. It didn't crash until earlier this month. And that was mainly due to the fact that I installed the ACT server on it. The MMX200/64MB RAM apparently can't handle 20 requests to an ACT database. But even my female collie realizes the point here.
Mark Villopillil
no sig
Nope. "One", i.e. Microsoft, didn't "port all the standard command line utilities to NT, clone one or two of the popular shells, set up the directory structure in the standard UNIX layout and call it Microsoft UNIX",
;-)
Heh heh.   I was wondering how long it would take before someone caught that.   Xenix came out way before NT.
-- Win2k: "It's not so much that it's only 65,000 bugs, it's just that they stopped at 65,535 to prevent an overflow."
Hmm, did you ever notice, that the way you manage users is completely undocumented and merely impossible with the Win32 API ?
Hmm, one of these subtle differences between the server and the workstation is, that you can disable this on the server. What you can't change that easy is the quantum time (the time a process has the CPU until it switches to the next one), on the workstation these quantums are short and foreground apps get longer ones, the server gives all processes the same quantum length but much longer than on the workstation.
Well, no problem there. Even MSVC understands ANSI C.
OK, now try adding SYS V IPC.
That's a problem.
Now try adding some APIs like curses and X11. Both exist for NT. Even the Open Group's X11R6.4 distribution contains client libs for NT.
The main diff is that NT is win32 based and UNIX isn't.
No. NT is not Win32. NT is built up like a mainframe operating system (eg. OS/390), it has a largely undocumented kernel which hosts some different subsystems that actually run userspace programs. NT has many such subsystems - Win32 is only one, the others are DOS, Win16 ( ok, they share one subsystem ), OS/2 ( yes, NT can run command line OS/2 apps, so installing Warp4 from NT is much easier than from Win9x since the OS/2 program that writes the bootdisks runs under NT ) and a more or less crippled POSIX subsystem with a few UNIX tools you van download from microsoft when you manage to find the package (rather painful). Funny enough: the POSIX subsystem sees both, long and 8.3 filenames with the 8.3 names as symlinks to the long ones :-)
You can. Ever tried Control Panel / Devices ? You can load and unload device drivers at runtime ( for the kernel they are just special services... ) but unfortunately most 3rd party device drivers ( which arent ? :-( ) don't support that. But the API exists...
You run into problems with directory structures, different styles of terminal handling, threads, some parts of IPC, and the sys admin tools for managing hardware.
But everyone has fork(), exec(), sockets, select(), etc. Posix and ANSI C keep things pretty generic.
Someone who programs for AIX can do HP-UX without much trouble. Much easier than going from AIX to VMS,Windows, or NT.
The exact quote is "Unix, by contrast, is not so much a product as it is a painstakingly compiled oral history of the hacker subculture. It is our Gilgamesh epic." which can be found on page 88 of Neal Stephenson's IN THE BEGINNING ... WAS THE COMMAND LINE
There's a standard called POSIX which defines just what the core of UNIX is, including the C library, file handling, the sockets interface, that sort of thing. Most programs are portable - and autoconf smooths over the differences where they matter. Just ask the GNU people how they make all the GNU tools portable (they aren't just for Linux!)
On a different note, UNIX has a "philosophy": everything is a file, programs are small components connected with pipes, configuration information is stored in readable editable text files, the shell is programmable, etc.
My Linux machine claims "POSIX conformance testing by UNIFIX" when it boots, and I think it's had this for a few years now.
As for binary compatibility, this gets less important all the time as more people use platform-independant languages like Perl, Tcl and Java. And it doesn't matter about binary compatibility if you've got Open Source.
Transmeta have technology which basically decompiles programs for the x86 architecture and recompiles it for their own processor, dynamically, while it's running. Sooner or later, if people want binary compatibility, someone's going to write a good open-source decompiler.
I'd like to see something like WINE for drivers, actually - use windows drivers in a linux system, for all those noname NDA-ridden devices.
- A clearly defined kernel/user space interface
- A set of system calls --- handled by the kernel
- An API which relies on fork() to spawn new processes
- Mountable and unmountable filesystems
- Ownership and Group Associations for processes, files and some other resources (octal modes for files and directories)
- SUID and SGID meta data on some files as a way to delegate privilege across security contexts
- Abstraction of most devices (including established network sockets) as "files"
That's just a start. No repackaging of NT will really make it into "UNIX" because there are several mechanisms on this list that it implements in a fundamentally different way.If you want to "make" a *nix Windows, where will you find the source code ?
./configure and make are the best friends of an unix/linux user.
*nix is liked by programers,as it has a *good* compiler within.
Found a bug in the kernel ? You can modify it by yourselves.
Never saw anything like this in Microsoft's products.
----------------
----------------
If Internet is Freedom, Linux is Democraty
In my opinion, the clear and robust process model, which no other OS has ever been able to implement as well, is the major factor. Along with that, the file model - how everything has a polymorphic interface based on file descriptors - very cool, makes programming very simple. IPC is great - many forms to choose from, very simple to use, especially pipes. I guess the common thread in all these aspects is simplicity - it is really amazing how UNIX systems can abstract such complex functionality into such simple APIs - I have never worked with another OS capable of such a feat. Today's models tend to be overarchitected, but not UNIX. The architecture is simple and robust, yet modular and interchangeable enough to stand the test of time. It's amazing how a 30+ year old operating system can still power most of the computers on the Internet and the WWW, which is what we consider today to be the most state of the art area of computer software. Whether it's BSD, SVRx, Linux, or any other member of the UNIX family, it still shares these fundamentals which make it 'UNIX.'
By the way, well written software is inherently portable, especially among UNIX family operating systems. There is very little work to do if the code is written right, to use portable APIs, data types, etc. Conceptually, UNIX operating systems are all quite similar, so if you stick to portable tactics and take advantage of these simple concepts, you will have no problem porting code. Especially today, when you can even standardize development tools (using GNU tools) across any platform, that really makes life easy.
Mmmmmm...UNIX with a registry.
- unified name space starting at "/", almost everything accessable through the file system
- unified socket/file/pipe space, they are all files, none of this handle crap
- true tty interface, X is not UNIX but to be UNIX you need a real tty, NT definitly fails hard here
- true posix signal handling, the ability to send a process a SIGSTOP and have it
... stop! try that on NT - stuff is put where it should be, such at the kernel file cache, an application shouldn't have to deal with it
- reliable filesystem, under UNIX your file system is trustworthy, under windows you have to be prepared at any time for it to die (such as smb shares do all the time)
- real filesystem, true symlinks (not files that end in
.lnk for christs sake!), hard linking, link -> inode genericy (ever wonder why windows was so much faster at recursive directory tree spanning? it is because the equivilent to readdir() tells it if it is a directory or not, no stat() needed, sure speed is nice but you loose the power and flexability of a generic link, BeOS handles this problem very nicly but being smart about creating files) - based on C, C is the common language of UNIX, like it or not
I would say that you could live without hard links (like BeOS does) but you need symlinks.I am not saying that BeOS is a UNIX, it isn't but it has some of the criteria (and some other cool stuff that I wish all unicies had)
windows NT/2000/10000 is not UNIX and never will be.
Angus.
A/UX, on the other hand, was a true Unix OS at the core with the "Macintosh" shell running on top of it. I really liked A/UX. Whatever happened to it? When did Apple officially abandon it?
Unix.
Linux.
Ultrix.
Irix.
Miltics. (variant spelling, but has the same 'x' sound)
Xenix.
even A/UX.
Because the following have no 'x' sound, they are mere Unix wannabees or early protozoan forms thereof, and not True Unix Clones at all.
Windows NT.
SunOS/Solaris.
BSD/NetBSD/FreeBSD.
NT qualifies under UNIX98 branding as a Unix system when running the compatibility overlay previously known as Interix/OpenNT. Covered in this ZDNet article. MVS has also qualified for Unix branding, IIRC.
Not that I think of NT as Unix.
What part of "Gestalt" don't you understand?
Scope out Kuro5hin
What part of "gestalt" don't you understand?
Formally speaking, what makes a UNIX system is adhering to the spec which defines UNIX.
;)
A draft of this is available online and makes a handy reference.
The Single UNIX Specification covers not only the library and system call interfaces, but also the shell commands and utilities, including the command language formerly known as Bourne.
Of course, what we actually understand as UNIX is deeper; one cannot understand what UNIX is outside of the surrounding computing culture.
Yup. I've got one. Hardware is an 80186-based system (more embedded computer) with some kind of weird-ass token ring network. I contacted QNX for information about these systems, as I have done with Unisys but neither was able to help. Is there anyone here with hardware information on those old Unisys ICON computers? I have a few I'd like to play with...
These I believe were ICON 2's (80186 computer, Arcnet-type network, diskless. Color screens with blue background.
The teachers watched us *very* closely with those things. I remember getting in shit for trying to get to a prompt...
As for making WIndows NT into a Unix, it's already been done; for a while it was being sold as Open NT. Essentially, Windows NT has the capabilityto have different subsystems; the 16 bit Windows 3.1 compatability stuff is one, the Win32 level another. By adding a complete POISX subsystem, Windows NT can be considered Unix. Bill Gates was once quoted "In some ways, NT is a Unix". For more on the history of Unix, I recommend the book A Quarter Century of Unix by Peter Salus, the USENIX bookworm. It has an excellent explanation of the geneology of Unix and Unix-alike systems.
--Gus
1.The file system interface. By this, I mean inodes, ugo/rwx permissions, and a single hierarchy rooted at "/".
A number of non-UNIX OSes have borrowed this paradigm (INMOS's Helios and Be's BeOS are two examples; many real-time OSes also borrow from UNIX here).
2.There is one user (root) that has full access to the machine; all other users are limited to a small "sandbox"
Some secure unices eliminate the omnipotent root user and compartmentalise privileges further.
Other indicators of an operating system's UNIXness would be:
The way I recognize if something is Unix, is through its boot sequence. If I can see the familiar, kernel, init, Sys V, etc., then I feel right at home. Granted the GNU utilities can be added to NT, but the low level interface of NT is just plain different and looks like some green alien from outer space. Where is /dev, /etc? How do you easily change the services by writing to a text file? Can I pipe stuff around between devices and files? I just can't imagine NT as a Unix, except for a superficial shell and utilities.
Via its Interix purchase, Microsoft now has the technology to make Windows NT/2000 totally POSIX.1 and POSIX.2 compliant, complete with X Windows! A free alternative to that is Cygnus's Cygwin environment, which is a complete port of the GNU tools (POSIX.2), along with an API layer that translates POSIX.1 calls to Win32.
But just use a Windows NT box running Interix or Cygwin. It's obviously not Unix.
To be Unix, the following have to be true:
- POSIX has to be the best way to get something done on that system. If you have Interix or Cygwin installed on your Windows NT box, you still don't spend a whole lot of time trying to find a POSIX tool where an equivalent native Win32 tool exists.
- POSIX.1 and POSIX.2 don't cover issues like "changing a user's info in
/etc/passwd". Despite the lack of a standard, all Unixes work similarly in this regard. But even if a Unix-like user info mechanism was emulated on my Windows NT/Cygwin box, I would still use NT's User Manager, if only because Windows NT has user features that don't have an direct analogue under Unix.
These guidelines might seem unnecessarily exclusionary. But, just look at other OSes with POSIX layers. I've already shot down Windows NT with addons, so what about BeOS and MacOS X? Both of these are/will be POSIX.1 and POSIX.2 compliant. But like the WinNT/Interix combo, they fail both the guidelines above.In all these "POSIX-but-not-Unix" systems, the Unix functionality is secondary to the "native" functionality. Most of the time, there's another way to do something, a way that makes more sense on that system than the Unix way.
--
The definition of what a "UNIX" system is set by the Open Group because they own the trademark registration. There is a specification and certifcation process that goes well beyond the existence of a few shells and command line tools.
7 99
There are UNIX 95 and 98 specifications along with delineations between server and workstation class machines.
You can view version 2 of the specs on line at this URL:
http://www.opengroup.org/online-pubs?DOC=007908
API tables can be viewed here:
http://www.UNIX-systems.org/apis.html
They are useful for distinguishing between what is BSD, SVR4, POSIX, and modern UNIX.
If you read some of the specification docs, it states what C-language system calls must be implemented and draws the boundaries between what features must exist and what features are up to the discretion of the implementor.
Note that it is possible for systems that are not traditional UNIX to get the certification. I think DEC did this with OpenVMS. The Interix product also has this certification.
There is an effort to bring UNIX and POSIX closer together. Information can be found here:
http://www.opengroup.org/austin/
-- P.J.
The original character used to "[delete] the character to the left of the cursor" in UNIX was...
...'#'.
Yup, '#'. It was what Multics used, just as Multics used '@' to erase the line, and UNIX from Bell Labs followed in its footsteps, the fact that Multics largely ran the terminals in mode where echoing of characters was done by the terminal (in fact, as I remember, you didn't have a choice about it on at least the IBM 2741 Selectric-typewriter-based terminal; the special option to allow the host to turn off echoing worked, as I remember, by the terminal mechanically blocking the Selectric typeball from hitting the ribbon and the paper) but UNIX ran the terminals in a mode where echoing was done by the host nonwithstanding.
DEL (0x7F) was typically the interrupt character, to send a SIGINT to the currently running program; on CRTs, people may have chosen BACKSPACE (0x08) as an erase character - at least it would be echoed as a backspace, even if it didn't actually remove the character from the display, or work well if you were erasing a TAB character.
Some folks made the tty driver more like those in DEC's operating systems, where DEL erased the most recently typed character and either erased it from the screen on a CRT or echoed the erased characters inside backslashes on printing terminals, control-U erased the line (possibly erasing the entire line from the screen), and control-C was the interrupt character; BSD did so, and that tended to make DEL the erase character (even on Suns; as I remember, on Sun keyboards until the Type 4 keyboard, the big key on the top row sent DEL, not BACKSPACE; the Type 4 went more PC-like in what I remember being in part an attempt to make the PC users they hoped would pick up on the Sun386i happier).
So the basic cause of the backspace problem, in the sense of BACKSPACE (0x08) not being the standard erase character, was that the AT&T folks emulated Multics and the Berkeley folks emulated DEC. The problem of the big key on the top row of the main keyboard not erasing the previous character is a result of it sending (or, on workstations/PCs, not being interpreted as) DEL on some terminals. (Digital tended to make it send DEL on their terminals because that's what their OSes used as the erase character; I forget what other older terminals did, but some later terminals may have made it send BACKSPACE either because, well, that's where the backspace key goes on a typewriter or because that's where it goes on a PC. I guess the PC has it as a BACKSPACE key because the original IBM Personal Computer was made by a company that also made typewriters :-))
Nope. "One", i.e. Microsoft, didn't "port all the standard command line utilities to NT, clone one or two of the popular shells, set up the directory structure in the standard UNIX layout and call it Microsoft UNIX", they took V7 UNIX and ported it to various platforms and added the usual set of enhancements ("usual" in the sense that pretty much everybody with a version of UNIX they sold did so; that flavor of "embrace and extend" was hardly unique to Microsoft).
(...just in case anybody in the audience doesn't think Microsoft ever sold a Real AT&T-Derived UNIX. They most definitely did....)
I've heard the claim that it's VMS-derived, but I've not heard any evidence sufficient to make me believe that claim. At least some stuff is VMS-like internally (the I/O subsystem, according to the Inside Windows NT books, resembles the I/O subsystem described in VMS internals books), but that could be nothing more than the result of Dave Cutler being, I think, in charge of the development of both.
"3.x" was the first release of NT - 3.1, to be specific. I guess Microsoft wanted to give it version numbers that resembled the version numbers for Windows OT, so they started with 3.1 rather than 1.0.
Given that VMS wasn't "a true UNIX" (as in "had an API and a command-line interface that wasn't particularly like that of any UNIX"), I'd say it wouldn't.
If
then I'd consider it a UNIX.
OpenGroup has set up a standard called UNIX98:
http://www.opengroup.org/prods/xxm0.htm
Interestingly, Linux is not a fully compliant UNIX system as you might think.
It's a well-kept secret that the NT Executive has a single-rooted hierarchy, containing device nodes, named pipes, and filesystem roots.
Yes, but unlike Unix where Everything Is A File, in NT only some things are files. There are also various mysterious base system objects which you can apply an ACL to, but does not exist on the filesystem.
--
Business. Numbers. Money. People. Computer World.
I don't think that this is definitive of the 'spirit' of UNIX, but the idea of treating all things as files is a characteristic shared by all UNICES.
/etc/passwd is a file.
/dev/null is a file.
a socket is a file.
All things are interacted with in the same manner, and this consistent abstraction, along with a common API and tool set, are what makes it easier to go from one flavor to another.
I don't think any OS, except maybe MULTICS (don't know it) which is UNIXes daddy, did this before.
-- What you do today will cost you a day of your life.
posters have already answered the question about what a Unix really is (it has much to do with POSIX compliance) but I'm wondering something. From what I remember, either correctly or incorrectly, NT was based off of VMS. When MS decided to slap the GUI onto it around 3.x it became a good deal more like the NT of today. NT 3.51 was the first fully 32-bit MS platform IIRC. If I'm not having a neurological meltdown wouldn't this allow NT to trace its roots somewhere back to a true Unix? I'm not trying to advocate NT, I'm just wondering if I'm full of shite. A real server OS doesn't need a GUI. Speaking of which...would Mac OS X be considered a true Unix (I'm not sure if Darwin passes on the POSIX stuff or not)?
I'm a loner Dottie, a Rebel.
I mean, it's the differentiator between Unix systems and pretty much everything else....
Also, think of the user experience. For the most part, end users of a unix system experience the same behaviour. cd is cd is cd, cdup is cdup is cdup. cp, mv, vi/pico/emacs are all there, etc. etc. It's only on the back end that the Unices vary so widely. I've moved my old website from HPUX to Sun to Linux to OpenBSD, with others in between and the only major changes were due to differing security/CGI settings and the path to perl...
Returned Peace Corps IT Volunteer
Eunuchs are males who have select I/O ports reconfigured early in their development such that they may maintain a stable state throughout their lives and therefore be highly compliant as Opera components and supporting systems.
Non-eunuchs develop normally, but loose the ability to be Opera compliant (except at a very bass level). Furthermore, non-eunuchs gain the ability to really dick people over, as witnessed Feb. 17th.
Returned Peace Corps IT Volunteer
Isn't cygwin a certified UNIX? (For those who doesn't know - cygwin is a libc and POSIX lib set and set of traditional UNIX and GNU tools for Windows).
Anyway, I would say that a requerement for a UNIX is the two basic UNIX philosophies; pipes and the file tree. The previous being that everything is done in small programs linked to each other to do complicated tasks, and the latter being that all communication with the outer world is done through the filesystem through device files.
But if the latter is a criterion, most unices aren't unices - the network interfaces are rarely real device files.
Another aspect of UNIX may be that everything is done in human readable format - you rather patch and recompile a source file than you binary patch or relinks.
--The knowledge that you are an idiot, is what distinguishes you from one.
--The knowledge that you are an idiot, is what distinguishes you from one.
Anyone remember the ixemul Amiga shared library? Provided a pseudo-POSIXy layer (but.. er... lacking fork()...you could use vfork() though...) on top of AmigaOS (and later BeOS)
Pretty much all of the GNU tools, and X windows, that are commonly found in a base linux install were then compiled into a distro called GeekGadgets to run on top of the ixemul.library on top of AmigaOS...
A similar approach could, I suppose, be used on top of virtually anything.
It used to live at www.ninemoons.com/GG/
Choice of masters is not freedom.
Exactly.
And (Windows NT && cygwin && bash && grep) != Unix
My journal has hot
Uh, with the exception of grep, those aren't unix tools, they are GNU tools. And GNU's Not Unix :-) And Cygwin ain't a unix tool under any definition.
sh and csh *are* unix tools because one can count on them being installed by default on every unix. Ditto for vi.
A Government Is a Body of People, Usually Notably Ungoverned
with proper rights can call it unix. Unix is a trademark, I believe.
As to something being written for one unix being 'difficult' to port.. this is not really true. Most things these days port rather easily.
NT can surprise you. I once wrote a long, complicated shell script that would install and upgrade objects in databases. All our clients would use it. It used all kind of shell tricks, and tools like sed, awk and grep. It was developed on Solaris. Then I had to port it to HP. Which required some changed. (I remember that grep under Solaris had options not supported by HP's grep; but they both claimed to be POSIX compliant). That program was later ported to NT. It required one change: a different directory than /tmp was used as scratch place.
There can be a zillion reasons to hate NT (I would never use it myself). But lack of standard Unix tools isn't an appropriate reason - they have been ported.
-- Abigail
Wrong.
Had you used the GNU tools on Solaris and HP, you'd be better off for compatibility.
That was not an option. And even if it was, I'd prefered to use the out-of-the-box solution than to be forced to keep sources around for several years in the off chance someone might demand them.
-- Abigail
So, if Microsoft would start porting their software to Linux, does that mean Linux is no longer a Unix?
-- Abigail
stability can of course be achieved in other :-)
operating systems than Unix.
And a system does not have to be stable to
be called Unix.
It is just a common trait for most Unixes, that
they are very stable.
Userexperience isn't everything either.
It could be argued that MacOs X is a variant
of Unix, because of the kernel, and Posix-compatibility.
But the user experience would probably be very
different.
What makes Unix Unix, is probably conforming
to standards (Posix), and the basic architecture.
The philosophy ("everything is a file").
You could emulate the Unixinterface trough a sort
of virtual machine in Windows NT.
Windows NT would then feel like Unix, but it
really isn't. The virtualOS probably IS
>you mean apart from the fact that CE's kernel is based on NT's
;-)
Wrong. If I recall my history correctly, when faced with a new set of processors and a new type of system (in terms of memory hierarchies, I/O capabilities, etc.) MS tried two different approaches in parallel. One was to port NT, and one was to write a new OS originally called Pegasus. The latter approach won out.
I got this information from the intro of a book called Essential Windows CE Application Programming, by Robert Burdick. It may therefore not be totally authoritative, but it seems a little more believable than an unsubstantiated claim on Slashdot.
Slashdot - News for Herds. Stuff that Splatters.
I'm talking really old QNX here, atleast 10 years ago. There was only 1 system with hard drives, and that was the Icon 3, all the rest were diskless and mounted the Icon 3's drives as local via NFS I think, and each hard drive seemed to have a logical [x] number, and then nodes seemed to have an x number also, so you ended up with [logical drive]node:/path I *think*..
-- iCEBaLM
Yup. I've got one. Hardware is an 80186-based system (more embedded computer) with some kind of weird-ass token ring network.
:) Little did I know then that this was my first experience with unix...
The icons were the definitive network computer.. We had farms of them in our schools around here (belleville quinte area). There were 3 types, the Icon 1 was really old looking and clunky, the Icon 2 was newer looking but seemed to have the same hardware, and the Icon 3 was nothing but a (3|4)86 with a "Unisys Icon" sticker on it.
The Icon 3, running QNX, would serve the OS and apps to the other Icon 1 and 2's, which were diskless, on the network, but I remember it being a 10base2 network, not token ring...
I had great fun with these, I eventually found out how to get to shells, and I'd go into other students directories and check out their homework
Its interesting to note back then however that these early versions of QNX did NOT have a flat file system, they were segmented into logical drives, [1]1:/path if I remember correctly.
-- iCEBaLM
As much as I agree with you :-) I have some additions.
A Windows UI blitz-quiz:
- When do you press Ctrl-/ and when Ctrl-A to select all items in a list?
- How do you explain that to a *user*?
- What will happen to a file when you drag it from one folder to another?
- How do you explain that to a *user*?
...
- Multi-user, with different access permissions for each user. By contrast, you can log in as anything you want in Windows 98 and still have access to everything.
- Separate address spaces. Some simpler OSes provide separate threads all running in the same address space. Separate address spaces are really implied by the multi-user requirement.
- Monolithic kernel. The kernel is not only responsible for managing processes and IPC, but also the filesystem, scheduling, virtual memory, etc. These things are typically in "server" processes in a microkernel architecture.
- Priority-based scheduling, with priority boots for interactive processes. One of the distinguishing features of Unix when it was developed was that it was good at handling interactive applications by detecting their usage pattern and reducing their scheduling latency by boosting their priority.
- File semantics. The permission structure: read-write-execute for user, group, others. Reference counted deletion: delete a file while someone's using it, and they get to keep using it; the file disappears when they're done. Directory structure: single tree-shaped namespace (modulo hard-links) with devices mounted on certain branches. Symbolic links which act just like the actual file they name (as opposed to Windows shortcuts, which don't).
- Virtual memory. This is usually invisible to the user, so it wouldn't matter anyway. But unix also provides such things as mmap whose semantics would be very hard to duplicate without a real virtual memory system.
There are probably lots of things I have missed, but maybe that will get things rolling...--
Patrick Doyle
Patrick Doyle
I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
2) Linux is not Unix. It is a free Unix-type operating system.
Chris Hagar
"The price of freedom is eternal vigilance." - Thomas Jefferson
Sometimes there are reasons to give up a bit of stability and speed.
--
linuxisgood:~$ man woman
Restating the obvious since nineteen aught five.
Actually, under your definition, BeOS too is a UNIX. (The GUI can be removed as it is just a part of the app server.) I certainly doubt you would call BeOS a UNIX (you better not!) Actually, aside from the GUI part, even NT is a UNIX. I think there is a design thing, treating everything as a file, having a fairly non-modular system (Linux, modular, yea right)(Even a microkernel like MACH can fit this definition because they usually just have a big BSD system server.). In the end, its one of liniage. Is it mainly a derivation of a classical UNIX, or is it just influenced by UNIX design?
A deep unwavering belief is a sure sign you're missing something...
Actually that close of a connection between the OS and the language does not "feel right." for a lot of people (I'd go so far as to say the majority.) Anything that tightly restricts the evolution, expandibility, and scope of two systems by tying them to each other does not "feel right."
A deep unwavering belief is a sure sign you're missing something...
This has been done. Trust me, it doesn't make NT feel very much like Unix -- it just makes it a nicer place to work (at least, for someone familiar with the Unix command line).
For me, there are two main areas that distinguish "Unixness":
- The file system interface. By this, I mean inodes, ugo/rwx permissions, and a single hierarchy rooted at "/".
- There is one user (root) that has full access to the machine; all other users are limited to a small "sandbox"
Note that no simple user-level gloss that's going to make an NT box have these features.-y
150 Opening BINARY mode data connection for slashdot.sig (129323052 bytes).
Well, the properties of hardware have increased runtime efficiency to high levels (compare 486 to Pentium III). Therefore most people won't notice the difference. The problem was with the old and slower machines, where the speed difference was noticable, not he newfangled boxen. I can still see the difference on my box (P200 MMX)
I can throw myself at the ground, and miss.
remember my first time on Unix, I was in grade 9 in high school. The OS was actually called QNX on a 8086 machine called the Icon that was made here in Canada.
:) )
The Icons ran an early QNX???? All I remember about them is that my elementary schools had 3 Icon boxes and that I was *really* frustrated in grade 7 because the BASIC interpreter was incompatible with Commodore 64 BASIC (I was pretty naive back then
Dana
>It was developed on Solaris. Then I had to port >it to HP. Which required some changed. (I >remember that grep under Solaris had options not >supported by HP's grep; but they both claimed to >be POSIX compliant).
POSIX compliancy has nothing to do with all utilities being the same. They are compliant about a sub-set of options. They share their own features. What's your point?
>I suppose if M$ was to actually provide a near
> full implementation of a unix shell,
> filesystem, and command line utilities, it
> could be argued that NT would be, indeed, a >UNIX.
Yes, by people who don't understand the difference between UNIX(tm) and Unix-like, along with the fundamentals of what a Unix like OS does.
Actually it's more correct to say that uid 0 = power. /etc/passwd and rename the uid 0 account to god or whatever and get equivelent actions.
You can easily change a single field location in
Slashdot social engineering at it's finest
The unix philosophy has allowed me to do things that no one has ever really been able to do in NT without breaking out Viual C++. I mean seriously; things like sed, awk, grep, emacs and other things are god sends for being able to do almost anything you want.
Linux has been able to allow me to use shitty hardware that NT just plain wouldn't run on (well ok the new versions of NT I had a CD of NT 3.1 and it worked on my machine but I took it off 2 hours later). A GUI interface is nice but it dosn't make up for the lack of efficiency and power that make NT evil.
Slashdot social engineering at it's finest
You know this is almost really funny. People have always said that native code is much faster and that there are certain advantages to it. Why would everyone start using Tcl, perl, and Java all of a sudden? All the things that I do with so called "platform independent" languages makes the thing dog slow. Case in point gimp. I can tell a big difference between native executables and perl on my system. When I do something perl related that is even built in for the gimp takes rougly 2-3 minutes of hd grinding. Also things like dpkg which also relies heavily on perl takes up a lot of time as well. Tcl is in the same boat. Java is not exactly something that I use on a regular basis nor are there many apps for linux that actually have java as their main code included in almost any distribution at all. All java stuff I have seen runs dog slow and this is stuff that is supposed to be highly optimized.
I think that C++ is closest to what you could consider to be "crows platform" than almost anything: there is a ANSI standard, and a compiler for almost any system. I routinely write and run programs between win32 and linux all the time and never see a problem. Plus my code is much faster.
Slashdot social engineering at it's finest
the same design elements. Sure, you can
stretch Windows so that it superficially
resembles Unix, but you cannot recreate
the startling formal elegance of a unix
system just by ading ls.exe, grep.exe,
and awk.exe to your c:\winnt\system32
directory.
The thing about Unix that is most clear,
that sets it apart from other OS's, is
its well thought-out design. It was
noticably not designed so that any
newbie could use it. I'm sure that Microsoft
came to realize the high cost of 'newbie usability'
when it had to resort to releasing another
successor to Win98 instead of merging the
9x and NT OS lines with the release of 2000.
Amazing magic tricks
NTFS for Win2k does has symlinks indeed seems that Microsoft claims that they have invented it...
Could one port all the standard command line utilities to NT, clone one or two of the popular shells, set up the directory structure in the standard UNIX layout and call it Microsoft UNIX?"
;-)
Didn't one already do that and it was called "Xenix"?
Okay folks - let's get started on a good Xenix thread now...
-- Win2k: "It's not so much that it's only 65,000 bugs, it's just that they stopped at 65,535 to prevent an overflow."
remember my first time on Unix, I was in grade 9 in high school. The OS was actually called QNX on a 8086 machine called the Icon that was made here in Canada.
Am I senile or maybe mixing this up with something else, but is this not the same, but updated QNX that sits on a flash card on the i-opener made by Netappliance...
Interesting how OSs hang on over time...
-- Win2k: "It's not so much that it's only 65,000 bugs, it's just that they stopped at 65,535 to prevent an overflow."
Actually, NT consists of two parts: The NTOS kernel, which is much like a traditional Unix system and the Win32 subsystem (which is not Win9x-compatible, Win9x is compatible with Win32 from NT). The kernel has some interesting features that go beyond what a traditional Unix system can do.
However, it's not Unix. The native NT API is compatible to nothing and certainly not anything near POSIX-compliance.
Yes, NT has all features that make a POSIX-subsystem possible. But most of them are unused.
Claus
Provided you are working high level, cross-platform APIs ( which should behave the same on all UNIXs ), and you don't try to code to several different APIs [1] then I don't see why it should be so hard. There are differences in the way different UNIXs handle many things [2] but there are toolkits like Qt and glib that take care of the low-level portability stuff and provide their own data-types and functions.
Just for fun, I grepped for #ifdef directives in krn and there were hardly any ( and the ones I saw weren't about portability issues ).
[1] this is why the vim code is so complex -- they are simoultaneously coding for motif, gtk, athena, ncurses, and win32 without using any high level portability tools ( because there's none that are portable across all target platforms ).
[2] An example -- many C++ compilers still have either nonfunctional or incomplete STL implementations. Another example -- some UNIXs ship with different DBMs ( ndbm,dbm,gdbm ).
Well, not totally, but there are so many errors and misconceptions in the question I'm not sure how to answer.
Since there are now so many different flavors of UNIX out there (Linux, Free BSD, AIX, Solaris, AT&T UNIX, etc...) what do they all have in common that lets these all be called UNIX? Programs written for one flavor of UNIX typically cannot be ported to another without considerable effort.
Wrong. Well-written programs can be easily ported from one unix to another. The problem is that many programs are written by people who have a relatively poor understanding of how to write portable code, and no idea how to distinguish the C standard, the POSIX standard, stuff that's not POSIX but almost universally available on Unix and Unix-like systems, and stuff that is specific to a particular implementation.
The features offered by the different implementations vary widely: some are more secure than others, some cluster better than others, some offer journaling file systems, some are more robust.
None of which has anything to with writing portable code. For example, the C interface to the file system (fopen(), fprintf()) and posix interface (open(), read(), write()) make the underlying file system transparent. Of course, if you're writing a tool to manage a cluster, it's going to be implementation specific.
The differences between the different kinds of UNIX seem to be as great as the differences between any particular implementation and other OSs.
Sorry, you've obviously never actually had to write programs that worked on a wide variety of systems. I used to work on a large product that ran on a variety of Unix systems, OpenVMS, and NT. IIRC, the only difference between the Unices was different options to mmap() and dealing with an old version of SunOS that didn't implement POSIX signals quite correctly. (Of course, there were many differences to the system headers, but those are supplied by the vendor, and are there precisely so that you don't have to worry about internal differences.) FWIW, the OpenVMS version was pretty easy, because even the the system calls were totally different, most of the concepts mapped pretty well. NT, on the otherhand, was a complete pain in the ass.
Now obviously, one *can* write code that is specific to a particular Unix implementation. And noone will argue that at the admin level, things are aren't chaos.
Could one port all the standard command line utilities to NT, clone one or two of the popular shells, set up the directory structure in the standard UNIX layout and call it Microsoft UNIX?
No, because you haven't changed the syscall interface. Cygwin comes a lot closer, but was also a lot more work than what you've proposed.
You can find many of the popular unix tools for windows at http://www.gnusoftware.com.
...
You'll find bash, grep, cygwin, emacs
They've got some nice things there, look at geoshell's screenshots, you wouldn't believe it's windows.
Anything that tightly restricts the evolution, expandibility, and scope of two systems by tying them to each other does not "feel right."
You are completely correct in that statement, but it has nothing to do with C or Unix. The evolution, expandibility, and scope of the two systems in question has been in no way restricted. Unix has continued to expand and evolve well beyond the original scope of the C language as it eventually was defined in the ANSI standard. Likewise, C is considered the most portable language ever written, with implementations for just about every platform that has a compiler, and it has continued to evolve and be expanded past the original Unix API. It has even been expanded to include object support in C++, which was in turn used to write BeOS, a fact I'm sure you are no doubt aware of, given your handle.
So, if you have a legitimate complaint, by all means voice it, but otherwise, keep the FUD to yourself, K?
(Note to moderators: Before moderating this down as "Flamebait", check out this guy's posting history. He makes rabid Linux supporters seem tame by comparison.)
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
Who gives a rip about the command line utilities - just make NT as stable as Unix, and you can call it Grandma Pearl's Home-Brewed Operating System with Extra Apples, for all I care!
Seriously, while you're at it, you should ask exactly what Windows is. It's in the same boat - there's several flavors of a single OS that really don't have much in common. Windows CE and Windows NT don't share much except a start button, when it comes down to brass tacks.
What's your damage, Heather?
This is just right out of the top of my memory,
so I could be mistaken, but as far as I remember
you have to pay someone (The Open Group?)
for the right to call something Unix.
It involves certification.
I've heard that it needs to have evolved from
the UNIX-codebase, but this doesn't make very
much sense, as it would be impossible to
write a new Unix from scratch, but still conforming to the Posix-standards, and being
source-compatible with the tradional Unix-variants.
Perhaps someone can enlighten me here, but
would it be possible to pay that organization
for certification of Linux?
Not that I think it would matter, because Linux
is now bigger than Unix anyway, and it seems very
important for other Unixvariants to include some
sort of compatibility layer to be able to run
Linuxbinaries.
I did think it mattered 2 years ago though.
Recently having ported software between Linux, FreeBSD and NT, I have developed my own idea of what a ``UNIX'' is. It's simplicity most of all. Everything is a file, and most calls that work on file descriptors work on _all_ file descriptors. You can make a select() call on a file, a pipe, and a socket. This is impossible on NT, because files are HANDLEs, sockets are SOCKETs, HANDLEs from anonymous pipes cannot be used for select() like calls (only named pipes there). Why this diversity in the API ?
Being a long time Unix and Windows developer, I don't see any advantage to the developer to having one ioctl() that works with all devices. While it makes sense on the kernel (one api to export), it is total nonsense for the end developer.
type 'man ioctl' : There is absolute no useful information given. It's a generic function and the developer must explictly know what kind of device he is talking to and somehow find the right parameter values to pass in to make it do what he wants. ioctl documentation can never be complete.
I would argue that it's better to have more functions that are strongly typed and can be documented seperately. If the developer want's abstration, let him build it into his application - don't force it on them.
-- Virtual Windows Project
But don't just go by my word. Go spend a few K on a Windows NT server licence, hardware, and documentation, then play with it. You'll know it's Windows because it feels "right," and because it flashes its monitor a very pretty sky blue to let you know it wants your attention. Surveys say that 60% of everyone's favourite colour is blue.
---
--
Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
Money__ asks: "Since there are now so many different flavors of Windows out there (1.0, 3.1, 95, 98, NT, 2K , etc...) what do they all have in common that lets these all be called Windows? Programs written for one flavor of Windows typically cannot be ported to another without considerable effort. The features offered by the different implementations vary widely: some are more secure than others, some cluster better than others, some offer journaling file systems, some are more robust. The differences between the different kinds of Windows seem to be as great as the differences between any particular implementation and other OSs. Could one port all the standard GUI utilities to GNOME, clone one or two of the popular GUI features, set up the directory structure in the standard Windows layout and call it WINDOWS/UNIX?"
Hmmmmmm
_________________________
I suppose if M$ was to actually provide a near full implementation of a unix shell, filesystem, and command line utilities, it could be argued that NT would be, indeed, a UNIX. The one thing I wonder about is the kernel. UNIX kernels are just that.. UNIX kernels. I'm no kernel hacker by any means, but seems to me for a kernel to be a UNIX kernel, it has to have a certain structure and interface, which makes it a UNIX kernel. SO in that respect, NT could never really be a UNIX.
...though some (including Microsoft) have tried. It may pass POSIX compliance tests, it may run UNIX software, but there are certain differences that will be difficult or impossible to overcome.
First is the security issue. Unix has the concept of a superuser (root). NT has role-based security. "Administrator" is not special other than having more rights than user accounts, including the right to manager user rights.
The key differences are that an NT Administrator cannot open any NTFS file regardless of modes, as a Unix superuser can. Also the Administrator account cannot arbitrarily pose as other users. There is no working setuid() call. (POSIX requires setuid to exist, but it doesn't have to work... it may return EPERM unconditionally. That is just what Microsoft's POSIX subsystem does.)
Second is the executable file format. Most modern OSes have standardized on ELF. NT is one of the holdouts, still using PE (a variant of COFF). Shared libraries on NT (i.e. DLLs) are loaded and relocated by the OS, not in user space as ELF shared objects are. And DLLs have annoying limitations, like requiring data symbols to be imported/exported.
Third, file semantics on NT are tailored for Win32. Ever try to remove/rename a NTFS file while it is open in some process? You can't. On Unix, linking and unlinking of open files is permitted, and many utilities depend on that behavior.
While it may be possible to certify NT as "POSIX-compliant" (or even get Unix branding, I don't know), it will never work truly like a Unix system. There are just too many core differences.
The philosophy is a result of more than twenty years of software development and has grown from the UNIX community
instead of being enforced upon it. It is a defacto-style of software development. The nine major tenets of the UNIX
Philosophy are:
1.small is beautiful
2.make each program do one thing well
3.build a prototype as soon as possible
4.choose portability over efficiency
5.store numerical data in flat files
6.use software leverage to your advantage
7.use shell scripts to increase leverage and portability
8.avoid captive user interfaces
9.make every program a filter
The Ten Lesser Tenets
1.allow the user to tailor the environment
2.make operating system kernels small and lightweight
3.use lower case and keep it short
4.save trees
5.silence is golden
6.think parallel
7.the sum of the parts if greater than the whole
8.look for the ninety percent solution
9.worse is better
10.think hierarchically
I can't believe I didn't see this while scanning the comments--maybe I missed it. A huge part of UNIX is the filesystem. The UNIX filesystem has got to be among the most beautiful device abstraction layers ever built. I don't need to know how many drives are in the machine--or I can add extra drives, change the physical location of data, and keep the same paths and filenames.
/dev/ram and make filesystems in files on my filesystem. Then there are links, especially symlinks. And networked filesystem types that look local to the user (slow with lots of latency, and some race conditions, but local). You can even access the kernel via the filesystem.
I can access my printer as a file, my serial ports as a file, my memory as a file. Heck, I can mkfs
NTFS and VFAT don't have symlinks and the hardware is up-front and ugly (ever try moving an app from C: to D:?). I'm sure there's a lot more, but these things alone are horrible. What happened to device abstraction, that I have to track my hardware when naming files?
-Paul Komarek
Hmmm, you ask a tough question, but here's a go at an answer.
:)) playing field, made of lots of tools that easily allow the user to interact with files, and hence, the computer. Since this is the layer a user spends most of his or her time with, this is what people have come to identify when they say UNIX.
UNIX encompasses more than just a set of API's, and user shells. UNIX has more to do with an OS design philosiphy, than with any particular implimentation. At the outset, UNIX strives to provide an environment made of small utilities that can easily be used together to accomplish a task. This is true from the kernel design, to the typical C API's, out to the actual user environment. From a kernel perspective, most UNIX's have a virtual file system, virtual memory system, and a process swapper. There is much more than this, but these are the three main components. By utilizing features of each of these basic parts, it is possible to implement inter process communication(Pipes, shared memory, etc), security(mostly via the VFS, since most everything in UNIX is seen as a file), and Time sharing(via the process swapper).
The next layer would be the C libraries that most UNIX's come with. While not directly tied to the OS itself, most C libraries will heavily reflect the OS they live on, since they are the common gateway to make sys calls, the main way to call system functions. It is with system calls that a program can interact with files, and access system resources. The OS will handle the scheduling and access control from behind the scenes. The C library is a way to ask for resources.
But, what most people think of when they think of UNIX, is the user environment. Unfortunately, this is missleading. Everything from Windows to OpenVMS, to OS/390 MVS can be made to look and smell like UNIX, but that doesn't make them UNIX.
What the user sees is a simplified(if you can believe that grep, sed, and awk, ad nauseam are simple
The moral of the story is that UNIX really is a "handle" that is used to encompass an approach to OS design. UNIX is a way of viewing how things should be shared, and managed. That is why UNIX runs on almost every platform. UNIX is really a memme that dictates how system resources are controlled, and not one of how a system should be architected from a hardware perspective. UNIX is a way for multiple users to access a single system, in quasi-realtime , interactive fashion. It lays out such things as scheduling, Access Control architecture, and resource presentation. If an OS follows this design philosophy, than that makes it more a UNIX, than what it's user shells look like.
That is why Linux is a UNIX, without having any blessed UNIX C code in it. It's an architecture built on the UNIX philosophy. Just remember to never let a purist hear you call Linux UNIX though. That, unfortunately, is a matter of religion, best left for another discussion.
-Master Switch, one more element in the machine
IMHO the biggest thing all flavors of Unix have in common is the "everything is a file" design. So the answer to your question about porting all sorts of things to NT and calling it MS Unix is no. Everything in NT is an object.
I've been working with Unix now for 20+ years. I've worked in the kernels of Cray Super Computers and been driven batty by a BSDish system running on a no name box for a network logger. The equipment has ranged from a 386 that took 5 minutes to boot Linux to SGI super computer cluster. And there are a few things that they all had in common. These common "features" are, in my not so humble opinion, what makes something "Unix".
For that matter, the user can't tell the difference between an IDE cdrom and a SCSI cdrom.
While API is important, and I wouldn't want to give up my X windows, or bash/tcsh I've run on Unix boxes where those are different or missing. In some cases my tools of choice were missing and I had to bootstrap 'gcc' into place and from there I added the extra tools (sed/awk/tcsh/bash) that made my life comfortable.
Unix is a style. A way of solving problems. We don't think in terms of "monolithic (Office)" programs that do almost what we want, but instead we think in terms of solving a piece of the problem, chipping away till there is nothing left. And in the process we find that we have a dozen new tools that people will use in ways we never considered.
PERL was never intended to be a webserver, but the tool is so powerful that it now is. That and much more. Every tool that Unix has is used in ways that its creator never intended. Microsoft Office will never be more than what it is, What You See Is ALL You Get.
I leave you with this quote then: "Like a precious metal, UNIX is being beaten and molded into whatever forms are most pleasing to the owners." -- Lee A Butler
What is Linux, then? Well, it's "unix-like", despite the FAQ's claim that this term is a trademark violation. Personally, I'm sceptical of the continued validity of the "UNIX" mark (once something enters common usage, it can't be a trademark), but there've been no court challenges, so it stands.
--
Others have already answered the question with reference to POSIX, but I just thought I'd thow in my two Euro as well...
Recently having ported software between Linux, FreeBSD and NT, I have developed my own idea of what a ``UNIX'' is. It's simplicity most of all. Everything is a file, and most calls that work on file descriptors work on _all_ file descriptors. You can make a select() call on a file, a pipe, and a socket. This is impossible on NT, because files are HANDLEs, sockets are SOCKETs, HANDLEs from anonymous pipes cannot be used for select() like calls (only named pipes there). Why this diversity in the API ?
Running a daemon simply requires you to start up the executable with an "&" if it doesn't support forking to background by itself. I have a routine that does this on UNIX as well as on NT. The UNIX code is perhaps 5-10 lines, and the NT code is roughly 150. On NT you must specifically talk to the service control manager, ask it to ask your program to ask it to ask the program to do all kinds of strange things. Horrible, and inflexible to the extreme.
The system calls on UNIX take a minimum necessary number of arguments, and perform some action fairly much as you would expect it to. An average system call on UNIX probably has, say, 3-4 arguments. I haven't counted the average on NT, but I'd guess it's 6-7 arguments there. This is not because NT is more advanced, but because IMO the design of Win32 is flawed.
As an example, to start up a program on UNIX, you'll write something like (dumbed down):
if(!fork())
exec("my_program", arguments, environment)
Two system calls that perform a very clear and simple task each, taking 0 and 3 arguments.
The similar code on NT is something along the lines of a call to CreateProcess() which takes 10 (ten!) arguments. These arguments are: program name, command line and environment as on UNIX. Besides, you'll have to pass arguments such as current directory, process security attributes, thread security attributes, filehandle inheritance flag, creation flags, etc. etc. My favorite is that you have to pass an argument specifying the Window Size (!!) of your new process... I nearly pissed my pants when I saw that.
UNIX system calls are fairly consistent. Usually they will return either a 0 pointer, or the integer -1, if the call fails (depending on whether the call returns a pointer or an integer). On NT the calls return either INVALID_PROCESS_HANDLE, INVALID_FILE_HANDLE, INVALID_SOCKET, FALSE, 0, -1, or whatever the failure-return-code-of-the-day was when some call was last rewritten. Error codes can be retrieved from errno on UNIX, while on NT they come from GetLastError() usually (with some exceptions I've happily forgotten about), unless of course it was a socket call that failed, in which case the errorcode can be retrieved from WSAGetLastError(). Sigh.
The point I'm trying to make here is, that to me UNIX stands for a _fairly_ consistent and well designed API. Win32 is neither well designed nor consistent, and porting command line utilities to NT is not going to make it UNIX, not by a long shot.
The basic cause of the backspace problem is a different ASCII code for the key in DEC terminals (where it's 0x7F) and others such as Sun systems (where it's 0x08). Unix is configurable (using the stty command) to deal with either, so that it didn't really matter too much.
A modern Unix-like[1] system is a blend of many different threads of development, with both Sun and DEC well represented. So, the Linux console follows the DEC convention, while the xterm's in most distributions follow Sun (Debian is the major exception here).
So, in a system with the backspace problem, you have many factors coming together:
And, no from-the-ground-up reconsideration of the system, during which the backspace problem would certainly be fixed.
If that doesn't define Unix, I'm not sure what does.
[1] Yes, I know it's an "abuse of the trademark." The Open Group can stuff it.
LILO boot: linux init=/usr/bin/emacs
You know it's Unix when the backspace key often performs an action other than deleting the character to the left of the cursor.
When (actually if) this problem is fixed, the system will have changed so much from Unix that it probably wouldn't be recognizable to Thompson and Kernighan.
LILO boot: linux init=/usr/bin/emacs
A unix system is like an orgasm. When you have one, you'll know it.
--
Why can't I moderate something "Wrong" or at least "Grossly Misinformed"?
I think the most important thing to realize is that no single thing defines what makes Unix be Unix instead of Just Another Operating System. Sure, there is POSIX, but POSIX doesn't cover everything. Sure, there are the "standard" Unix shell tools, but those can be ported. You can't nail Unix down in any easy definition. Yet, Unix inevitably feels like The Right Thing to those who know it. If you like cliches, Unix reminds me of the old line "I don't know art, but I know what I like."
/, and cannot function without it. It is more then not being able to do anything useful without the programs in the root; it is the fact that the Unix filesystem is a large part of the Unix API.
/bin, configuration data in /etc, devices in /dev, temporary files in /tmp, "user files" in /usr. None of these are mandated by the kernel or the utilities, but they are definitely old friends to a Unix hacker like me.
That being said, I'd like to touch upon a few things that make Unix what it is:
The design of Unix is driven by synthesis. You don't create a specific tool to solve a particular problem; you break it down into smaller, general problems and write general tools to solve them. You then combine those tools to solve the original problem -- but you can continue using them afterwards.
This leads us to The Unix Philosophy. Anything you call "Unix" or "Unix-like" will adhere to it. However, the Unix philosophy is a set of design goals, not a system definition. Something can follow those goals without being Unix. So that doesn't cover everything.
Let's start with the filesystem. As others have said, a key element of Unix is the single filesystem. Unix must have a root filesystem mounted at
Additional filesystems are spliced into this single presentation, not mounted as separate trees. System hardware is abstracted and presented using file system entries. These are things that cannot be done if your OS doesn't support them. Then you have the organization of the files in the Unix filesystem. Programs in
Unix processes also behave in a certain way. Process spawn overhead is low and context switching is fast. Signals and exit codes are used for IPC. fork() and exec() are separate system calls.
Unix treats text as data and data as text. Configuration files are generally human-readable. You can "cat" a binary file without the OS doing end-of-line manipulations. Any particular meaning of a character (^D for EOF, e.g.) comes from the terminal driver, not the I/O mechanism.
Lastly, Unix was implemented in C, and C was designed to implement Unix. Contrast this with other OSes, where the language you're programming in and the system library are generally completely separate things. This synthesis (to borrow from the Mazda ad campaign) "just feels right".
While I'm on the subject, I'd like to address two things that Unix explicitly isn't:
Unix is not a trademark. I'm sure The Open Group doesn't agree with me, but Unix was around before they were, and will continue to be around long after they are gone. They control who can legally put "UNIX" on their product, but that is a matter of layers and money, of which Unix cares about neither.
Unix is not a particular source implementation. There are very Unix-ish things which have not one line of AT&T or BSD code in them, and there are things totally not Unix which contain BSD code. MS-Windows is one of them.
I forget who said it, but if you're looking for one line answers, then this fits best:
"Unix isn't so much an operating system as it is a painstakingly compiled oral history of the hacker culture."
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
- POSIX compliant system API
- Availability of traditional UNIX shell tools
- Ability to run without a windowing system
- Modular design
The question is like asking "What's a car?" BMW, Mercedes, Honda, GM and lots of others fit the mold without there being a 'definitive' car. I think the same applies to UNIX: there's lots of variants, based on the same basic (and time-tested) design. I've done some software porting across different UNIX systems and in my opinion, the differences between these systems were blown out of proportion by the marketing machine from Redmond (and others). There are differnces, but they're manageableAlso, while this is not as true anymore as it was a few years ago, I would say that an important part of the UNIX philosophy is the fact that most configuration parameters (and other useful stuff) are stored in plain text files (yes, Solaris and AIX don't do this anymore, but the basic idea is still there). You could port all the shell utilities to NT only to find out that they're basically useless as everything is stored in some binary file that you can't really process with your trusted text tools. ASCII is portable and accessible; a fact that UNIX really drives (or at least should drive) home ...
It's a well-kept secret that the NT Executive has a single-rooted hierarchy, containing device nodes, named pipes, and filesystem roots. It even supports mount points, sort of, via a concept called reparse points.
Of course none of this does us any good, because the Win32 subsystem does its best to hide whatever elegance lives in the NT kernel. You can get glimpses of it... for example, try opening the file \\.\PhysicalDrive0 for reading (don't write to it, that's your raw disk sectors!).
You get the feeling that NT could have been something better if they didn't have to make it compatible with Win9x.
Oh, and BTW, NTFS on Win2k does symlinks too.