Jak mogę zbudować mały system operacyjny na starym komputerze stacjonarnym? [zamknięte]

To może być na próżno, ponieważ Wiem, że pisanie systemu operacyjnego jest nieznośnie skomplikowane (zwłaszcza przez samego siebie).

  • Nie spodziewam się budować następnego Linuxa, czy Windowsa.

  • Wiem, że to będzie straszne, i buggy, i nie będzie działać, ale to jest w porządku.

Chcę wszystko napisać sam, w , C i (niektóre) C++.

Jest to projekt przyszłości, ponieważ jestem zajęty innymi sprawami w tej chwili i nie mam czasu od razu, ale pomyślałem, że zapytam go teraz, więc może mógłbym uzyskać wiele odpowiedzi na to, i to może budować i być użytecznym zasobem dla tego rodzaju podejścia (Wszystko inne widziałem związane z budowaniem z minix, za pomocą istniejącego bootloadera, budowanie go w wirtualnym programie rozruchowym, itp).

Chcę skonfigurować jeden ze starszych komputerów stacjonarnych z monitorem, klawiaturą i myszą i rozpocząć pracę na pustym dysku twardym .

Chcę dowiedz się, jak napisać własny bootloader (znalazłem wiele zasobów na ten temat, ale dla kompletności, Proszę jeszcze dodać kilka dobrych), mój własny sterownik USB (jeśli jest to konieczne), Sterownik CD (jeśli jest to konieczne), itp. Wszystko od podstaw.

  • Jak umieścić kod na komputerze? Czy najlepiej zrobić to dyskietką? Czy większość komputerów może to zrobić z pamięci USB?

  • Jakich sterowników potrzebuję i czy możecie zaproponować jakieś odniesienia do budynku te?

  • Po sekwencji startowej ... co potem? Jak dostać się do trybu chronionego itp.

  • Jak zarządzać pamięcią bez pomocy systemu operacyjnego? Czy używam tylko adresów, które chcę? Nie trzeba inicjować?

  • Na co bez wątpienia wpadnę, co mnie zmyli?

  • Jak mogę zrobić albo O / S linii poleceń, a graficzny?

  • Na czym opiera się Graficzny O/S? Jak mam to zrobić? coś w stylu wiersza poleceń, z czcionką i obrazkiem na górze?

  • Gdzie mogę przeczytać o konfigurowaniu środowiska wielozadaniowego? (tj., posiadające dwie graficznie podobne linie poleceń działające obok siebie).

  • Jak skonfigurować system okien? Jak wyświetlić grafikę na ekranie po skonfigurowaniu prostej wielozadaniowości?

Uwierz mi, rozumiem, że to jest bardzo skomplikowany projekt i prawdopodobnie nigdy nie dostanę Około do jej uzupełnienia lub napisania czegokolwiek na niej jakiegokolwiek użytku.

Jest wiele innych elementów, o których nie wspomniałem, jeśli myślisz o żadnym, możesz je również dodać.

Proszę umieścić jeden "temat" na odpowiedź-na przykład sterowniki USB, a następnie może listę zasobów, rzeczy, na które należy zwrócić uwagę, itp.

Również, proszę nie sugerować budowania z innego O / S lub wcześniej istniejącego kodu. Wiem, że przeczytam dużo wcześniej istniejącego kodu (np. jądro Linuksa, czy przykładowe zasoby, istniejące sterowniki, itp.), ale ostatecznie chcę zrobić wszystko pisanie sam. Wiem, że powinienem zbudować coś innego, i jest wiele innych pytań na ten temat, które mogę przeczytać, jeśli zmienię zdanie i pójdę tą drogą. Ale tu chodzi o zrobienie wszystkiego od zera.

Jakieś sugestie jak to zrobić graficznie? Różne tryby wideo i jak z nimi pracować, itp?

Author: Erty Seidohl, 2009-08-04

20 answers

Po kolei. Czytaj, czytaj, czytaj, czytaj, czytaj. Musisz mieć solidne zrozumienie, jak działa system operacyjny, zanim będziesz mógł mieć nadzieję na wdrożenie własnego.

Weź jedną z książek Andrew Tanenbauma o systemach operacyjnych. To jest ten, którego używaliśmy na moich zajęciach z OS na studiach:

Nowoczesne systemy operacyjne PDF

Nowoczesne systemy operacyjne na Amazon

