KERNEL Functions

OS Home Advanced Home                            Kernel Functions Hardware Inits IDT Section

                        Kernel is the Core of the system. Kernel is made up of many many small and large modules. The important part of kernel is putting it in a safe place in the memory where there is no user access. At the same time some part of the kernel, such as the Shared Data Buffer, Interrupt Handlers, Internal Device Drivers must be accessible to user programs. That is why there is always a chance that a "hacker" could find an entry point loop hole to get into the core of the system. The way to prevent this (not completely) it to minimize the loop hole and provide intensive monitoring in those areas where there are loop holes. Now if you think sharply, you might say that if you were able to prevent anybody entering through the loop hole by monitoring, your system becomes unbreakable. The problem is not preventing entrance through loop hole but, finding those loop holes. When your system grow too fast, too much, you will miss certain problematic points that is later found out by a hacker. So be careful when you provide access to kernel to user programs.

                        Below I have grouped things that are necessary to bring you kernel up and running. With some tutorials, I have provided sample modules to understand the technique. You will need far more code than what I have given here to make a kernel. So, use the information and go to your editor and start typing. The first job of the kernel is to initialize all necessary hardware and check if those are fully functional before use. This is a must for several hardware. The next important subject is Memory Management. I will talk about that in the coming pages. The next important thing is to build math libraries, memory allocation functions ("malloc.c", "alloc.c")  and screen handling routines so all programs including kernel could use them. The next thing to do is to make user functions that provide access to those libraries and utilities in kernel. Make sure you set up the descriptors for the call gates correctly to allow this. The last but not least is to set up Process Management. If you are going to implement Multi-Process (even better "Multi-Threaded"), this will be a tough job. If not, make a program like the "Command.com" in Windows or the Shell in Linux and you are ready to go.

bullet

Hardware Initializations

bullet

Set up the Interrupt Descriptor Table

 

 

Kernel Functions Hardware Inits IDT Section