Talk:Architecture of Windows NT

Untitled
Note: One should avoid excessive duplication between this article and other related articles such as Windows 2000, Windows XP.

Microkernel
Win2k (and all versions of windows AFAIK) are NOT microkernel based operating systems. According to Windows Internals 4th ed: "Windows isn't a microkernel-based operating system in the classic definition of microkernels, where the principal operating system components ... run as separate processes in their own private address space". Windows Internals is written by Mark Russinovich and David Solomon (and considered to be authoritative). I'm going to try to reword the article, and perhaps expand on the issue at a later time. Consider the fact that the filesystem and much of GDI runs in kernel-mode.Timbatron 17:48, 7 November 2005 (UTC)
 * Those things run in Ring 0 with the kernel, but they aren't part of the kernel. NTOS certainly isn't monolithic either.  Careful with the re-wording. SchmuckyTheCat 00:40, 8 November 2005 (UTC)
 * Ok, good point. It's not completely monolithic, but it certainly isn't microkernel either. I'm still contemplating how the best way is to word it. I think I'm going to write a brief section "Monolithic vs. Microkernel", and change the use of "microkernel" to "kernel", since this is the wording that Russinovich uses. Timbatron 16:13, 8 November 2005 (UTC)
 * As the current wording states hybrid and microkernel, and there is no disagreement to the above written some time ago, I will now make the change, tentatively. I have also proposed a change to the hybrid kernel page, and diagram, which are all inconsistent to say the least. --Widefox 19:09, 22 July 2006 (UTC)
 * I briefly explained the concept in the "kernel" section, hope that clears it up. Basically, what is called "kernel" is the microkernel, and the "executive" subsystems are what in a proper microkernel would be user-mode processes, communicating through the never-implemented "channel" objects. It's clear that the microkernel design was scrapped very early, before any development, but its overall shape and vestigial remains are visible everywhere --KJK::Hyperion 10:16, 21 December 2006 (UTC)

Privilege levels
Does the kernel mode take up 3 privilege levels of the μp? =Nichalp (Talk)= 13:32, Jun 5, 2005 (UTC)
 * Not rightly sure. I found the following article, which states that:
 * X86_SELECTOR represents a 16-bit segment selector, as stored in the segment registers CS, DS, ES, FS, GS, and SS. In Figure 1, selectors are depicted as the upper-third of a logical 48-bit address, serving as an index into a descriptor table. For computational convenience, the 16-bit selector value is extended to 32-bits, with the upper half marked "reserved". Note that the X86_SELECTOR structure is a union of two structures. The first one specifies the selector value as a packed 16-bit WORD named wValue, while the second breaks it up into bit-fields. The RPL field specifies the Requested Privilege Level, which is either 0 (kernel-mode) or 3 (user-mode) on Windows 2000. The TI bit switches between the Global and Local Descriptor Tables (GDT/LDT).
 * Furthermore, I found the following site (specific to I/O ports) that states:
 * Under Windows NT, there are only two I/O privilege levels used, level 0 & level 3. Usermode programs will run in privilege level 3, while device drivers and the kernel will run in privilege level 0, commonly referred to as ring 0. This allows the trusted operating system and drivers running in kernel mode to access the ports, while preventing less trusted usermode processes from touching the I/O ports and causing conflicts. All usermode programs should talk to a device driver which arbitrates access.
 * HTH. - Ta bu shi da yu 02:42, 6 Jun 2005 (UTC)


 * Thanks for the info. Could you see to it that it is included in the text? =Nichalp (Talk)= 07:28, Jun 6, 2005 (UTC)


 * Will see what I can do. - Ta bu shi da yu 08:03, 6 Jun 2005 (UTC)


 * Sorry this is taking so long... very busy and don't use the Internet at home. - Ta bu shi da yu 05:07, 15 Jun 2005 (UTC)

Move to Architecture of Windows NT
I propose that this article is moved to Architecture of Windows NT, as it applies equally well to NT and XP as to 2000 and Windows NT is often used to refer to any one of NT/2K/XP. --R.Koot 22:48, 20 November 2005 (UTC)


 * Support. --R.Koot 22:48, 20 November 2005 (UTC)

I second that -- in common usage, "NT" refers to the whole family from NT 3.1 through Windows 2000, XP, and Server 2003. Similarly, 9x usually refers to non-NT releases of Windows -- Windows 95, Windows 98, and Windows ME.

