It has been fifteen months since Casey gave his "The Thirty Million Line Problem" talk online. Here he makes the case that hardware manufacturers like Intel should come up with standards for interfacing with USB, GPU and networking; essentially making an ISA for the complete hardware and eliminating the need for drivers. This seems very desirable for both software developers and users, but maybe also very important (see Preventing the Collapse of Civilisation by Jonathan Blow). Imagine a world where it is tenable to develop a completely new OS because it only takes 20 000 lines of assembly and where there is a bit less of this (jump to 8:52):
I essentially have two questions:
1) Are there any signs that hardware manufacturers will make a complete ISA?
2) Can we do more to encourage this?
In his talk Casey says that he knows many people who would want to build software to support a complete ISA. However, as he also says hardware people want a lot of reassurance. How can we best demonstrate that it is worth it?
I think some people on Handmade Network has worked on drivers. Driver developers must have many ideas of what an architecture should do to best communicate directly with user-level software. Would speculating publicly about this help push things forward?
ratchetfreak The problem is that "complete control over the hardware for programs" is in direct opposition to "protect against malware".
If need be an OS can still put itself in between hardware and software, but it can reuse the same 'driver' for every possible network card. Hopefully though, people can find a way to do security in a less intrusive way like Arrakis and exokernels.
ratchetfreak The problem is that "complete control over the hardware for programs" is in direct opposition to "protect against malware".
If need be an OS can still put itself in between hardware and software, but it can reuse the same 'driver' for every possible network card. Hopefully though, people can find a way to do security in a less intrusive way like Arrakis and exokernels.
Which is about what we are seeing, devices being able to be driven by universal drivers. And the OS abstracting it away into a reasonable interface exposing only the stuff programs tend to care about.
If you are talking to a network card there is very little chance you care about anything below the TCP or UDP layer. So the OS exposing a TCP and UDP interface is much more reasonable than giving the program direct access to the network card and making it negotiate with a DHCP server for an IP configuration the machine will already have.