FUSE – a unique method for creating filesystems
We’ve talked about how the kernel divides the system into two portions: user space and kernel space. All the privileged system resources reside in kernel space. The kernel code, including that of filesystems, also exists in kernel space in a separate area of memory. It is not possible for normal user-space application programs to access it. The distinction between user space and kernel space programs restricts any regular process from modifying the kernel code.
Although this approach is essential to the kernel’s design, it does create a few problems in the development process. Consider the example of any filesystem. As all the filesystem code exists in the kernel space, in the case of a bug in the filesystem code, it is extremely difficult to perform any troubleshooting or debugging because of this segregation. Any operations on the filesystem also need to be performed by the root user.
The filesystem in user...