Pomimo śmiesznej okładki, to fantastyczna lektura, szczególnie jak na podręcznik. Tanenbaum jest naprawdę ekspert w tej dziedzinie i jego wyjaśnienia, jak działa system operacyjny pod maską, są jasne i łatwe do zrozumienia. Ta książka to głównie teoria, ale wierzę, że ma również książkę, która omawia więcej realizacji. Nigdy tego nie czytałem, więc nie mogę tego skomentować.

To powinno pomóc ci w zarządzaniu procesami, pamięcią, systemami plików i wszystkim innym, co jądro systemu operacyjnego musi zrobić, aby uzyskać stan rozruchowy. Od tego momentu jest to w zasadzie kwestia pisania sterowników urządzeń dla sprzętu, który musisz obsługiwać, i oferowania implementacji funkcji biblioteki C do wywoływania wywołań jądra dla takich rzeczy, jak otwieranie plików i urządzeń, czytanie i pisanie, przekazywanie wiadomości między procesami, itp.

Czytaj na x86 assembly(zakładając, że projektujesz to dla maszyny x86). To powinno odpowiedzieć na wiele pytań dotyczących poruszania się między trybami pracy procesora.

Jeśli masz jakąś wiedzę z zakresu elektroniki, to może być łatwiej zacząć od napisania systemu operacyjnego dla urządzenia wbudowanego, które ma obszerną dokumentację, ponieważ na ogół będzie prostsze niż komputer x86. Zawsze chciałem napisać własny system operacyjny i zaczynam od napisania wbudowanego systemu operacyjnego microkernel dla tej płyty programistycznej od Digilent. Może uruchomić procesor Mikroblaze z miękkim rdzeniem firmy Xilinx, który ma bardzo dokładną dokumentację. Ma również trochę pamięci RAM, pamięci flash, Diody LED, przełączniki, przyciski, wyjście VGA, itd. Mnóstwo rzeczy do zabawy z pisaniem prostych sterowników.

Jedną z zalet urządzenia wbudowanego jest również to, że możesz uniknąć pisania sterownika VGA przez długi czas. W moim przypadku płyta programistyczna Digilent ma wbudowany UART, więc mogę efektywnie używać wyjścia szeregowego jako mojej konsoli, aby uzyskać całość i uruchomić linię poleceń z minimalnym zamieszaniem.

Po prostu upewnij się, że cokolwiek wybierzesz do celu ma łatwo dostępne i dobrze przetestowane kompilator do niego. Nie chcesz pisać system operacyjny i kompilator w tym samym czasie.

 50
Author: Bob Somers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-20 13:57:00

Http://www.osdev.org/ oraz http://www.osdever.net/

Witamy w świecie rozwoju OS.

Zobacz także inne linki do dokumentacji x86 W SO ' s x86 tag wiki: instrukcje Intela i AMD, dokumenty kompilatora / asemblera i różne przewodniki.

Sugeruje również użycie BOCHS lub innego środowiska wirtualnego do debugowania, ponieważ można jednoetapowo uruchomić bootloader i zbadać rejestry.

 27
Author: fnurglewitz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-08 02:22:04

Sugerowałbym pracę, przynajmniej na początku, na Bochs lub innej maszynie wirtualnej, ponieważ możesz ją zabrać ze sobą, gdzie chcesz, łatwiej jest debugować (możesz zobaczyć dokładny stan sprzętu), a jeśli potrzebujesz pomocy zewnętrznej debugowania, mogą używać dokładnie tego samego "sprzętu" co Ty.

Najbardziej przydatną radą, jaką mam, jest wprowadzenie stanu, w którym można uruchomić kod C tak szybko, jak to możliwe-tzn. uruchomić, skonfigurować tabele deskryptorów, i dostać się do punktu, w którym można bezpiecznie uruchomić skompilowany C. Większość, jeśli nie wszystkie jądra powinny być w C, jeśli chcesz pozostać przy zdrowych zmysłach i pracować nad nim. Montaż, choć wymagany w niektórych miejscach, jest żmudny i trudno go debugować.

 15
Author: hbar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-03 21:46:58

Na najniższym poziomie minimum, które system operacyjny musi być w stanie zrobić, to napędzić sprzęt systemu w jakiś sposób i jakoś załadować jakiś "kod użytkownika"."Jeśli zamierzasz zacząć od komputera, musisz napisać kod, który może być ładowany przez niego z jakiegoś urządzenia lub innego. Starsze komputery mają BIOS w oprogramowaniu sprzętowym, który określa, w jaki sposób sprzęt wykonuje pewną inicjalizację (przynajmniej wideo, klawiaturę i jakąś formę pamięci masowej lub boot loadera). (Aktualizacja Październik 2017: Nowsza Komputery mają firmware EFI lub UEFI ... co jest w dużej mierze pedantyczną różnicą; służy tym samym celom w tej dyskusji).