As for the privilege level question, NT uses only two privileges today -- user mode and kernel mode. On the x86 family of processors, those modes use code privilege level (sometimes called "ring") 3 and CPL 0 respectively.


 * In that case, may I suggest that we move it to Architecture of the Windows NT operating system line? There are some things here that are specific to Windows 2000, like layered file system drivers. - Ta bu shi da yu 07:57, 25 November 2005 (UTC)


 * It's a bit long, but I wouldn't object. Specific changes made in 2000 or XP could also be mentioned here. Great article btw. &mdash;R. Koot 13:54, 25 November 2005 (UTC)


 * Thanks! - Ta bu shi da yu 02:16, 8 December 2005 (UTC)


 * Actually, it should just be "Architecture of Microsoft Windows". WinNT is a historical product and few people use NT to refer to Windows since 2000. Wikipedia uses common names and NT isn't.  Win9x and Win3x are historical and a dab link to point to their architectures would do fine. SchmuckyTheCat 20:41, 25 November 2005 (UTC)


 * I entirely do not agree with that, to say it without using many words. &mdash;R. Koot 17:27, 27 November 2005 (UTC)


 * Agree with R. Koot. Windows 95/9x use an entirely different architecture, to say otherwise would be misleading. - Ta bu shi da yu 02:25, 8 December 2005 (UTC)

Move to NT-based operating systems and merge of NT-based
I think there is a big problem with the new name "Architecture of Windows NT". It is factually incorrect, due to the whole line being discussed, and worse than that in software terms, it sounds obsolete. The discussion above did *not* reach consensus, and I like the others have no easy answer: Bad names:
 * "Architecture of recent Microsoft Windows" seems limp, as do
 * "Architecture of modern Microsoft Windows" also
 * "Architecture of contemporary Microsoft Windows" so do
 * "Architecture of Microsoft Windows NT and later" not pretty.
 * "Architecture of Windows 2000" (original title)
 * "Architecture of NT-based operating systems" - long
 * "NT-based operating system"

Luckily, now that W98 will be is unsupported 2007 Q3 2006, that leaves the obvious:
 * "Architecture of Microsoft Windows" (used with caveats - not applying to W98/95/3) is best. Widefox 01:08, 30 October 2006 (UTC) Support Widefox 01:11, 30 October 2006 (UTC)


 * "NT-based Architecture" (see article NT-based, which I propose is merged into this article) Support Widefox 23:13, 31 October 2006 (UTC)

