Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak uruchomić program Visual Studio bez Windows?

papuga1234 01 Sty 2012 14:17 2278 9
  • #1 01 Sty 2012 14:17
    papuga1234
    Poziom 2  

    Piszę tutaj aby nie zakładać nowego tematu.
    Mam zrobiony niewielki OS w Visual Basic (forma "pulpit", ekran logowania, przeglądarka internetowa, notatnik, notes, odtwarzacze muzyki i filmów, przeglądarkę zdjęć, oraz menadzer plików.

    z czasem będę dodawał nowe programy i opcje poprzez aktualizację.

    Co muszę zrobić aby zainstalować i używać swój OS na "czystym" komputerze?
    Bo z tego co czytałem programy zrobione w Visual Basic / Studio mogą działać także bez Windowsa!

    Proszę o pomoc.

    0 9
  • #2 01 Sty 2012 15:02
    marcinj12
    Poziom 40  

    Zacznijmy od tego że to co masz napisane, nie jest, nie było i nie będzie OS-em z prawdziwego zdarzenia, co najwyżej aplikacją wyglądającą jak OS. Zgodnie choćby z definicją z Wikipedii OS sam zarządza pamięcią, komunikacją z procesorem itp. - generalnie interakcją ze sprzętem, a nie sądzę żebyś to też sam pisał.

    Twoja aplikacja - zakładając że jest to Visual Basic z pakietu Visual Studio, czyli działający na platformie .NET - jest o dwa poziomy za wysoko: do swojego uruchomienia potrzebuje środowisko uruchomieniowego .NET (ono zajmuje się np. przydziałem i czyszczeniem pamięci, ale też tylko na poziomie frameworka, za faktyczne zarządzanie pamięcią odpowiada OS właśnie) dla języka pośredniego MSIL (czy CIL jak to teraz nazywają...), w którym jest kod wynikowy skompilowanej aplikacji.
    Jeszcze piętro niżej jest "system operacyjny właściwy" (jak Windows czy Linux) na którego komendy framework tłumaczy język CIL. Dopiero tutaj, na najniższym poziomie, odbywają się te wszystkie procesy, które można nazwać "systemem operacyjnym".

    Moim zdaniem jest niemożliwe zrobić to, o czym piszesz - chyba że podasz jakieś źródło gdzie to wyczytałeś ;)
    Może pisząc że te programy "mogą działać bez Windowsa" autor miał na myśli "mogą działać na Linuksie"?? Są dostępne frameworki pod Linuxa, np. Mono.

    I już tłumaczę, dlaczego jest to niemożliwe:
    1. Do odpalenia aplikacji .NET musisz mieć zainstalowany .NET framework, który zrozumie kod w skompilowanym programie. Na czymś trzeba jednak ten framework zainstalować - czyli musi być wcześniej jakiś system operacyjny, pod którego napisano framework - Windows, Linux, jakieś środowiska na urządzenia mobilne.

    2. Przeglądarka internetowa, odtwarzacz muzyki i filmów - fajnie, że coś takiego napisałeś, tylko zastanów się, jak to naprawdę działa: to że aplikacja przeglądarki łączy Ci się z internetem, czy słychać dźwięk w odtwarzaczu nie bierze się z niczego. Biblioteka .NET którą do tego wykorzystałeś, korzysta z funkcji, które autorzy frameworka zaimplementowali na daną platformę - np. komunikacja przez http jest zaszyta w Windowsie, a .NET jedynie "pośredniczy" w tłumaczeniu pomiędzy Twoją aplikacją a funkcjami wbudowanymi w system operacyjny. Ba, to że wyświetla się zwykła forma - okienko, jest możliwe dzięki temu, że najpierw autorzy systemu operacyjnego coś takiego napisali i udostępnili, a potem twórcy frameworka .NET wykorzystali ich pracę do stworzenia swojej biblioteki WinForms.
    Tak samo z dźwiękiem - aby obsłużyć kartę dźwiękową, trzeba komunikować się z jej sterownikiem zainstalowanym na jakimś systemie operacyjnym.

    Jak widzisz pod swoją aplikacją masz dwa piętra, które chciałbyś wyciąć instalując swój program na "czystym" komputerze. Chcąc z nich zrezygnować, musiałbyś samemu napisać ich obsługę ;] i stworzyć najpierw własny system, a potem własnego frameworka na niego. Jednym słowem - bez szans ;)

    Bez systemu możesz co najwyżej próbować uruchamiać programy napisane w Assemblerze z instrukcjami pod dany typ procesora - a wtedy jakakolwiek bardziej skomplikowana operacja to droga przez mękę, gdy trzeba wynajdywać każde koło od nowa ;), ewentualnie, jak pierwsze Windowsy - możesz próbować zrobić sobie jakąś nakładkę graficzną na MS DOS (który sam jest systemem operacyjnym).

    0
  • #3 01 Sty 2012 20:09
    papuga1234
    Poziom 2  

    A gdybym do swojego "mini systemiku" - (instalatora) dołączył potrzebne pliki (nawet te podstawowe windowsa) dało by radę go uruchomić?
    Chociażby żeby wystartował z płyty.

    Ja nie twierdzę że napisze coś co będzie konkurentem Windowsa -)

    0
  • #4 01 Sty 2012 21:06
    wiesniak
    Poziom 31  

    Musiałbyś de facto stworzyć mini windows (BartPE?). Poza tym jest kwestia legalności takiego rozwiązania, bo Microsoft raczej nie zgadza się na robienie własnego systemu z ich systemu.

    0
  • #5 01 Sty 2012 21:12
    papuga1234
    Poziom 2  

    Rozumiem,
    a jeszcze jedna rzecz czy w czystym C / C++ da rade coś takiego napisać?

    0
  • #6 01 Sty 2012 21:19
    wiesniak
    Poziom 31  

    Jak pisał wcześniej marcinj12 mógłbyś zrobić nakładkę na dos i wtedy w C / C++ jak najbardziej możesz pisać (oczywiście to musi się kompilować pod dosem). Zamiast DOS mógł by to być też linux.
    Gdyby natomiast Twoja aplikacja miała być całkowicie niezależna od windowsów, dosów, linuksów itd, to najbardziej podstawowe rzeczy musiałbyś napisać w asemblerze. O ile pamiętam, była kiedyś możliwość zdobycia źródeł do windows 2000 czy nt (już nie pamiętam pod warunkiem, że nie wykorzysta się przez 10 lat pozyskanej wiedzy do stworzenia komercyjnego systemu operacyjnego).

    Jeśli interesuje Cię pisanie własnego systemu od zera, to poszukaj w internecie - były gdzieś całe poradniki, jak oprogramować podstawowe rzeczy (takie jądro jądra :-) ).

    0
  • #7 01 Sty 2012 21:25
    papuga1234
    Poziom 2  

    szukałem dużo w google ale nie mogłem znaleźc o stworzeniu własnego jądra.
    Czyli najłatwiej byłoby napisac nakładkę na dosa albo cos na jądrze linuxa?
    A gdybym pisał na jądrze tego linuxa - to czy mogłbym powywalac niektóre z funkcji tego systemu i próbowac zaprogramować własne?

    0
  • #8 01 Sty 2012 22:07
    marcinj12
    Poziom 40  

    Jest dostępnych na necie sporo różnych mini-systemów, nawet na elektrodzie było paru zapaleńców którzy coś tam próbowali - niektórzy nawet z sukcesem - stworzyć od podstaw, trzeba tylko dobrze pogmerać...

    Jądro linuksa jest otwarte, pewnie na jakiejś tam licencji, nigdy się tym nie interesowałem, ale jednak publicznie dostępne. Tutaj znajdziesz źródła jeśli Cię to interesuje. Nawet w C pisane.

    Podobnie istnieje wiele mniejszych lub większych projektów OSów, które udostępniają źródła, np. MINIX.

    Abstrahując od pytania czy nie szkoda na to czasu, bo temat jest mocno skomplikowany, a zamiast tego można zrobić wiele innych pożytecznych rzeczy, które mogą się później w życiu przydać a może i pieniądze z tego będą, np. poznać inny język programowania czy nauczyć się strony w ASP.NET pisać ;)

    0
  • #9 02 Sty 2012 12:05
    kmbkmb
    Poziom 10  

    Witam!
    Mam wrażenie, że podstawowy kłopot z tym tematem polega na nieporozumieniu terminologicznym. Przyłączam się oczywiście do słusznych wypowiedzi kolegów. Mam tylko wątpliwości, czy można grupę aplikacji współdziałających ze sobą nazywać systemem operacyjnym... Myślę, że jest to usiłowanie stworzenia jedynie tzw. środowiska i to dość ubogiego. Cała próba jest zawieszona w próżni ponad nieistniejącym OS. Dlaczego nie korzystać zatem z istniejących "frameworks"? Zapewniają one względną niezależność od platformy systemowej. KDE dzięki Qt daje się użyć nie tylko w Linuksie. Podobnie jest z GNOME i Gtk. Koledzy przypomnieli już o .NET i mono... Pewnie, każdy ma prawo do marzenia o stworzeniu świata od podstaw. Demiurg będzie miał jednak do czynienia z już istniejącym światem. No, ale zbliżamy się teraz już do metafizyki...

    0
  • #10 02 Sty 2012 12:49
    directx11
    Poziom 17  

    papuga1234 napisał:

    Co muszę zrobić aby zainstalować i używać swój OS na "czystym" komputerze?
    Bo z tego co czytałem programy zrobione w Visual Basic / Studio mogą działać także bez Windowsa!
    Proszę o pomoc.


    Ameryki po innych wypowiedziach nie odkryję... ale szkoda na to czasu. Programy można próbować uruchamiać bez Windows, ale raczej robi się to na systemach operacyjnych o stopniu skomplikowania porównywalnym do samego Windows, choćby Linux-ie, korzystając z odpowiednich emulatorów. Wszystko co pochodzi z Visual Studio, czy to Basic czy C++ i tak gdzieś na końcu zapewne oprze się o funkcje czystego API, które musiały by być w jakiś sposób zaimplementowane. To co Ty masz to można by od biedy, przy dużej dawce wyobraźni nazwać managerem interfejsu uzytkownika, który jest niewielką częścią systemu operacyjnego i to dodatkiem, często zbędnym.

    0