OS w C bez związku z systemem

Witam.

Wiem że można napisać OSa w C (C++, C#).

Kiedy piszemy w C to z reguły program jest powiązany z Windowsem / Linuxem.

Jak pisać w C aby programy były niezależne od systemu ?

Pisać nie używając funkcji systemowych. Natomiast sekcje w których musimy użyć czegoś co jest na obu systemach, ale “wywołuje się” to inaczej robić przy pomocy preprocesora i makr definiowanych przez (i determinujących) system.

C generuje kod Assemblera, którego można wykorzystać. Grunt to napisać taki kod, żeby nie używać nawet bibliotek standardowych języka.

Generalnie jeśli nie wiesz jak się za to nawet zabrać, to masz niewielkie szanse na napisanie czegokolwiek sensownego.

dlatego przejdź na jave ;D

Java pozwala na programowanie bez związku z systemem ?

Ona też wykorzystuje jakieś biblioteki systemowe - przynajmniej tak gdzieś czytałem -)

Java jest “systemem sama w sobie”. Program napisany w 100% w Javie (bez JNA, JNI itd itp) tylko przy użyciu standardowych bibliotek (których jest całkiem sporo) odpali na każdym systemie z Javą SE bez potrzeby osobnych kompilacji. Oczywiście że Java jakieś tam biblioteki systemowe używa (w końcu okienko przez coś musi stworzyć), ale od tego jest sama Java jako “Maszyna Wirtualna”, poprzez same pisanie w Javie programisty nie musi obchodzić na jakim systemie to będzie odpalane (z małym wyjątkiem: windows używa separatora “” zamiast “/”, więc przy plikach trzeba uważać, albo cały czas używać “/”)

Co do C++, to można użyć frameworka Qt, co prawda pod każdy system trzeba osobno kompilować, ale programy napisane czysto w Qt działają na windowsie, linuksie, macu, ewentualnie symbianie i androidzie.

Małe sprostowanie do tego używa się System.getProperty(“file.separator”);

To świadczy tylko o jakości programisty. Jeżeli programista nie może w 100% zagwarantować, że aplikacja będzie wykonywana zawsze na takim samym OSie to zawsze może zastosować przecież

File.pathSeparator

Skoro “/” działa bezproblemowo na obu typach systemów w większości przypadków… To nie ma zbytnio sensu kombinować dopóki faktycznie nie potrzebuje się rzeczywistego separatora. File.pathSeparator sporo miesza w czytelności kodu.

Czyli co - jak napiszę OS w Javie i dorobię do niego bootloader to mój OS uruchomi się na “czystym” kompie ???

OSu w samej Javie nie napiszesz. Niektórzy tutaj zrozumieli, że chcesz pisać przenośne międzyplatformowo programy, nie OS. Javę byś musiał dopiero na swój OS zaimplementować, wtedy programy napisane w Javie by chodziły na twoim OSie. Podobnie z C/C++: musiałbyś zaimplementować podstawowe biblioteki umożliwiające tym językom funkcjonowanie.

Żeby w ogóle zacząć pisać OS, trzeba mieć nieco pojęcia o funkcjonowaniu systemów, bez tego nie da rady. Wybacz, ale ktoś kto zadaje takie pytania ma niewielkie szanse na napisanie czegokolwiek sensownego.