Support Widefox 17:56, 1 November 2006 (UTC)
 * "NT-based operating system" (and merge of NT-based into this article)


 * Actually, 98SE/ME dropped off this year or last. Win2K is unsupported as of last summer as well, except for the occasional security update. I would actually have suggested "Architecture of the Windows NT product line" if anyone has information on WinNT 3/3.51, then 4, 2000 (which was developed as 5.0), XP (5.1) and Server '03 (5.2). --JohnDBuell 01:22, 30 October 2006 (UTC)
 * (W98 July 11, 2006) Widefox 15:00, 30 October 2006 (UTC)


 * "Windows NT" and "Windows NT operating system line" are exactly the same, aren't they? I mean, there is no "Windows NT" other than it being a line of operating systems.  Wikipedia doesn't have "operating system" in any article names unless it's a disambiguation.  -/- Warren 01:38, 30 October 2006 (UTC)


 * If I'm understanding the past discussions correctly, the point is that the article applies to NT 3.x and all later versions, not JUST the versions that were called "Windows NT". --JohnDBuell 01:46, 30 October 2006 (UTC)


 * "Windows NT operating system line" is something different. NTOS is an architectural foundation of many Microsoft products, like the Xbox, that have nothing to do with Windows (or this article).  A title without NT is better off as the NTOS part of current Windows is deprecated (in marketing and common usage) going on 7 years.  It's there because Microsoft has managed to consolidate so many code-bases but nobody still calls it "NT". This article doesn't need to worry about Win9x (dead) anymore than it needs to worry about Windows Mobile. An architecture article on Win9x or WinCE may be useful, but not confused with the mainstay desktop OS. SchmuckyTheCat 04:03, 30 October 2006 (UTC)


 * Hi, I was the one who moved the page a few days ago. I thought that User:JohnDBuell was giving me the impression that he thought the current title would be a good one; apparently I misunderstood what he was saying. I don't mind what the title ends up as. Thanks. Andrew Levine 04:24, 30 October 2006 (UTC)


 * No, I wasn't. I was under the impression that one of your objections to a current FAC had to do with long article names, and pointed out this FA as having had one. Please don't post misleading information and attribute it to me. Any further discussion of this should be between Andrew and myself, and not on article talk pages. Thanks! --JohnDBuell 18:48, 30 October 2006 (UTC)


 * This article was originally called Architecture of Windows 2000. Perhaps that's what it should be called? If you read through the contents of the article (ignoring the first couple of sentences), that's precisely what it describes.  I'm not happy with calling it "Architecture of Windows NT" either, because there's information in here that doesn't apply to NT 3, 3.5, 4, or 6.  It'd also need some work to effectively cover 5.1 and 5.2 (the OS/2 and POSIX subsystems aren't included by default in 5.1 and later, e.g.).  We might be better off creating separate articles for the architectural details of major versions of Windows; Vista has a lot of new details in it that would really weigh down this article if we tried to integrate them in.  Likewise if we tried to separate out the new stuff in Windows 2000 from NT 4. -/- Warren 05:58, 30 October 2006 (UTC)


 * Please vote for name above, the caveats can cover all concerns above. Call me a pragmatist, but if we have maintenance issues with the 1 article, more will be worse. If I remember correctly, Vista information is in the article, and more should be added to keep it alive. If it gets too big, sure then split. Please compare with the situation at Netscape Netscape (web browser) . I think it's best to avoid that, just by having the evolution in the article. Widefox 15:00, 30 October 2006 (UTC)

Widefox: How about "Architecture of NT-based operating systems"? I'd really prefer to keep the "Aspect of subject" style of naming we've been using in most other Microsoft articles. -/- Warren 05:27, 1 November 2006 (UTC)
 * bit long - what about the compromise above - if we are merging NT-based, we should drop the Architecture and then everyone might be happy... Widefox 17:56, 1 November 2006 (UTC)
 * the article NT-Based should just be deleted as unsourced. NT should not be in the title unless you plan on including things like the xbox kernel. The subject matter here is the mainstream Windows architecture and it's evolution, not the myriad other msft projects that take the kernel and build something new.  NT was the name of the OS in the past, now it's the name of an internal piece of the OS.  It shouldn't be in the title. SchmuckyTheCat 19:28, 1 November 2006 (UTC)


 * Just calling it "Windows architecture" would be an extremely bad idea. There have been several distinct Windows architectures, only one of which is built on the NT kernel.  Never mind this hooie about what the "mainstream" kernel in use today is; that's not important.  The naming should accurately reflect what the article describes, and right now that's the kernel & executive architecture of Windows 2000 -- nothing older, and nothing newer.  If nobody disagrees with this point, I'll rename the article to "Architecture of Windows 2000", and anybody who wants to expand the article to include other versions of Windows can make the effort to do so, and rename the article at that time.  -/- Warren 20:11, 1 November 2006 (UTC)
 * I strongly disagree with this name. I originally called it that, but this article encompasses the NT-line products. - Ta bu shi da yu 00:40, 21 November 2006 (UTC)
 * I don't agree at all. I believe wikipedia wants the articles to remain contemporary. Being as there is no other architecture article, it must evolve. The desire to have a W2K article is understandable (especially due to the current state of this article), but results in no current article. The alternative is to make a split at this point, and concentrate on the new article, but it involves more work. Widefox 23:56, 1 November 2006 (UTC)

ReactOS
It might be worth while mentioning ReactOS as it is attempting to reimplement the NT architecture.

But it's not NT. That's like mentioning linux in a BSD article.Freeeekyyy (talk) 20:03, 18 June 2009 (UTC)

Vulnerabilities
On November 16, 2006 Microsft announced that there was an vulnerability in the workstation service and that exploit code had been created to attack vulnerable machines. - Ta bu shi da yu 00:39, 21 November 2006 (UTC)


 * off topic --KJK::Hyperion 10:07, 21 December 2006 (UTC)

Why are there multiple HALs for the same platform?
See. I understand that different drivers would be needed for ACPI or non-ACPI systems, but why is it so fundamental that they need a different HAL? Grouse 15:47, 8 December 2006 (UTC)
 * To give you an example I'm familiar with, when ReactOS was ported to the Xbox, exactly three things needed porting: the boot loader, the VFAT driver, and the HAL. The Xbox HAL did three things differently from the standard x86 HAL: it reimplemented basic video output (think BSOD), it parsed the non-standard partition table and it blacklisted a PCI device that would crash the machine upon access. There is no value in detecting such differences at runtime, as it has to be done exactly once, very early, so there is no value in putting all functionality at once in an universal HAL - in fact, adding another layer of indirection could slow things down. Instead, what is done in peculiar environments such as installation/recovery CDs is using a special boot loader that scans the hardware and determines the correct combination of kernel+HAL to load --KJK::Hyperion 10:32, 21 December 2006 (UTC)

Removed from HAL section
As irrelevant and outdated: Windows 2000 was designed to support the 64-bit DEC Alpha. After Compaq announced they would discontinue support of the processor, Microsoft stopped releasing tests build of Windows 2000 for AXP to the public, stopping with beta 3. Development of Windows on the Alpha continued internally in order to continue to have a 64-bit architecture development model ready until the wider availability of the Intel Itanium IA-64 architecture. The HAL now only supports hardware that is compatible with the Intel x86 architecture. Preserved here because the information is factual and could be used elsewhere --KJK::Hyperion 10:07, 21 December 2006 (UTC)


 * To clarify: The 64-bit project began targeting both the Alpha and Itanium (at the time unrealized in hardware). There was never a release of Win2K for Alpha 64-bits to the public, not in beta, nor alpha, nor any other version. Win2K for Alpha 32-bit betas, certainly. I thought that Windows 2000 (32-bit) for AXP got as far as Win2K RC2... possibly RC1. I'd have to dig through old MSDN CDs to see. Jeh 00:13, 10 October 2007 (UTC)

POV concerns
Recent edits introduce phrases like "blah-blah-blah is a kludge which...." This is clearly POV. You may be right ... but the article needs to be unbiased, balanced, and without any sermonizing or judgement. Please have a cuppa tea and find more neutral ways to describe the details. If you can describe what's good and bad about the design, the user can draw his/her own conclusions. David Spalding ( ☎ ✉ ✍  ) 02:41, 26 December 2006 (UTC)


 * Ain't that great, I've finally fallen victim to Wikipedia tagsoup nazism. No worries kind mister, I'll reword faster than you could type "WP:OR" --KJK::Hyperion 00:53, 29 December 2006 (UTC)
 * Actually, if you don't reference something like this, don't add it, full stop. Otherwise, might be worthwhile contributing to a different project, as we have some extremely clear policies on this sort of thing. Your edits have degraded this FA. - Ta bu shi da yu 03:04, 10 October 2007 (UTC)

How I will make this article better
The current structure isn't that great. The division between kernel and user mode components feels very artificial to me, as several kernel-mode components depend (for "everyday use") from user-mode components, and certain subsystems (like Win32) are divided between user mode and kernel mode more out of practical concerns (read: security) than by design. Also, Win32 has its own, parallel architecture, and the rest of the system can and does live fine without it.

In general, the article doesn't do justice to Windows NT's unique architecture and philosophy - no mention of features, like callbacks, that would make UNIX-heads' hair curl, turn gray and then fall. The article fails to bite.

So I will, sooner or later, reorganize it in a better structure, that makes the article less about "architecture" (actually more than it is now) and more about "philosophy":
 * Core architecture
 * Kernel general info + breakdown by primitive
 * Executive breakdown by subsystem
 * Balance set manager
 * Hardware Abstraction Layer (HAL)
 * Structured Exception Handling (SEH)
 * Runtime Library (RTL)
 * Loader (LDR)


 * Interfacing user mode and kernel mode
 * System services
 * Callbacks
 * User-mode Asynchronous Procedure Calls (APCs)
 * Thread Environment Block (TEB) and Process Environment Block (PEB)
 * NT Layer DLL (ntdll)
 * Special LPC ports
 * Special objects


 * Process management what is a process, how processes are started, jobs, etc.
 * Thread scheduling algorithms, priorities, boosting, idle threads, real-time scheduling, etc.
 * Security model and architecture
 * Security model SDs, tokens, access control, privileges, MIC, etc.
 * Auditing
 * Local Security Authority (LSA) Subsystem (LSASS) logon sessions, SSPs, APs, etc.
 * Security Support Provider Interface (SSPI)
 * Kernel Security Device Driver (KSecDD)
 * winlogon omitted intentionally because it's part of Win32


 * Networking
 * Network Driver Interface Specification (NDIS)
 * Transport Device Interface (TDI)
 * Winsock Ancillary Function Driver (AFD)
 * also an overly complex architecture to control protocol bindings whose name escapes me now


 * Device drivers
 * Architecture DriverEntry, Dispatch, Unload, DOs, FOs, etc.
 * PnP support AddDevice, StartIo, etc.
 * Windows Driver Model (WDM)
 * Driver Verifier
 * lots more - NDIS, HID, WIA, KS, bus support, etc. - probably too much, in fact


 * Filesystem drivers
 * Architecture FCBs, CCBs, VCBs, etc.
 * Filesystem Runtime Library (FSRTL)
 * Multiple UNC Provider (MUP)


 * Plug and Play (PnP) I'm no expert, sadly
 * Windows Management Infrastructure (WMI)
 * Interoperability services
 * NT Virtual DOS Machine (NTVDM)
 * POSIX support
 * OS/2 support
 * Windows on Win64 (WOW64)
 * Windows x86 emulation (WX86) if I can find enough information, it's an Alpha thing


 * Debugging services
 * Debugging Kernel & Debugging Subsystem
 * Kernel Debugger
 * Bugchecking and dumping


 * Boot environment
 * OS Loader (NTLDR)
 * System startup

--KJK::Hyperion 04:07, 29 December 2006 (UTC)
 * I'm assuming that you'll be providing referencing? So far, you've provided none in your edits to this article. - Ta bu shi da yu 03:05, 10 October 2007 (UTC)
 * On a second look, that looks like it would make for a bloody long article. Bravo to me if I can pull it off without going "War and Peace" --KJK::Hyperion 04:14, 29 December 2006 (UTC)


 * We have a variety of articles floating around that cover several of the areas you've listed here. Windows Management Instrumentation, NTVDM, Windows NT Startup Process, WOW64, NDIS, Local Security Authority Subsystem Service, Security Support Provider, and so on.  If anything, this article should briefly summarise how these components fit into the bigger picture, reserving the deeper details for the articles themselves.  Also, be aware that the text that's here now really only describes the architecture of Windows 2000, not what came before or after it.  While that makes the article interesting and relevant for people interested in that particular piece of Windows history, it means we aren't covering the present very well -- NT6 is quite a bit different than NT5 in many areas, and apart from Features new to Windows Vista and a few other areas like Kernel Transaction Manager, we've done nothing to address that yet.  -/- Warren 04:28, 29 December 2006 (UTC)


 * Agree on the "bigger picture". With regards to NT 6, no, it didn't change the architecture significantly. All existing applications and all existing drivers (except those based on deprecated bus/class/port drivers) still work, all assumptions still hold. I/O is still packet-driven, the cache is still based on memory-mapping, the scheduler is still a RR thread scheduler, etc. --KJK::Hyperion 03:20, 31 December 2006 (UTC)

Cites
This article seems sorely lacking in citations. Maybe some of the new eyes from it being featured will be able to give it a hand? --Falcorian (talk) 00:41, 19 August 2007 (UTC)
 * What statements do you think require specific citations? Christopher Parham (talk) 01:30, 19 August 2007 (UTC)
 * As many as can be. FA should have many more citations than 10. --Falcorian (talk) 03:45, 19 August 2007 (UTC)
 * The requirement in the FA criteria is that statements which are likely to be challenged carry citations (along with any specific quotations). There is no numerical minimum. Christopher Parham (talk) 03:52, 19 August 2007 (UTC)
 * While there is no numerical minimum, there certainly is an expectation that it is adequately cited. This article has whole sections without any references at all. --Falcorian (talk) 05:53, 19 August 2007 (UTC)
 * There is no requirement that every section include an inline citation. The relevant policy that is that citations should be provided for material that is challenged or is likely to be challenged, as well as for quotations. Christopher Parham (talk) 06:26, 19 August 2007 (UTC)
 * FA status though requires 'Claims are supported with specific evidence and external citations;', and although WP:V does not require citations for much of this article, those same parts of the article do not fall under the 'When a source may not be needed' guidelines, leaving it in a grey area. Because it is a FA article, I would argue that these should be cited, as it should meet a higher standard. --Falcorian (talk) 18:45, 20 August 2007 (UTC)
 * OK, I wrote this article. Please tell me what statements need referencing, or please, forever hold you peace! Unless you can tell me where the problems are, I can't improve the article. - Ta bu shi da yu 13:12, 21 August 2007 (UTC)
 * Would it be OK if we did this by placing { { citationneeded } } tags in the text? That's quite an efficient way of helping to show which statements need referencing, which I've seen used elsewhere. SP-KP 18:21, 21 August 2007 (UTC)
 * Fine with me :-) Go for it! Ta bu shi da yu 22:06, 21 August 2007 (UTC)
 * Thanks. I'll make a start. If you're not sure about any specific examples, start a new section below and I'll happily give my reasons as to why I think a reference is needed. SP-KP 22:26, 21 August 2007 (UTC)

