Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suggestion: Define "kernel" #7

Closed
JoshuaCarmody opened this issue Aug 13, 2016 · 6 comments
Closed

Suggestion: Define "kernel" #7

JoshuaCarmody opened this issue Aug 13, 2016 · 6 comments
Labels

Comments

@JoshuaCarmody
Copy link

JoshuaCarmody commented Aug 13, 2016

In the first chapter, "Linux: A Little History", the term "kernel" is thrown around a lot. The first instance is the sentence: "In 1991 Linus Torvalds was completing his computer science degree at the University of Helsinki in Finland and decided to write an operating system kernel for his own use as, at that time, there were no freely-available kernels that he could use to create his own operating system".

Later, the same chapter explains "The term Linux actually refers to the kernel, though many people use the term to refer to GNU/Linux, which is the GNU operating system running on the Linux kernel.".

As I'm reading this, the #1 thought going through my head is "what exactly is a kernel?". How is a kernel different from "an operating system". I've always known in some vague sense that a kernel is a component of an OS, but in 16 years of professional development I've never had the need to strictly define its role. I've read Wikipedia's definition, but I still don't really grok it. If the kernel handles memory management, IO, device communication, and such. Then what does the rest of the OS do?

If you can fit it, some more information about what exactly constitutes an "OS" and a "kernel" would be much appreciated.

@robconery
Copy link
Collaborator

Excellent point - I will add! Thanks :)

@robconery
Copy link
Collaborator

robconery commented Aug 13, 2016

OK - here's a small draft...


The kernel of an operating system is the very central bit of it. When your computer starts up, the kernel is loaded first. The kernel, in turn, then loads everything else.

When your app needs resources (memory, disk I/O, etc) it has to go through the kernel, which then manages the task in some way. Note: this doesn't happen directly, there are various rings of protection around the kernel so it's abstracted somewhat, and the memory in which it executes is protected from everything other process. Direct access would probably be a bad thing.

Everything coming in, everything going out (output, printers, devices, etc) passes through the kernel.

@JoshuaCarmody
Copy link
Author

That's very helpful. So I'm guessing that programs like bash, zsh, ssh, and such are part of GNU, then?

@robconery
Copy link
Collaborator

Bash is:
https://www.gnu.org/software/bash/

SSH is a protocol, but clients like OpenSSH (and Putty) use it. Linux is made of a number of small programs that yes, typically, are part of GNU.

On Aug 13, 2016, at 3:56 PM, Joshua Carmody notifications@github.com wrote:

That's very helpful. So I'm guessing that programs like bash, zsh, ssh, and such are part of GNU, then?


You are receiving this because you commented.
Reply to this email directly, view it on GitHub #7 (comment), or mute the thread https://github.com/notifications/unsubscribe-auth/AAEy-oGAhprU8KrSaWzKkDYmh2hdXCUUks5qfkuGgaJpZM4Jjw_F.

@robconery
Copy link
Collaborator

If it’s OK with you: can I put this question in? It’s a really good one :)

On Aug 13, 2016, at 3:56 PM, Joshua Carmody notifications@github.com wrote:

That's very helpful. So I'm guessing that programs like bash, zsh, ssh, and such are part of GNU, then?


You are receiving this because you commented.
Reply to this email directly, view it on GitHub #7 (comment), or mute the thread https://github.com/notifications/unsubscribe-auth/AAEy-oGAhprU8KrSaWzKkDYmh2hdXCUUks5qfkuGgaJpZM4Jjw_F.

@JoshuaCarmody
Copy link
Author

Please do! :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants