Misc
Windows Research Kernel @ HPIPresenting at SIGCSE 2010
As you may or may not know, here at HPI, we use the WRK pretty intense for teaching operating systems. Since the WRK has been released, we have developed a couple of programming projects, each dealing with a particular OS subject or principle. The goal behind those projects was to enable our students to use the WRK to experiment with certain parts of it and to experience implications of different design and implementation rationals.
However, when we started doing this, we ran into several problems, most of which are related to complexity of the WRK. First of all, we experienced that our students were not very familiar with the provided nmake-based build environment. Second, deploying the kernel onto a test system is way different than running a usual application. This also includes the debugging process. Finally, the complexity of the WRK requires students to thoroughly study the sources of the kernel prior to actually do some programming. While studying the WRK first is not the worst idea, it takes way too much time to understand each and every detail of the implementation. In many cases, it is however as sufficiently to understand only portions of it.
To persist our methodology, our experiences, our experiments, and the feedback our students gave us, we wrote a paper, which has been accepted for presentation at the 41st ACM Technical Symposium on Computer Science Education (SIGCSE 2010), in Milwaukee, WI, USA. If you are interested in our findings, please have a closer look on our paper Teaching Operating Systems - Windows Kernel Projects. We will also post the slides of the talk here anytime soon.
Resolved: A Performance Issue in Windows Timer Management
Two years ago, I wrote an article about spurious timer table entries. Those entries occurred in the global timer table and resulted in unnecessarily scheduled DPCs. During a recent visit in Redmond, I had the chance to meet with one of the Windows kernel developers. By coincidence, he remembered my article and told me that with Windows 7 the issue has been fixed. Here is how they did it.
WRK @ HPI First Hit on Bing
Well, it required us some work, but finally it pays off 🙂
At least on the US version of bing, our blog is the first entry on the result list. As Bing is sometimes strange and does not work properly if you do not set its locale to English (US), here is a screen shot to prove my claim:
WRK at 2009 Asia Pacific Workshop
Recently, Microsoft Research Asia organized the 2009 Asia Pacific Windows Core Workshop, where universities presented what they are doing with the WRK in their lectures and research.
Side Effects …
Usually, I admire the clean structure and high quality of the WRK
source code. However, I happened to encouter what I do not call a
good programming style. Have a look at the following function,
KiWaitTest
(in base\ntos\ke):
Phoenix builds WRK
Microsoft Phoenix is a compiler framework toolkit which allows for writing compiler front-ends (for programming languages), back-ends (for other target architectures than x86 and amd64), plus several tools and code optimizers.
Providing such a variety of opportunities, we tried to build the WRK with Phoenix, and it worked! However, we had to disable all optimization in the compiler.
Next Week: Server Computing Summit @ HPI
Microsoft / Hewlett-Packard Server Computing Summit 2008
Why Windows Timers May Not Fire
This article is motivated by a discussion with Max, one of our readers, who commented on my previous post on an anomaly in Windows timer management (read the article). So, thanks again Max!
Please have a look on the following program sample.
Happy New Year 2008
To all our readers,
we wish you a happy and successful new year 2008.
Michael and Alexander
Pageable vs. Pagable
One week before Christmas I had the chance to talk to Dave Probert. We met in Redmond and talked about new features for future releases of the Windows Research Kernel. Unfortunately, I cannot tell you all the details here, but there will be a next version of the WRK. If you have any suggestions for features, feel free to comment.
WRK Documentation
The source code documentation generator tool Doxygen can be used to generate a collection of HTML pages which allow easy navigation through large amount of source code files.
We created a WRK documentation using doxygen to allow a better exploration of the Windows Research Kernel source code.
Knuth says it is obvious!
I recently scanned through the sources, looking at virtual memory management, when I found another example of good programming style: comment your code!
WRK at "Informatik 2007"
Michael and me give a presentation of our latest project, the Windows Monitoring Kernel, in Bremen, Germany, at the Informatik 2007, the annual meeting of the German computer science society (GI).
We extended the WRK by an efficient event logging infrastructure, we called Windows Monitoring Kernel (WMK). The WMK is even more efficient than Event Tracing for Windows (ETW) as we provide more kernel events while inducing lower overhead. We will present the WMK to the community soon.
We invite everybody, who is at the Informatik 2007, to join us and to have some talk.
A Performance Issue in Windows Timer Management?
I was just crawling through the Windows sources to find out some details about Windows timer management when I figured out the following comment on lines 621 thru 624 in file base\ntos\inc\ntosdef.h:
00618 // 00619 // Define timer table size. 00620 // 00621 // N.B. The size of the timer table must be less than or equal to 256 and a 00622 // power of 2 in size. 00623 00624 #define TIMER_TABLE_SIZE 512
Obviously, the definition of TIMER_TABLE_SIZE
does
not follow the comment. But, as the code evolved over the years, I
thought it was just another comment inconsistency.
Diving deeper into the Windows timer management, I found the
reason why TIMER_TABLE_SIZE
has to be a less than or
equal to 256. Let me first tell you some principles of the Windows
timer management.
Dave Probert: Compare and Contrast
I had the chance to meet Dave Probert at Microsoft Academic Days 2007 in Castle Birlinghoven, near Bonn, Germany. Besides Arkady Retik, who oversees the Microsoft Windows Academic Program, Dave was responsible for the preparation of the source files that comprise the Windows Research Kernel.
In a talk, Dave told me the main reason why Microsoft released the WRK: Compare and Contrast. That is, students must be provided with the possibility to compare different solutions to common OS problems, like scheduling or memory management. In his oppinion, the majority of students are tought with UNIX or Linux at academic OS courses. So they are not able to see the other side of the coin.
So let's see, whether the WRK might accomplish its objective.
Using Visual Studio with the Windows Research Kernel
To facilitate modifications of the Windows Research Kernel, we created a Visual Studio 2003 Solution
Just copy the files from the archive to your WRK-v1.2 directory, adapt the WRKPATH environment variable in setenv.bat and use the WindowsResearchKernel.sln solution file.
Build your own Windows kernel by pressing CTRL-SHIFT-B.
Update: Visual Studio 2005 Solution
WRK@HPI online
The Windows Research Kernel comprising the source code of the latest Windows version (Windows Server 2003 Enterprise Edition) was released in summer 2006.
This site collects useful stuff related to the windows source code.
WRK Documentation
The source code documentation generator tool Doxygen can be used to generate a collection of HTML pages which allow easy navigation through large amount of source code files.
We created a WRK documentation using doxygen to allow a better exploration of the Windows Research Kernel source code.
Knuth says it is obvious!
I recently scanned through the sources, looking at virtual memory management, when I found another example of good programming style: comment your code!
WRK at "Informatik 2007"
Michael and me give a presentation of our latest project, the Windows Monitoring Kernel, in Bremen, Germany, at the Informatik 2007, the annual meeting of the German computer science society (GI).
We extended the WRK by an efficient event logging infrastructure, we called Windows Monitoring Kernel (WMK). The WMK is even more efficient than Event Tracing for Windows (ETW) as we provide more kernel events while inducing lower overhead. We will present the WMK to the community soon.
We invite everybody, who is at the Informatik 2007, to join us and to have some talk.
A Performance Issue in Windows Timer Management?
I was just crawling through the Windows sources to find out some details about Windows timer management when I figured out the following comment on lines 621 thru 624 in file base\ntos\inc\ntosdef.h:
00618 // 00619 // Define timer table size. 00620 // 00621 // N.B. The size of the timer table must be less than or equal to 256 and a 00622 // power of 2 in size. 00623 00624 #define TIMER_TABLE_SIZE 512
Obviously, the definition of TIMER_TABLE_SIZE
does
not follow the comment. But, as the code evolved over the years, I
thought it was just another comment inconsistency.
Diving deeper into the Windows timer management, I found the
reason why TIMER_TABLE_SIZE
has to be a less than or
equal to 256. Let me first tell you some principles of the Windows
timer management.
Dave Probert: Compare and Contrast
I had the chance to meet Dave Probert at Microsoft Academic Days 2007 in Castle Birlinghoven, near Bonn, Germany. Besides Arkady Retik, who oversees the Microsoft Windows Academic Program, Dave was responsible for the preparation of the source files that comprise the Windows Research Kernel.
In a talk, Dave told me the main reason why Microsoft released the WRK: Compare and Contrast. That is, students must be provided with the possibility to compare different solutions to common OS problems, like scheduling or memory management. In his oppinion, the majority of students are tought with UNIX or Linux at academic OS courses. So they are not able to see the other side of the coin.
So let's see, whether the WRK might accomplish its objective.
Using Visual Studio with the Windows Research Kernel
To facilitate modifications of the Windows Research Kernel, we created a Visual Studio 2003 Solution
Just copy the files from the archive to your WRK-v1.2 directory, adapt the WRKPATH environment variable in setenv.bat and use the WindowsResearchKernel.sln solution file.
Build your own Windows kernel by pressing CTRL-SHIFT-B.
Update: Visual Studio 2005 Solution
WRK@HPI online
The Windows Research Kernel comprising the source code of the latest Windows version (Windows Server 2003 Enterprise Edition) was released in summer 2006.
This site collects useful stuff related to the windows source code.