Šta je novo?

mali kernel

genuine

Slavan
Učlanjen(a)
17.02.2006
Poruke
1,906
Poena
350
sta predlazete , odakle poceti sa ovim....
 
Pa, sto ne podjes od onog klasicnog "za sta ti treba"? Da li se radi o kernelu za neki uredjaj embedded tipa, "opstem" kernelu tipa linuxovog kernela ili necem trecem. To odredjuje model i tip kernela, a dalje postoje vec neki zacrtani pravci, a vrlo cesto i open source projekti koji se mogu proanalizirati, makar da se vidi kako su neke stvari zamisljene da rade.
 
pa ovako... cilj mi nije da izmislim novi operativni sistem vec malo da izvezbam programiranje na najnizem nivou tako da ne bi bilo nista ozbiljno
od alata sam planirao gcc, nasm i emulator bochs.. literatura bi bila intel software developer manual volume 3 ( ili kako se vec zove ).. kernel bi bio objektno orijentisan....
arhitektura kernela bila bi mikrokernel to jest imao bi kernel sa najosnovnijim funkcijama tipa rad sa procesima, slanje poruka i sl.. sve sto se tice fajl sistema, drajvera za grafiku i sl. bilo bi odvojeno u vidu servera.. prema svakom serveru bi postojao interfejs preko koga bi se pristupalo istom... i sl....
pa ako je neko imao neka iskustva ili ako bi hteo da se pridruzi moglo bi da bude bas interesantno...
inace stvari kao malloc i slicno bih naravno pozajmio ...:)
 
Poslednja izmena:
pogledao sam skriptu ali mi slabo moze pomoci... npr.. meni treba konkretno alociranje stranica, postavljanje gdt i ldt tabela , postavljanje gejtova za prekide , postavljanje task tabela i ulancavanje taskova .. ono tipa imas klasu proces koja ima run , blocked i sl. nije problem.. .problem je kada se ucita boot sektor koji ucita loader i loader upali prekidac za protekted mode ja vise nemam nista.. nemam biosove prekide, nemam vektor tabelu nemam sto se kaze ich.. pocetak bi mi bio minimalni drajver za floppy posto ne planiram da se igram sa diskovima .. i minimalni drajver za fat12 koji koriste diskete posto ne planiram da izmisljam novi fajl sistem... problem je sto sve moram da radim preko portova io kontrolera i sl... takodje je problem sto nemam memory manager tako da i to moram da napravim tj. alociranje stranica om ( nesto kao linux preko stabala ) i malloc.. nije problem da se napravi realtime operativni sistem u realnom modu koji koristi gotove funkcije .. problem je sto u zasticenom nemam nista... pa od cega tu poceti
 
Pogledaj source za minix, ili prve verzije linuxa :)
 
pogledao sam za linux ali linux je monolitni kernel pa mi ne pomaze bas puno...(ne svidja mi se najvise kako je uradjen mnogo mi je normalniji win nt kernel)
 
Poslednja izmena:
Onda pogledaj kako se razvija GNU.
 
genuine je napisao(la):
pogledao sam za linux ali linux je monolitni kernel pa mi ne pomaze bas puno...(ne svidja mi se najvise kako je uradjen mnogo mi je normalniji win nt kernel)

Najbolji izbor je Minix - njegov kernel je baziran na mikrokernel arhitekturi, a i inace se koristi kao teaching tool na OS kursevima, zajedno sa knjigom OS Design and Implementation (Tanenbaum & Woodhull, link)...

BTW Ako pronadjes 3rd edition (iz 2006.-e) ove knjige u pdf-u, slobodno se javi na private ;)
 
Poslednja izmena:
Na Novosadskom FTN-u postoji kurs koji obradjuje konkuretno programiranje a u sklopu kursa se stvar demonstrira na primeru kernela ciji je kod dat u celini.
 
pa ne sumnjam da se radi.. radi se i na etf-u ali je u pitanju real mode, koriscenje biosa i cak dos-a( operativni sistem u ovom slucaju je kao nadradnja na dos koja podrzava multi treding i sl)... za minix cu da pogledam mada bi mozda bilo bolje da pogledam gnu krdo ili kako se vec zove ( zamena za linux kernel)
za sad sam uradio boot sektor sto je najmanji problem... i treba da pocnem sa loaderom koji treba da pripremi teren za kernel... e koliko mi se cini taj loader bi trebalo da prebaci stvar u protected mode i da inicijalizuje sve neophodne tabele... da ima mali drajver za diskove, da ucita kernel i drajvere/servere i operativnu memoriju i pokrene kernel na kraju... e sad pitanje je da li da u loaderu aktiviram pageing ili da to odradi kernel kada se inicijalizuje ( meni se vise svidja ovo drugo) i jel znate neke linkove koji upucuju kako se programiraju kontroleri floppy i hard diskova to jest specifikacije portova i protokoli... to bi mi bas trebalo...
 