Whoever added those citation tags seems to have gone a little over the top. There are some statements are are so well accepted that to cite them is fussy to say the least. For instance: "The Windows NT hardware abstraction layer, or HAL, is a layer between the physical hardware of the computer and the rest of the operating system. It was designed to hide differences in hardware and therefore provide a consistent platform on which the kernel is run. [citation needed]" This is the very definition of a hardware abstraction layer - if it needs to be cited then it should be done so in the HAL article, not here. Can I suggest some of the more obvious requests for citation be removed? —The preceding unsigned comment was added by Straussian (talk • contribs).

While I can't speak to exactly which statements need citation, the article as it is now is ugly and messy. It is not possible that every sentence requires citation. I'd strongly suggest reverting to eliminate ALL of the "citation needed" tags; then, use this page to indicate just a few statements at a time that people feel really require specific evidence. Moishe Rosenbaum 02:23, 22 August 2007 (UTC)
 * I have to agree here... can we reduce the number of tags? I have reverted for the meantime. - Ta bu shi da yu 03:38, 22 August 2007 (UTC)

Moishe, I didn't tag every sentence; only those I felt needed citations. The CN tag is intended to be a helpful way of enabling editors to see which statements need sourcing. It may make the article look ugly temporarily, but the end result is a much improved article. But, that said, I'm happy to adopt the "few sentences at a time" approach if others would prefer that. As I said above, if there are specific statements which people feel are so obvious that they do not need citing, that's fine, let's discuss and agree them here. One word of caution though, WP:V states that the burden of proof lies with those wishing to add material, not with those wishing to see it referenced. I've re-inserted the first 15 tags - if that's too many we can always take this in even smaller chunks - hopefully we can cope with 15 at a time though - let's do those first and then move on from there. SP-KP 18:03, 22 August 2007 (UTC)

