Talk:Kernel (operating system)

Kernel Live Update Capabilities
Kernel Live Update Capabilities is missing in the article, but not sure where it fits better.

AIX kernel support Live Update since 2015 in AIX 7.2 and Ksplice, kpatch and kGraft are some implementations for supporting live patching in Linux kernel. Tech201805 (talk) 05:55, 10 October 2019 (UTC)


 * Do you have ideas on how you want to share this information? It's really interesting. Autobotsrepair (talk) 17:21, 22 August 2020 (UTC)

Mac should be in Unix-kernell section
I am not an expert, but I think Mac OS is based on UNIX and as such should be in UNIX-based kernell section(section# 5.4). So basicaly I think that section 5.5 should be merged into 5.4. Please correct me if I am wrong Rkononenko (talk) 20:15, 4 April 2010 (UTC)
 * MacOS prior to MacOS X was not in any way UNIX-based. MacOS X itself is basically a hybrid system, in some respects like UNIX but in others completely different.  A separate section is warranted in either case, I think. JulesH (talk) 17:36, 27 October 2010 (UTC)
 * mentions both the non-UNIX-based classic Mac OS and the UNIX-based macOS. Guy Harris (talk) 23:54, 24 November 2021 (UTC)

OpenCL
Reading about OpenCL has me wondering about this operating system specific definition of a kernel. Software written for OpenCL, programs designed to run directly on hardware, are called kernels. It seems maybe the definition of kernel should be just that - software that runs directly on hardware? I want to link "kernel" here from the OpenCL article, but this article doesn't seem appropriate to it. —Darxus (talk) 05:25, 13 January 2011 (UTC)

Additional comment into history section?
As part of the development of Unix at the very beginning, there was the conceptual model of it as a series of concentric circles. In the centre there was the hardware, around that were two circles of software, and on the periphery were the users, protected from the hardware (and vice versa) by the two layers of software. The two layers of software were called, with a deliberate conscious analogy to a nut (food), the shell and the kernel, with (obviously) the shell surounding the kernel. Surely this is worth adding? Old_Wombat (talk) 08:44, 19 January 2012 (UTC)

Compute Kernels
There needs to needs to be disambiguation between OS kernels and compute kernels, or the article needs to be move to "Kernel (Operating System)" instead of "Kernel (computing)". In High Performance Computing, the term "kernel" is used to refer to compute kernels as often or more often than OS kernels. Compute kernels are (usually) small pieces of code which an application spends a significant amount of time in, and which is computationally or memory intensive. An example is the BLAS. — Preceding unsigned comment added by 140.221.3.23 (talk) 15:42, 23 March 2012 (UTC)

Independently, I was working through pages trying to increase links and felt a need to create a seperate compute kernel page, to explain a concept common to compute shaders, openMP, OpenCL, OpenGL etc Fmadd (talk) 22:27, 13 April 2016 (UTC)fmadd

What is this crap?
The Kernel is a Program.

Line one.

It is a program loaded at bootstrap which supports software-based operating systems. It loads at OS startup and runs until OS shutdown.

It's purpose is to provide an interface between computer firmware and the OS.

The kernel provides an abstraction of system hardware resources to the rest of the OS software, which in turn provides an abstraction of these resources to running applications...

Yadda yadda

Please write for the people who are going to read this, like archaeologists or martians - not Theologians. The kernel is not an idea, it is a running program. It has inputs and outputs. It is purpose-built. It has a function. It fills a definitive spot in the hardware/software hierarchy. It varies between OS's and BIOS/firmware.

It's not some ephemeral beast - it's a bag of bits just like every other running program.

Just a little clarity and precision would be nice for a change.

Jeeze.

Obfuscation is not information. — Preceding unsigned comment added by 74.15.32.72 (talk) 03:38, 29 June 2012 (UTC)

Protected edit request on 16 June 2014
Please replace the existing code with:
 * 1) REDIRECT Kernel (operating system)

to fix the double redirect caused by moving the target page, and to add the Rcat. Thanks.

– Wdchk (talk) 03:38, 16 June 2014 (UTC)
 * Yes check.svg Done — Mr. Stradivarius  ♪ talk ♪ 10:23, 16 June 2014 (UTC)

Non-scholarly / non-authoritative language
Particularly from section 3 onward, the language used leaves me feeling as if the contributor did not really know what they were talking about. They very well may have, but it just feels amateurish.

From the article:

'Essentially calls are made within programs and a checked copy of the request is passed through the system call. Hence, not far to travel at all.'