Zacznij więc od zapoznania się z niskopoziomowymi szczegółami, jak korzystać z BIOS-u lub innego oprogramowania układowego w systemie docelowym. Oznacza to, że naucz się pisać program, który BIOS może załadować i wykonać. To w końcu przekształci się w twój boot loader. Zacznij od małego. Po prostu pobierz program, który drukuje: "Hello, Linus" bezpośrednio z procesu rozruchu firmware (na dyskietce lub kciuku USB jedź, to dobry początek ... lub na dysku twardym, jeśli chcesz).

Stamtąd polecam napisać bardzo prosty sterownik szeregowy ... Zaktualizuj swój boot loader, aby zainicjować jakiś port szeregowy i rozpocznij pobieranie z niego. Następnie może wykonać kod, który ciągnie. Stamtąd napisz trochę bootstrap, który może zapisywać do innego zestawu bloków (nie zaimplementowaliśmy jeszcze systemu plików ... nawet parsowanie tabel partycji; więc zajmowalibyśmy się tylko surowymi zakresami bloków na dysku w pierwszy).

W tym momencie Twój boot loader powinien być w stanie wyciągnąć nowy kod przez linię szeregową, wrzucić go do partycji (tak, zaimplementować obsługę tablicy partycji w jakiś sposób ... to, czy jest zgodny ze standardowymi konwencjami PC, zależy od Ciebie w tym momencie) i wykonać go.

Stamtąd powinieneś być w stanie pracować nad znacznie bardziej wyrafinowanymi funkcjami. Z tej bazy Możesz napisać i skompilować nowe "jądro"... zrestartuj swoje stanowisko testowe i zainstaluj nowe jądro do to.

(Twój bootloader powinien pobierać jakiś sygnał, taki jak przerwa na szeregowych liniach handshakingu jako polecenie, aby pominąć pobieranie i po prostu uruchomić istniejący obraz; i powinien obsłużyć pewien limit czasu w ten sposób, jak również).

Stamtąd napisać bardzo prostą warstwę terminala i powłokę poleceń? System plików? Zaimplementuj polecenia, aby pobrać nową zawartość wykonywalną inną niż jądro (pliki lub obiekty jakiegoś rodzaju). I tak dalej.

Naturalnie mogłeś zacząć od sterownik konsoli za pomocą klawiatury PC i wideo (BIOS INT 0x16h i INT 0x10h rzeczy, odpowiednio, jeśli dobrze pamiętam). Jednak sugerowałbym rozpoczęcie od Sterownika szeregowego, ponieważ można następnie zautomatyzować cykl budowania/wdrażania/testowania z dowolnego innego istniejącego (funkcjonalnego) systemu. Ponieważ Twój nowy system operacyjny rozpocznie się jako projekt skompilowany krzyżowo, konieczne będzie, abyś miał usprawniony sposób radzenia sobie z tym.

Nie wiem, jak daleko chcesz posunąć swój projekt. A imponującym celem byłoby osiągnięcie " samodzielnego hostingu."Jeśli możesz utworzyć prosty asembler/kompilator, który pozwoli Ci użyć nowego systemu operacyjnego do (ponownego)budowania, łączenia i uruchamiania w działającej wersji nowego systemu operacyjnego ... więc osiągnęłaś ten cel. (Zauważ, że nie jest to wymóg. Wiele systemów wbudowanych nigdy nie będzie samodzielnego hostingu i nie ma w tym nic złego).

 14
Author: Jim Dennis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-08 01:17:09

Jeśli nie masz nic przeciwko wirtualizacji sprzętu, istnieje kurs (książka + wykłady + oprogramowanie), który zabierze cię "z Nand do Tetrisa". Tworzysz pełny system komputerowy całkowicie samodzielnie od (do tych celów atomowych i podanych) elektrycznej bramki NAND, aż po zbudowanie systemu operacyjnego, języka i wreszcie kodowanie prostej gry na osobistym komputerze.

Myślę, że to świetny pomysł i coś, w co w pełni zamierzam się wkręcić. Książka jest zaskakująco tania i Wierzę, że kurs jest prowadzony na MIT. Nie mogę sobie wyobrazić większego uczucia niż posiadanie pełnej, kompletnej wiedzy o całym systemie, który sam zbudowałeś od podstaw.

