Hello folks, It was a great fealing for me. The first piece of coding for the YAOS project is done, though it was a utility tool. To put it straight, I wrote a crappy, nasty piece of code for a simple shell and it worked 🙂 . I named it the shell and am now using it. The coding part of it was very very simple. The entire shell was written in just 60 lines of C. It can do all that a simple sh shell can do, except the autocomplete feature.
As for now there are problems in catching and handling interrupts. Hitting a C-c doesnot make anything happen…. But I am working on it now and will implement that soon. But otherwise it has all the features of a perfect GNU shell. I also tested it by making it as the default shell for one of the user accounts in my system…. and it went well….
The problem I face is that I am not good at signal programming and am not sure how to handle the various signals that are possible… like it must logout when C-d is used and so on. Also I dont have the faintest idea of how to imlpement the auto-complete for my shell….. hope i soon learn it…… I would be really happy if I could get help from people who have a good knowledge and experience in this field……..
I did some homework on microkernels and got some baisc concepts clear.Basically, a microkernel is a type of design where only certain parts of the code is in kernel space and the remaining go to the user space, as servers. What is to remain in the kernel space and what in the user space is the decision of the developer.But one thing that always remains in the kernle space is the process management and IPC related stuff.
Other common features like memory management, file system and the I/O handling etc. can be put up as servers in the user space. It is also possible to bring the file system in to the kernel space for a faster approach.In microkernels, the major way of message passing is through Inter-Process Communication(IPC).
Coming to the concept of servers, they are like any other programs with some extra privileges, to access the memory, granted by the kernel.There are two types of approaches in implementing the kernel. They are monoserver and multiserver systems. In monoserver systems, all the device drivers(called tasks), file system handling, memory management etc that are to be put up in the user space are put as one single module and is linked to the kernel.
In the multiserver approach, each of these are put as separate servers and interconnected and connected to the kernel. The way they are split in to is decided by the designer.One approach is to put all the device drivers into one server, file system in to one server and memory management in to another server and connect them all.
The major downside of the microkernel design is its performance. Because of the necessity for IPC for interacting with the kernel, these are generally slower than monolithic kernels.The advantages include maintainability, reliability and improved security.
Atlast, my dream has come true. We ( a group of 7 friends) will be developing a new operating system, a small one with minimal features… but still…. We had a meeting at our classroom A16 at about 10:00 am. We met and talked about our operating system kernel. Both microkernel and monolithic type were discussed. Also something on ring structure was discussed.
We all decided that we will study the basics of different types of kernel archi. and meet again to make design decisions by December.Then we created a google groups for our new venture. The site is http://groups-beta.google.com/group/yaos/ . The group mailing list is email@example.com .
Finaly, it is being done. The OS is to be designed.Had a lengthy discussion with ananth and krithika and will have a meeting tomorrow.The developers have been finalised.It will be myself, Balachander, Ananth Arumugam, Krithika and Agalya. We may have more developers later. The discussion were about the type of kernel tobe used and the File System Support.It wouldbe really great if a ZFS support is possible.But as of now we may settle for a UFS support.
Tomorrow’s meeting will center around the modules that are to be implemened and the type of the kernel that will be implemented.I expect a hybrid kernel.Also much discussion was made on security and the problems we may face with each type of kernel. Will summarise tomorrow and make a final decision.
But still, the project has begun. It may be yet another revolution like the one Mr.Linus Torvalds brought about a decade and half ago. We are a serious gang bent on making it successful.
I Tried to write a hello world kernel. The coding as most people know is a child’s play. But since what we write is a module to be attached with the kernel, it has to compiled differently. The usual gcc filename.c wont help. So i wrote a Makefile for that and tried the GNU make command. I got nothing but a errors stretched over a couple of screens. I was totally devastated… for it was my first attempt and a very simple one at that and yet i could not do it succesfully…. 🙁 :-S hope i do it properly soon