'In fact, as guessed in 1995, the reasons for the poor performance of microkernels might as well have been' << what does it even mean?

The article also makes use of the phrase 'rich and powerful' twice in quick succession, which makes it feel biased.

How about this entire paragraph. All it does is say the same thing 5 times in different ways:

'Hybrid kernels are used in most commercial operating systems such as Microsoft Windows NT 3.1, NT 3.5, NT 3.51, NT 4.0, 2000, XP, Vista, 7, 8, and 8.1. Apple Inc's own Mac OS X uses a hybrid kernel called XNU which is based upon code from Carnegie Mellon's Mach kernel and FreeBSD's monolithic kernel. They are similar to micro kernels, except they include some additional code in kernel-space to increase performance. These kernels represent a compromise that was implemented by some developers before it was demonstrated that pure micro kernels can provide high performance. These types of kernels are extensions of micro kernels with some properties of monolithic kernels. Unlike monolithic kernels, these types of kernels are unable to load modules at runtime on their own. Hybrid kernels are micro kernels that have some "non-essential" code in kernel-space in order for the code to run more quickly than it would were it to be in user-space. Hybrid kernels are a compromise between the monolithic and microkernel designs. This implies running some services (such as the network stack or the filesystem) in kernel space to reduce the performance overhead of a traditional microkernel, but still running kernel code (such as device drivers) as servers in user space.'

This article needs someone who knows how to write rather than someone who knows technology.

--24.6.67.137 (talk) 10:04, 21 July 2014 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified one external link on Kernel (operating system). Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20061101012856/http://www.vmars.tuwien.ac.at/courses/akti12/journal/04ss/article_04ss_Roch.pdf to http://www.vmars.tuwien.ac.at/courses/akti12/journal/04ss/article_04ss_Roch.pdf

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

Cheers.— InternetArchiveBot  (Report bug) 18:28, 4 May 2017 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified 4 external links on Kernel (operating system). Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20070621155813/http://jya.com/paperF1.htm to http://www.jya.com/paperF1.htm
 * Added archive https://web.archive.org/web/20121003060514/http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html to http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html
 * Added archive https://web.archive.org/web/20110621235229/http://www.cis.upenn.edu/~KeyKOS/NanoKernel/NanoKernel.html to http://www.cis.upenn.edu/~KeyKOS/NanoKernel/NanoKernel.html
 * Added archive https://www.webcitation.org/6187NYSIz?url=http://osxbook.com/book/bonus/ancient/whatismacosx//arch_xnu.html to http://www.kernelthread.com/mac/osx/arch_xnu.html
 * Added tag to http://i30www.ira.uka.de/research/publications/papers/index.php?lid=en&docid=642

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

Cheers.— InternetArchiveBot  (Report bug) 03:21, 9 December 2017 (UTC)

Move
Move to Kernel?--Democratic Backsliding (talk) 01:54, 23 February 2019 (UTC)

"Kernel (Computer Science)" listed at Redirects for discussion
A discussion is taking place to address the redirect Kernel (Computer Science). The discussion will occur at Redirects for discussion/Log/2021 November 20 until a consensus is reached, and readers of this page are welcome to contribute to the discussion. SWinxy (talk) 19:13, 20 November 2021 (UTC)

Consistency and generality
The article begins The kernel is a computer program at the core of a computer's operating system and has complete control over everything in the system. It is the "portion of the operating system code that is always resident in memory", and facilitates interactions between hardware and software components.

However, in some systems, the portion of the operating system code that is always resident in memory can include service routines or even application programs. This is even worse for systems with a single level store, e.g., Multics, where even files are always resident in memory.

A case in point is IBM OS/360 and successors. There is an area of storage at location 0 that is always resident in memory, but there is a second area of memory called the Link Pack Area (LPA), containing whatever routines IBM or the installation request. Some of these are always present, while others are only present if the installation explicitly includes them, either individual or entire libraries. There are several other permanent areas containing working storage. All of these areas are global; the address of every job, started task, etc., shares them.

While some code in the Nucleus, e.g., the Dispatcher, is global in nature, most of it runs in the context of a dispatching unit within an address space, subject to the same translation as application code. Further, large parts of the operating system run in their own address spaces in Supervisor Mode with Key 0, or both. None of this fits well with the description of kernels in the bulk of the article.

