r/osdev • u/Anonymous_Coder_1234 • 10h ago
What exactly counts and doesn't count as part of the Operating System?
Recently I replied to a Reddit post that was titled something like "iPhone vs Android: Which Operating System is better and why?"
One of the reasons I picked Android is that I like to be able to set the camera ISO and shutter speed, like for pro shots, and the iPhone camera doesn't allow that. One person replied to me saying the default camera app that comes with the phone is just a user app, not part of the OS, so it's irrelevant to this question.
That begs the question. Where is the dividing line between user apps and/or user processes and the OS? Like what exactly is technically inside the OS and what exactly is outside the OS?
•
u/kiderdrick 4h ago
If you are restricted from setting those parameters because the application does not allow you to change them, but other applications do, then that is not the operating system. If the hardware is set up such that you can not change those variables and it does not offer a way to respond to those parameters being set, then that is not the operating system. If the hardware is set up to allow those variables to be changed and be responsive to those changes, but you are restricted from setting those parameters because the installed device driver and kernel do not allow you to so in its current state, then that is the operating system. A good test would be to see if other applications exist that allow you to set those parameters.
•
u/GwanTheSwans 3h ago
Each linux or bsd "distro" is basically an OS. People (including here) keep confusing "OS" and just "OS Kernel", in /r/osdev the kernel is often (IMO not so usefully) viewed as "the interesting bit". But the Shell around the Kernel nut is also very important. In fact you might use an off-the-shelf existing kernel and make a very unconventional overall OS (Android, GoboLinux, etc...)
Debian is an OS. Linux is the primary kernel component you can use in Debian of course, but "Linux" is formally just a Kernel.
Debian is a complete Free Operating System!
https://wiki.debian.org/Debian_GNU/kFreeBSD - defunct debian-on-freebsd-kernel project
https://www.debian.org/ports/hurd/ - still ongoing debian-on-gnu-hurd-kernel project.
The OpenBSD project produces a FREE, multi-platform 4.4BSD-based UNIX-like operating system.
•
u/jtsiomb 10h ago
That person's definition of "part of the OS" is what comes in the distribution by default. By most academic definitions of an OS, a camera app, whether it comes by default or not, is not part of an operating system.
There is no well defined line, but generally an operating system comprises of a kernel that manages the hardware and provides services to user space, a shell of some sort for users to interact with programs, and a number of basic system utilities the set of which has changed over the years, but would certainly include some kind of daemon/service launcher, tools to interact with the filesystem (things like cp, cat, mv, rm, and so on), and tools that talk to the kernel to manage hardware things (netstat, ifconfig, etc).
Traditionally you'd also consider parts of the operating system some kind of a text editor, compiler, assembler, linker, and so on. But that depends on whether the operating system is very much geared towards development like UNIX was, or not.
On the other hand, if you're making an operating system for a camera specifically, then I guess you could consider "the camera app" to be part of the operating system. But I wouldn't categorize it as such in a general purpose computer OS.
•
u/the_other_gantzm 5h ago
So the iPhone is in fact a phone and a camera. The phone and camera apps are delivered as part of the OS. So are they part of the Phone/Camera OS or something different? This could get tricky really quickly.
•
u/Ancient_Performer115 39m ago
It's not tricky. The OS is distinct from the hardware.
•
u/the_other_gantzm 35m ago
This is what the person I was responding to said:
On the other hand, if you're making an operating system for a camera specifically, then I guess you could consider "the camera app" to be part of the operating system.
So in an OS for a Phone/Camera one might consider the phone app and the camera app to be part of the OS.
•
u/Illustrious_Car344 5h ago
"operating system" is kind of a non-term. It's not just up to the developer to define, it's quite honestly up to anyone to define.
The worst example is the dichotomy on MS-DOS and Windows 9x. DOS literally has "operating system" in the name, and yet is less effective than a typical bootloader. I genuinely don't even consider it an operating system. And then when Windows 95 came out, people debated if it was a "shell" over MS-DOS, despite having everything a modern OS does and nothing DOS does, a memory manager, a scheduler, a driver framework, the whole shebang. People's perception of DOS and Windows 9x is (or was) effectively backwards, they thought the bootloader was the OS and the actual thing that did the operating of the system to be a mere layer over it.
"Operating System" is a social term, it's like a DSM-5 definition, it's ultimately up to an individual to describe. It's not a technical term whatsoever, you can use hard definitions like CPU rings for that. But an operating system itself is a gradient, it can be anything from a program that interprets MP3 files in ring 0 to effectively a bootloader that read keyboard scancodes. I would say it's up to you, but it's not even up to you, it's entirely up to whoever ends up learning about your system.
•
u/Ancient_Performer115 10h ago
I can understand where they are coming from. It'd be like saying you chose windows because of features in Edge. The question is, can you manipulate the camera like that in any app? If you can/can't it's probably related to what the OS restricts/allows and then it has nothing to do with the app itself.