Link: http://www1.idc.ac.il/tecs/

 12
Author: Sam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-03 22:39:32

Chciałbym zacząć mały i kupić 8086 embedded development kit, i rozwijać wielozadaniowy OS na tym. Gdy już posiadasz jądro i zapoznasz się z pracą na poziomie sprzętowym, będziesz gotowy zrobić coś bardziej wymagającego.

Zbudowanie nawet klonu VGA display DOS jest dość trudnym zadaniem. Szczegóły są ogromne. :-)

Konkretne tematy.

Jak umieścić kod na komputerze? Czy najlepiej zrobić to dyskietką? Czy większość komputerów może to zrobić z pendrive ' a?

BIOS zrobi elementarne bootstrapping.


Jakich sterowników potrzebuję i czy możecie zasugerować jakieś odniesienia do ich budowy?

Wszystko, co nie jest bezpośrednie operacje cpu/pamięci. Wszystko, co nie znajduje się bezpośrednio w podręczniku CPU.


Po sekwencji startowej-co potem? Jak dostać się do trybu chronionego itp.

Tryb chroniony będzie częścią sekwencji rozruchowej.

Potem zaczynasz wielozadaniowość i zastanawianie się jak rozpocząć procesy.


Jak zarządzać pamięcią bez pomocy systemu operacyjnego? Czy używam tylko adresów, które chcę? Nie trzeba inicjować?

Zgadza się. Prawdopodobnie będziesz chciał w końcu uporządkować system pamięci wirtualnej.


Na co niewątpliwie wpadnę, co mnie zmyli?

Brak narzędzi debugujących, brak IO


Jak mogę zrobić albo O/S linii poleceń, albo graficzny?

Z żal. Wyszukaj Windows 3.1 i Linux, w szczególności X windows.


Na czym zbudowany jest graficzny O/S? Jak zrobić coś takiego, jak wiersz poleceń, z czcionką i obrazkiem na górze?

Szukaj W X windows.


Ostatnia rada: Studiuj linux / X windows. To nie jest idealne, ale daje zrozumienie jednego podejścia. Studiuj również systemy wbudowane.

 10
Author: Paul Nathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-03 22:13:15

Seria OS Development Series @ BrokenThorn może Cię zainteresować.

 8
Author: tomzx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-19 17:08:00

Spróbuj odczytać kod małego, podstawowego systemu operacyjnego typu open source, takiego jak MikeOS.

Alternatywnie proponuję następujące kroki (powinno być fajnie!):

  1. napisz maszynę wirtualną. Zdefiniuj wszystkie instrukcje procesora, aby poznać swój system wewnątrz i na zewnątrz. Interfejs z SDL dla Klawiatury, Myszy, ekranu, dostępu audio. Zachowaj to proste, abyś mógł zmieścić wszystko w głowie na raz. Nie musi to być najnowocześniejsza maszyna wirtualna, tylko taka, która może emulować funkcja "prawdziwego" komputera.
  2. napisz asembler dla procesora maszyny wirtualnej. Pamiętaj, że ten asembler nie musi być programem napisanym w języku maszyny wirtualnej, ale wszystkim, co może przekonwertować twój język asemblera na kod maszynowy.
  3. zdefiniuj format wykonywalny i napisz prosty linker.
  4. masz już wszystkie części do napisania swojego systemu operacyjnego! Napisz to w języku asemblacji, zmontuj ... itd .. nie potrzebujesz tak skomplikowanych proces ładowania, po prostu najpierw uruchom komputer.

Powyższe kroki mogą wydawać się trochę głupie dla pisania prostego systemu operacyjnego, ale hej, to cholernie zabawne.

 8
Author: ouiliame,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-20 09:07:22

Widzę wiele dobrych odniesień do stron programistycznych OS, więc opiszę inne podejście:

Jeśli chcesz doświadczyć implementacji systemu operacyjnego z bare metal, są o wiele lepsze opcje sprzętowe niż stary komputer. Dzięki architekturze komputera spędzisz nadmierną ilość czasu na kodowaniu wokół nieciekawych artefaktów z 30-letniej historii projektowania. Na przykład, tylko część bootloadera projektu prawdopodobnie wypaliła wielu odważnych programistów.

