In 1980's, two most prevalent operating systems came out,
1) System V created by AT&T
2) BSD created at UOC, Berkeley
Some of the BSD variants are OpenBSD, FreeBSD, MAC OS X
Some of the System V variants are AIX/HP-UX/Solaris
Linux is created in 1991, which is made of,
GNU tools(user space) + Linux kernel(kernel space)
Comparing UNIX kernel vs GNU hurd vs Linux kernel, primary/relevant difference to be known to UNIX/Linux kernel user, is in kernel integration(build) policy approach,
In UNIX, core kernel and service layers(like MemoryMgmt/ProcessMgmt/IPC/..) are statically compiled and linked to create a kernel executable. A single static binary file.
In GNU Hurd, core kernel only is built into a static executable and services are built as dynamic modules. At boot up time core kernel gets loaded and stay resident in memory. Core kernel will dynamically load a service layer when it is required. Services will be unloaded when they are not required. Kernel with loadable modules.
- A single static binary file has less response time.
- Kernel with loadable modules has more response time
- A single static binary file takes more memory since the foot print carries complete static image with all services
- Kernel with loadable modules take less memory
Linux kernel integration(build) policy called “Modular kernel”, which is a mixture of above two policies. Hope you got the reason to mention GNU Hurd.
Mechanics of Linux/UNIX kernel, 1) working of kernel with its services 2) providing interface to user(shell & system calls), were always same, as shown below,
So, for Linux/UNIX kernel user,
1) It is more important to understand the difference in the aspect of kernel integration(build) policy approach.
2) If mechanics of UNIX vs Linux kernel, are same, then, one can further think about less important aspect that talks on different implementation of service layers(Memory_mgmt_policy/drivers/FileSy stems/.....) using C. why less important? Because, this is an abstraction to Linux/UNIX kernel user and implementation always varies(never same) in each OS and also varies in time.
To understand the difference,Unix vs Linux kernel, Do you agree with the two reasons, mentioned(above)?
If no, please correct me.