Historically, the concept of kernels was introduced well after the proliferation of disparate operating systems that did not have a layered design. The nomenclature kernel represented a drastic break from the ad hoc designs of the early 1960s. The article should reflect this break. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 21:54, 29 November 2021 (UTC)


 * "This is even worse for systems with a single level store, e.g., Multics, where even files are always resident in memory." It may be that Multics allowed pages from a file to be locked in memory, but that was atypical.  If you initiated a segment, so that it was mapped into the process's address space, it wasn't all fetched into memory - pages were fetched into memory as a result of page faults, and those pages might be evicted if the system wanted the containing page frame for some other purpose.  Segments are "resident" in the virtual address space of the process once they've been initiated.
 * I don't know whether Multics had any APIs to lock either entire segments, or a range of pages within a segment, in memory, but most if not all UN*Xes these days have APIs to lock a region of the address space in memory (mlock) and to unlock it (munlock), and I suspect Windows does as well.
 * And "[being] at the core of a computer's operating system and [having] complete control over everything in the system" does not require being "portion of the operating system code that is always resident in memory", and the "portion of the operating system code that is always resident in memory" may include code that's not "at the core of a computer's operating system" and that does not have "complete control over everything in the system". I.e., the references don't necessarily give a correct or consistent picture.
 * "This discussion blurs some differences between OS/360 MVT and later systems, e.g., z/OS." Yes, "most are pageable, but the FLPA is nonpageable." obviously doesn't apply to OS/360. :-)
 * "While some code in the Nucleus, e.g., the Dispatcher, is global in nature, most of it runs in the context of a dispatching unit within an address space, subject to the same translation as application code." What do you mean by "subject to the same translation as application code"? If "translation" refers to MMU (DAT box) translation, then this presumably refers to OS/VS1 or OS/VS2; as I understand it, until MVS, everything ran with "the same translation".  If this is referring to MVS, then do you mean that the code itself was mapped differently in different dispatching units (job steps, or whatever the MVS term that corresponds to "process" in the Multics/UN*X/Windows/etc. sense), or that it would refer to data structures in a per-dispatching-unit address space?
 * "Further, large parts of the operating system run in their own address spaces in Supervisor Mode with Key 0, or both." So that would be the equivalent of a Multics/UN*X/Windows/etc. process, with the code living in a per-process address space (rather than a global "kernel" address space), except that the code in question is running in supervisor mode with key 0? (UN*X and Windows, at least, don't have any direct equivalent to that, as far as I know - they may have processes running in user mode with elevated privileges, e.g. running as root on a UN*X, but it's not running in a privileged processor mode.) Guy Harris (talk) 05:03, 30 November 2021 (UTC)


 * In Multics, segments are identified by name. Two processes operating on the same segment will in general get different segment numbers for it, but the directory and name will be the same. The assignment, reading, writing and freeing of pages are not visible to the applications programmer.
 * By "subject to the same translation as application code" I mean that when an application requests a privileged service, the code for that service runs with the same translation tables as the caller. In the simple case that just means the same page and segment tables, but starting with MVS/ESA there are more types of tables.
 * Yes, in MVS a job running with Supervisor Mode or in key 0 has more privileges that a job running an unauthorized program with UID(0).
 * MVS has no global address space. However, there are segments that are shared by all address spces, containing, e.g., CSA, ECSA, ESQA, FLPA, MLPA, Nucleus, PLPA, SQA. Every job has its own address spaces, and there are address spaces that the system creates shortly after IPL, e.g., catalog address space, console address space, master address space.
 * A good analogy is to think of an MVS job as a very specialized shell process. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 22:19, 2 December 2021 (UTC)
 * "In Multics, segments are identified by name." They are identified by name within the file system.  They're identified by segment number within a virtual address space if and only if' they're mapped into that virtual address space, and they don't necessarily reside, in their entirety (or at all), within physical memory.
 * "Two processes operating on the same segment will in general get different segment numbers for it" - and a process that hasn't mapped it into its address space will get no segment number for it, because it's not in that process's address space.
 * "The assignment, reading, writing and freeing of pages are not visible to the applications programmer." Yes, if a reference is made to an address within an initiated segment, and the page in question isn't in memory, a page fault will occur and the page will be read into memory (with a page frame being freed, so that the page can be read into that page frame, if there's no free page frame). That's all standard paging behavior (and how memory-mapped files work on UN*Xes and, presumably, Windows).  The page is not always in memory unless it's been wired/pinned/whatever the term was in Multics.  If the dirty bit is set by a store into the page, it eventually gets written back to the file.
 * "By "subject to the same translation as application code" I mean that when an application requests a privileged service, the code for that service runs with the same translation tables as the caller." That's not unique to systems without a "kernel".  Some systems with a "kernel" might have separate user-mode and kernel-mode mappings, e.g. if they want to allow the user-mode address space to be larger than {hardware address space size} - {kernel address space size}, but that's not a requirement - when running in "kernel mode", the user-mode address space might still be mapped in, so that the kernel can just use user-mode addresses passed in as parameters to the system call (well, use them after making sure that the range of addresses is accessible in user mode, so that the kernel can't be tricked into reading from or writing into some region to which user-mode code shouldn't have access). Guy Harris (talk) 02:41, 3 December 2021 (UTC)
 * I took "always resident in memory" to mean permanently resident in either real or virtual memory, not just resident in real memory. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 15:32, 3 December 2021 (UTC)
 * Then you want an operating system such as IBM i plus the VMC/SLIC, as I think all objects there really do have a virtual address and are always present in the (one and only) address space. In Multics, files are NOT always resident in virtual memory; at any given instance, most of them are just resident in the file system - only some of them are part of one or more process's address spaces. Guy Harris (talk) 19:02, 3 December 2021 (UTC)
 * How about "In an operating system with a layered architecture, the kernel is the lowest level, has complete contol of the hardware and is always in memory. In some systems it is a single block of memory, while other systems have mechanisms, e.g., loadable kernel modules, that can extend the kernel." --Shmuel (Seymour J.) Metz Username:Chatul (talk) 12:08, 10 December 2021 (UTC)
 * I made that change, but Rockstone35 changed it back to The kernel is a computer program at the core of a computer's operating system and has complete control over everything in the system. It is the portion of the operating system code that is always resident in memory,.


 * That wording is wrong on two counts:
 * There are systems with application-level code permanently resident in memory
 * The concept of kernel does not apply to operating systems that are not cleanly organized in layers. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 04:52, 23 January 2022 (UTC)


 * -- the old phrasing was extremely vexing, which is why I changed it back.

