{"id":7843,"date":"2012-04-17T07:00:00","date_gmt":"2012-04-17T07:00:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/2012\/04\/17\/theres-the-kernel-and-theres-kernel-mode-confusing-historical-terminology\/"},"modified":"2012-04-17T07:00:00","modified_gmt":"2012-04-17T07:00:00","slug":"theres-the-kernel-and-theres-kernel-mode-confusing-historical-terminology","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20120417-00\/?p=7843","title":{"rendered":"There&#039;s the kernel, and there&#039;s kernel mode &#8211; confusing historical terminology"},"content":{"rendered":"<p>A few weeks ago, I mentioned that <a href=\"http:\/\/blogs.msdn.com\/b\/oldnewthing\/archive\/2012\/03\/16\/10283988.aspx\"> the kernel folks decided not to expose bonus bytes to applications<\/a>. Some people were confused by this statement, not for what it said, but for what it implied. &#8220;Wait, you&#8217;re telling me that the heap is implemented in kernel mode?&#8221;\n Let&#8217;s turn the clock back to 1983.\n The core components of Windows fell into three categories:<\/p>\n<ul>\n<li>The window manager, known as <code>user<\/code>,     because it handled the <u>user<\/u> interface. <\/li>\n<li>The graphics engine, known as <code>GDI<\/code>,     short for     <i>Graphics Device Interface<\/i>. <\/li>\n<li>File I\/O, the scheduler, memory management, and other     low-level bits, known as <code>kernel<\/code>. <\/li>\n<\/ul>\n<p> Windows&nbsp;1.0 ran on the 8086, which had no concept of CPU modes or memory protection or any stuff we take for granted nowadays. Everything ran in a single mode, and since there was only one mode, it didn&#8217;t have a name.\n Although future versions of Windows distinguished between kernel mode and user mode (in the CPU mode sense), the old terminology stuck around. The &#8220;kernel&#8221; was anything related to file I\/O, the scheduler, memory management, and other low-level operations, even if they were implemented in user mode.<\/p>\n<p> For a time, there was an effort to use the term &#8220;base&#8221; to refer to all of these low-level operations and thereby avoid the confusing term &#8220;kernel.&#8221; As you can tell, the attempt was largely unsuccessful. People continued to call low-level stuff &#8220;kernel&#8221; out of habit. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>A few weeks ago, I mentioned that the kernel folks decided not to expose bonus bytes to applications. Some people were confused by this statement, not for what it said, but for what it implied. &#8220;Wait, you&#8217;re telling me that the heap is implemented in kernel mode?&#8221; Let&#8217;s turn the clock back to 1983. The [&hellip;]<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[26],"class_list":["post-7843","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-other"],"acf":[],"blog_post_summary":"<p>A few weeks ago, I mentioned that the kernel folks decided not to expose bonus bytes to applications. Some people were confused by this statement, not for what it said, but for what it implied. &#8220;Wait, you&#8217;re telling me that the heap is implemented in kernel mode?&#8221; Let&#8217;s turn the clock back to 1983. The [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/7843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=7843"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/7843\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=7843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=7843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=7843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}