Monday, October 17, 2005

A Comparison of Solaris, Linux, and FreeBSD Kernels at OpenSolaris.org

The article at OpenSolaris.com not only discusses three major kernels: solaris, linux, and freebsd, but also shows a list of pointers to resources of these systems.

Worth a read!

Thursday, July 14, 2005

Windows 2003 TCP/IP Implementation Details

While browsing the MSDNAA website, I came across this 116-page word document of Windows 2003 TCP/IP implementation details. I think this is by far the most detailed explanation of Windows TCP/IP - you might find a chapter of windows networking in the "Microsoft Windows Internal" book by Mark Russinovich and David Solomon, but it is very high-level and does not provide this much of details.

Wednesday, June 29, 2005

User-Level Spin Locks - Threads, Processes & IPC

Spin locks are used by SMP OS kernels for kernel thread (control path) synchonization. It is a busy-waiting style meaning that the thread trying to acquire the spin lock will constantly poll for the availability of the lock. Therefore thread holding a spin lock should not do a lot of things.

Here is an interesting post
The Code Project - User-Level Spin Locks - Threads, Processes & IPC about user level spin lock.

Thursday, June 23, 2005

ACM Queue - The Reincarnation of Virtual Machines -

Mendel Rosenblum, Co-Founder of VMware was interviewed by ACM Queue talking about ACM Queue - The Reincarnation of Virtual Machines - Like the best of the 1970s and 1980s, VMs have returned to the scene -- and they're a lot cooler than polyester pants.

The story gives a clear overview of the VM landscape. Considering the fact that the VM market is poised for a big battle between VMWare, Microsoft Virtual PC, and Xen, and VM's technical closeness with network emulators, this is indeed an exciting field I need to follow.

Wednesday, May 25, 2005

Windows NT Native API

One of the authors of the well-known book "Windows Internals" talks about Windows NT native APIs and other related topics such as Win32 DLLs, kernel/user mode, etc.

The Native API is equivalent to the system call interface on traditional monolithic operating systems such as most UNIXes. On most UNIXes, however, the system call interface is well documented and is generally available for use by standard applications.


There is a nice picture showing the architecture of Windows NT DLLs and system services.

Friday, April 29, 2005

trickle: userland bandwidth shaper

The networking session of this year's USENIX has a paper talking about a userland bandwidth shaper created by Google engineer Marius Aamodt Eriksen (need login to download the paper, but the source code is available here).

Form Trickle's man page:
 
trickle is a userspace bandwidth manager.  Currently, trickle supports
the shaping of any SOCK_STREAM (see socket(2)) connection established
via the socket(2) interface. Furthermore, trickle will not work
with statically linked executables, nor with setuid(2) executables.
trickle is highly configurable; download and upload rates can be
set separately, or in an aggregate fashion.
The trickle daemon, an LD_PRELOAD module, works by imposing a rate cap on the bandwidth (upload, download, or both) of a process or group of processes using socket connections.

LD_PRELOAD is a way to intercept dynamic function called. You set the environment variable to your own shared library, in which you define your own functions.

Tuesday, April 26, 2005

User Model Linux for Wireless Network Emulation

USENIX'05 has an emulation track of 3 papers, one of which, "Running virtualized native drivers in User Mode Linux", proposes a method of using User Mode Linux along with virtual wireless network interfaces for wireless network emulation. It uses the Hostap driver in the guest OS to communicate the virtual wireless interface via TCP. While the system can be used to test ad hoc routing or other protocols, it may be only useful when the wireless network (wireless LAN, for example) is small. Good thing is, there is no need to modify the protocol implementation because it is executed in a guest OS.