Academic Days 2005 Windows OS Curriculum Development Kit: What should be there - PowerPoint PPT Presentation

1 / 44
About This Presentation

Academic Days 2005 Windows OS Curriculum Development Kit: What should be there


Core OS education: is there a problem? What should ... Anything that crashes the OS is a bug. ... More information watch this space in June: Shared Source ... – PowerPoint PPT presentation

Number of Views:49
Avg rating:3.0/5.0
Slides: 45
Provided by: ark55


Transcript and Presenter's Notes

Title: Academic Days 2005 Windows OS Curriculum Development Kit: What should be there

Academic Days 2005 Windows OS Curriculum
Development Kit What should be there?
  • Mark Lewin
  • Microsoft

Presentation Plan
  • Core OS education is there a problem?
  • What should our goals be?
  • Is our current thinking correct?
  • Whats next?

What is the problem?
  • Windows specific
  • Use of Windows OS in Core OS courses is low
  • Is this a Microsoft only problem?
  • Why isnt Linux a solution?
  • --------------------------------------------------
  • Operating System courses in general
  • CS intake overall is shrinking (USA, UK, ...)
  • In particular, OS courses are not attractive

Question Is this an accurate view?
Why is Windows underutilized?
  • No Windows source code (Almost Windows Source
    Code is available for 150 Universities WW under
    Shared Source )
  • Current license discourages teaching and
  • No Windows based instructional system (such as
    Nachos, MINIX)
  • Few Windows OS oriented labs exercise materials
  • Inadequate and outdated textbook coverage of
  • No academic oriented reference books of Windows
  • Limited academic research publications using
  • Windows source footprint is large ( 50 large
    than Linux)
  • ABM

Question What else?
Are students interested in OS classes?
  • Most of the CS programs offer a core OS class
    during 2nd or 3rd year of study
  • About 90 will not take further OS classes

Program Goal, Objectives and Scope
  • Our goal is to develop and deliver a program for
    computer science and engineering undergraduate
    and graduate courses that provides modern and up
    to date OS knowledge by leveraging Microsoft
    software and products
  • The programs top level objectives are
  • Offer Windows based teaching and learning, tools
    and materials
  • Promote presence of Windows in OS courses
  • Increase knowledge of Windows Internals among
    students and faculty
  • Demonstrate the innovations underlying the
    Windows solutions
  • Provide infrastructure for the future academic
  • Support reproducibility requirements for OS
    research publications e.g. OSDI, SOSP
  • Complement other MS Academic initiatives (Shared
    Premium Source, Rotor, WinCE)

Scope CS OS courses a. Undergrad courses b.
Graduate courses c. Research and Publications
Our current thinking
  • Program components
  • Shared Source Premium Enhance existing
  • Revise current license
  • Add tools out of DDK that academics can use to
    rebuild the kernel
  • Textbook Internals book acceptable to CS faculty
  • OS Project Course (Project OZ) New offering
  • Undergrad projects based on NT Kernel APIs
  • Uses NT subsystem model, with licensed wrapper
    for NTAPIs (no Windows sources)
  • C/C, C, and maybe Java support
  • Companion lab project book will supplement OS
  • Curriculum Development Kit (CDK) New offering
  • Aimed at teaching OS courses
  • Provides ACM/IEEE Core OS curriculum content

Connecting NT and Shared Source Some History
and Architecture
NT Timeline first 10 years
  • 2/89 Coding Begins
  • 7/93 NT 3.1 Ships
  • 9/94 NT 3.5 Ships
  • 5/95 NT 3.51 Ships
  • 7/96 NT 4.0 Ships
  • 12/99 NT 5.0 a.k.a. Windows 2000 ships

Unix Timeline first 20 years
  • 69 Coding Begins
  • 71 First Edition PDP 11/20
  • 73 Fourth Edition Rewritten in C
  • 75 Fifth Edition Leaves Bell Labs, basis for
    BSD 1.x
  • 79 Seventh Edition One of the best
  • 82 System III
  • 84 4.2 BSD
  • 89 SVR4 Unification of Xenix, BSD, System V
  • NT development begins

