Ins and Outs: The IO Subsystem


What people think of a computer is really just the borders of a complex machine. The keyboard, mouse, display, printers, network, and so on are on the edges of the machine. They are the gateway for getting and display information.

To handle the amazing number of devices that can be attached to a computer, computers come with an input output subsystem. If you’ve ever looked at a computer specification, you’ll see things like PCI-Express, SATA, USB, FireWire, Thunderbolt and more. Well, this is just a dizzying array of standardized ways of getting bits from devices into the computers memory hierarchy.

And these standard means of moving bits are complex. The USB (Universal Serial Bus) standard is thousands of pages long, covering everything from the physical layout of the connector (which you always seen to never get right on the first try) to how USB devices send and receive information (the protocol).

Each protocol has its own advantages and disadvantages, and newer, better ones are coming out all the time. But at the end, it’s all about moving bits from one place to another. Move bits to the network device, and you uploaded a video to YouTube. Send bits to your printer device, and that photo you liked is printed.

And the devices that are attached to computers are staggering. The engine of your car. The power grid. Modern manufacturing robotics. Cash registers at your store, the card reader you use to pay with, the scanners that are used to track inventory. The list goes on and on.

Every time you press a key on the keyboard, an complex set of interactions occurs just to get that character to that web page or Word document.

In a real sense, there is no one computer. Any useful computer is a collection of parts, all of them with their own computing power. An affordable inkjet printer has and uses more computing power that they use than full blown computers of twenty years ago.

The complexity of computing is made affordable by scale. The cost for developing devices is large, and it is only by selling large amounts of devices does computing even make sense. Your laptop or desktop at home is the product of billions of dollars of yearly research and development costs. Also, the modern internet runs on truly staggering infrastructure, with its own billion dollar figures.

If you’ve ever plugged in a device only to find that “Device Driver not Found” message, maybe it will help to think about the large amount of devices that do exist. Modern operating systems ship with thousands of special programs (drivers) that just manage the communication between the computer and the device. It’s a complex part of any operating system.

It is hard to express to a layman just how complex a system it is. To get an idea, let’s look through the lens of a common internet trope. The lolcat.

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a comment