genuine je napisao(la):
pa ovako... cilj mi nije da izmislim novi operativni sistem vec malo da izvezbam programiranje na najnizem nivou tako da ne bi bilo nista ozbiljno
To sto radis je upravo ponovno izmisljanje tocka....

Potrazi knjigu Richard Burgess-a "Developing Your Own 32-Bit Operating System".

Sto se tice source code-a, trenutno je na SorceForge vrlo aktuelan i aktivan projekt ReactOS
 
Pa meni bas jeste poenta da uvezbam programiranje pravljenjem tog tocka kako kazes.. Knjige sa uputstvima kako treba mi ne trebaju jer ogranicavaju tvoju kreativnost. Treba mi dokumentacija pc hardware-a
 
Mnogo vise mozes da naucis i za krace vreme analizom nekog "zivog" projekta
 
Ova knjiga je odlichna:

Andrew S. Tannenbaum - Modern Operating Systems

Mislim da je mozhesh naci i u "sivoj zoni" interneta :)
 
Ok. Hvala, ali ipak moj problem je u oskudnoj dokumentaciji tipa spec. za vesa2.0,kontrolere diskova,biosove tabele i sl. Gde to da nadjem. Imam neku knjigu PC hardware ali ona nema bas sve stm mi treba
 
Ok...ajde ovako...

1. Pre pisanja operativnog sistema, moras upoznati hardver na kome se pise.

Ukoliko pises "od nule" odmah ustanovi na kom racunaru ces da pises i koriscenjem kog programskog jezika i compiler-a. Preporuka je da sve hardware/compiler dependant stvari stavljas u jedan fajl (*.h, ako je u pitanju C ili C++, koje toplo preporucujem, cak insistiram) kako bi samo taj menjao dok bi ti ostatak bio u tvojim fajlovima koji ne zavise od masine na kojoj se vrti sam OS. Specifikacije o kojima pricas mozes izguglati (prim.prev.), ono sto bih ti preporuci da pre svega pogledas jeste:
1) tabela prekidnih rutina (IVT, Interrupt Vector Table)
2) koriscenje dos.h i ostalih standardnog c/c++ kompajlera, f-je:
2.1) setvect(), getvect()
2.2) setjmp(), longjmp()
3) mehanizam prekida doticnog racunara
3.1) sta se odvija na hardverskom, a sta na softverskom nivou
3.2) koje registre racunar koristi pri prekidima
4) Detalje DMA kontrolera periferija, nacini funkcionisanja, kontrola...


2. Procitaj o gore navedenim temama u sledecim knjigama:

1) Operating System Concepts - Abraham Silberschatz, Peter Baer Galvin i Greg Gagne, po mogucstvu sedmo izdanje
2) Modern Operating Systems Second Edition - Andrew Tanenbaum



3. Nevolje

Budi spreman na mnoge "otkaze" sistema, pogotovo ako ne radis u Windows-u. M$ Windows emulira kompletan set programski dostuopnih registara i na taj nacin ti ne radis ono sto bi zeleo, tj. ne ides dovoljno "nisko", blizu hardveru...
Radi u Linuxu ili DOS-u, bolje u Lindzi pre svega jer imas odgovarajuce IDE i syntax highlightning alate za lakse pisanje koda...


4. Pitaj one koji su vec radili

Guglaj, trazi na netu iskustva i savete, mnogo ces vremena ustedeti i lakse savladati decje bolesti pa ako ti se budzi kasnije tvoj novi OS, lako ces sa naucenim.
 
Poslednja izmena:
pa ovako... znam sve to..
getvect i setvect ne postoje u protekted rezimu ( pricas o realnom gde je tabela smestena u prvi kilobajt)
procitao sam prvu knjigu koju si naveo
pogledao sam savete ali nisam nasao detaljnu dokumentaciju o pc hardware-u na jednom mesto pa ako neko zna
 
Vrh Dno