Excessive capitalization
Congratulations on the well deserved FA status. I don't understand what appears to be excessive capitalization (title case) of common nouns. The fact that a common noun has an all caps acronym does not elevate the common noun to title case. Capitalization is justified for a registered trademark (in which case a registered trademark symbol should be added), but not otherwise. I am referring to terms like cache controller, memory manager, local procedure call, and many more. Am I missing something here? I don't want to go hacking away at an FA (I'm not that WP:BOLD), but I don't see a justification for this. If Microsoft capitalizes these terms in its own literature, that is not justification. Could someone please explain? Thanks. Finell (Talk) 04:02, 19 August 2007 (UTC)
 * Well... if it is a name given by Microsoft, I suppose that we follow their conventions. If it is just a name, then we should probably change them to lower caps. Go for you life :-) - Ta bu shi da yu 06:11, 19 August 2007 (UTC)
 * I think that the difference is usually that Microsoft likes to give names to implementations of common techniques. We should respect that. For example, the Local Procedure Call is a piece of software made by Microsoft, just like Word or Excel, and they have every right to give their software a specific name. There's no LPC in Unix or Linux or any other system, so it's not anything like a common technique or software procedure. It should be capitalized like any other piece of software, I think, because I can see no difference between the exemplified software and any other piece of software. —msikma (user, talk) 08:51, 19 August 2007 (UTC)

