logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Co potrzeba do stworzenia systemu operacyjnego "od zera

02 Lis 2009 20:08 9819 30
REKLAMA
  • #1 7207283
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #2 7207433
    piotrekpajak
    Poziom 15  
    Posty: 180
    Pomógł: 8
    Ocena: 7
    To chyba jest podchwytliwe pytanie, jeśli stworzysz nowy OS pod Windowsem, to już ma z nim coś wspólnego.
  • REKLAMA
  • #3 7207659
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #4 7208115
    Dr.Vee
    VIP Zasłużony dla elektroda
    Posty: 1784
    Pomógł: 307
    Ocena: 76
    Podstawowa sprawa to fakt, że system operacyjny (tj. 32-bity, 64-bity, windows, linux) nie musi mieć nic wspólnego z kodem generowanym przez kompilator. Akurat Windows jest tu wyjątkiem od reguły, bo wszystkie produkty MS są ze sobą nierozerwalnie związane :)

    Przy każdym programie kompilowanym do kodu binarnego można mówić o dwóch architekturach:
    1) architektura, na której program został skompilowany (build)
    2) architektura, na której program będzie wykonywany (host)
    Przy takim programie jak kompilator dochodzi trzecia opcja:
    3) architektura, na którą program będzie generował kod wykonywalny (target)

    Na przykład dla MSVS najprawdopodobniej mamy 1 = 2 = 3 = win32 na procesorze x86. W przypadku gdy 2 != 3 mówimy o kompilacji skrośnej (cross-compilation). W przypadku, gdy 1 != 2, to sam kompilator został skompilowany w procesie kompilacji skrośnej :)

    Niejako przez przypadek w zadaniu nowy OS ma pracować na procesorze zgodnym z x86 - ale wcale tak nie musi być (np. docelową architekturą może być ARM, PowerPC i wiele innych). Przy braku zgodności architektur nie ma mowy o współdzieleniu bibliotek itp, bo brak jest kompatybilności binarnej - czyli OS nie musi mieć nic wspólnego z windows.

    Ponadto zwróć uwagę na to, że "zwykły" program jest kompilowany w trybie "hosted" - czyli ładowanie i wykonanie programu wspierane jest przez system operacyjny, a z kodem programu jest konsolidowana (statycznie lub dynamicznie) biblioteka standardowa i inne biblioteki. Przy kompilacji kodu nowego OSa mówimy o trybie "freestanding", czyli bez biblioteki standardowej i wsparcia dla ładowania kodu przez OS - czyli zwykle kompilator nie dołącza żadnej dodatkowej biblioteki do wynikowego programu.

    Mam nadzieję, że powyższe choć trochę rozjaśnia sytuację.

    Pozdrawiam,
    Dr.Vee
  • #5 7208264
    jestam
    Specjalista Automatyk
    Posty: 1794
    Pomógł: 210
    Ocena: 144
    Uzupełniając powyższe. Nie ma problemu z wygenerowaniem 64 bitowego kodu przez 32 bitowe Visual Studio. Da się nawet napisać system operacyjny w c# (nie w całości, ale znaczną część) - zobacz http://en.wikipedia.org/wiki/SharpOS_(operating_system) lub http://en.wikipedia.org/wiki/Singularity_(operating_system).

    Cytat:

    Wystrarczy zdefiniować odpowiednie biblioteki i pisać kod źródłowy czy zaimpretować język programowania pod nowy OS? Jeżeli nie to jak można napisać nowy system? W jaki sposób? Tworząć nowy kompilator, przystosowując język programowania do nowego OSa? Jak napisać system? Od czego zacząć?"


    Zobacz czym jest system operacyjny http://pl.wikipedia.org/wiki/System_operacyjny. Żeby go napisać potrzebny jest kompilator generujący kod na platformę docelową i dużo wiedzy na temat jej działania. Bardzo dużo wiedzy.
  • #6 7208930
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #7 7209004
    szelus
    Poziom 34  
    Posty: 1508
    Pomógł: 315
    Ocena: 53
    Kolega jestam miał na myśli platformę sprzętową. Jeżeli jej jeszcze nie ma, to zapewne trzeba ją zaprojektować. :)
    Zresztą, jeżeli chodzi o platformy sprzętowe, to fakt nieistnienia takowej, nie przekreśla możliwości pisania na nią programów. Istnieją przecież symulatory, które też można napisać. :) Tylko temat się coraz bardziej rozmydla. :)
  • #8 7209006
    Jarosx9
    Poziom 35  
    Posty: 2785
    Pomógł: 265
    Ocena: 400
    Cytat:
    Czyli można napisać kod źródłowy nowego OSa w MSVS? I przyjmijmy, żę sobie nad tym kilka lat posiedze:D i będe miał kod źródłowy nowego, niepowtarzalnego OSa, napisałem nowe biblioteki, wszystko od zera w MSVS. I co potem? Co zrobić by można było zainstalować system, używać go?

    Dodano po 2 [minuty]:



    Cytat:

    Zobacz czym jest system operacyjny http://pl.wikipedia.org/wiki/System_operacyjny. Żeby go napisać potrzebny jest kompilator generujący kod na platformę docelową i dużo wiedzy na temat jej działania. Bardzo dużo wiedzy.


    Na platforme docelową? A co jeśli ona jeszcze nie istnieje? Jak ją stworzyć? Od czego zacząć?

    No normalnie sobie jaja robisz chyba.
    Jak napisać system operacyjny na platformę której nie ma - trzeba być jasnowidzem albo stworzyć ten system na kartce w postaci schematów blokowych itp. - co i tak nic nie da bo w ten sposób to tylko ogólną filozofię można wymyśleć. Platformę najlepiej stworzyć - pokop trochę w internecie i poczytaj.

    Od czego zacząć - od początku - zdefiniować co to ma być za system, jakie urządzenia ma obsługiwać (do tego jest znajomość platformy potrzebna na której docelowo ma się to znaleźć), do czego będzie używany itd. itp.
    Co zrobić żeby można zainstalować - mam wrażenie że nie za bardzo wiesz czym jest system operacyjny i twoje myśli błądzą wokół windows'a - bo tylko taki znasz. - myśląc takimi kategoriami to najprościej zrobić instalator który zainstaluje twój "system operacyjny". Pamiętaj że są inne systemy operacyjne np. w komórkach itp.

    Podsumowując wszystko- wizualny kompilator microsoftowy nie wydaje mi się zbyt optymalnym narzędziem do pisania takich rzeczy.

    PS. Kiedyś dawno temu w erze DOS (moje liceum) zrobiłem coś takiego (startowało od zera) w assemblerze (i ciutkę TP), ale nakład pracy i otrzymany rezultat pozwala mi przypuszczać że samodzielnie pisząc dojście od zera do takiego np. windowsa zajełoby mi 10-15 lat no i oczywiście w chwili ukończenia system ten byłby bez aplikacji i sto lat za murzynami.
  • #9 7209045
    jestam
    Specjalista Automatyk
    Posty: 1794
    Pomógł: 210
    Ocena: 144
    Cytat:

    Co zrobić by można było zainstalować system, używać go?


    http://en.wikipedia.org/wiki/Booting
    Można też umieścić w ROM. Tak, chodzi mi o docelową platformę sprzętową.

    Cytat:

    Czyli można napisać kod źródłowy nowego OSa w MSVS? I przyjmijmy, żę sobie nad tym kilka lat posiedze

    W informatyce (prawie) wszystko można, kwestia czasu, pracy i kosztów.
    Idź na studia informatyczne na porządną uczelnię, tam "posiedzisz kilka lat" i zrozumiesz o co w tej chwili tak naprawdę pytasz. Odpowiedź będzie wówczas oczywista.

    Jarosx9 napisał:

    Podsumowując wszystko- wizualny kompilator microsoftowy nie wydaje mi się zbyt optymalnym narzędziem do pisania takich rzeczy

    Kompilator jak kompilator. Trudno tu mówić o optymalności narzędzia.

    Cytat:

    samodzielnie pisząc dojście od zera do takiego np. windowsa zajełoby mi 10-15 lat

    Setkom a nawet tysiącom ludzi "dojście od zera do takiego np. windowsa" jaki znamy obecnie zajęło ponad 15 lat. Więc chyba jeden człowiek musiałby poświęcić nieco więcej czasu.
  • #10 7209077
    Jarosx9
    Poziom 35  
    Posty: 2785
    Pomógł: 265
    Ocena: 400
    jestam napisał:

    Setkom a nawet tysiącom ludzi "dojście od zera do takiego np. windowsa" jaki znamy obecnie zajęło ponad 15 lat. Więc chyba jeden człowiek musiałby poświęcić nieco więcej czasu.
    Jeden to może i więcej ale należy też wziąść pod uwagę że 15-20 lat temu to cała ta ekipa błądziła po omacku prawie ze wszystkim - od interfejsu użytkownika po system plików.
  • #11 7209112
    Konto nie istnieje
    Konto nie istnieje  
  • #12 7209128
    jestam
    Specjalista Automatyk
    Posty: 1794
    Pomógł: 210
    Ocena: 144
    Zacznij od sprecyzowania, na jakim sprzęcie ten system operacyjny ma się wykonywać.
  • #13 7209169
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Hmmm, a co sądzicie o tym temacie który się kiedyś przewinął?? Ja bym kijem przez szmatę takich zagadnień nie tykał, jeszcze mi życie miłe ;), ale kolega Hendrix chyba całkiem nieźle sobie poradził - i z tego co pisał zajęło mu to dwa tygodnie, z tym że widać że zna się na rzeczy.
  • #14 7209270
    Konto nie istnieje
    Konto nie istnieje  
  • #15 7209427
    jestam
    Specjalista Automatyk
    Posty: 1794
    Pomógł: 210
    Ocena: 144
    Wracając do początku:
    Cytat:

    "Czy w kompilatorze MS Visual Studio lub innym działającym pod kontrolą windows( 32 bity) można stworzyć nowy, niezależy 64 bitowy system operacyjny nie mający nic wspólnego z Windowsem, Linuksem czy innymi systemami.


    Tak.

    Cytat:

    Jeśli tak to co tzreba zrobić? [ ... ] Jak napisać system? Od czego zacząć?"


    Od nauki czym jest system operacyjny, jak jest zbudowany, jak działa komputer PC, co to jest pamięc masowa, system plików i wiele innych.

    Kol.: dużo nauki przed tobą.

    Dalsza dyskusja na temat "chcę być drugim Torvaldsem tylko nie wiem jak" nie ma sensu.
  • #16 7209443
    Konto nie istnieje
    Konto nie istnieje  
  • #17 7209455
    Jarosx9
    Poziom 35  
    Posty: 2785
    Pomógł: 265
    Ocena: 400
    Cytat:
    Wszystko ok ale mojej odpowiedzi na pytanie nadal nie ma. Odpowiedzieliście tylko na część. Skoro da się napisać w MSVS kod to co potem?

    Potem trza to oblać.

    Co potem? Chyba nikt nie zrozumiał TWOJEGO pytania. Co może być potem???? Założyć firmę, zareklamować i sprzedać.
  • #18 7209479
    Konto nie istnieje
    Konto nie istnieje  
  • #19 7209518
    Jarosx9
    Poziom 35  
    Posty: 2785
    Pomógł: 265
    Ocena: 400
    Cytat:
    Nie o takie "co potem.." mi chodziło. Co zrobić po napisaniu kodu? Jak stworzyć instalator? itd.

    Zaręczam ci że jak już stworzysz system operacyjny od zera, to instalator to będzie mały pikuś (pan pikuś). Znowu pytanie bez sensu, jak to jak? Po prostu - Napisać program który po uruchomieniu umieści elementy systemu operacyjnego w miejscach do tego przeznaczonych, skonfiguruje je i zakończy działanie.
  • REKLAMA
  • #21 7210087
    chudybyk
    Poziom 32  
    Posty: 1529
    Pomógł: 196
    Ocena: 296
    Czemu od razu zakładacie, że system operacyjny ma być podobny do Windowsa lub Linuxa? Jako platforma do procesów technologicznych można stosować zminiaturyzowane komputery, które nie muszą mieć monitora, myszki, ani klawiatury. Taki specjalizowany system operacyjny mógłby mieć bardzo ograniczoną funkcjonalność kosztem niezawodności. System operacyjny na taki komputer mógłby wykonywać programy pisane np. w Javie (nawiasem mówiąc komórki też są już komputerami)
  • #22 7210334
    Konto nie istnieje
    Konto nie istnieje  
  • #23 7210353
    Jarosx9
    Poziom 35  
    Posty: 2785
    Pomógł: 265
    Ocena: 400
    Wcale nie zakładam, jak już wcześniej napisałem.

    Zazwyczaj przed zrealizowaniem jakiegoś projektu trzeba się zastanowić na doborem narzędzi (czy to będzie przybijanie desek czy pisanie programów), a w tym przypadku wybór tego visualnego ustrojstwa od Microsoftu determinuje moim zdaniem platformę sprzętową i systemową dla pisanych programów. Nie napiszę, że się nie da napisać czegoś innego (nie znam się na tyle Visualu bo nie programuje już na windach - z reguły, a jeśli już to zawsze wolałem borlanda i spółkę), ale wymaga to na tyle dużo samozaparcia, że być może trzebaby się zastanowić czy jakieś inne narzędzia nie będą odpowiedniejsze, a myślę że będą i niejedna osobą się tu ze mną zgodzi.

    PS. Pisałem 4 minuty i mnie wyprzedził.
  • #24 7210384
    Konto nie istnieje
    Konto nie istnieje  
  • #25 7210424
    jestam
    Specjalista Automatyk
    Posty: 1794
    Pomógł: 210
    Ocena: 144
    Spróbuję jeszcze raz. Kol., powyższe pytania świadczą o tym, że pytający (Ty lub Twój nauczyciel) nie ma bladego pojęcia o co pyta.

    Akurat Visual Studio nadaje się równie dobrze jak gcc, czy dowolny inny kompilator / środowisko. Samo uruchomienie systemu operacyjnego dla komputera PC wymaga czystego, żywego kodu binarnego dla 16-sto bitowego trybu rzeczywistego, jak to pod DOSem w plikach *.com lub *.bin było. Później przełącza się procesor w 32 lub 64 bitowy tryb chroniony i można zaimplementować ładowanie plików z kodem relokowalnym w formacie PE lub ELF, więc resztę pisać np. w VS, gcc, czy jeszcze innym.

    Trudność tworzenia "systemu operacyjnego" dla komputerów PC jest w czymś zupełnie innym. Wpisz w google: tryby pracy procesora, obsługa przerwań, kontroler pamięci, system plików albo ich angielskie odpowiedniki.
  • #26 7210453
    Konto nie istnieje
    Konto nie istnieje  
  • #27 7210673
    jestam
    Specjalista Automatyk
    Posty: 1794
    Pomógł: 210
    Ocena: 144
    Ileż można powtarzać to samo. Poczytaj trochę z tych linków które podałem wcześniej. Btw. na studiach kurs z "systemów operacyjnych" trwa semestr. I nie jest na nim omawiane klikanie w okienkach. Nie da się tego streścić w paru zdaniach. Więc: tak, da się. Ale nie warto. Kropka.

    Co to znaczy "nie będzie miał nic wspólnego" ?? Czy wg. Twoich (Twojego nauczyciela) kryteriów Linux ma coś wspólnego z Windows ?

    "ale gdy będziemy mieli już kod to...właśnie co dalej" Koledzy wyżej napisali: reklama i dołączasz do grona dolarowych milionerów.

    "Pisać inne programy żeby załatwić sprawe?" Jaką sprawę ??

    "w jakim środowisku wy pisalibyście system operacyjny?"
    Nie wiem jak inni, ja bym nie pisał nowego systemu operacyjnego dla komputerów PC.
  • #28 7210850
    Konto nie istnieje
    Konto nie istnieje  
  • #29 7210954
    Jarosx9
    Poziom 35  
    Posty: 2785
    Pomógł: 265
    Ocena: 400
    Cytat:
    Ok, a skoro już moderator dał taki temat, to może ktoś opisze od podstaw jak stworzyć OSa? napewno przyda się do wielu osobą!

    Zapytaj niejakiego Gatesa Billa i jego kolesiów jak się pisze od podstaw (tzn. podstawy trza ukraść).
    Słuchaj, kolego, widzę że masz trudności ze zrozumieniem, nikt nie będzie dla ciebie przepisywał internetu, chcesz zobaczyć od podstaw to sobie obejrzyj kod źródłowy jakiegoś systemu - za darmochę możesz obejrzeć np. kod linuksa, możesz również z jakimiś developerami powyższego się skontaktować.
    Przykro mi ale nie da się zrobić tutaj w tym temacie samouczka dla opornych - system operacyjny jest na to zbyt skomplikowany. Masz w wikipedii obszerny wykład na ten temat, moim zdaniem raczej nie ma nic do dodania więcej.
    Uprzedzając twoje dalsze nagabywania - procesor komputera jest to urządzenie rozumiejące kod binarny i w takim kodzie powinien być system operacyjny. Dla ułatwienia programiści "wspinają się" do poziomu assemblera, a później do jezyków wyższego poziomu. Niektóre rzeczy przyjęło się po prostu pisać w określonych językach ze względu na ich specyficzne cechy elastyczność, przejrzystość itp. -> dla systemów operacyjnych dla platformy pc najcześciej jest to C/C++ wspierany często assemblerem.

