Basic subsystems of a PC (more detailed)?

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.
Avarok
Member
Member
Posts: 102
Joined: Thu Aug 30, 2007 9:09 pm

Post by Avarok »

:D What a wonderful line of questioning. I personally believe that your supported hardware choices depends on your target audience.

By the time your OS is finished, it will be at least a year or two from now if you finish it. In that time, you will your OS to still be relevant. The problem with designing something for the future is that we cannot be certain about what it holds, we can only hypothesize based on hearsay and rationale.

Of interest is that most hearsay now goes that in the next two years we'll be seeing:

:arrow: USB 3.0 (and eventual abandonment of almost all other device port types)
:arrow: OLEDs
:arrow: more multi-core, multi-chip SMP
:arrow: increased bandwidth, instruction pipes, latency and prefetch
:arrow: more microSD
:arrow: Wireless USB
:arrow: possibly LinuxBIOS might support enough motherboards to be usable.

These things suggest that we continue to separate and ignore bootloading (and hope for linuxbios), continue to try to avoid BIOS interrupts, prepare for USB 3.0 and being able to run all devices off it, prepare for multiple high resolution displays, and concern ourselves greatly with caching and thread safety.

Things like PS/2 drivers are less important, as even now we can use a USB keyboard and mouse which will ease transition down the road. Things like programming for the PIT and PIC are bad, because we need the I/O APIC anyways for SMP, so we should really be using the LAPIC timer or similar (APIC and PIT don't play nice together) We should be trying to move away from ISA and towards PCI as much as possible, and we should most definitely be aware of SMP, cache coherency, and event-based programming because that's where the hardware's going.

Too many folks here are still stuck on coding i486. Welcome to the 21st century.
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.
- C. A. R. Hoare
User avatar
Brynet-Inc
Member
Member
Posts: 2426
Joined: Tue Oct 17, 2006 9:29 pm
Libera.chat IRC: brynet
Location: Canada
Contact:

Post by Brynet-Inc »

What's wrong with the i486? Even I still occasionally fire mine up.. along with older systems..

Personally.. I hate USB mice & keyboards because they use SMM to provide the PS/2 emulation, and that scares the hell out of me..

If you don't opt for PS/2 emulation, you have to wait until your kernel loads a USB driver.
Image
Twitter: @canadianbryan. Award by smcerm, I stole it. Original was larger.
Avarok
Member
Member
Posts: 102
Joined: Thu Aug 30, 2007 9:09 pm

Post by Avarok »

:D

"You have to wait until a kernel loads your USB driver"

Most excellent. User input should not be running before security is in place.

Also, I believe I did mention that USB would be common to almost all external devices. If one were reasonably intelligent, they wouldn't emulate a 10 years obsolete interface - then, we still boot in 16-bit mode.
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.
- C. A. R. Hoare
Post Reply