At this point, I wonder why Microsoft even bothers innovating on Windows Server when it is going to get chosen only by orgs who need to run MSFT software or C#. Those guys don't care about nano or containers or whatever.
At this point, I wonder why Microsoft even bothers innovating on Windows Server when it is going to get chosen only by orgs who need to run MSFT software or C#. Those guys don't care about nano or containers or whatever.
And I don't know about cloud pricing for Windows machines, but the price difference isn't nearly as crippling on regular VPS/physical hosting.
Also as an OS geek, I do happen to like Windows and see UNIX hegemony as killing OS research.
The sheer permanence of the Windows API makes it hard for Windows to innovate.
Most of these are no longer maintained, but has the capability to do so.
Seriously, what makes these "subsystems" different than "libraries", other than they are shipped with the OS?
This is just one example.
And that still does not answer my question: In what way is the "NT kernel subsystem" different from a user mode library? Either the underlying kernel supports the features you need, or it doesn't. From my perspective, there's an NT kernel (with the so-called Native API) and a few libraries that make it look like Win32 or severely limited POSIX or at one point in time OS2.
They are some kind of blessed libraries, you cannot do everything they are able to do with plain userspace code.
I don't remember all the technical details from "Inside Windows Kernel" book series to discuss it further, but I can have a look.
I don't know about the OS/2 subsystem, but I wouldn't be surprised if it was only sufficient to run Lotus Notes or something back when that was a relevant business need.
Just out of my head:
- pushing C away and allowing C++ on kernel space
- OO ABI besides a procedural one
- object based API even with Win16/32
- asynchronous IO architecture only beaten by Solaris asynchronous IO
- hybrid OS architecture pushing device drivers into user space
- the only shell that can somehow replicate the REPL experience of Xerox PARC systems
- pushing for memory safe systems programming, via C++/CX, .NET Native, static analysis and efforts like GSL at CppCon 2015
- device driver verification via a theorem prover
- integration of container model for mainstream users
- every OS object has security credentials
Wait, what? Event ports are nice, but they're still inherently limited by the UNIX "readiness"-oriented I/O interface. And they don't provide a unified file/socket asynchronous I/O interface, either. (No UNIX does.)
VMS got I/O right: I/O request packets and a completion-oriented I/O interface. This, combined with multiple IRQ levels, is the key element behind Windows' superior virtual memory management, combined file system cache management and actual asynchronous file I/O.
Strip everything else away from NT and UNIX and it comes down to buffer-based I/O versus packet-based I/O (Irps), APCs instead of signals, and multiple IRQ levels (not just hi/lo).
Side note: AIX copied the NT I/O completion port API verbatim. (Except they ignore the concurrency parameter, which speaks volumes about impedance mismatch between multiple threads and the traditional process-based UNIX IPC model.)
Fun quote from Wikipedia -- David Cutler on the UNIX I/O model: "getta byte getta byte getta a byte byte byte". (https://en.wikipedia.org/wiki/Dave_Cutler)
Another tidbit I find interesting: David Cutler was 47 when Bill Gates called him in 1988. He had been working on OS development in a lead capacity since 1975, and subsequently championed the NT kernel that Gates "bet the company on". The core NT APIs that were established in the late 80s and early 90s have stayed the same because they solved the problem correctly the first time 'round.
Linux, on the other hand, was started by Linus in the early nineties (when he was in his 20s) "just for fun". He implemented enough syscalls to get bash to work and went from there. At the end of the day, it was still a UNIX-like operating system.
Cutler knew UNIX inside out and technically knew where and why it was deficient; VMS and thus NT benefited from that.
At the end of the day, it's all about the I/O, and NT has been dominating that since inception.
I wasn't aware that Aix also had them.
As a side note to that, when we used to develop for Aix, it used the same programming model for shared libraries as Windows does, not what is nowadays common across UNIXes.
So Aix also had import libraries and export symbols descriptions.
And MSFT is positioning C# to run better on Linux too…
But yeah your point still stands that they should simplify the licensing for people who are neither big org nor a small startup. Especially so in the wake of cloud and Linux.
That's ridiculous. Just because someone picks a different tech stack does not mean that they do not care about the advantages that all that fancy new stuff gives.
The biggest take up of containers is actually large companies.
What I'm caring less and less about is MSFT. The feeling is mutual- they just really don't give a fuck about you if you're doing anything but using Azure though.
I'm finding that I need them less and less.