Page 1 of 1
Plz advice
Posted: Mon Sep 04, 2006 2:40 am
by DeletedAccount
Hi fellow OS developers,
I have made a 16 bit OS.Now i would like to build 32 bit unix clone
for learning purposes.Plz advice.................................
My Skills
----------
C/C++,Java,x86asm,QBasic,Game Progarmming,html etc...
Design Details
----------------
1)Monolithic,premptitive kernel (at least partially premptetive..)
2)Scheduling Mechanism(not finailized)
3)Memory management(not finalized)
4)File Systems to be suported..ext2
5)binary format elf or a.out
6)Palform -386
7)SMP -support -n/a
8)POSIX complaint - yes
What are the other design descisions i have to make plz -help?
Posted: Tue Sep 05, 2006 6:50 am
by joke
Well if you go Pmode you have one very important issue :
Are you going to use segmentation or paging?
I can't advise on which of the two is the best cause currently i program only in real mode. Also you must create drivers cause there are no bios interrupts in pmode
Posted: Tue Sep 05, 2006 8:32 am
by hailstorm
@Joke: BIOS interrupts do exist in pmode, but it is extemely difficult to use them.
Design decissions you could make:
Is it going to be multi or single user?
What kind of scheduling technique are you going to implement?
Memory model
Hardware support / Device handling
Posted: Tue Sep 05, 2006 1:41 pm
by joke
Well BIOS calls exist BUT it is easier in pmode to make things manually than to try to call bios int from there and the point is to make life easier
About the memory model there are two basic forms:
1) Flat memory
Which means you have two segments overlapping each other
2)Segmented
you carefully divide the memory to segments , at least two for the kernel and you use other means (ex LDT) to define segments for each process
Posted: Tue Sep 05, 2006 2:42 pm
by hailstorm
About the memory model there are two basic forms:
1) Flat memory
Which means you have two segments overlapping each other
2)Segmented
you carefully divide the memory to segments , at least two for the kernel and you use other means (ex LDT) to define segments for each process
I wish it was always that simple, but in this case it ain't. Memory management is very underrated subject I believe and hard to implement. By just saying that there are just two basic forms which even don't mention paging is to easily put.
But enough about that. It is important to decide whether to implement paging or not, or to implement full-segmented memory management. In either case, at least a few segments must be created to realize a full working protected mode environment.
Last to say, I think it is very important to make a global design on how memory is managed by your os. It doesn't have to be 500 pages containing essay ofcourse. Just global design strategies. For example, in case of paging, how are you going to keep track of all free and used pages? Paging is a wonderful concept, but it's level of abstractness can give system programmer a hard time implementing it.
Posted: Tue Sep 05, 2006 3:19 pm
by joke
hailstorm wrote:
About the memory model there are two basic forms:
1) Flat memory
Which means you have two segments overlapping each other
2)Segmented
you carefully divide the memory to segments , at least two for the kernel and you use other means (ex LDT) to define segments for each process
I wish it was always that simple, but in this case it ain't. Memory management is very underrated subject I believe and hard to implement. By just saying that there are just two basic forms which even don't mention paging is to easily put.
But enough about that. It is important to decide whether to implement paging or not, or to implement full-segmented memory management. In either case, at least a few segments must be created to realize a full working protected mode environment.
Last to say, I think it is very important to make a global design on how memory is managed by your os. It doesn't have to be 500 pages containing essay ofcourse. Just global design strategies. For example, in case of paging, how are you going to keep track of all free and used pages? Paging is a wonderful concept, but it's level of abstractness can give system programmer a hard time implementing it.
You are right i just wanted to give a very general image
Anyway hailstorm is right in every case. As for other OS concepts also keep in mind filesystems (eg FAT)
Thanks everyone ,but need a litte more assistance....
Posted: Fri Sep 08, 2006 12:52 am
by DeletedAccount
Thanks everyone for your comments,
But can anyone tell me the different steps in making
unix clone so that I am implement each of them in
a clean and consistent manner......
Posted: Fri Sep 08, 2006 12:37 pm
by hailstorm
Sandeep: It's a bit difficult to answer the question you are asking. I'd like to advise you to do some research on the key aspects of the unix operating system...
Nah, what the heck am I babbling: Here's a link to a document that I found using google:
http://isabelle.in.tum.de/library/HOL/Unix/document.pdf
It is a clear document about the philosphy of unix. You can see unix as a an operating system that consists of many smaller tools.
I think nobody can pave the path you have to walk. But I am sure there are a lot of people who can guide you and answer your question...
Thanks man,
Posted: Fri Sep 15, 2006 6:10 am
by DeletedAccount
I love this site...I almost get an instant reply to my
questions...Thanks hailstorm ...
Posted: Sat Sep 16, 2006 1:52 am
by hailstorm
No problem, m8!
help
Posted: Wed Sep 27, 2006 6:26 am
by DeletedAccount
Can anyone tell me some sites of interest and some
kernel which i can hack to learn the principles...
Posted: Wed Sep 27, 2006 8:32 am
by joke
Minix 3 rocks and very good example
http://www.minix3.org/
The GNU Hurd, the real gnu kernel
http://www.gnu.org/software/hurd/hurd.html
linux of course
http://www.kernel.org
openbsd
http://www.openbsd.org/
debian is not a kernel but an example of a
good unix variant
http://www.debian.org
Thanks joke
Posted: Thu Sep 28, 2006 5:50 am
by DeletedAccount
Thanks joke....But do you have links to smaller unix like kernels...