History of NT
  • Team forms November 1988
  • Guys from DEC and from Microsoft
  • Build from the ground up
  • Advanced PC Operating System
  • Designed for for desktops and servers
  • Secure, scalable SMP design
  • All new code
  • Schedule 18months (only missed our date by 3

History of NT (cont.)
  • Initial effort targeted at Intel i860 code-named
    N10, hence the name NT which doubled as N-Ten and
    New Technology
  • Most development done on i860 simulator running
    on OS/2 1.2 (took about 30 minutes)
  • Microsoft built a single board i860 computer code
    named Dazzle including the supporting chipset and
    actually ran a full kernel, memory management,
    etc on the machine.
  • Compiler came from Metaware with weekly UUCP
    updates sent to my Sun-4/200.
  • Microsoft wrote a PE/Coff linker as well as a
    graphical cross debugger

Goal Setting
  • First job was to establish high level goals.
  • Portability Ability to target more than one
    processor, avoid assembler, abstract away machine
    dependencies. We purposely started the i386 port
    very late in order to avoid falling into a
    typical, Microsoft, x86 centric design.
  • Reliability Nothing should be able to crash the
    OS. Anything that crashes the OS is a bug. Very
    radical thinking inside of Microsoft considering
    Win16 was cooperative multi-tasking in a single
    address space, and OS/2 had many similar
    attributes with respect to memory isolation
  • Extensibility Ability to extend the OS over
  • Compatibility With DOS, OS/2, POSIX, or other
    popular runtimes. This is the foundation work
    that allowed us to invent windows two years into
    NT OS/2 development.
  • Performance All of the above are more important
    than raw speed!

NT Architecture
Overview of Windows Architecture
  • NT is not a microkernel, but does support
    user-mode OS personalities (i.e. for posix, OS/2,
  • Primary supported programming interface Win32
  • Win32 and other subsystems built on native NT
  • NT APIs generally not documented (not intended as
    the supported programming model) but specific
    APIs are documented in the DDK
  • Kernel implementation organized around the object
  • NT APIs are rich (many parameters) and need
    refactoring and simplification for student use

Windows Architecture
Windows Kernel Organization
  • Kernel-mode organized into
  • NTOS (kernel-mode services)
  • Run-time Library, Scheduling, Executive services,
    object manager, services for I/O, memory,
  • HAL (hardware-adaptation layer)
  • Insulates NTOS drivers from hardware
  • Providers facilities, such as device access,
    timers, interrupt servicing, clocks, spinlocks
  • Drivers
  • kernel extensions (primarily for device access)

Major Kernel Services
  • Process management
  • Process/thread creation
  • Security reference monitor
  • Access checks, token management
  • Memory manager
  • Pagefaults, virtual address, physical frame, and
    pagefile management
  • Services for sharing, copy-on-write, mapped
    files, GC support, large apps
  • Lightweight Procedure Call (LPC)
  • Native transport for RPC and user-mode system
  • I/O manager ( plug-and-play power)
  • Maps user requests into IRP requests,
    configures/manages I/O devices, implements
    services for drivers
  • Cache manager
  • Provides file-based caching for buffer file
    system I/O
  • Built over the memory manager
  • Scheduler (aka kernel)
  • Schedules thread execution on each processor

Project OZ Course(code name)(see examples of
the projects in the Appendix)
The Project OZ Course
  • Objectives
  • Provide an environment to build a rich set of
    projects that explore OS principles by leveraging
    the NT subsystem model for implementing OS
  • Use real OS features rather than a toy
  • Reduce the complexity required to learn build
  • A simple development environment, using standard
    tools for building, debugging, and
  • Encourage out-of-the-box thinking by students

The Project OZ Course
  • Caveat
  • We are presenting some of our plans very early in
    their development to entice feedback from faculty
    teaching OS principles to undergrads
  • Anything presented now may easily change as the
    project evolves and we incorporate the advice we
    are given

The Project OZ Course
  • OZ Summary
  • Library of functions that wrap the native NT APIs
    to provide access to low-level primitives to
    provide address spaces, threads, exceptions, and
  • Languages C/C, C, Java
  • A runtime of support functions that simplify
    student projects
  • Documentation for the OZ functions/runtime
  • A rich set of projects, with many variations,
    that allow students to explore qualitatively (
    quantitatively) a large assortment of OS
  • Tools for instrumentation and measurement

What will CDK cover?
  • CDK modules
  • cover all OS topics (based on Windows XP/Server
  • scaleable to multiple levels
  • modular (can be used in whole / in part).
  • Basic Module will provide materials to
    incorporate into a complete basic level OS course
    of one semester in length. The module will cover
    the Windows OS specific topics in the core and
    elective units of the OS BOK of Computing
    Curricula 2001.
  • Advanced Module will provide materials to
    incorporate into an advanced level OS course of
    one semester in length. The module will cover
    the Windows OS specific topics in the core and
    elective units of the CC2001 OS BOK as well
    as relevant Networking and other units.
  • All curriculum materials (syllabi, course
    outlines, lecture notes, labs, exercises, etc.)
    will be available in the MSR Curriculum

What OS Body of Knowledge topics will CDK cover?
a. Core topics OS1. Overview of operating
systems OS2. Operating system principles OS3.
Concurrency OS4. Scheduling and dispatch OS5.
Memory management b. Elective topics OS6.
Device management OS7. Security and
protection OS8. File systems OS9. Real-time and
embedded systems OS10. Fault tolerance OS11.
System performance evaluation OS12. Scripting c.
Advanced topics A13. Windows networking
A14. Comparing the Linux and Windows Kernels
A15. Windows Unix Interoperability d. Labs and
Exercises to reinforce the topics
Anything else?
What will CDK consist of?
  • Instructors material
  • An exemplar course syllabus and outline.
  • Classroom materials (i.e. lecture slides, notes
    and other supporting materials).
  • Lab exercises, assignments and testing materials
    with notes, manuals and instructions.
  • Software tools referenced in lecture materials or
    used in labs or exercises.
  • Copy of Windows Internals 4th edition MS Press
  • Student material
  • Any material that should be delivered to student
    by professor (i.e. lab assignments, lab set up
    and descriptions, tools use instructions) will be
    part of Instructors material as stand alone
    redist packages. Windows Internals 4th edition
    will be a recommended textbook for the course.

How do we achieve best content and top quality?
  • Engage the best available experts
  • Tailor to the academic style and requirements
  • Conform to the latest ACM/IEEE Computing
    Curricula de facto educational standard 
  • Capitalize  on 4th Edition Windows Internals book
    - best Windows reference material
  • Build on rich experience of Microsoft OS training
    and experienced OS faculty
  • Validate by independent and randomly selected
    academic reviewers WW pilot.   

Whats next
  • Our current plans to provide initial input for
    next academic year (see Appendix for specific
  • Core topics will be available early July 2005
  • Elective topics will be available in Fall 2005
  • Will be looking for participants in pilots and
  • If you are interested - let your academic
    contact and me know
  • Leave your business card /contact details
  • More information watch this space in June
  • Shared Source
  • http//
  • Curriculum Repository on MSDN AA
  • http//

Appendix Support Information
Teaching Core OS Classes
teaching resources
Theoretical Courses
Mixed Courses
Practical Courses
few labs
many labs
lab resources
System program
OS design
Kernel modify
System program
Textbooks/Project Books
Windows CE/XPe
Shared Source
Project OZ
Academic papers
Advanced Courses
What core OS curriculum list looks like?(Based
on Computer Science Curricula - IEEE Computer
Society and ACM Join Task Force)
  • Core units / traditional topic based approach
  • (15 week /semester)
  • CS 225 Operating Systems Lect (hours)
  • OS1 Overview of operating systems 2
  • OS2 Operating system principles 2
  • OS3 Concurrency 6
  • OS4 Scheduling and dispatch 3
  • OS5 Memory management 5
  • CS 230 Net-centric computing
  • NC1 Intro to net-centric computing 2
  • NC2 Communication and networking 7
  • NC3 Network security 3
  • NC4 Web as an example of client/server 3
  • Other classes
  • PF5 Event-driven programming 2

Other (bold) and Related Courses Programming
Fundamentals Adv OSs Architecture and
Organization Graphics and
Visualization Software Engineering and Design
Games Programming Languages Human
Computer Interaction Capstone Courses
Multi-disc research projects Distributed and HP
Systems Web dev courses / projects
Virtual PC
  • http//
  • Virtual PC 2004 as a tool for running several
  • versions of Windows simultaneously on one
  • It could also be used to run one or more
    independent Unix (or Linux, Natchos, etc)
    sessions as hosted operating systems under
    Windows. You dont have to reboot, an OS can
    crash without taking Windows down, and each
    session runs real Unix (or Windows, if you
  • The virtualized file system allows you to wipe
    out changes made during a session, so you can
    experiment without rendering the OS unbootable.
    And every Virtual PC-hosted OS automatically
    inherits (through virtualization) all of the
    devices and networking youve set up for Windows.
  • It gives us exactly what we need and also allow
    students and teachers utilize their Windows
  • Virtual PC Availability and Pricing - an
    estimated retail price is 129.
  • It also will be included in Microsoft's MSDN
  • (based on my conversation with VPC GPM they can
    produce an academic / free version).

What is our approach?
to provide content in three areas 1.
undergraduate, 2. graduate, 3. research and
  • Motivators
  • Incentive to Faculty
  • 1. Modern, best teaching OS, easy to introduce
    modular offerings saves work (No special lab
    equipment - use Virtual PC)
  • 2. Software Engineering tools (Dev. Analysis
    and Test Tools)
  • 3. Research/publication potential
  • Why should I change my material?
  • Incentive to Students
  • Employability 2. Engaging
  • 3. Up to date knowledge
  • Will this class help me to get a job or a place
    in Graduate School?
  • Faculty requirements
  • Comprehensive, modular and up-to-date curricula
  • Continuation of subjects / Spiral learning /
  • Flexible in levels (institutions courses) and
    delivery (web-based teaching)
  • Cool topics and technology to attract and retain
    students (e.g. Gaming Technology, Mobility,
    Embedded, Web development, Robotics, etc. )
  • Multidisciplinary topics (engineering business)
  • Reference material and textbooks
  • University Requirements
  • Meet existing curriculum accreditation
    industry recognition guide lines
  • USA ACM/IEEE Body of Knowledge
  • WW varies by country (incl. government/industry

Question Is this an accurate reflection?
CDK Core Topics available in early July
  • Overview of Operating Systems (Core) OS1
  • Windows Operating System Internals Course
    Overview (Core)
  • The Evolution of Operating Systems (Core)
  • Windows Operating System Family Concepts
    Tools (Core)
  • Operating System Principles (Core) OS2
  • Structuring of the Windows Operating System
  • The Windows API Naming Conventions, Types
  • History of the Windows NT/2000/XP/2003 operating
    system (Core)
  • OS Principles labs, quizzes, and assignments
  • Concurrency (Core) OS3
  • Critical Sections, Semaphores and Monitors (Core)
  • Windows Object Manager, Trap Dispatching,
    Synchronization (Core)
  • Windows Inter-process Communication
  • Concurrency labs, quizzes, and assignments
  • Scheduling and Dispatch (Core) OS4
  • The Concept of Processes and Threads (Core)
  • Windows Processes and Threads (Core)
  • Windows Process and Thread Internals
  • Windows Thread Scheduling (Core)

CDK elective supplementary topics available
in Fall 2005
  • Device Management - The Input/Output System
    (Elective) OS6
  • Principles of I/O Systems (Elective)
  • The Windows I/O System Components (Elective)
  • Windows I/O Processing (Elective/Advanced)
  • Device Management labs, quizzes, and assignments
  • Protection and Security (Elective) OS7
  • The Security Problem (Elective)
  • Windows Security Components and Concepts
  • Windows Security Descriptors (Elective/Advanced)
  • Security labs, quizzes, and assignments
  • File System (Elective) OS8
  • Background Unix File Systems (Elective)
  • The Windows File System (NTFS) (Elective)
  • Encrypting File System Security in Windows OS
  • NTFS Recovery Support (Elective/Advanced)
  • Windows File and Directory Management (Elective)
  • File System labs, quizzes, and assignments
  • Real-time and Embedded Systems (Elective) OS9
  • Introduction and Vocabulary (Elective)

OZ Project examples by Dr. Dave Probertin no
particular order
Loading Program Images
  • Take the sections in a file and load into an
    address space
  • dynamic relocation
  • shared libraries
  • creating stacks and initial thread contexts
  • create environment and other parental state
  • Initialize IO descriptors from parent
  • Using
  • NtCreateProcess to create an NT process container
  • NT VM to manage/modify process contents
  • NT library functions to take apart images and set
  • NT thread APIs to execute thread in new process
  • NT handle duplication to set IO descriptors

System Calls
  • Communicate requests for system services
  • implement basic system calls
  • access data cross domains
  • parameter validation and penetration testing
  • asynchronous operations
  • servicing models
  • Using
  • NT LPC to perform RPC
  • NT VM to access/modify child process state
  • NT threads to support flow-of-control

Manage address spaces, physical memory ptes
  • Build data structures for managing VM-related
  • basic data structures and algorithms
  • support various page-table models
  • Using
  • NT VM to implement actual mappings (and shared
    memory) for address spaces
  • NT VM to implement dirty bits
  • NT VM shared memory provides page sharing and
    simulates physical pages with virtual pages
  • NT threads provide DMA (for IO)

Implementing Virtual Memory
  • Build various kinds of virtual memory systems
  • use previous resource management for addresses,
    mem, page tables
  • page file organization
  • replacement algorithms
  • shared memory, object/file-backed memory regions
  • IO/DMA simulation
  • performance measurement of algorithms
  • Using
  • NT LPC/exceptions to handle page faults
  • NT VM to control actual mappings
  • NT IO for access to page file

Create Processes
  • Implement processes
  • create/delete processes in the Oz world
  • use loader project for loading programs
  • experiment with different models for process
    creation and program execution
  • implement handle tables for referencing objects
  • manage run-down and synchronization issues
  • Using
  • NT processes to create real VM state (but for
    little else)

Create Threads / Scheduling
  • Implement threads
  • create/delete threads in an Oz process
  • build appropriate data structures to represent
  • tie into Oz process data structures
  • create stacks and manage thread execution context
  • experiment with ideas like scheduler activations
  • implement a scheduler, using different policies,
    priorities, etc
  • add multi-processor support
  • Using
  • NT threads to represent processors and execute Oz
    threads on NT threads (Oz threads are essentially
    user-mode threads)
  • NT APCs (Asynchronous Procedure Calls) to deliver
    timer interrupts to running Oz threads

  • Implement various synchronization primitives
  • build user-mode, kernel-mode, and hybrid
    synchronization primitives of various kinds
    (events, rw locks)
  • extend Oz scheduler to support blocking of
  • experiment with deadlock issues, priority
  • Using
  • NT compareswap primitives

Other project areas
  • IO Architecture
  • File Systems
  • Networking
  • System bootstrap
  • Performance measurement instrumentation (e.g.
  • Error handling
  • Exceptions and traps, stack unwinding
  • Management of physical resources
  • Management of resource sharing policies
  • NUMA multiprocessors
  • Security, authentication, ACLs
  • Object support
  • Namespaces
  • Virtual machines
Write a Comment
User Comments (0)