Windows Drawbridge

Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
Post Reply
User avatar
Rusky
Member
Member
Posts: 792
Joined: Wed Jan 06, 2010 7:07 pm

Windows Drawbridge

Post by Rusky »

I don't know if anyone's seen this before, but I just ran into another interesting project from Microsoft Research. Called Drawbridge, they refactored Windows itself into an exokernel-like architecture that is capable of running (at least) Office apps, Internet Explorer, and IIS. Their motivation was to get the isolation and forward/backward compatibility of VMs without the extra performance cost, similar to Docker/LXC but with a different implementation strategy.

http://research.microsoft.com/en-us/pro ... rawbridge/
http://research.microsoft.com/apps/pubs ... ?id=141071
embryo

Re: Windows Drawbridge

Post by embryo »

Rusky wrote:I don't know if anyone's seen this before, but I just ran into another interesting project from Microsoft Research. Called Drawbridge, they refactored Windows itself into an exokernel-like architecture that is capable of running (at least) Office apps, Internet Explorer, and IIS. Their motivation was to get the isolation and forward/backward compatibility of VMs without the extra performance cost, similar to Docker/LXC but with a different implementation strategy.

http://research.microsoft.com/en-us/pro ... rawbridge/
http://research.microsoft.com/apps/pubs ... ?id=141071
It seems they implemented a micro-kernel approach. There is WindowsNT kernel accompanied by some drivers and wrapped with a security monitor:
Image

The compatibility here (possibly) is implemented as a standard Windows API, but with an interceptor in between in form of the security monitor. The same can be said about isolation.

It is still not clear how they solved security issues with the code which is run in OS process address space.

And one more question - why they just forgot about their .NET runtime? Where is the compatibility with the tons of the .NET code? It seems they try to make "a better Windows", but it is still the Windows and nothing else.
User avatar
Rusky
Member
Member
Posts: 792
Joined: Wed Jan 06, 2010 7:07 pm

Re: Windows Drawbridge

Post by Rusky »

It's not really a typical microkernel- they didn't really try to minimize the kernel itself, and they didn't isolate system services from each other or their client processes. Instead, they moved large chunks of the kernel into a library that gets linked with each application. There's no interceptor, the apps just call the library directly (without recompilation, because windows apps already call into a dll to make system calls). That way, bugs in the library OS only take down the particular app that triggers them, rather than the whole kernel (as in a monolithic architecture) or the service (as in a microkernel).

They also did include .NET in their library OS, as well as DirectX.
embryo

Re: Windows Drawbridge

Post by embryo »

Rusky wrote:It's not really a typical microkernel- they didn't really try to minimize the kernel itself, and they didn't isolate system services from each other or their client processes.
At least the picture above looks like microkernel and some system services. Are the services isolated or not is hidden somewhere within the http://www.microsoft.com.
Rusky wrote:Instead, they moved large chunks of the kernel into a library that gets linked with each application.
What is a difference between "moving large chunks of the kernel" and "use the same kernel"? Is there any separation of components or some refactoring performed? Or it means just extraction of system services from monolithic kernel? If the last is true then now it is not a monolithic kernel, or it is?
Rusky wrote:There's no interceptor, the apps just call the library directly (without recompilation, because windows apps already call into a dll to make system calls). That way, bugs in the library OS only take down the particular app that triggers them, rather than the whole kernel (as in a monolithic architecture) or the service (as in a microkernel).
But if as you have said there is no isolation - why the bug takes down just a particular application instead of the whole kernel?

I hope they manged to make some refactoring and to introduce some componentization (isolation). But I haven't studied the OS in depth.
Post Reply