Is it just / ?
I kid. But really, besides “its all a file”, if you take away the gui, is the only difference the syntax ? How libraries interact? How disks are mounted ?
If we stripped all ms’s junk out and made windows open source, would we still prefer linux?
When you get to a very basic level, is one of them more efficiently coded?
You rather should ask what separates Windows from all the Unix-likes. Windows is the weird one, not Linux.
Up until 95, Windows was mostly a desktop environment for DOS. From 95 to ME, Windows was an OS that used DOS as its bootloader and compatibility layer. Not sure how to put it, but it was simplistic and fundamentally different from Linux.
The thing with NT-based Windows (including modern editions) is that the underlying system is joined at the hip with the GUI. Whereas Linux with your choice of coreutils is a perfectly capable OS without the GUI, many features of Windows are only accessible through the GUI.
Given enough time and resources, pretty much anything exclusive to Windows could be ported to Linux and vice versa. A lot of the difference just comes down to history and the ensuing conventions, workflows, and file hierarchies.
Even if we stripped out all the cruft and spaghetti code from Windows, there would be lots of nasty idiosyncrasies in its design, informed by its OS/2 and VMS (see Dave Cutler) heritage, profit maximization, revolving door of devs and interns, and years of bending over backwards to accommodate legacy programs.
The entire difference is the kernel. There’s a reason why Apple moved to BSD forever ago for their OS. Somebody did it better than they would have been able to from scratch. Everything above that level on up to the DE matters less as far as stability and performance goes for desktop users.
From my basic understanding: Windows has a microkerner hybrid style architecture. It’s kind of like microservices. Instead of all resources being shared within a system process, You get a lot of tiny services all making calls to each other and the main kernel.
This introduces a lot of overhead because variables need to be sent and requested between processes. And they don’t simply share them in the same memory.
Linux on the other hand has most services under one monolithic kernel and they can all access the same memory. So there is no need for all of that intercommunication between services.
At least that’s my basic understanding and if I’m wrong (which I probably am), then somebody on the internet will now correct me.
You’re right in some ways; Windows is closer to a microkernel than Linux, though it doesn’t perfectly adhere to the philosophy of - there’s supposedly weird things like drawing calls in the Windows kernel that should be in microservice, I’ve heard
However, I wouldn’t necessarily call microkernels a detriment; in fact, Linux is a bit of an odd duck for going monolithic - modern Apple operating systems also run on a microkernel. Monolithic is an older architecture, and there are worries about the separation between components and system resilience e.g the webcam driver can’t crash the whole kernel.
In practice, it’s less of an issue, and there really aren’t any open source microkernel operating systems that are practical for production desktop and server use, which has a microkernel though there are certainly solutions for embedded systems.
QubesOS is built on Xen hypervisor, which uses a microkernel design, but Linux is then run in multiple VMs on top of it, which makes it more of a technicality in my eyes. RedoxOS also runs on a microkernel and is certainly intended as a desktop operating system, but its hardware support is limited; GNU Hurd is even more limited in that respect and not really usable.
See xkcd, press upvote
Literally everything.
Okay not everything, I’m sure they share some basic libraries like openssl. But the core OS is apples and oranges.
Yes we would still prefer Linux. Windows is just a single object without any modularity. With Linux by itself is of course just a barebones kernal waiting to be added to. You can choose which gnu libraries to use you can chose which package manager to use you can chose which desktop environment to use (or ommit it entirely.) Windows doesn’t have that option.
As well since the source code for linux has been open for over 30 years people know how it works, it would take ages for people to study windows and actually figure out how to do anything with it.
The licensing: Free and open source vs. paid, proprietary, and closed source. That really is the core difference, the licensing, and all the differences that come as consequences of that difference.
What separates the Linux kernel from the (Free)BSD kernels is copyleft/reciprocal licensing vs. permissive licensing.
Somewhat of a cheap answer, but I feel what illustrates the difference quite well is that Linux follows the design from UNIX, which was a research project with stupid amounts of money to at least try to get things right. On the other hand, Windows originated from an OS, which was referred to by its developers as “Quick and Dirty Operating System”.
And I do feel like these foundations have informed the design of all the layers built on top.
At a super basic level, MacOS, Linux, and Windows all use different kernels.
From a very basic viewpoint. The kernel is basically the piece of software that gives each piece of hardware their instructions.
At the absolute most basic level, assuming equal hardware, all the kernels are working with same set of instructions(store this value in this register, move to this location in the stack, read this value, etc) but they issue those instructions in different orders to achieve very different results.
The NT kernel that windows uses does basically everything in a different way than the Linux kernel. To the point that their only real similarities are that they speak the same language to the bare metal hardware.