Własny OS, jak napisać?
Inner_Bushman - 10 Kwi 2005 22:29
Witam. Chciał bym napisać własny system operacyjny, który robił by jednocześnie za program mający się w nim wykonywać.
Podstawowe założenia:
- sam się butuje z dyskietki
- po zbutowaniu obsługuje klawiatóre i monitor jako I/O
- ewentualnie wykonuje jakieś czynności
Poruszyłem ten temat bo niedaje mi spać po nocach jestem poprostu ciekaw jak trudno to zrobić. O ile to możliwe chciał bym cały projekt pisać w C++ ponieważ tylko ten język znam w miare dobrze (inne poprostu znam słabiej )
Jeżeli ktoś jeszcze jest tym zainteresowany to zapraszam do "Team'u"
michael1986 - 10 Kwi 2005 22:40
Kiedyś zastanawiałem się nad podobną rzeczą... z tego co udało mi się dowiedzieć to przede wszystkim musisz zapewnić temu systemowi start. Tzn. w sektorze startowym dyskietki musisz umieścic asemblerową instrukcję skoku do sektora zawierającego kod startowy. Taki kod również musisz napisać w asemblerze. Jest to dość trudne... ale być może istnieje podobny system jako open-source w sieci... nie mówię tu oczywiście o Linux-ie, bo ten jest bardzo rozbudowany i napewno byś się pogubił w tym wszystkim... mówie o czymś bardzo prosty...
Jak znasz trochę angielski to zajrzyj tu: http://www.acm.uiuc.edu/sigops/roll_your_own/
I nie zapomnij o tym, jeśli choć trochę Ci pomogłem
Pozdrawiam
Inner_Bushman - 10 Kwi 2005 22:48
Jeżeli chodzi o Boot sector i asembler to byłem tego świadom że bez tego się nie obejdzie... ale to akurat jest banalne z mojego pónktu widzenia...
Problem w tym jak kod do którego będziemy skakać wsadzić do pamięci albo jak go zmusić do wykonania instrukcji prosto z dyskietki.
Co do linka, zassam sobie ten text i poczytam jutro w autobusie.
Pozdro.
jankolo - 11 Kwi 2005 01:24
Koledzy, nie gniewajcie się, ale system operacyjny - nawet prosty - jest nieco bardziej złożony niż Wam się wydaje. Proszę Was, przejrzyjcie (nawet nie musicie czytać) najpierw chocby jedną książkę o budowie systemów operacyjnych, a potem dopiero podejmujcie dyskusję na taki temat.
oj - 11 Kwi 2005 02:01
http://www.menuetos.org/index.htm
elektryk - 11 Kwi 2005 02:12
Najpierw przeanalizuj od strony teoretycznej co ten system operacyjny powinien wspierać (jakich funkcji dostarczać programom), a potem pozostaje już tylko implementacja odpowiednich funkcji dla programów i obsługi sprzętu.
Inner_Bushman - 11 Kwi 2005 09:44
Witam ponownie. Dziś prężny i gotowy po lektórze kilku ambitniejszych pozycji wiem od czego zaczne...
Zaczne od nauczenia się obsługi linuxa ponieważ mam zamiar robić to właśnie pod nim.
Linki:
http://www.linuxgazette.com/issue77/krishnakumar.html
http://www.linuxgazette.com/issue79/krishnakumar.html
http://www.linuxgazette.com/issue82/raghu.html
Z gróbsza to przeczytałem i tak właśnie zaczne... od początku
Na powyższych stronach jest bardzo jasno i przejżyście wyjaśnione od czego zacząć i jak taki "kod" wżucić na FDD.
Ciekawe czy na płytowym linux'ie też dam rade? (Knopix)
Jak tylko coś zdziałam to dam znać.
tomasz_olszewski14 - 11 Kwi 2005 10:15
moze sprubuj pisac w turbo pascalu lub free pascalu do tp sa jakies biblioteki do graficznej obslugi.
Inner_Bushman - 11 Kwi 2005 10:25
A kto mówi o grafice? Do garfiki temu daleko jak stąd do Kioto. Co do pascala, osobiście mam obiekcje do niego a pozatym znam C i niechce mi się uczyć nowego "równożędnego" jezyka bo i poco.
Jedyne co będe musiał zrobić to powtórka z Asemblera
chrobry - 27 Kwi 2005 16:05
Powiem tak jestem na drugim semestrze informatyki i właśnie taki pomys na jaki wpadł Inner_Bushman wydaje się bardzo, ale bardzo symaptyczny. Faktycznie mogą być pewne problemy, ale sądzę, że na drugim roku będę miał podobną pracę zaliczeniową więc jak coś to daj znać o wynikach swoich prób lub ewentualnie gdybyś potrzebował pomocy.
Sam bym się zabrał do pracy nad tym juz dziś, ale Analiza matemtyczna mi nie pozwala
arnie - 27 Kwi 2005 17:00
Hmmm.... osobiście kiedyś jako cwiczenie z Asma zrobiłem sobie sektor startowy dyskietki, który ładuje program z bodajże 18 sektorów drugiej ścieżki dyskietki i go wykonuje.
Oczywiście w tych 18 sektorach znajdowały sie tylko procedury Obsługi przerwań procesora (NMI, dzielenie przez zero ipt) i prosty program odczytujący dane z RS232 i wyświetlający je na ekranie. Po 3 dniach walki działało od 386 do PIV. Wymagało jedynie obecności portu szeregowego pod adresem bodajże 3F8H.
Zainteresowanych zapraszam na GG:)
LtLog - 27 Kwi 2005 17:16
Do jego stworzenia najlepiej nadaje się moim skromnym zdaniem UNIX. Polecam na początek wziąć się za rozgryzanie kodu dowolnej dyskietkowej distro Linux'a. Na tej zasadzie stworzyłem kiedyś distro oparte o zestaw Minimalist na platformie hal91 przyznam że działało to różnie, a system został zakończony przez mojego znajomego nie przezemnie, literówek w kodzie było od groma jednak distro pozwalało wykonać podstawowe zadania jak wyświetlanie znaków, interpretacja poleceń odbiór sygnału z RS232 zabrakło tylko najważniejszego czyli interpretacji tego sygnału no ale było coś co można by nazwać trybem graficznym obecnie służy do sterowania starą wtryskarką w zakładzie kolegi. Bogatszy nieco o tę wiedzę tym razem oparł bym sie o rozwiązania K12LTSP i CoreLinux.
Pozdrawiam Lt.
cyberkid - 27 Kwi 2005 23:55
http://4programmers.net/download.php?id=1877
http://4programmers.net/download.php?id=1839
http://forum.4programmers.net/viewtopic.php?id=53884
heh, napisanie samego BOOT loadera to pestka. Trzeba wymyslec jakis system plikow i napisac prosty kernel a do niego jakies sterowniki... teraz tyle tego sprzetu ... nastepnie jakis interfejs ( shell ) i cos tam jeszcze ... kupa roboty ... jesli tylko w trybie rzeczywistym bo jak chcesz skoczyc w tryb chroniony to sie pojawia masa innych badziewi + moze by jakas wielowatkowosc etc ...
moze lepiej napisz prosta aplikacje nie wymagajaca OSa i bootowalna z dyskietki
Inner_Bushman - 28 Kwi 2005 09:17
Moim pierowotnym założeniem była właśnie napisanie prostej aplikacji, w przyszłości oczywiście można "doleić" obsługę przerwań i udostępnić jakieś funkcje systemowe dla dodatkowych aplikacji. Wtedy bez problemu będzie można to nazwać prawdziwym "OS"