One important note here about time-slicing that is imperative to the discussion. Sorry for the shouting, but this is very important, as you will find out later on in this discussion. Likewise, say you were uploading in the background and playing solitaire. Actually, the background program is sending data to the virtual driver which is simulating a uart. When its available, this data is sent to the real uart.
Virtual drivers exist for every hardware device.
Real drivers are also necessary. This is similar to the C programming language. Using virtual devices makes it possible for Windows to substitute simulated hardware for real hardware. This is fine for screen displays, however communications exist in real-time. These settings can help resolve many problems at speeds below 19200 bps between modem and computer.