In order for data to be successfully transferred between IO devices and the CPU, it is important that the data can be written and read over some medium. Devices are designed to read or write data in one of the following three ways:
Character devices are represented as a sequential series of bytes. They are accessed one byte at a time. The operating system interacts with these devices with read/write system calls. One example of a character device is a USB. A USB has data written on it in a sequential manner.
Block devices have memory stored in blocks of a fixed size. They allow for system calls where memory does not need to be read sequentially. Block devices allow for “random access”, meaning we can read or write to any place within the device. Most devices have blocks of the size 512 bytes or greater. Hard disks are a perfect example of block devices.
Network devices are different from character and block devices because they require a different interface (such as a socket interface) for access to other devices. An example of a network device is an ethernet card which is used to send and receive data over multiple devices.
The image to the right provides some examples of block, character, and network devices.
What are some additional examples you can think of?