In IO systems, IO software is made up of multiple layers due to the many different responsibilities they have. These layers include the following:

  • User-level IO software or user processes: This is the level at which IO requests are made. It is at this level that a system call is made in the user-space to be sent to the kernel-space.
  • Device-independent software: This layer refers to software components that are generic and applicable to multiple devices. These calls are not dependent on or exclusive to any single IO device.
  • Device drivers: This layer refers to the software components that are specific to an IO device. They often code snippets that have been developed by the manufacturer of the IO device and must be installed by the user before the IO device can interact with a computer.
  • Interrupt handlers: Interrupt handlers are snippets of code that provide the functionality to device drivers. They process interrupts made by IO devices.
  • Hardware: This layer refers to the physical IO device which interacts with device drivers through input such as pressing a key on a keyboard or output such as displaying data onto a screen.


Take a look at the image to your right - it provides a breakdown of the layers of an IO system, and groups them into the following three categories: user-space, kernel-space, and hardware.

Click Next when you’re ready to move on to the next exercise.

Take this course for free

Mini Info Outline Icon
By signing up for Codecademy, you agree to Codecademy's Terms of Service & Privacy Policy.

Or sign up using:

Already have an account?