Dla na przykład, będziesz potrzebował jednego zestawu sterowników, aby odczytać jądro z dysku i / lub sieci. Następnie będziesz potrzebował kodu, aby przejść do trybu chronionego. W tym momencie potrzebujesz innego zestawu sterowników! Bardzo niewiele pracy, którą wykonasz, aby uzyskać chip w trybie chronionym, będzie można przenieść po tym punkcie. Chcesz go uruchomić na innym komputerze + - 4 lata i będziesz potrzebować jeszcze jednego zestawu sterowników.

Spójrz na Bootstrap ARM lub inny 32-bitowy "wbudowany" układ. Niedrogie płyty deweloperskie to dostępne, lub można lutować własne! Niektóre mają wbudowany ethernet i usb. Myślę, że będziesz miał więcej zabawy pracując nad zdrową, Nie chrupiącą architekturą i być może skończysz z niektórymi umiejętnościami wielokrotnego użytku.

 7
Author: Marsh Ray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-04 00:15:14

Bardziej niż cokolwiek innego, jeśli chcesz, aby to działało na prawdziwym sprzęcie, absolutnie potrzebujesz kopii Instrukcji procesora. Instrukcje Intela ( http://www.intel.com/products/processor/manuals / ) są nieocenione. Przechodzą one na wszystko, od przełączania trybów (real / protected) do zarządzania pamięcią wirtualną (jeśli zdecydujesz się iść tak daleko) do tworzenia syscalls (jeśli kiedykolwiek dostać się do trybu użytkownika). najważniejsze wyjaśniają szczegółowo wiele rzeczy, które muszą być ustawione do funkcjonowania rzeczy, takich jak rejestry TSS i segmentów, o których większość tekstów OS nie dyskutuje, ponieważ są one bardziej związane z pojęciami wyższego poziomu niż szczegółami specyficznymi dla procesora.

 7
Author: csgordon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-17 04:25:01

Zobacz MikeOS . Jego dość prosty OS napisany jest czytelny (jak w komentarzu) montaż. Mimo że jest dość prosty, ma GUI i obsługuje niektóre sieci i multimedia.

Edytuj: MenuetOS jest graficzny. Jest również napisany prostym asm, ale jest bardziej wyrafinowany niż MikeOS

 6
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-03 21:52:58

Masz ambitny cel. Ale egzekucja jest kluczowa.

Większość ustrukturyzowanych podejść (podręcznik lub klasa college) przeprowadzi Cię przez proces, ale dostarczają dużo nitty-gritty kodu, który wyświetla tajemne szczegóły wybranej platformy i pozwala skupić się na dużych pomysłów: planowanie procesów, zarządzanie pamięcią, zapobieganie impas, I/O, i tak dalej.

Moja rada jest taka: zmniejsz swoje oczekiwania i zacznij od podstawowego pytanie.

Co to jest system operacyjny?

Informatyk (miejmy nadzieję) nigdy nie powie, że system operacyjny jest graficznym interfejsem użytkownika, przeglądarką internetową lub sposobem na podłączenie urządzeń USB, lub cokolwiek, co użytkownik może faktycznie zobaczyć lub dotknąć. Zamiast tego SYSTEM OPERACYJNY na najbardziej podstawowym poziomie to te rzeczy, o których wspomniałem powyżej. Wszystkie one znajdują się pod jednym wielkim parasolem: zarządzanie zasobami.

System operacyjny to nic innego jak program, który zarządza sprzętem zasoby komputera: pamięć, procesor i urządzenia peryferyjne.

Oto prosty system operacyjny: program pozwala użytkownikowi wpisać program (w systemie szesnastkowym lub binarnym) za pomocą połączenia szeregowego. Po wpisaniu programu uruchamia program. Po zakończeniu programu kontrola jest zwracana użytkownikowi, gdzie może ponownie uruchomić program lub wpisać nowy.

Zrób to na "czystej" architekturze, takiej jak wbudowany procesor ARM z 64K pamięci lub tak. Możesz Zakoduj to w montażu po kilku dniach nauki tajników ramienia. I voila!, masz sobie system operacyjny.

Robi wszystko, co ma zrobić OS:

  • zarządza pamięcią, nie pozwalając użytkownikowi nadpisać samego systemu operacyjnego.
  • ustawia jeden proces do uruchomienia.
  • obsługuje wejścia / wyjścia do pojedynczego szeregowego urządzenia peryferyjnego.

To daje Ci cegiełkę, od której możesz zacząć. Masz teraz wiele możliwości. Być może jednym z nich byłoby umożliwienie załadowania dwóch programów do pamięci i umożliwienie użytkownikowi podjęcia decyzji, który z nich ma zostać uruchomiony.

LUB możesz pozwolić użytkownikowi zawiesić wykonywanie jednego programu, przełączyć się na drugi, zawiesić i przełączyć z powrotem. Jest to podstawowa wielozadaniowość, mimo że jest całkowicie ręczna.

Twoje wybory są nieograniczone, ale każdy z nich to mały krok od tego, co miałeś wcześniej.

To zabawne, jeśli nie ustawiasz zbyt wysoko celownika!

 6
Author: Barry Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-22 23:59:03

Prowadzę listę zasobów na StackOverflow: Jak zacząć pracę nad systemem operacyjnym . Proszę, dodaj do niego nowe zasoby, gdy zaczniesz przygodę (zaraz zacznę:))

 5
