Click Here to Install Silverlight*
United StatesChange|All Microsoft Sites
Microsoft
Links

Innovation from MIDC

At Microsoft India Development Center our teams develop strategic products for Microsoft
Home
Contest Details
Archives
Interesting Intern’s Projects
N Srinivas
IIT-Chennai
Area of Work
MOM Management Pack
The Problem
The goal of the internship project was to develop a tool for automatic integration of application specific events and performance counters into Microsoft Operations Manager (MOM).
Description of internship project
MOM uses Management Packs to monitor various applications. A Management Pack comprises rules for processing event and performance data and other knowledge base for a monitored application or set of applications. The idea was to demonstrate how MOM Management Pack creation can be simplified by increased automation. Once the administrator selects the application to be monitor the tool would find all events and performance counters and enumerates them in Graphical User Interface. This offers the user the ability to create Management pack with a few clicks to select the events and counters he is interested in. User can search for specific key words and select the events of interest.

The project involved getting familiar with .NET and C# technologies, understanding MOM product and establishing the necessary framework for the tool.
Time Taken: 10 weeks
The Results
Srinivas was able to come up with a tool which takes an application name, enumerates all the events and performance counters by going through all application libraries and executables, presented them in a GUI framework, provided ways to search and filter the events/perf counters and then created MOM management packs. Using the tool Services for UNIX team was able to create a Management Pack for their UNIX server.
Rohini Rajaraman
NIT-Trichy
Area of Work
Operating Systems
The Problem
The Interix subsystem (PSXSS.EXE) and its accompanying utilities provide with an environment on Windows that resembles any other UNIX system. The current subsystem design is such that the feature set is limited to just the common set of features available on all flavors of UNIX. Whenever new features are developed or existing features are changed in the UNIX world, the Interix source code has to be re-written. A more appealing alternative would be to modify the very design of the subsystem so that it can easily adapt to the changes on the fly rather than requiring source code re-write.
The Interns work and innovation
Transaction model
Redesign the subsystem (PSXSS.EXE) to act like a database, and create a set of APIs that do transactions to this database. In order to facilitate this without jeopardizing the integrity of the subsystem data structures, the subsystem itself should export transaction primitives that provide controlled access to its privy data structures. We expose these primitives in a SDK. The designer will use it in their DLL. This SDK is built as a static windows library (transaction.lib).

Message Packaging:
The basic mechanism to interact with the subsystem at system calls would still remain the same, i.e. via Local Procedure Calls. Redesign the DLL that links to all Interix applications. Provide new system calls that enable packaging of the message and sending them across to PSXSS.EXE. The module designer uses these when he implements a new system call. The designer will implement the new system call in a static library that links to the application.

Loading the module:
A new system call load_module() and a accompanying utility loadmodule has been implemented to facilitate the dynamic loading of DLLs. The load_module() system call takes one argument: the Interix pathname of the module to be loaded (built as a DLL).
Time Taken: 10 weeks
The Results
Rohini was able to extend the /proc file system to show FileHandles held by a process (like other UNIX's) on Interix. Microsoft has filed a Patent Application along with Rohini and the work is in process of publishing this work.
 
Ashish Aggarwal
IIT-Kanpur
Area of Work
Operating Systems
The Problem
Interix subsystem on windows provides a rich set of UNIX semantic api’s, SDK and utilities which helps in UNIX application to migrate to Windows. (
http://www.microsoft.com/windowsserversystem/sfu/default.mspx).


But the above scenario requires user to recompile the source code using Interix SDK generating windows PE format before execution. We required a way where user can execute the UNIX binaries (ELF format) on windows without going through the recompilation phase.
Description of internship project
ELF loading
When Interix finds an ELF format binary that has to be executed it launches a process which loads binary into its own address space parses the elf headers, does the required initialization and jumps to the entry point for execution.

System call shimming layer
System calls are redirected to the Interix subsystem. There is a shimming layer between the actual call and the Interix call which takes care of syntactic/semantic differences of API’s from other UNIX to Interix

Handling semantic differences in the subsystem
The file system hierarchy and proc file system was modified to provide the information required by the UNIX variant. The ELF binary was executed after doing a chroot into folder which provided the required semantics. A lot of interesting problems involving signaling, fork, dynamic loading (*.so) etc had to be handled to get the binaries running.
Time Taken: 10 weeks
The Results
Ashish was able to run different UNIX binaries like shell and utilities on this framework.
 
 
Nitin Awasthi
IIIT-Allahabad
Area of Work
Software Verification
The Problem
Identifying lock orders of the software and finding lock order violations. Also improving the lock window for data protection.
Description of internship project
This work attempts to solve traditional hard problems of data protection in multi-threaded applications using static analysis & run time profiling of a process. It can map a lock to the memory addresses protected by it & can find out any violations based on access at run time. It also finds out the lock order in an application & detects lock order violations at run time. This situation otherwise can potential lead to deadlock & is hard to detect.

Based on the profiling data to measure locality of data access, it assigns affinity to the threads for performance. This work can be potentially used for more fine grained analysis on lock contentions, performance of multi threaded applications & race detection.
Time Taken: 10 weeks
The Results
Nitin was able to demo lock order generation, violations, window of locks and affinity based performance improvements for multi threaded applications.
 
     
     
Brain Teasers

Here are some of the questions that the code4bill contestants answered. How about trying your hand at them?
Multiply 14332 represented in base -7 with 16430 represented in base -8 and represent the output in base -9.
An array contains 9 occurrences of 0s, 8 occurrences of 1s and 7 occurrences of 2s in any order. The array is to be sorted using only swap operations. What is the minimum number of swaps needed in the worst case to sort the array?
You are given an infinite number of cookie boxes containing either 6, 9 or 400 cookies. You are allowed to use these boxes in any combination so desired. What is the maximum number of cookies that you cannot give out using the above boxes?

© 2008 Microsoft Corporation. All rights reserved. Contact Us |Terms of Use |Trademarks |Privacy Statement (Updated)