WMI, DBGK?
At the top of the Executive paragraph, the following comment appears: <! -- TODO: WMI, DBGK -- > It seems that this article is FA now, but these things aren't mentioned. At some point, some editors felt that these two things (Windows Management Instrumentation and Kernel User-Mode Debugging Support) should be discussed, but it seems that nobody ever got around to writing about them. Was this taken into account during the FA process? Perhaps these things need to be edited in anyway? After-all, these two things are part of the kernel. —msikma (user, talk) 08:42, 19 August 2007 (UTC)

Wow
Who was bored enough to write this? 81.153.125.209 21:54, 19 August 2007 (UTC)
 * In reality, not just one person has written this article. Many different people have. If I had to guess, though, I'd say that whoever helped out must be interested in computer science. I guess you aren't. Thankfully, there's lots of other articles, too... :) —msikma (user, talk) 18:46, 20 August 2007 (UTC)
 * Actually, I wrote quite a great deal of it. Evidently, the anon has read the entire article and feels it worth the time to note it's boring. Personally, I find that sort of stupid. If you find the subject matter boring, just don't read it. Sheesh. - Ta bu shi da yu 13:44, 9 October 2007 (UTC)

Incorrect lead
Can someone familiar with this article please correct the lead ? WP:LEAD: Sandy Georgia (Talk) 22:02, 19 August 2007 (UTC)
 * The article's subject should be mentioned at the earliest natural point in the prose in the first sentence, and should appear in bold face. Avoid links in the bold title words.