Author: Giovanni Galbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:24

Wiele szkół ma klasy OS, które robią wiele z tego, co opisujesz. Moja szkoła (CMU) nauczała systemu operacyjnego w C, a my napisaliśmy jądro, system plików i powłokę i otrzymaliśmy kod do boot loadera.

Niestety, nie byłem w stanie znaleźć żadnych ostatecznych zasobów dla tego kursu (15-412) w Internecie, a to ewoluował w czasie. Ale być może ludzie mogliby zamieścić linki do źródeł i zadań dla szkół, które mają dobre zasoby w Internecie.

 4
Author: Drew Hoskins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-03 21:49:43

Możesz cieszyć się Ten tutorial o nazwie "Roll your own toy UNIX-clone OS", jest bardzo wnikliwy i powinien pomóc ci na swojej drodze.

Powodzenia.

 3
Author: blacky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-03 22:28:23

Zbadaj A2 System (dawniej nazywany Oberon system ) pod kątem pomysłów, które możesz ukraść. Jest to graficzny system operacyjny zbudowany przez tylko dwie osoby, chociaż co prawda jedna to Niklaus Wirth. Pierwszy wydany około 1990 roku, a prędkość jest zadziwiająco dobra. Jest książka Gutknechta.

 3
Author: Norman Ramsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-04 04:38:28
 3
Author: amaterasu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-19 17:01:14

O niskopoziomowym programowaniu Grafiki, to da Ci wiele informacji: http://www.osdever.net/FreeVGA/home.htm . (jest to bardzo interesujące również dla trybu tekstowego.)

Na co niewątpliwie wpadnę, co mnie zmyli?

Zdasz sobie sprawę, że na PC jest strasznie dużo rzeczy, które nie są jasne: sam zestaw instrukcji x86 jest skomplikowany, a kiedy uzyskasz bezpośredni dostęp do sprzętu, może upłynąć sporo czasu, zanim zrozumiesz, jak to zrobić napisz pojedynczy znak na ekranie.

Nie martw się o dyskietkę i tym podobne, przez większość czasu będziesz używać emulatora, takiego jak Bochs lub QEmu.

 3
Author: Bastien Léonard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-23 00:34:13

Spójrz na Minix . Zbadaj kod źródłowy wraz z "Operating Systems Design and Implementation". Rozważ wkład w projekt. Myślę, że Minix to naprawdę dobry i obiecujący OS w tworzeniu. Jest to również dobrze finansowany projekt. Oznacza to, że możesz nawet dostać zapłatę za swoje składki!

 2
Author: Vijay Mathew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-04 06:29:13

Jest to bardzo proste dzięki temu, że BIOS ma już wiele wbudowanych funkcji wejścia/wyjścia do zmiany trybu ekranu, zmiany koloru pikseli, pisania tekstu na ekranie i wielu innych rzeczy. Nie obejmuje jednak obsługi systemów plików, co jest jedną z niewielu rzeczy, które musisz włączyć w swoim systemie operacyjnym.

BIOS ładuje pierwszy sektor na dysku twardym i rozpoczyna wykonywanie kodu stamtąd, więc Twój system operacyjny musi być umieszczony z pierwszą instrukcją w pierwszym sektor na dysku twardym.

Ten artykuł na Wikipedii powinien ci pomóc w uruchomieniu przerwań BIOS-u do pisania tekstu na ekran, odbierania klawiszy z klawiatury i innych rzeczy. https://en.wikipedia.org/wiki/BIOS_interrupt_call

Nawet jeśli planujesz używać c++, zdecydowanie polecam przeczytanie o programowaniu assembly, ponieważ jest to niezbędne do zrozumienia, jak działa sprzęt.

 1
Author: Lennie Tofft,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-24 00:12:06