 Now that we know how a processor works, we're going to start looking at how that processor can interact with other devices. So our processor doesn't just stand on its own. It also interacts with things like memory and various IO devices. And since those systems aren't going to be directly on the CPU, we're going to have to have a way to connect them. To do this, we're going to use what's called a bus. The bus serves as this transport that runs down, connecting all of these various devices that we might have on a computer. They allow our CPU to talk to memory, to IO devices. And in some cases, it will actually allow IO devices to talk to other IO devices, or multiple CPUs to talk together as well. The bus is used to transport all of the information that we need, all of the information that we care about. So it's primarily going to be used for data, but we also need to be able to do things like tell our IO devices that, hey, we'd like you to do something for us. In order to do this, we're going to be using what's called memory mapped IO. And that will allow us to interact with our IO devices just the same as we would if we were trying to interact with memory. So all of our IO devices will have a series of addresses that they respond to, and we'll be able to interact with them just by using things like a load word or a store word command to either read data out of an IO device, or to change some things in our IO device. If we want to display something new on our monitor, then we'd want to send some data out to that monitor to be displayed. We've had a number of different specific buses over the years, but we're going to begin by just focusing on the theoretical aspects. Things like the protocols. How do we communicate with other devices across the medium? What will we do if multiple devices tried to access the bus at the same time? This will give us a lot of interesting questions to look at, to examine, without actually having to look at one particular type of bus.