NT on Alpha? 32 or 64 bits?
Start of article is also incorrect in saying Microsoft only released Windows versions supporting 64-bit processors starting with Windows XP. What about NT on the Alpha (a 64-bit-only chip)? —Preceding unsigned comment added by 208.48.205.42 (talk) 21:02, 11 December 2007 (UTC)


 * Define "64-bit-only". NT supported a 32-bit address space on Alpha, with 32-bit "int"s and "long"s, which is completely possible on Alpha. Guy Harris (talk) 05:05, 12 December 2007 (UTC)


 * Indeed. The shipped versions of NT for Alpha were pure 32-bit operating systems and supported only 32-bit applications. Same for the first versions of VMS for Alpha, for that matter. It's true that the chip has no 32-bit mode. This is handled through what amounts to sign extension: Any code compiled for 32-bit Alpha, when loading a pointer into a register, treats it as a signed number, copying bit 31 of the pointer into bits 32-63. Thus the 32-bit OSs on the Alpha populate the very first 2 GiB and the very last 2 Gib of the 64-bit address space, in a manner very similar to the 48-bit "canonical" virtual addresses on X64. Unlike 32-bit mode on e.g. X64, all 64 bits of the Alpha's GPRs were available for "large integer" calculations in this "32 bit" environment!


 * MS released 32-bit NT for Alpha through NT version 4, and shipped some beta and RC versions of 32-bit Win2K for Alpha. afaik RC2 was the last.


 * As for 64-bit Windows development... Originally the 64-bit port of Windows targeted both Alpha and Itanium. I attended an NDA presentation on what was then called "Sundown", aka NT64 - the NDA has long since expired and I still have the handout, but it's hardly anything most people will be able to go to as a verifiable source. Sometime after that CPQ dropped support on NT for Alpha. MS continued work on 64-bit Windows for Alpha and for Itanium, but with no intention on MS's part of shipping the Alpha code. It was done for two reasons: There was Alpha hardware but no Itanium hardware, and they wanted to maintain a code base for more than one processor architecture, a practice that made the (much later) X64 port much easier. Although it was developed internally, no 64-bit NT or Win2K or XP or etc. code for Alpha was ever shipped, even in beta form. Jeh (talk) 01:41, 13 December 2007 (UTC)


 * Is this similar to the situation with NT on PPC? MIPS R4000? jdstroy (talk) 23:56, 14 December 2008 (UTC)


 * For PowerPC, the versions around the time NT was using them (602, 604) were 32-bit CPUs. The first 64-bit PPC CPU didn't come along until 1997 and according to the WP article on it, it went nowhere. Around this time MS had already decided to drop PPC support, so all PPC NT ports were pure 32-bit. For R4000 I assume the situation was similar to the way they used the Alpha in 32-bit mode as described above - certainly there was no work done toward a 64-bit R4000 port of Windows. Jeh (talk) 00:15, 15 December 2008 (UTC)


 * Ah, okay, thanks. I almost went on a wild goose chase to attempt to find evidence indicating whether it existed or not. jdstroy (talk) 17:24, 16 April 2009 (UTC)

Referencing
I'm concerned about the sparseness of references in this article; this aspect seems out of line with the article's featured status (although other aspects of the article all seem good). The date it was promoted to FA status probably provides the explanation - the standards for referencing were much looser two years ago than they are now. I plan to nominate this at FAR soon (the article is currently ineligible as it featured in the main page recently). The purpose of this note is to gives editors some advance warning, to seek views on which sections are most in need of referencing, and to encourage suggestions on appropriate references. SP-KP 16:54, 20 August 2007 (UTC)
 * I agree with your concern, and we're actually already discussing it above. Maybe you'd care to join in? --Falcorian (talk) 18:46, 20 August 2007 (UTC)

Referencing update
This article is now listed at Featured Article Review, with the aim of tackling the problem that it is sparsely referenced. SP-KP 08:22, 23 August 2007 (UTC)

Criticisms
This article has far more problems than simply a lack of references.

I'll start with the user mode section:

"The user mode is made up of subsystems which can pass I/O requests to the appropriate kernel mode drivers via the I/O manager (which exists in kernel mode).[citation needed] Two subsystems make up the user mode layer of Windows NT: the Environment subsystem and the Integral subsystem."

Actually user mode is made up of a number of executables running in processes, plus various DLLs supplied by the system that are mapped into those processes. These components can be roughly divided into five categories:

1. System support processes such as those running smss.exe, winlogon.exe, services.exe, lsass.exe (ignore the "idle" and "system" processes; these are kernel mode components, although "system" does have some user mode address space in use)

2. service processes (similar to Unix daemons)

3. environment subsystem processes, and corresponding DLLs, which implement and export each subsystem's API set. Usually there is just one environment subsystem running (win32, represented by csrss.exe and various xxx32.dll's). A posix subsystem is available as a free download from MS. The OS/2 subsystem was dropped early in the Win2K timeframe.

4. Various ordinary user mode executables like userinit.exe and explorer.exe, required to implement the user's "shell" process

5. ntdll.dll, which exposes the native API to user mode

I don't know what is meant by "subsystems which can pass I/O requests to the appropriate kernel mode drivers via the I/O manager". I/O requests can be initiated by calling native APIs directly with no help from any "subsystems" whatsoever, environment subsystems or otherwise, even from a Win32 app. What does this qualification mean? ANY process in user mode can send I/O requests! (assuming it passes permissions checks to gain access to the intended file or device) But they don't talk to the I/O manager (IoXxx routines) directly. They can't, as no I/O manager routines are exposed for user mode call.

