Tuesday, November 14, 2006

[off-topic] Something about MINIX

Nearly 4 months back, i came to know to MINIX 3 has been released as a free software. I downloaded this ran also with help of QEMU simulator.The latest relase has been made on 29th May 2006. I think you all people know about this teaching OS. It has been made by Vrije Universiteit, Amsterdam,headed by professor Andrew S. Tanenbaum. Most of the function is written by him. But that time i didn't look much inside of this OS or kernel part. But two days back, one girl from Haldia Institute of Technology , told me that she wants to build a OS like MINIX..then i though let's again visit MINIX. After reading some document , i got realy some good things in my mind realy i am realy getting love with MINIX achitecture. As all of you know MINIX kernel is based on Microkernel architecture. "A microkernel is a minimal computer operating system kernel providing only basic operating system services (system calls), while other services (commonly provided by kernels) are provided by user-space programs called servers. Commonly, microkernels provide services such as address space management, thread management, and inter-process communication, but not networking or display for example."(taken from wikipedia).
Now i am quite familar with Linux kernel and it's architecture is based on monolithic(See wikipedia for more information) kernel architecture. Though it has some good facility for modular programming.
The question which i want to figure out is, most of the device driver has been implemented inside the linux kernel though the biggest device driver (graphics driver ) is in user space. I couls see size of the driver code in linux kernel is 112 MB whereas the Whole kernel itself has 269MB. So nearly more than 50% code in kernel is driver code!!!!.And most of the developers want to make driver in user space and effort is user space device driver.The majority of bugs linux kernel are in device drivers. if you can move out these driver form kernel space to user space i think we can minimise the bugs. I think it would be applicable for Networking also. But their would be some issue like performance and latency. Still i love to see device driver in user space. Why should i take care about kernel when i am making one driver for device? . Let kernel to do that. Thecommunication between driver and kernel should be designed very carefully so that time required for communication would be minimized over a period of time.That's all..That's why i fall love in MINIX. It has fare architecture to do that.I would like to invest some time on that architure and also would like if someone can come with idea like a "conceptual Architecture of MINIX kernel"...Well this post is going to be big. So i decided to stop here, journey with MINIX kernel and hope to post another article in "User space device driver". Those who are realy interested in MINIX kernel please contact me.. And more ever there are very easy chances to be a main developer!!!!or you may say kernel haker!!! in MINIX world.
visit www.minix3.org