One Windows Kernel
techcommunity.microsoft.com
techcommunity.microsoft.com
Is that really such an exciting concept? Maybe I have a poor understanding, but I've been under the impression that nearly every competing kernel (Linux, Darwin, *BSD) is exactly like that. The only situation where I can imagine a slight departure is Solaris and its SPARC architecture, where SPARC had certain features to specifically to tie in with the kernel but I'm sure it still compiled to foreign architectures from the same codebase.
It was fairly clear in the 80's and 90's there were two 'streams' of systems programmers, those who started at mainframes and mini-computers and were making things work on smaller and smaller versions of those machines, and those who started at the ROM monitor or DOS level type machine and made things work on larger and larger versions of those machines.
It was stark how differently the two 'types' of people approached operating system problems.
Windows "crossed over" from being more of a monitor type interface to being an executive interface with Windows NT at the hands of a former VAX software architect (which was firmly in the mainframe getting smaller path), and that cross over happened for the masses when Microsoft merged the NT kernel with the Window "old tech" kernel in Windows XP as I recall. By the time Windows 7 came around it was pretty much unified for life and has evolved since then.
If all you knew were Microsoft OSes, then yes it is an amazing journey. If however you had already been experiencing systems like UNIX that ran on everything from mainframes to PDP-11/70's you would not have been quite so surprised.
Of course, eventually game consoles became networked too...
Though, from another perspective, this model is exactly what the "transitional" era of game consoles did. The Nintendo Wii U, for example, normally [i.e. during a game] has a unikernel running across two "application processor" cores, that sees those as the only cores and has direct ownership of the peripherals; but then the OS [running on a third, separate, low-power core that the game VM has no knowledge of] can, at any time, force the game VM into the background with an interrupt, whereupon it must relinquish one of its two cores, some memory, and not touch the peripherals at all until the OS says it's okay; and then the OS can use the borrowed high-power application core, memory, and peripheral-hardware ownership to temporarily foreground an OS modal GUI, like a game manual or a web browser or an instant message.
Sadly, this was all abstracted, for the game developer, behind an HLL [that is, C] SDK—which is sadly a "requirement" in the modern era, given that devs are going to be porting their games to/from PCs.
Here's the video I think you're referencing:
IIRC he mentions that he actually presented the same content in person to staff at Intel, and discusses how it's very hard to get any buy-in even if the engineers consider the approach to make sense.
And containers that IBM invented on mainframes.
Dave Cutler. I think he is still a Senior Technical Fellow at MS and a lead developer on Azure.
Back then (R) there wasn't one UNIX, rather everyone had their flavour of it for their kind of machine. I don't think source compatibility became mainstream until the late 80s to 90s, before that it was all ports.
Maybe they did try to force windows millenium on poor saps parallel to w2k - and didn't quit that racket until xp?
Microsoft finally got it right at Windows 7. It's been downhill since then, with Microsoft trying to make the desktop look like a phone.
So it's probably correct that xp cut over and abandoned the win95 codebase - but I also think 2000 marked the start of that effort.
So although it’s a race for Microsoft against Microsoft but it’s still somewhat of an achievement they ended up with this result.
It started out as a Windowing environment that ran on top of DOS but with Windows 95 it switched to a Windowing OS that also ran DOS. Later all of that was replaced with an entirely different OS (NT/XP) that basically supports the legacy OS in emulation.
[1] https://en.wikipedia.org/wiki/Windows_NT_3.1#/media/File:Win...
Likewise making Linux fit into the same hardware I used for Slackware 2.0 is an exercise playing Tetris with source code.
The installer flat out refuses to continue if it detects less memory than that.
Got 32 MB with the P166 that I bought a couple of years later.
So even if I got it wrong on the 4MB recollection. That computer did not have those 12 MB.
Also, comments by the Windows head and others who say internally it was a nightmare.
Windows also used to scale down quite well; I'd love to know how much really was common between NT and CE.
[0]: https://www.anandtech.com/show/13522/896-xeon-cores-in-one-p...
In this infamous post David Miller brags about how he has made a single Linux kernel capable of booting on both.
https://cryptnet.net/mirrors/texts/kissedagirl.html
and then the response from Bryan Cantrill
Microsoft's reaction was to stop selling the two next to each other. There is no Windows 10 Server and Windows Server 2019 doesn't have a client version. So the exact same thing continues, but now there IS no equivalent product to prove the point that they're identical bar branding and price.
It was Mark Russinovich who did it with a utility called NTTune. Now he's the CTO of Azure!
That Azure stuff is just his hobby.
https://web.archive.org/web/19970605083609/http://www.ntinte...
Related, there's been a switch in the System control panel to prioritize services/interactive use, though it has been papered over by two layers of cruft in recent versions so is hard to find.
I've never heard that argument made. Memory is hazy but I don't believe the client connection limit was present in older versions of NTW.
Back then MS was chasing market leader Novell which had a business model dependent on charging for each client connection to the Netware server. MS attacked their dominant position by adopting a CAL model where the charge was for the client access license, conveniently bundled with your copy of Windows. So you could buy a $500 (or whatever it cost back then) copy of NTAS and use it to serve your 1000 employees with Windows desktops. Meanwhile Novell would want to charge you $$$ for a Netware server to handle that same user population. Hence Novell went out of business.
The connection limit in NTW was probably added to stop people going around even the very low $500 cost of NTAS.
Yes, you could install third party servers on it and get the same performance for a fraction of the cost. That's when we knew MS' differences argument was BS.
It was added to stop people using NTW as an intranet server with IIS, since there was no way to count CALs that way.
Indeed. At boot time, the version of the kernel was displayed on the blue screen above the progress dots, and it was the same on Workstation and Server. If I recall correctly, the important distinction was between the uni-processor and SMP kernels.
Longhorn was a fork of the Server 2003 codebase, and Vista SP1 was a backport/newfork of changes made to Server 2008. (Server2008 and VistaSP1 were both released Feb.4.08.) They were absolutely released in lockstep. Vista SP2 was released April.28.09 and Server 2008 R2 was released Oct.22.09. At that point the consumer product became the testing ground for the server kernel.
It's easier to think of Vista RTM as a giant public alpha, and and Vista SP2 as an insider preview for Server2008 R2 / Windows 7.
I don't think Microsoft ever claimed that they have a different kernel. It was always clear they have.
Windows Server includes a lot of OTHER SW, other than Kernel, that makes it a server when compared to desktop Windows.
Server and Desktop Windows are like different Linux distros.
Windows is one of the most versatile and flexible operating systems out there, running on a variety of machine architectures and available in multiple SKUs.
Linux, BSD, Darwin... You support a dozen architectures? How adorable. condescendingly pats headAnd they only support four (x86, amd64, ARM, ARM64)! This is quite a cute thing to mention after saying you're "one of the most versatile and flexible operating systems". Ignoring the obviously qualifying language of "one of the most", I would argue it is still false -- virtually every mainstream operating system I can think of supports more architectures than this. Here is my quickly-put-together list:
* Linux: 25.
* MINIX: 15.
* OpenBSD: 13.
* FreeBSD: 7.
* Windows: 4.
* illumos: 3 (with arm* in development).
* Darwin: 2.
What an achievement. Now -- don't get me wrong, Windows has done a lot of things, but they have set the parameters of this comparison and they don't fare well in it (even if you get past the qualifying language over a comparison that they decided to make).* NetBSD: 8 in Tier I, another 49 in Tier 2, total of 57.
* Gentoo Linux: 10 to 12, as they target i[456]86 separately within IA-32
* Debian Linux: 11
* Fedora Linux: 4 primary, 7 secondary, total of 11
* L4: 9
* Red Hat EL: 8
* Ubuntu Linux: 8
* QNX OS: 8
* OpenSuSe Linux: 7
* Alpine Linux: 6
* CentOS (Linux): 5
* Illumos: 4
* Kali Linux: 4
* Q4OS (Linux): 4
* Android: 4
* Arch Linux: 1 official, 2 unofficial
* Parabola Linux: 3
* Slackware Linux: 3
* ChromeOS: 3
* QNX Neutrino RTOS: 2
* Haiku: 2, with 3 more ports underway
RiscOS runs across four or five generations of ARM.
Darwin used to run on three more platforms but newer versions don't.
Illumos is the kernel and libraries underlying OpenIndiana, Dyson, and many other systems based off the old OpenSolaris effort.
To be fair, NT shipped on x86, PPC, Alpha and MIPS. There was a never-released version for SPARC. It was originally developed on the i860. Wasn’t later Windows also available on Itanium too?
MS cut down on their list of supported CPUs for commercial, not technical reasons.
Perhaps because they market to business leaders who could stand to lose a lot if Oracle unleashed the legal hounds?
I think so. But that doesn't seem like it's going to remain a viable business model for too long. Those who are forced by their bosses to work with Oracle today, are going to be the bosses of tomorrow. I personally know a company where anything oracle is explicitly blacklisted because of this reason.
Eventually, Oracle is going to run out of their oblivious- executive-type customers. (inc. govs)
Also, I probably throw enough hate at Oracle to make up for 100 average consumers
Yes, but if it’s still the same company, they’re likely subject to a lot of vendor lock-in. It can be very hard, technically speaking, to move away from a large Oracle investment. Lots of code to rewrite.
Perhaps some are oblivious, but not in general. At some point, when one gets busy enough, convenience and reliability trump bargains.
I know I can replace the backlight on my macbook, but I'm still going to the Apple Store. I know I can save 15¢/gallon at a gas station a mile away, but is it really worth the time and energy to do it at that price? That's why I buy Oracle and just about everything else.
Modern cloud hosting usually provides all of the above you need. Is a PostgreSQL DB in Azure really any less reliable or convenient than an Oracle DB? Perhaps if you’re already heavily invested in and comfortable with Oracle, but I don’t think so otherwise.
On the other hand, many consumers simply don't know the B2B companies, so not much reason to cry out about them.
~59.2M USD on first year (includes maintenance), assuming: - Xeon processors core factor - OEE without any options (no RAC, no partition, etc..) - List price
22% yearly maintenance, about 10.8M on second year and forward.
You won’t pay list price, most likely.
Just like IBM i, IBM z, ClearPath are their own thing, and can also run Aix, Windows and GNU/Linux on top.
I'd like to have a modern Windows, but with the "classic" UI and no forced ads/bloatware/crapware. And yeah I am aware of W10 LTSB but it's not legally available for 99% of users.
edit: Looks like the post attracted a bit of a flamewar. Originally, I just wanted to know if this was technically feasible or not.
That said, there exists leaked source of an XP/2k3 kernel and people have managed to compile and use it with an XP userland. Anything is possible if you have the time, skills, and the complete lack of concern for EULAs. ;-)
MSFT themselves open-sourcing large parts of Windows in the future, including the kernel, would not be surprising either.
Another, possibly less legally questionable approach, would be to try getting the ReactOS/WINE userland to run on the Win10 kernel.
First thing I install on windows 10 (via ninite.com) and followed by removing everything I can (and some things I can't like Cortona)
Others shell changers exist, but this is the one I use.
Occasionally I'd have weird crashes, but nothing permanent.
When XP came out, people were moaning that it looks like shit and how they wanted the XP kernel, but the 2000 look.
When Vista came out, same thing again, all that Aero looks like shit, disable it so that it looks like XP classic.
Now 10 comes out, same story, looks like shit, we want it to look like 7.
You should think deeper to see what drives this desire of yours. I bet that when Vista came out with the Aero look, you felt like it's shit forced on you, and you wanted the XP classic look. Now you want the Aero look that you once hated. Ironic, isn't it?
It also appears that since then, they've never made an equivalent re-design effort to produce a coherent design and stick to it. XP was mostly an incremental change + re-skinning. Win 10 looks haphazard, unfortunately, and, most of all, the new UI is only applied sparsely, so you can't expect it to be equally usable everywhere.
A Linux desktop circa 2000 could have a hodge-podge of GUI programs based on of GTK, Motif, and Athena widgets. But I could not expect the same in 2018 from Microsoft's flagship desktop OS.
The key thing is it wasn't just a design effort -- they did a huge amount of human design research, and they published at least some amount of documentation about that. I haven't really seen anything similar since, but I would love to be pleasantly surprised with something to read.
Everything else since doesn't feel like there was that much research behind it, and clearly nobody was convinced enough to fix up almost everything. Yes, windows 95 left a couple old style dialogs in the depths, but it was pretty complete.
It's so often criticised that people think it was just dreamed up in a couple of hours, but there was real design and usability testing involved.
https://blogs.msdn.microsoft.com/jensenh/2006/11/10/the-offi...
but, of course, the internet is ephemeral and all the images seem to be dead, and the Wayback machine doesn't have it.
Under Windows, no such thing existed and exists, unfortunately. One thing that I had hoped when installing Win 95 back in the day is that old binaries that use standard window-drawing functions will automatically upgrade to the new look and feel. Not all of them did, alas.
I still find it hard to believe that they couldn't produce a consistent control panel for Win 10. I never know where to find certain settings. They could be hidden in the new UI or the old. Who knows?
I also don't like the look of the UWP apps. Their rendering doesn't look very polished to me.
You should think deeper to see what drives this desire of yours.
Decades of using it (21 years, by now), plus the total dislike to any kinds of advertising IN A PRODUCT I PAID FOR. Additionally, people had the CHOICE to keep Windows looking, basically, like Win95 - until Windows 8/10 came along. With Win10 that's not possible any more. It treats me like I'm either a child or using a touch device, and hell no. I want a clear optical distinction between a mobile and a desktop/laptop OS, alone because the operating mechanisms (mouse vs touchscreen) are so different.Who in their right mind thought people would touch on their big-time office PC screens and forced the UI to this absolutely crappy (for desktop!) tile stuff?
Oh and don't get me started on the forced telemetry crap and the forced / silent updates and the reverts that these updates "accidentally" do once you managed to render your PC free of this crap. Microsoft has completely lost my trust by now, I switched happily to an Apple environment. At least it doesn't force Candy Crush upon me or injects ads in the Start Menu and Apple vendors (well, to be fair, there is only Apple itself) don't preload my machine with crap I don't need (a dozen updaters punching security holes in the system, "free" virus scanners, spyware)!
From Windows 8 it is no longer possible to disable the Desktop Window Manager, presumably they made too many UI changes to be able to continue supporting it
Hmm. Sounds sensible. But... shouldn't the kernel be backwards compatible? Like, take a Server Core and install the old Win7 user-land on it?XP/7 aren’t bad but they definitely felt more gimmicky.
But there is another important change after win2k: The attitude Microsoft has to its users. Windows XP was the first windows where actively user hostile technologies like DRM were introduced.
Also, the fact that people keep complaining doesn't mean that those people are wrong, it's possible for a company to continue fucking up year after year for decades. I could explain exactly why MS makes these mistakes (part of which is due fundamentally to bad corporate culture and a long legacy of bad incentives and performance review systems) but that's another conversation.
I can't speak for anyone else, but I thought every version of Windows since 2000 looked like garbage by default. The difference was that you used to be able to do something about it.
10 looks like 8.
There are a lot of 10/7 fans around, thus they pin for the Vista/8 look.
First you complain loudly "what is this shit". Then when the new one comes which is basically the same as the previous, but a bit more polished you say "I love this, you should always skip one Windows version"
Honestly, I like 10 mostly. If they finished converting the settings menus to the new style, it'll feel a bit more complete. But that will also likely hide many of the useful (for "enthusiasts") settings. And if you could control updates, so it doesn't use huge amounts of memory/storage when booting when the machine has been off a week or two. Avoiding tracking would be nice too ... But I don't know much about that.
Edit: my views of 10 are likely shaped by the fact that I use 1607 LTSB, which doesn't have a lot of the new windows 10 crap (app store, etc)
And people who suggest SQL or another monstrous abstractions as an implementation need to take a step back and apply the idea of philosophical simplicity to their work. I honestly don't understand why people have this tendency to over engineer simple problems. I suppose it helps during review time.
People who sit back and say "replace it with text files/sqlite" don't really understand it or the problem it solves that well.
Using the actual file system brings in file system concerns - how do you handle registry transactions or concurrent updates?
1. https://msdn.microsoft.com/en-us/library/windows/desktop/bb7...
The registry is a database. There is a reason we use Postgres instead of flat files, and it is not people overdesigning things for review time.
And again, if you think the registry maps 1-1 to the file system you don't understand it. And that's fine. Just don't hate it because of that.
From Wikipedia: "The Windows Registry is a hierarchical database that stores low-level settings for the Microsoft Windows operating system and for applications that opt to use the registry."
Are we still talking about a configuration archive or a production database for an application? That's when you have to start asking yourself: "is this a sane way to do things?" Because the more you argue for it, the less attractive it becomes as a solution for something that stores configuration data.
Oh yeah, that reminds me, you'd also need to handle subscribing to registry update notifications in this flat-file 'who needs anything other than text files' fantasy.
Again, just because you don't grok the problem space doesn't mean its empty.
Case in point: inotify.
Look. Yes you can hack together the registry using flat files, using FS notifications, using the insane transactional FS apis, magically working out how to handle concurrent writes etc and have every process that wants to interact with it implement this correctly.
But why. In every sense it is less clean, more complex and generally worse. Wasn't the idea to make it better and cleaner?
You also didn't mention concurrent access, or think about random code writing random completely invalid data into files, or consider how you would evolve the on disk format.
That sounds awful burdensome for a simple key-value api. Perhaps you could use some kind of service to shield clients from that complexity, and so you don't have one dumb program messing the entire registry up for everyone else.
That would be cool. You could call it the registry service.
After all, what is a filesystem if not a path to some data, papering over a complex subsystem?
Concurrent writes and type validation are way out of the picture here if you do that.
Random inconsistent locations, random inconsistent rules for inclusions and imports, Random ill-documented ad-hoc formats, no standard interfaces to add/remove/set config values, no ability to put ACLS on individual config entries, basically no way to export and re-import or auto-merge partial config, without at least screwing up whitespace and comments or risking duplicates, no ecosystem wide single 'source of truth' pattern.
They work, but they're not nice.
It is conceptually a bit simpler, however that doesn't mean it is better.
But hey, it's a one click thing to deploy a registry change to a fleet of 10,000 AD boxes, one that can change the configuration of the 1Password app as well as MS Word, and have it done reliably.
That's why it's better.
Why are you uninstalling software so often through AD? Not that it absolves this issue, but it's not common to have huge software churn like this. And hey, isolate the issue and push a registry change to every single machine in the network, instantly and consistently.
Also FYI the registry is stored in a single file.
The problem has always been that the data is shared system wide, even if it doesn't need to be. That and there is no easy way to clean up the registry if uninstalled programs did not do so properly.
If you do have a use case where that matters, you can create a new user and apply permissions you want at a single key level. Available since windows 8 (or maybe before?)
The uninstalling procedure should clean the registry. "Uninstalling" is whatever the OS standardize as the correct procedure, Windows has one already, but it's reminiscent of the way people did packages by the time Linux software was distributed in tgz archives.
In Windows it's up to the app to clean up. It's not as great as *nix, but nobody is saying it was. Apt and friends just do the cleanup for the app, in a standardized way. If they miss something it's still there.
What the Windows Registry needs is a REST API.
That's not necessarily true.
In the 90's I worked at a large telco where we'd gotten good user roaming functionality along with package management using third party tools, for about 1600 applications, on Windows 3.
Uninstalling a package demonstrably left no remnants behind.
The migration to Windows 95 was troublesome partly because it was much harder for roaming users, but mostly the registry was much more difficult to manage - Office applications were notably impolite, with thousands of registry entries, many of which lingered after an uninstall, and no way to sanitise the registry other than reinstalling the OS.
If you're using a computer without a package management system I could see how you could be convinced config files are harder to manage (by hand) than an opaque blob that poorly hides its ugliness, but you'd have bigger problems.
shudders
Why would you want a networked API for stuff that should be internal to the machine?
Reminds me of an UltraSPARC T5 server with 3072 processors I used to work on... from five years ago. Old tech, eh?