Regarding your points:
 * I would consider that code to be "the kernel" as well.
 * Sure it does -- that's the point of microkernels, no?
 * As for your note on historical systems, what we refer to as "the kernel" now is what the "operating system" was back then. -- Rockstone  Send me a message!  05:07, 23 January 2022 (UTC)
 * Would you really consider code that an application calls as a normal subroutine part of the kernal? That's certainly not how the literature uses the term.
 * The point of microkernels is simply to reduce the size of the kernel by moving some functions into support processes. The concept of layering was introduced before that.
 * No, the operating system back then was closer to what we call a distribution now, and included applications like compilers and sort programs; there was nothing that corresponded to the modern notion of a kernel.
 * -- no, but I'd consider all code that is required for basic operation of the system to be kernel code.
 * That's not true; Multics and CTSS both were considered to have monolithic kernels. The concept of an operating system kernel has been around for 50+ years.
 * Regardless, unless you have citations for your perspective, we can't make any claims beyond what reliable sources provide. If you do have such citations, feel free to share it here; maybe there's a compromise we can come up with. -- Rockstone  Send me a message!  00:35, 24 January 2022 (UTC)

Citations errors and issues
I've run into some CS1 error messages, two of which I have cleaned up. In the process, I've noticed several issues that should be addressed. If someone can locate the relevant bibliographic data I'd like to clean these up. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 18:12, 23 January 2022 (UTC)
 * 1) There is a citation message and hidden category for {{tl|cite journal|| missing a periodical; I tried scanning for {{tl|cite journal}} and every one{{efn|After correcting one}} appears to have a {{para|journal}}.
 * 2) There are {{tl|cite web}} templates that should be more specific.
 * 3) There are {{tl|cite journal}} templates for articles that are not in journals.
 * 4) The citation for "The evolution of operating systems" is followed by a {{tl|cite book}} that has a {{para|chapter-url}} pointing to the stand-alone paper rather than the paper within the book.
 * 5) I can't find the ISBNs for individual issues of ACM Transactions on Computer Systems (TOCS)

{{notelist-talk}}

Irrelevant text added to the opening section
Someone seems to have copy/pasted a bunch of irrelevant text into the bottom half of the opening section of this article. — Preceding unsigned comment added by 96.84.80.149 (talk) 15:16, 23 August 2023 (UTC)
 * Is that the stuff that was added in this edit? If so, it was later removed in this edit. Guy Harris (talk) 19:18, 23 August 2023 (UTC)