This strategy allows flexibility . The driver controls the hardware and provides an abstract interface to its capabilities. For example, a floppy controller provides the abstraction that the floppy disk is a continuous array of bytes. Applications determine the policy, e.g. tar writes it sequentially and mkfs creates a file system and prepares the disk for mounting. Utilities that help applications build policies on top of the driver should be written as libraries , independent of the driver.
Kernel is responsible for creating, destroying and scheduling processes.
The kernel builds a structured filesystem on top of unstructured hardware. A method by which you can expand the kernel code at run time. This provides a nice way for you to install and test device drivers. Character devices . Console and parallel ports are examples.