The answer is "all of the above".
There are busses all over the system, some are going to be physically internal to a CPU, others might be be between CPU and memory, but not I/O, still others might connect I/O devices (EX: The PCI bus) and others may connect all 3.
Consider what a "bus" is. I would define a bus as a group of related signals that are intended for a specific purpose. Busses usually have additional qualifiers to help identify what their purpose is and define what they actually connect with. IE: A Memory Data Bus would probably connect the data lines of a cache controller on a CPU with main memory. A Memory Address bus would probably connect the address lines. A Memory Control bus would carry control signals that signal the state of the other buses and/or provide clocks. Often these 3 functions are grouped together to define a single "bus". Sometimes the physical connections on busses are multipurpose where they are used alternately to carry memory or address information.
There are usually bus adapters that allow information to be passed between different busses in a system. These will sometimes be named something like "bridge", "bus adapter", "gateway", "Hose interface", etc. These bus adapters allow a system to pass data between busses with different data widths, clock speeds and signaling characteristics. For example a PCI bridge would connect a PCI bus to a system bus that operates at a higher frequency and may transfer data in larger (or smaller) chunks.