Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Question title says it all, I am interested in the kernel size of the different Windows versions. (Mainly Windows 7)

I am not interested in the size it has in memory when the system is fully booted, but the size of the actual binary. I am only familiar with Linux kernel architecture, so if Windows happens to have something comparable to modules in Linux, I am more interested in the number without modules. Otherwise a detailed explanation of why this question cannot be answered for windows would be acceptable, too.

I did not manage to find any results online, I don't have a version of Windows 7 installed right now so I wasn't able to go through the boot partition to look for the file itself.

share|improve this question

closed as not constructive by Canadian Luke, Brad Patton, Tog, 8088, Dave M May 6 '13 at 18:37

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

And I actually don't think that the file (which should have 2MB according to wikipedia) is the actual kernel. –  Baarn Sep 27 '12 at 12:56
It depends on how you want to define "the actual kernel". For example, including device drivers? –  Harry Johnston Sep 27 '12 at 22:56
@HarryJohnston In Linux these are called modules and I'd exclude them per my definition. In the end I don't really care about a specific measure, but a good definition about what the 'core' kernel of windows consists of. I'd even accept the WinMin Solution if it would give an explanation of why this has to be called the kernel compared to the linux kernel. (I know that there are structural differences, but please point them out) –  Baarn Sep 27 '12 at 23:11
Basically telling me that Microsoft is a bunch of closed source idiots and no one knows, does not help me. I know there are people that know how this stuff works and I know it might take time for an answer. I don't care about OS-Wars I only want a straight out number (with acceptable explanation) or an explanation why it isn't possible to give out such a number for windows, or how the windows kernel compares to linux and why it is hard to compare them. –  Baarn Sep 27 '12 at 23:16
The reason it's hard (apart from the inherent fuzziness of the definition) is that there's no obvious straightforward way to tell which files are going to be loaded into the kernel and which are not. The other problem is that there's no obvious point to the exercise; what use is the number going to be to anyone? –  Harry Johnston Sep 28 '12 at 0:00

3 Answers 3

OK. Starting with 32-bit Windows PE 3 (which is based on Windows 7) I removed everything that I didn't think was part of the kernel (for the purposes of this exercise) and wound up with just these files:

21/11/2010  12:40 a.m.           383,786 bootmgr
14/07/2009  01:14 p.m.             6,144 csrss.exe
21/11/2010  12:30 a.m.         3,966,848 ntkrnlpa.exe
21/11/2010  12:30 a.m.         3,911,040 ntoskrnl.exe
14/07/2009  01:14 p.m.            69,632 smss.exe
06/08/2012  03:58 p.m.         2,333,184 win32k.sys
21/11/2010  12:24 a.m.           508,904 winload.exe
21/11/2010  12:24 a.m.           442,720 winresume.exe
           8 File(s)     11,622,258 bytes

Some notes on my methodology:

  • I've assumed that everything not in Windows PE counts as a "module" and can be excluded.
  • I've excluded all data files.
  • I've excluded multilingual support (.mui files).
  • I've excluded device drivers as per your comment. Note that this makes a very big difference.
  • I've included the main boot loader code but not (for example) the PXE boot code.
  • I've excluded print spooler components.
  • I've included the Win32 subsystem (win32k.sys); you may prefer to consider this a module.
  • Where files were duplicated, I've only counted them once.
  • I've only included native executables, which can be distinguished because if you try to run one, you get a "application cannot be run in Win32 mode" error. To the best of my understanding, only native executables are loaded into the kernel.
share|improve this answer


More than 200 programmers are working concurrently on slimming down the Windows kernel for Windows 7, the next version of the operating system. Called ‘MinWin’, it consists of just 100 files and weights in at 25 MB compared to Vista’s 5,000 files and 4 GB core.

MinWin does not have a graphical interface and will not be productized.

share|improve this answer
I have found this article, too and excluded it from being reputable because of its age (2007 or so) and because I doubt that Vista had a 4GB core (whatever that means, if not kernel)… –  Baarn Sep 27 '12 at 13:58
Vista was an abomination that hogged up resources. I wouldn't doubt those numbers. Vista was effectively a beta for Windows 7. I forget the command but in early releases of Windows 7 (and maybe still) you could check the Windows 7 kernel and it showed up as Vista SP#. The age of the article is trivial, it's not like M$ is going to release any Earth-shattering kernel fixes after release that affect the size significantly. Effectively, consider the Windows kernel 25M. Unlike Linux, it is proprietary so it will be difficult to get a specific answer. –  HayekSplosives Sep 27 '12 at 15:12
From the Wikipedia page on MinWin: "MinWin is not, in and of itself a kernel" –  Baarn Sep 27 '12 at 15:34
More links from Microsoft employees about the minwin kernel...zdnet.com/blog/microsoft/… –  Moab Sep 27 '12 at 15:43
They all rely on the same presentation. As cited in the article MinWin even runs a minimal HTTP server, either Microsoft has completely gone mad or MinWin isn't the kernel but a minimal operation system to build on top of. On wikipedia it is suggested that the wording was incorrect and core has been confused with kernel. What I consider the core for linux would be the tools that reside in '/bin', eg 'cat', 'ls' and so on. –  Baarn Sep 27 '12 at 16:07

There are two kernels (32 bit) or up to 4 (64 bit). Depending on your processor only one will be used. They are all around 3.75MB:

NTOSKRNL.EXE : 1 CPU - NT kernel for 1 CPU
NTKRNLMP.EXE : N CPU SMP - NT kernel for multiple CPUs
NTKRNLPA.EXE : 1 CPU, PAE - NT kernel for 1 CPU with PAE
NTKRPAMP.EXE : N CPU SMP, PAE - NT kernel for multiple CPUs with PAE

(PAE = Physical Address Extension)

If you are interested in the order and other items involved in loading the o/s they are:

bootmgr - The bootloader/manager (BCD store)
ntoskrnl.exe (Or one of the above four) - The kernel
winload.exe - The kernel loader call by the boot manager (BCD store), which in
              turn loads the kernel ntoskrnl.exe

The other files listed are nothing to do with the kernel but are required for the os to load:

  • Csrss.exe is the part of the Microsoft Client/Server Runtime Server Subsystem that runs in user mode. It is a critical subsystem that is primarily responsible for managing threads and creating console windows. It also handles any other operations of the Win32 subsystem that are not in kernel mode.
  • smss.exe is the Session Manager Subsystem and is responsible for handling sessions on your system.
share|improve this answer
Why do you have to put everything inside a blockquote? –  hvtuananh May 5 '13 at 23:01

Not the answer you're looking for? Browse other questions tagged or ask your own question.