Why cannot the kernel be swapped? - Because swapping itself depends on many parts of the kernel. Swapping needs access to the memory manager, the disk driver, maybe the file system and much more. Why is the /dev directory a real directory and not something like the /proc file system? - Because Unix was designed that way. If you want plan9 you know where you can get it. Why do the devices have major and minor numbers? - Again, Unix was designed that way. Putting related devices in subdirectories might be a good idea. Why cannot the kernel be preempted? - The kernel code is not completely reentrant. Why cannot device drivers be user programs? - At least kernel modules are a major improvement to the situation that you had to compile the kernel in one piece. A user program can perform "insmod (modulename)" so you almost have what you want. This is not the medium to ask many questions in one article. It is hard to quote from the original article.