Which brings us to...

"The integral subsystem looks after operating system specific functions on behalf of the environment subsystem.[citation needed] It consists of a security subsystem, a workstation service and a server service. The security subsystem deals with security tokens, grants or denies access to user accounts based on resource permissions, handles login requests and initiates login authentication, and determines which system resources need to be audited by Windows NT.[citation needed] It also looks after Active Directory.[citation needed] The workstation service is an API to the network redirector, which provides the computer access to the network.[citation needed] The server service is an API that allows the computer to provide network services.[citation needed]"

1. I'm afraid there is no such thing as "the integral subsystem". Where did this term come from? There ARE things that could be called "integral subsystems" but there is no single "integral subsystem."

2. There is indeed a "security subsystem" (and this could be called "integral"). This part is mostly right, however a lot of the security subsystem is actually up in kernel mode, in the Se routines in the exec.

3. What does "looks after" mean? What functions are being performed, and by what components? Specifically?

4. Workstation and server services are not part of "the integral subsystem", whatever that means -- in particular they are not peers to the security subsystem components that run in user mode. Rather they are but two among the many various user mode "services" (these days they're both in one of the svchost.exe's). They are not part of any "integral subsystem", and there's a lot more to them than just an API. There are kernel mode components to both of these as well. The fact that they are not "integral" is easy to demonstrate: You can disable both of these services and Windows will continue to boot and run just fine.

I have a revised version of the user mode section, but policy says sweeping changes to a long-standing section should not be done without consensus. Please discuss. Jeh (talk) 07:52, 6 January 2008 (UTC)

Hello! Hello! I think that we need way more CITATION NEEDED OMFG in this article. It is still way to readable.

--92.226.139.8 (talk) 12:05, 7 August 2008 (UTC)

Image copyright problem with Image:Winobj.PNG
The image Image:Winobj.PNG is used in this article under a claim of fair use, but it does not have an adequate explanation for why it meets the requirements for such images when used here. In particular, for each page the image is used on, it must have an explanation linking to that page which explains why it needs to be used on that page. Please check


 * That there is a non-free use rationale on the image's description page for the use in this article.
 * That this article is linked to from the image description page.

This is an automated notice by FairuseBot. For assistance on the image use policy, see Media copyright questions. --06:03, 5 November 2008 (UTC)

Torvalds quote?
I know it's Wikipedia editor standard practice to quote open source developers in as many tech articles as possible, especially on closed source projects. But the (uncited) Torvalds statement about the kernel design seems to me to be completely pointless. I'm sure there are many arguments by many kernel developers about how many different kernels should be classified, but so what? —Preceding unsigned comment added by Thx1200 (talk • contribs) 15:54, 30 September 2009 (UTC)

NT, a mixed architecture?
I read a ReactOS webpage and it says something like: The NTarchitecture was designed by a team lead by David Cutler, a former lead developer of VMS. It took them more than 4 years to combine the best of UNIX, VMS and OS/2 and create the NT architecture.

Interesting. Maybe we could expand influences of UNIX and OS/2 onto NT. --Komitsuki (talk) 10:25, 13 July 2010 (UTC)


 * Um, first, I wouldn't look to a web page on ReactOS for authoritative information about Windows. About the only decent reference on Windows NT history and influences is probably the book Showstopper. Anyway... it is absurd to think that Windows NT included anything of Unix outside of the Posix subsystem; Cutler did not like Unix at all; a Google search for the words "Cutler", "hated", and "Unix" will show this. And the Posix subsystem was very much the bare minimum needed to claim compliance with the standard. Similarly, OS/2's influence ended at the user-kernel mode barrier, did not include the OS/2 GUI APIs (so only OS/2 character mode apps were supported), etc. The kernel mode architecture of Windows NT was influenced very heavily by VMS, particularly in the areas of the user-to-kernel calling sequence, memory management, scheduling, and the I/O subsystem - any VMS internals expert, and especially any VMS device driver writer (I'm raising my hand here), had a very short learning curve to move to NT, a Unix or OS/2 person had a lot more to learn. So "mixed architecture"? Not so much. Anyway I don't see the "history of influences" as a major focus here, this article is about NT architecture as a finished product. Jeh (talk) 16:55, 13 July 2010 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified one external link on Architecture of Windows NT. 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/20050323090649/http://mipagina.cantv.net/jjaguilerap/w2k_arq.html to http://mipagina.cantv.net/jjaguilerap/w2k_arq.html

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) 16:53, 8 July 2017 (UTC)