Without selecting a particular processor and UART a schematic would be very general.
The best way to run a UART is hardware interrupt driven with a FIFO buffer in the UART driver software for background servicing for the operating systems. The FIFO in the UART is primarily to provide a small reserve bucket to account for operating system delay in servicing the hardware interrupt. The driver buffer is a first in, first out que with input and output pointers. Multi-channels would just be multiple driver ques just as if there where physically different UART chips.