Where do I learn more about advanced OS development?

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
User avatar
Rusky
Member
Member
Posts: 792
Joined: Wed Jan 06, 2010 7:07 pm

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

Post 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.
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

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

Post 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
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Kevin
Member
Member
Posts: 1071
Joined: Sun Feb 01, 2009 6:11 am
Location: Germany
Contact:

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

Post 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.
Developer of tyndur - community OS of Lowlevel (German)
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

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

Post 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
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Kevin
Member
Member
Posts: 1071
Joined: Sun Feb 01, 2009 6:11 am
Location: Germany
Contact:

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

Post 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.
Developer of tyndur - community OS of Lowlevel (German)
User avatar
dozniak
Member
Member
Posts: 723
Joined: Thu Jul 12, 2012 7:29 am
Location: Tallinn, Estonia

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

Post 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.
Learn to read.
Kevin
Member
Member
Posts: 1071
Joined: Sun Feb 01, 2009 6:11 am
Location: Germany
Contact:

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

Post 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.
Developer of tyndur - community OS of Lowlevel (German)
User avatar
Schol-R-LEA
Member
Member
Posts: 1925
Joined: Fri Oct 27, 2006 9:42 am
Location: Athens, GA, USA

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

Post 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.
Rev. First Speaker Schol-R-LEA;2 LCF ELF JAM POEE KoR KCO PPWMTF
Ordo OS Project
Lisp programmers tend to seem very odd to outsiders, just like anyone else who has had a religious experience they can't quite explain to others.
User avatar
Rusky
Member
Member
Posts: 792
Joined: Wed Jan 06, 2010 7:07 pm

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

Post 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.
gerryg400
Member
Member
Posts: 1801
Joined: Thu Mar 25, 2010 11:26 pm
Location: Melbourne, Australia

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

Post 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.
If a trainstation is where trains stop, what is a workstation ?
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

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

Post 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
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Post Reply