Page 2 of 2

Re: Where do I learn more about advanced OS development?

Posted: Wed Jan 18, 2017 8:55 pm
by Rusky
Brendan wrote:Hi,
mikegonta wrote:
Brendan wrote:Given that (as far as I know) there has never been an operating system in any USB controller or Network Interface Controller that has
ever existed; I'm not sure how to answer your question.
Given that the question was rhetorical (notice the lack of the question mark) no answer is required.
Given that operating system is italicized so as to indicate that it doesn't refer to the formal definition of an Operating System,
but rather the "system which operates" inside the controllers which accepts and processes the supported message interface.
In other words, (actually your words slightly paraphrased) "you're merely using functionality/interfaces someone else designed and
provided (e.g. only using USB or NIC functions designed by engineers and implemented by firmware developers".
Then it still doesn't make any sense. Obviously the hardware interface provided by any one device isn't comparable to the standardised "driver interface/s" the OS uses as an abstraction to hide the differences between different hardware interfaces.


Cheers,

Brendan
It makes perfect sense. Most hardware interfaces are standardized these days. The point is not that writing a USB driver doesn't count as OS dev, but that it's a spectrum and making BIOS calls is still on that spectrum, especially if you're writing something like, say, MS-DOS.

Re: Where do I learn more about advanced OS development?

Posted: Wed Jan 18, 2017 9:13 pm
by Brendan
Hi,
Rusky wrote:
Brendan wrote:
mikegonta wrote:Then it still doesn't make any sense. Obviously the hardware interface provided by any one device isn't comparable to the standardised "driver interface/s" the OS uses as an abstraction to hide the differences between different hardware interfaces.
It makes perfect sense. Most hardware interfaces are standardized these days. The point is not that writing a USB driver doesn't count as OS dev, but that it's a spectrum and making BIOS calls is still on that spectrum, especially if you're writing something like, say, MS-DOS.
No, it doesn't make sense. I'd say it's so nonsensical that the only reason anyone could've considered it worth suggesting is because they deliberately want to be argumentative despite knowing that it's pure crap.

If you truly aren't able to understand the difference between a standardised device driver interface that works the same for an entire category of devices (e.g. a standardised storage device driver interface that works for ATA and AHCI and USB mass storage devices and SCSI and all the different RAID controllers and NVMe and floppy and whatever else might exist now and in the future) and a hardware interface that can only work for a fraction of the devices in the entire category, then you're beyond help.


Cheers,

Brendan

Re: Where do I learn more about advanced OS development?

Posted: Thu Jan 19, 2017 4:18 am
by Kevin
Brendan wrote:If you're merely using functionality/interfaces someone else designed and provided (e.g. only using BIOS functions designed by IBM and implemented by firmware developers) then you are not developing an OS and you aren't an OS developer - you're only writing software/applications for an existing OS or environment.
While I agree that for most things there's probably no good reason to use the BIOS, I don't think the defining property of an OS is that it contains all of the hardware drivers. I don't think there can be any doubt that DOS is an OS. And - hey, I'm using VBE to switch video modes, does this mean I don't have an OS?

The difference between a software/application for the BIOS and an OS is more about allowing independent programs to run and managing resources and providing high-level interfaces for them, like memory management functions or a file system view instead of raw disks.
hgoel wrote:Personally, I think a large part of the fun in osdev is specifically learning the details of the pieces of hardware and writing drivers for them.
Of course, that's something on which everyone has their own view. Personally, I think it's true only partially, and mostly only in the beginning. Writing the first network driver was fun, because I was learning how these things work. The second one was okay, mostly the same thing, but it worked a little different. Today, having to add support for another chip is just boring work - it doesn't bring in anything fundamentally new that feels like learning, it's just the same concept implemented differently.

For me, writing hardware drivers has really become tiresome work after the first few ones, and it's not something that actually contributes much to what makes an OS different. A hardware driver just drives the hardware, and that's the same on any OS.

Re: Where do I learn more about advanced OS development?

Posted: Thu Jan 19, 2017 5:08 am
by Brendan
Hi,
Kevin wrote:
Brendan wrote:If you're merely using functionality/interfaces someone else designed and provided (e.g. only using BIOS functions designed by IBM and implemented by firmware developers) then you are not developing an OS and you aren't an OS developer - you're only writing software/applications for an existing OS or environment.
While I agree that for most things there's probably no good reason to use the BIOS, I don't think the defining property of an OS is that it contains all of the hardware drivers.
You're constructing a straw man by replacing what I said ("merely using functionality/interfaces someone else designed and provided") with something entirely different ("OS contains all of the hardware drivers"). It is possible to use BIOS without making it the only device driver interface your OS has, and possible to design your own functionality/interfaces on top of BIOS.

If you are merely/only using functionality/interfaces someone else designed and provided, then you are writing an application.
Kevin wrote:I don't think there can be any doubt that DOS is an OS.
You can't say that DOS is an OS without also saying that UEFI is an OS (because UEFI provides everything that DOS did, plus more). Is UEFI an OS?

I'd say that once upon a time (a long time ago) DOS was considered an OS; but the features and functionality people expect from an OS have changed since then.
Kevin wrote:And - hey, I'm using VBE to switch video modes, does this mean I don't have an OS?
Is "int 0x10" your only device driver interface?
Kevin wrote:The difference between a software/application for the BIOS and an OS is more about allowing independent programs to run and managing resources and providing high-level interfaces for them, like memory management functions or a file system view instead of raw disks.
According to that definition; UEFI, Java virtual machines and all modern web browsers are operating systems.
Kevin wrote:
hgoel wrote:Personally, I think a large part of the fun in osdev is specifically learning the details of the pieces of hardware and writing drivers for them.
Of course, that's something on which everyone has their own view. Personally, I think it's true only partially, and mostly only in the beginning. Writing the first network driver was fun, because I was learning how these things work. The second one was okay, mostly the same thing, but it worked a little different. Today, having to add support for another chip is just boring work - it doesn't bring in anything fundamentally new that feels like learning, it's just the same concept implemented differently.

For me, writing hardware drivers has really become tiresome work after the first few ones, and it's not something that actually contributes much to what makes an OS different. A hardware driver just drives the hardware, and that's the same on any OS.
For me; it's the sense of accomplishment I get when something finally works like it was supposed to that makes the tiresome parts worthwhile.


Cheers,

Brendan

Re: Where do I learn more about advanced OS development?

Posted: Thu Jan 19, 2017 6:23 am
by Kevin
Brendan wrote:It is possible to use BIOS without making it the only device driver interface your OS has, and possible to design your own functionality/interfaces on top of BIOS.
Ok. So what saves the OS status of DOS is that the sound driver didn't use the BIOS? Or maybe there isn't enough of a standardised interface there for this to count?
If you are merely/only using functionality/interfaces someone else designed and provided, then you are writing an application.
I still think that whether something is an OS or an application is defined by what it does, not by how it's implemented.
You can't say that DOS is an OS without also saying that UEFI is an OS (because UEFI provides everything that DOS did, plus more). Is UEFI an OS?
I haven't really spent much time on UEFI yet, but for all I know - yes, I would call it an OS. And the same for GRUB 2, probably. You can run applications on them that use high-level concepts like file systems. I think UEFI would qualify even for your definition, GRUB probably only for mine because it makes heavy use of the firmware drivers.
I'd say that once upon a time (a long time ago) DOS was considered an OS; but the features and functionality people expect from an OS have changed since then.
If so, would that imply that 90% or more of the "OSes" that users in this forum write, don't actually qualify to be called an OS?
According to that definition; UEFI, Java virtual machines and all modern web browsers are operating systems.
The part about virtual machines (which includes modern web browsers) is an interesting thought. To make things even more interesting, we can include Windows running inside qemu-kvm.

I don't think I would count Java because the interfaces that it exposes aren't much more high-level than the interfaces it builds upon, but calling modern web browsers an OS for HTML/JS applications actually doesn't sound that unreasonable to me. It's obviously not what people (myself included) think of when talking about an OS, but it's really doing a similar job as an OS, just on a higher level. Could we reasonably find criteria that consider it not an OS while still maintaining that the Windows instance in a VM is an OS?
For me; it's the sense of accomplishment I get when something finally works like it was supposed to that makes the tiresome parts worthwhile.
For me, that sense of accomplishment is different between something that actually feels new and just getting some old functionality working on another computer.

Re: Where do I learn more about advanced OS development?

Posted: Thu Jan 19, 2017 8:17 am
by dozniak
Kevin wrote:Ok. So what saves the OS status of DOS is that the sound driver didn't use the BIOS?
DOS did not have a sound driver.

Re: Where do I learn more about advanced OS development?

Posted: Thu Jan 19, 2017 8:25 am
by Kevin
You mean no sound driver was included on the DOS disks? Yes, that's true. But they did exist and were distributed with the hardware.

Re: Where do I learn more about advanced OS development?

Posted: Thu Jan 19, 2017 9:54 am
by Schol-R-LEA
Please, either agree to disagree and drop the matter, or else move the debate to it's own thread. This is getting away from the original question.

Regarding said question, the answer is dependent on what you consider 'advanced'. Are you talking 'closer to the hardware'? 'More elaborate'? 'More abstract'? 'Greater flexibility'? There are a lot of different ways that one could consider a topic 'advanced', some of which overlap and some of which are completely unrelated - it really is about as ambiguous a word as you can find.

Re: Where do I learn more about advanced OS development?

Posted: Thu Jan 19, 2017 5:48 pm
by Rusky
Brendan wrote:According to that definition; UEFI, Java virtual machines and all modern web browsers are operating systems.
Which, in a sense, they all are.

Re: Where do I learn more about advanced OS development?

Posted: Thu Jan 19, 2017 6:36 pm
by gerryg400
Rusky wrote:
Brendan wrote:According to that definition; UEFI, Java virtual machines and all modern web browsers are operating systems.
Which, in a sense, they all are.
And which, in another sense they are not. It doesn't matter.

This is just another pointless discussion on these forums.

Re: Where do I learn more about advanced OS development?

Posted: Thu Jan 19, 2017 7:08 pm
by Brendan
Hi,
Kevin wrote:
Brendan wrote:It is possible to use BIOS without making it the only device driver interface your OS has, and possible to design your own functionality/interfaces on top of BIOS.
Ok. So what saves the OS status of DOS is that the sound driver didn't use the BIOS? Or maybe there isn't enough of a standardised interface there for this to count?
Originally DOS had no sound at all (other than the "beep character" for console output), and drivers for various sound cards were built directly into everything that needed sound. Much later on (and partly because the complete absence of any kind of security allowed it) various people created sound drivers (often with incompatible interfaces because there never was a standard).
Kevin wrote:
I'd say that once upon a time (a long time ago) DOS was considered an OS; but the features and functionality people expect from an OS have changed since then.
If so, would that imply that 90% or more of the "OSes" that users in this forum write, don't actually qualify to be called an OS?
99.99% are "work in progress".

More importantly; I think we (as a community) have been relatively successful at shielding potential victims from being lured (by intentionally malicious or unintentionally malicious suggestions) towards the "use BIOS" stupidity that sabotages the victim's ability to learn anything useful for modern OS development; and partly because of this (and partly because of other factors, like GRUB and UEFI) projects aiming to create a "non-OS" are extremely rare.


Cheers,

Brendan