There is a great book for you:
Operating Systems Design And Implementation[
^] by Andrew S. Tanenbaum and Albert S. Woodhull. I covers all the important topics to make some design and implementation decisions for your kernel.
You might also want to study MINIX (the predesessor of Linux):
MINIX[
^]
That should help you get a good overview.
For an OS kernel I would suggest something other than C# though!
Best Regards,
Manfred