Open In App

Block and Character Devices in Operating System

Last Updated : 04 Jan, 2023
Like Article

Device Driver in computing refers to a special kind of software program or a specific type of software application that controls a specific hardware device that enables different hardware devices to communicate with the computer’s Operating System.

There are two different ways to access data on a computer. The first is called block-device interface (BDI) and the second is called character-device interface (CDI). These two interfaces are sometimes confused with each other because they both provide access to devices on your system, but they serve different purposes.

The Block-Device Interface

Block devices are used by the operating system to store files and programs. Block devices can also be used by applications to store data, but there is a major difference between the interfaces used by character devices and block devices.

Character devices support byte streams; that is, data sent from one place in memory to another must be broken into bytes before being transferred across an operating system’s memory space (note: “memory” here refers only to RAM). Blocks of data on block devices are either fixed size (512 bytes) or variable depending on your device type. For example, if you have a hard drive with 2GB capacity then it will contain 2 billion bytes of storage space – no matter how much info you put onto it! This means that when accessing files via raw I/O mode all operations will be performed directly on the physical medium itself rather than through buffers provided by host CPU registers or caches like traditional file systems do today; however if we try reading our disk directly then we may find ourselves waiting longer or getting errors because certain sectors have been marked bad due date/time etc.

Raw I/O and Direct I/O

Raw I/O is a method of accessing physical devices. It allows you to use your device without using the kernel’s buffering. Raw I/O is used by block devices, while direct I/O is used by character devices. The kernel does not buffer raw I/O operations; instead it directly transfers data between physical memory space and its buffers in order to provide fast transfers and minimize latency when accessing files or other storage media (e.g., hard disks). Direct Memory Access (DMA) allows applications running on one task space to access RAM directly without involving CPU caches or buses such as PCI-Express bus that might slow down performance slightly when accessing large amounts of data at once due to their own limitations (for example: 64 bit addresses vs 32 bit addresses).

The block-device interface is the most general of all access methods. It is used by both character devices and block devices.

The character-device interface consists of two major operations: read() returns one character from the beginning until the end position; write() writes new contents into the specified location

The character-device interface is the most general of all access methods. It is used by both character devices and block devices. The major difference between these two types of devices is that block devices have a fixed unit size (e.g., 512 bytes), whereas character devices don’t have any fixed unit size.

The Character-Device Interface

The character-device interface is a set of subroutines that control access to the device. This means that only one program can use the device at a time, but other programs can still use it through the same interface.

The character-device interface is used by user programs and system programs alike; however, there are some differences between them:

  1. User Programs: User programs will use this interface directly without any special help from system software or hardware drivers. They need not be aware of how their requests are handled by the operating system because they do not write any code themselves!
  2. System Programs: System programs must always have some knowledge about how they interact with hardware devices (hardware). They often depend on external libraries like libc which contain additional functions needed for accessing devices in Linux systems. System programs are also able to use their own device drivers, which are software that allows the operating system to interact with hardware devices.

Device Driver

A device driver is a piece of software that allows the operating system to communicate with hardware devices. A device driver is used by the operating system to access hardware devices and control their operation. For example, if user wanted to write a program that uses computer’s mouse for input, it would need a mouse driver in order for it to work properly on your computer.

Operating systems use device drivers in order for them to be able to interact with various types of hardware devices, such as keyboards and printers (among others).

In the early days of personal computing, device drivers were written directly by the operating system’s developers. However, as computers became more complex and sophisticated, device drivers needed to be developed by third parties who specialized in such things.


As we have seen, Linux is a truly open source operating system. It contains a large number of device drivers and other software support for your computer’s hardware. The Linux kernel includes several interfaces that allow users to access any block or character device on the system program.

Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads