The Stack Overflow podcast is back! Listen to an interview with our new CEO.
4 added 3 characters in body
source | link

... The 'kernel' section (Linux / QNX / BSD, etc...)

You need to define what you mean by 'related', because you could try argue that all code is related to the kernel:

  • Without the kernel, nothing will run - not even in user-space.
  • Without the user-space applications, a system is largely useless.

Additionally, depending on the type of kernel, other parts of the system are more or less strongly related.

  • Monolithinc (e.g: Linux) is a large code base, where things like drivers typically live inside the kernel
  • Hybrid (e.g: Windows), components are split between kernel and user space
  • Microkernel (e.g: QNX) is a relatively small code base, where drivers are implemented as user-space 'applications'

Of course, this doesn't work for 'baremetal' systems that might not even use a kernel per se.


Diving deeper in to the Linux kernel (as requested), you start to see that there are major sub-systems:

Each of these sub-systems have further sub-systems (some are shown in brackets above).

You could have a diagram as you suggested in your comment, but it would get quite complex.

It might be a good idea to read through an article like 'Anatomy of the Linux kernel' to get a better understanding of what's going on.

... The 'kernel' section (Linux / QNX / BSD, etc...)

You need to define what you mean by 'related', because you could try argue that all code is related to the kernel:

  • Without the kernel, nothing will run - not even in user-space.
  • Without the user-space applications, a system is largely useless.

Additionally, depending on the type of kernel, other parts of the system are more or less strongly related.

  • Monolithinc (e.g: Linux) is a large code base, where things like drivers typically live inside the kernel
  • Hybrid (e.g: Windows), components are split between kernel and user space
  • Microkernel (e.g: QNX) is a relatively small code base, where drivers are implemented as user-space 'applications'

Of course, this doesn't work for 'baremetal' systems that might not even use a kernel per se.

... The 'kernel' section (Linux / QNX / BSD, etc...)

You need to define what you mean by 'related', because you could try argue that all code is related to the kernel:

  • Without the kernel, nothing will run - not even in user-space.
  • Without the user-space applications, a system is largely useless.

Additionally, depending on the type of kernel, other parts of the system are more or less strongly related.

  • Monolithinc (e.g: Linux) is a large code base, where things like drivers typically live inside the kernel
  • Hybrid (e.g: Windows), components are split between kernel and user space
  • Microkernel (e.g: QNX) is a relatively small code base, where drivers are implemented as user-space 'applications'

Of course, this doesn't work for 'baremetal' systems that might not even use a kernel per se.


Diving deeper in to the Linux kernel (as requested), you start to see that there are major sub-systems:

Each of these sub-systems have further sub-systems (some are shown in brackets above).

You could have a diagram as you suggested in your comment, but it would get quite complex.

It might be a good idea to read through an article like 'Anatomy of the Linux kernel' to get a better understanding of what's going on.

3 added 3 characters in body
source | link

... The 'kernel' section (Linux / QNX / BSD, etc...)

You need to define what you mean by 'related', because you could try argue that all code is related to the kernel:

  • Without the kernel, nothing will run - not even in user-space.
  • Without the user-space applications, a system is largely useless.

Additionally, depending on the type of kernel, other parts of the system are more or less strongly related.

  • Monolithinc (e.g: Linux) is a large code base, where things like drivers typically live inside the kernel
  • Hybrid (e.g: Windows), components are split between kernel and user space
  • Microkernel (e.g: QNX) is a relatively small code base, where drivers are implemented as user-space 'applications'

Of course, this doesn't work for 'baremetal' systems that might not even use a kernel per se.

... The 'kernel' section (Linux / QNX / BSD, etc...)

You need to define what you mean by 'related', because you could try argue that all code is related to the kernel:

  • Without the kernel, nothing will run - not even in user-space.
  • Without the user-space applications, a system is largely useless.

Additionally, depending on the type of kernel, other parts of the system are more or less strongly related.

  • Monolithinc (e.g: Linux) is a large code base, where things like drivers typically live inside the kernel
  • Hybrid (e.g: Windows), components are split between kernel and user space
  • Microkernel (e.g: QNX) is a relatively small code base, where drivers are implemented as user-space 'applications'

Of course, this doesn't work for 'baremetal' systems that might not use a kernel per se.

... The 'kernel' section (Linux / QNX / BSD, etc...)

You need to define what you mean by 'related', because you could try argue that all code is related to the kernel:

  • Without the kernel, nothing will run - not even in user-space.
  • Without the user-space applications, a system is largely useless.

Additionally, depending on the type of kernel, other parts of the system are more or less strongly related.

  • Monolithinc (e.g: Linux) is a large code base, where things like drivers typically live inside the kernel
  • Hybrid (e.g: Windows), components are split between kernel and user space
  • Microkernel (e.g: QNX) is a relatively small code base, where drivers are implemented as user-space 'applications'

Of course, this doesn't work for 'baremetal' systems that might not even use a kernel per se.

2 added 606 characters in body
source | link

... The 'kernel' section (Linux / QNX / BSD, etc...)

You need to define what you mean by 'related', because you could try argue that all code is related to the kernel:

  • Without the kernel, nothing will run - not even in user-space.
  • Without the user-space applications, a system is largely useless.

Additionally, depending on the type of kernel, other parts of the system are more or less strongly related.

  • Monolithinc (e.g: Linux) is a large code base, where things like drivers typically live inside the kernel
  • Hybrid (e.g: Windows), components are split between kernel and user space
  • Microkernel (e.g: QNX) is a relatively small code base, where drivers are implemented as user-space 'applications'

Of course, this doesn't work for 'baremetal' systems that might not use a kernel per se.

... The 'kernel' section (Linux / QNX / BSD, etc...)

You need to define what you mean by 'related', because you could try argue that all code is related to the kernel:

  • Without the kernel, nothing will run - not even in user-space.
  • Without the user-space applications, a system is largely useless.

Of course, this doesn't work for 'baremetal' systems that might not use a kernel per se.

... The 'kernel' section (Linux / QNX / BSD, etc...)

You need to define what you mean by 'related', because you could try argue that all code is related to the kernel:

  • Without the kernel, nothing will run - not even in user-space.
  • Without the user-space applications, a system is largely useless.

Additionally, depending on the type of kernel, other parts of the system are more or less strongly related.

  • Monolithinc (e.g: Linux) is a large code base, where things like drivers typically live inside the kernel
  • Hybrid (e.g: Windows), components are split between kernel and user space
  • Microkernel (e.g: QNX) is a relatively small code base, where drivers are implemented as user-space 'applications'

Of course, this doesn't work for 'baremetal' systems that might not use a kernel per se.

1
source | link