Podsumowanie tematu

✨ Dyskusja dotyczy możliwości stworzenia nowego systemu operacyjnego (OS) „od zera” przy użyciu kompilatora MS Visual Studio (MSVS) lub innego działającego pod Windows 32-bit. Potwierdzono, że technicznie jest to możliwe, ponieważ kompilator generuje kod maszynowy niezależny od systemu operacyjnego, na którym działa, jednak MSVS jest narzędziem silnie powiązanym z platformą Windows, co może ograniczać wygodę i efektywność pracy nad OS-em. Tworzenie OS wymaga zrozumienia architektury sprzętowej, trybów pracy procesora (tryb rzeczywisty, chroniony 32/64-bit), obsługi przerwań, systemu plików oraz mechanizmów ładowania i uruchamiania kodu. Kod źródłowy OS można pisać w różnych językach programowania, w tym C czy nawet C#, ale konieczne jest generowanie kodu dla docelowej architektury sprzętowej (np. x86). Po napisaniu kodu należy przygotować odpowiedni bootloader i instalator, które umożliwią załadowanie systemu na sprzęt lub emulator. W przypadku braku fizycznej platformy sprzętowej można użyć symulatorów lub zaprojektować własną platformę. Tworzenie OS to złożony proces wymagający dużej wiedzy i czasu, a samo napisanie kodu to tylko część pracy – ważne są także aspekty instalacji, konfiguracji i testowania. Dyskusja podkreśla, że MSVS nie jest optymalnym narzędziem do tego celu i sugeruje rozważenie innych kompilatorów, np. gcc. Wskazano również, że nauka podstaw systemów operacyjnych i architektury komputerów jest niezbędna przed rozpoczęciem projektu. Przykłady istniejących projektów OS napisanych częściowo w C# to SharpOS i Singularity. Podsumowując, stworzenie nowego, niezależnego OS wymaga: wyboru i zrozumienia platformy sprzętowej, nauki architektury procesora, przygotowania bootloadera, napisania kodu źródłowego w odpowiednim języku i kompilacji do kodu maszynowego, a następnie opracowania mechanizmu instalacji i uruchomienia systemu.
Wygenerowane przez model językowy.
REKLAMA