The Advancement of Windows: Narayanan Ganapathy - Windows Vista IO
- Posted: Sep 29, 2006 at 2:25 PM
- 78,800 Views
- 24 Comments
Loading User Information from Channel 9
Something went wrong getting user information from Channel 9
Loading User Information from MSDN
Something went wrong getting user information from MSDN
Loading Visual Studio Achievements
Something went wrong getting the Visual Studio Achievements
Right click “Save as…”
From the kernel to the shell, Windows Vista is a very different OS than XPSP2. How so?
Here, Charles interviews Architect Narayanan Ganapathy whose team of highly skilled engineers write the Windows IO system, driver frameworks and related technologies. So, what,
exactly, is new in Windows Vista with regard to IO? What does it mean,
exactly, to users and developers?
Tune in. Learn.
Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation,
please create a new thread in our Forums,
or
Contact Us and let us know.
Follow the Discussion
Oops, something didn't work.
What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in. You need to be signed in to Channel 9 to use this feature.What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in and view them all on your notifications page.sign up for email notifications?
I've also seen it called "critical" priority. I think it's basically saying "this isn't realtime but its as close as you're going to get."
I'll second that about the hung I/O, it’s so incredibly annoying when you click a cancel button and nothing happens! It’s just unfortunate that in order to use it you would have to throw away XP compatibility but in a few years when everyone is using vista this shouldn’t be a problem.
As far as user mode drivers, I've moaned about this before but understand that as Charles says for an input device its really not going to matter and will improve stability etc. It’s not going to matter for your mp3 player because presumably you’re only going to upload a few files to your iPod etc and then close the tool so CPU usage here is irrelevant.
If on the other hand I am playing a game and I want to write stuff out to the display then I really want that to be as fast as possible. Any more CPU power I get including more cores etc I want that devoted to the game and not to drivers. Take Alan wake for example, its going to use four cores.
I can definitely see the argument for reliability over speed for business use, you would rather have all user modes there but in a gaming environment I would rather spend time buying hardware that I know has solid kernel mode drivers and then get the speed. Maybe two versions of the OS are required, one for gaming that is streamlined to have less background services e.g. no indexing etc, basically the gaming OS would be streamlined to run one game as fast as possible (like the Xbox and 360 OS's). You could then have a business version with all the great features mentioned in the video. With the coming of hardware virtualisation (run both versions at the same time) and more and more people having many machines in the home maybe this won’t be an issue in times to come.
Anyway enough of my rambling thanks for the interview
For further details I would recommend the "Inside Windows" book.
C
You can already cancel Async IO using the CancelIO function:
CancelIO
The only problem in WinXP is that this only cancels I/O on the current thread although I think you could probably cancel all I/O by storing thread handles from createthread and queueing APCs to them. As long as you had alertable waits this should work.
I think Vista is going to improve on this by implementing a CancelIOEx which should cancel I/O on all threads without the extra work:
CancelIOEx
I also have one question about user-mode drivers. You talked a little about how we don't want user-mode drivers to host a GUI, etc. But I wasn't sure if you mean that it is impossible for them to do that. Do user-mode drivers run in win32, or are they in a separate subsystem?
OK, one more question and I'm done. In general you can only cancel an operation that is sufficiently started, and not sufficiently finished. Those two restrictions lead directly to the two main classes of bugs associated with "cancel" type API calls. Namely, that you can't be sure you aren't trying to cancel it too early, and that you can't be sure you aren't trying to cancel it too late. The case of trying to cancel it too early can be handled carefully by the application with retries and synchronization, to avoid turning it into a problem. But I can't see how you can, in general, solve the second class of problem, trying to cancel an operation that has just finished, and accidentally cancelling a different operation. Is this something that you have looked into?
Narayanan
With all due respect, if you are talking about linux/BSD or Mac OSX, they are light years behind Vista.
Linux is still a monolithic kernel, and it will take forever to re-architect the services of the kernel as threads (also called the Mach kernel).
Vista goes one step beyond, they multi-thread each service.
You have to watch the other video about how they re-wrote their networking stack.
Pretty cool stuff really.
This was amaaaazing. I really liked the video.
I can see how this kernel will *scale* in the next few years.
Good stuff, my man.
-Rohit
Thanks, I was thinking from a managed perspective and cancelling a pending IAsyncResult. I guess they just need to add that to the Framework in 3.5 time.
In terms of the range of hardware support, I think it probably is.
As you will continue to see, from an OS point of view (including hw support obviously) Vista really is the most advanced general purpose OS in the world. I'm not just saying this. Stay tuned for more videos here that will demonstrate exactly why I can make such a claim.
Of course, Vista is a snapshot of the latest and greatest OS technologies from MS designed for general computing on a vast array of hardware. Windows will continue to evolve and in many incredibly interesting and powerful ways.
C
I don't know how to do to have my own page in this site.
Can I have the right to create a page here?
Tell my how to do? Thanks.
Someone on this thread mentioned that NT was based on Mach. Just thought I'd point out that this is not true. Mach was a research project at Carnegie Mellon, and while it is true that Richard Rashid was hired by Microsoft at one point, he was not involved really in the development of NT aside from some minor research related to paging the kernel.
The Windows NT kernel was designed from scratch by Dave Cutler and his team at Microsoft, most of whom came from Digital Equipment Corp and were involved with the development of VMS (another Cutler design.)
This is a long held misconception, perhaps related to the fact that both operating system kernels (Mach and NT) were billed as microkernels, when in fact both kernels are better classified as "hybrid kernels."
But aside from being modern operating systems, they are not related.
References:
"Showstopper!" by G. Pascal Zachary
"Inside Windows NT" David Solomon
-Rich
Remove this comment
Remove this thread
close