Memory management takes care of assigning memory areas and swap space areas to processes, parts of the kernel, and for the buffer cache. Process management creates processes, and implements the multitasking by switching the active process on the processor. At the lowest level, the kernel contains a hardware device driver for each kind of hardware it supports. Since the world is full of different kinds of hardware, the number of hardware device drivers is large. There are often many otherwise similar pieces of hardware that differ in how they are controlled by software.
Some software services provided by the kernel itself have similar properties.
For example, the various network protocols have been abstracted into one programming interface, the BSD socket library. When some entity tries to use a filesystem, the request goes via the VFS, which routes the request to the proper filesystem driver.