Windows Academic Program Arkady Retik Dave Probert External Research & Programs Windows Core Operating Systems Division The Windows Academic Program provides universities with Windows kernel source code, curriculum materials, and a project environment for teaching and researching operating system principles. The program includes the Windows Research Kernel, the Windows Operating System Internals Curriculum Resource Kit and ProjectOZ. Background There has been a great deal of interest in the Windows NT-based operating system (OS) since its release in 1990. Recently in academia, this interest increased following the success of the Windows XP and Server 2003 OS family. As a result, in 2005 Microsoft has embarked on three complementary initiatives to improve the accessibility of the Windows NT kernel for use in operating systems instruction and research. The goals of these initiatives are to: 1. Improve the diversity of OS instruction by supporting inclusion of cases based on Windows NT 2. Enable the use of Windows as a platform for teaching OS courses 3. Help revive interest in operating systems topics among students by increasing the excitement and relevance of OS courses. The three initiatives provide curriculum materials illustrating OS principles with Windows, access to the core kernel source code, and an experimental environment based on the native Windows NT application programming interface (API) for building OS projects. The original Windows was built on extensions of the MS-DOS code-base written for single users running only a few applications, and lacked many standard OS features. Starting in 1988, Microsoft began development of a new code-base for Windows, called Windows NT. The project was led by Dave Cutler, who was the primary architect of many significant operating systems at DEC, including RSX-11 and VAX/VMS. With the release of Windows XP in 2001, Microsoft moved to Windows NT as its common core for all Windows versions, and began to deprecate MSDOS-based Windows. The Windows NT kernel is highly asynchronous and preemptively multi-threaded. The architecture is organized around a central facility for managing kernel/user references and access to kernel data structures. The input/output (I/O) system is modular and extensible. The virtual memory API separates virtual address management from memory objects, and provides low-level access to address-space and physical memory for large applications. CPU scheduling is thread-based, and carefully uses per-CPU data and lock-free synchronization for scalability. Windows Academic Program Components Windows Research Kernel (WRK) The WRK contains the bulk of the source code for the Windows NT kernel (compatible with Windows Server 2003/XP for x86 and AMD64). These include all of the core sources for object management, processes, threads, virtual memory, the I/O system, and so on. The major pieces of kernel code that are not included are the Plug-andPlay/Power-Management facilities, the virtual MS-DOS machine, and the kernel debugger engine. The omitted modules are provided as binary objects which can be linked to produce a fully functional Windows NT OS executable and booted on Windows Server 2003 SP1 or Windows XP x64 Edition. The initial release of the WRK in the fall of 2005 included the sources for complementary use with the CRK and use by authors of textbooks on Windows. The WRK current release (July 2006) is a kit with a build environment, a VirtualPC, and documentation. Windows Academic Program 1 The WRK is licensed to the end user under a simple, more liberal license than previous Microsoft product sources. The WRK license grants wide non-commercial use of the sources, including sharing of derivatives with other faculty, open use in the classroom and by students, and publication of code snippets in textbooks and research papers. Windows OS Internals Curriculum Resource Kit (CRK) The Windows CRK is a collection of instructional material that follows the IEEE-CS/ACM Operating System Body of Knowledge to illustrate OS concepts using Windows XP as a case study. The Windows CRK is based on the book Windows Internals1 and adapted for university use by the book authors, Mark Russinovich and Dave Solomon, and by Professor Andreas Polze of the University Potsdam. The experiments, quizzes, and assignments, which are integrated with the course materials, have been tested over the last five years in Professor Andreas Polze’s operating systems architecture class described in a paper presented at SIGCSE 2006 2. The Windows CRK core units are available to universities for supplementing OS lectures and may be downloaded from the Microsoft Curriculum Repository3. ProjectOZ When Windows NT was developed, it was not clear what OS API would provide, the original guess was OS/2. To accommodate this uncertainty Windows NT was designed using a subsystem model, like Mach. Windows NT is not a microkernel, but it does use a client/server model to implement OS APIs in user-mode server processes. The Windows NT kernel itself has a native API but apart from use by device drivers little has been published since, unlike the Win32 API, applications based on the Windows NT API are not portable to Windows 9x. Because the native Windows NT API has to support the subsystem model, it tends to be lower-level and give the programmer more direct access to the underlying kernel data structures and mechanisms at the expense of Win32 compatibility. ProjectOZ is an experimental environment that is built on top of the native Windows NT API for universities to use as a platform for OS projects. It uses the Windows NT API to provide simple abstractions of a CPU, trap mechanism, and memory management unit using the same approach taken by the SPACE project at the University of California, Santa Barbara4. ProjectOZ comes with a basic OS (BasicOZ) built on top of the SPACE abstractions. Various projects are suggested which allow the student to experiment with OS data structures and algorithms by making modifications to BasicOZ and measuring the resulting change in system behavior and performance. More information about the Windows Academic Program is available at www.microsoft.com/resources/sharedsource/Licensing/WindowsAcademic.mspx . Questions may be sent to compsci@microsoft.com. Endnotes 1. Mark E. Russinovich and David A. Solomon, Microsoft Windows Internals, 4th Edition, Microsoft Press, 2005. 2. Polze, M. and Probert, D. Teaching Operating Systems: The Windows Case, in Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education, March 2006, Houston, Texas, pages 298-302. 3. Solomon, D.A., Russinovich, M. E. and Polze, A. CRK in MSDNAA Curriculum Repository at http://www.msdnaa.net/curriculum/pfv.aspx?ID=6191, February 2006. 4. Probert, D., Bruno, J. and Karaorman, M. Space: A new approach to operating system abstraction, in Proceedings of the International Workshop on Object Orientation in Operating Systems, pages 133-137, Oct. 1991. The information contained in this document represents the current view of Microsoft Corporation on the issues discussed as of the date of publication. This White Paper is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. Windows Academic Program 2