Автор Тема: обяснете ми с няколко думи, pls  (Прочетена 6381 пъти)

vesko_dechev

  • Напреднали
  • *****
  • Публикации: 154
    • Профил
какво пречи на windows програмите да тръгват под линукс?
аз лично се сещам за доста неща. Но въпроса  е кои от тях са КЛЮЧОВИ. Защо въобще е толкова трудно даже чрез wine да се пригодят windows-ките програми към линукс?
Активен

"Но разкажи със думи прости
на тях- на бъдещите хора
които ще поемат поста ни
че ние храбро сме се борили..."
Вапцаров
"Партия велика води нашия победен строй..."
из песента "Мила родино", химн на България

n_antonov

  • Напреднали
  • *****
  • Публикации: 1185
    • Профил
    • WWW
обяснете ми с няколко думи, pls
« Отговор #1 -: Dec 27, 2003, 05:15 »
Какво им пречи ли?

Все пак, писани за друга ОС, при това коренно различна. По дизайн например Linux и BSD имат доста сходства, което прави портването на софтуера от едната към другата ОС възможно и относително безболезнено. Не е така с Windows обаче, който е твърде различен. Все едно да се опитваш да отключиш врата с ключ, който не е за нейната ключалка'<img'>

Една от задачите на ОС-а е да осигурява средата за работа на прогрмите. Когато една програма е писана за едната среда, нормално е да не работи под другата и това да изисква или портване, или ако това не е възможно, някаква емулация. Все повече ще се наложи принципът програмите да се пишат така, че да бъдат портабилни.

Има доста програми с отворен код, който се портват и за Windows. Обратното явление също започва да се среща, което е показателно за преимуществата на отворения модел.

Има предвид, обаче, че ако трябва да бъдем технически коректни, wine не е емулатор.
Активен

-------------------------------------------------------------------------
./debian/rules

vesko_dechev

  • Напреднали
  • *****
  • Публикации: 154
    • Профил
обяснете ми с няколко думи, pls
« Отговор #2 -: Dec 27, 2003, 14:41 »
То е ясно че има разлики. Аз това го знам.
например ясно е че обръщенията към Х и Windows GUI стават по различни начини. Но да вземем впредвид ДОС програмите - те нямат GUI. нали всичко се свежда до поредица от инструкции към процесора, съобраазно неговата архитектура. По какво се различават начините на работа на Windows и Линукс kernel-a? как са организирани процесите? чрез съвсем различни променливи ли си комуникират? какво толкова има различно в тези API-та ?

проблемът е че има много информация за това КАК да направим нещо под линукс или Windows, но КАКВО всъщност се прави чрез действият и командите които следваме.
Например ясно е, че с командата
mount /dev/hda3   /Vesko
маунтвам 3-я си дял в директорие Vesko.
OK
Ама КАК става това маунтване? Открива се някакъв диапазон в паметта ли? Някакъв процес ли се създава ( извън този в /proc) как се сканира в случая за това какъв е дяла? в кои адреси от боот записа му,  и т.н.
Съответно при windows как става това? прави ли се някакъв запис в регистрите има ли нещо като modprobe ....
...
Въобще липсва някакво достойно описание на Линукс за хора, които не са начинаещи, но не са и на ниво Expert или Master
...
Общо взето цялата информация  винтернет и в книгите е на ниво КАК и ЗАЩО да направим нещо, но не и КАКВО правим всъщност.
...
Например така и не ми светна на елементарния въпрос как са съподчинени процесите при Уиндовс и Линукс?
защо при линукс мога да дам kill aplication и програмата НЕЗАБАВНО пада, а при Windows всичко забива, не само виновната програма?
Активен

"Но разкажи със думи прости
на тях- на бъдещите хора
които ще поемат поста ни
че ние храбро сме се борили..."
Вапцаров
"Партия велика води нашия победен строй..."
из песента "Мила родино", химн на България

sebastianz55

  • Напреднали
  • *****
  • Публикации: 1136
    • Профил
    • WWW
обяснете ми с няколко думи, pls
« Отговор #3 -: Dec 27, 2003, 15:20 »
всъщност и аз съм заинтересувам аджеба как стават тия неща - защото все пак нали тез команди се свеждат до единен машинен език на коя да е ОС?
дайте поне линк да четеме, защото това е нещо много основно, което мисля ча трябва да се знае, защото все пак има фундаментални разлики между двете ОС но така и не разбирам то къде идват - все пак всичко се върши от хардуера а той не знае две и двеста а само 10011110010100.........
Активен

С уважения:
Sebastianz55
------------------
http://www.fsa-bg.org
                              
Open Fest Initiative  http://openfest.org
                                              
Моля ви, уважавайте процесорното време на другите - пишете на кирилица и използвайте търсачката на форума!

Emooo

  • Гост
обяснете ми с няколко думи, pls
« Отговор #4 -: Dec 27, 2003, 15:23 »
мога да ти кажа защо като дадеш Кill и не се изключва веднага под уиндовс защото към работещия процес се праща WM_QUIT message и се дава време на процеса да го обработи примерно да ти даде диалог за записване на файла по които работиш, разбира може и да го киллнеш веднага ама тва е друга тема....
На мен ми е интересно че някои игри работят под Линукс а те ползват DirectX да не би да има някава емулация на DX вече?
Активен

kostadinz

  • Напреднали
  • *****
  • Публикации: 197
    • Профил
обяснете ми с няколко думи, pls
« Отговор #5 -: Dec 27, 2003, 15:24 »
всички двоични програми имат един хедър, който е ОС зависим. Чрез него ОС предава управлението на програмата (същинския код). Тези хедъри са различни за различните ОС.
Ако си забелязал всички .ехе -та започват с MZ или ZM (ако си ги отварял с някакъв редактор). В линукс  започват с ELF.
Това е доста схематично и упростено но...
иначе същинския код в програмите (двоичния) е идентичен за ОС базирани на еднакви микропроцесори (х86).
Фундаментални разлики има и в комуникирането с хардуера (пак ОС зависимо) - заявки за отпускане/освобождаване на памет, писане/четене по IO портовете, файловата система, видео. Абе реализациите са много различни.

Иначе ще се килват вин процеси качествено, когато бате Бил се научи да прави ОС (ядра), да вземе да рзгледа сорсовете на open кернелите как се правят тези работи, така ще разбере и как да си уравлява процесите, паметта, а и други работи.
Apple  вече узряха (BSD) :-)
Активен

Emooo

  • Гост
обяснете ми с няколко думи, pls
« Отговор #6 -: Dec 27, 2003, 15:39 »
ае по темата не дранкай глупости като не можеш да кажеш нещо разумно.

значи програмите за Уин Дос и Лин не се пишат да директно на машинен код. Използват се АПИ-та апък АПИ-та се обращат към други АПИ-та на по ниско ниво. А тези на най-ниско ниво към кърнела и към хардуера. Да кажем една програми извиква АПИ фунциата на Уиндовс TextOut
за да работи под Линукс при това извикване трябва да се отпечата някав текст в прозорец на Х-са примерно. Това извикване на ассемблер е адрес от памета където е зареден съответния DLL файл съдържащ тази фунция за да се емулира трябва да се съзадате една програма която да прихваща тези извиквания на фунции и да ги заменя с еквивалентните за Линукс. Това не е лесна работа и в повече случай понякога работи понякога не... теоретично е възможно някога да се емулират всички АПИ фунции но практически не вярвам да стане. А пак за машинния код... какъв машинен код да се прати към дадено устройство се определя от самия дривер които се явява и той като АПИ на ниско ниво. Самата програма на праща машинен код тя си говори с драйвера и тъй като драйверите под Лин и Уин са различни... не е възможно без емулация.

п.с Бил между другото вече лицензира код от SCO и го вгражда в Уин. Във Уин2003 има такъв затова тестовете покават че Уин2003 е по бърз от Samba 3. Ако не вярваш виж тестовете не Veritest или пък тествай сам ако имап къде.
Активен

sebastianz55

  • Напреднали
  • *****
  • Публикации: 1136
    • Профил
    • WWW
обяснете ми с няколко думи, pls
« Отговор #7 -: Dec 27, 2003, 16:01 »
че тогава не може ли да се напише на *най-ниско* кое да може да изпълнява задачките зададени им от по-огри АПИ-та?
т.е. нещо като - ако имаш такъв input дай онакъв output /ще ме извинявате ама не съм програмист.../ независимо кой ти праща заявката за него - уин или лин.
може да изглежда невежо обяснено ама какво да правя - не ги знам тези работи и очаквам да ми обясните - защото ако тази теория стане практика веднъж - голяма част от проблемите изчезват,нали?Дори и за mac програми
хващаш си exe или executable file и то си интерпретира направо  /към ядрото и от там/ към хардеура без да се бърка къде какво има - направо песен '<img'>
някакъв такъв мулти интерпртатор за всички и всеки?
--
не се смейте де!
Активен

С уважения:
Sebastianz55
------------------
http://www.fsa-bg.org
                              
Open Fest Initiative  http://openfest.org
                                              
Моля ви, уважавайте процесорното време на другите - пишете на кирилица и използвайте търсачката на форума!

Emooo

  • Гост
обяснете ми с няколко думи, pls
« Отговор #8 -: Dec 27, 2003, 16:06 »
хехех еми знаеш ли колко програмистки живота ще минат докато се напише някак офисе пакет например. Знаеш ли на ассемблер колко реда код е да се отпечата текс на Х - много много. Нали SUN това им беше целта с Жабата ама е бавна мамка му. .NET e друг опит за това доста по добър защото се поучиха от Жабата, но пак е бавно. Но не мисля че MS ша позволят .NET да работи под Линукс но за микровълнови печки, PDA и телефони става.
Активен

kostadinz

  • Напреднали
  • *****
  • Публикации: 197
    • Профил
обяснете ми с няколко думи, pls
« Отговор #9 -: Dec 27, 2003, 16:28 »
тези сложнотии в емулирането само показват колко много труд са положили момчетата дето правят тези емулатори.
Затова си мисля че QT-то сега е бъгаво, но има бъдеще. Qt има за почти всички платформи даже вин. Прекомпилираш си приложението за съответната платформа и си портнат. Момчетата от trolltech задобряват.
нищо не става от раз.
Аз мисля че все повече производители ще си портват софтуера и за линукс пък макар и платен и това е начин да вдигнеш продажбите, все пак лин започва да взима своя дял от ОС-ми.
Активен

kennedy

  • Напреднали
  • *****
  • Публикации: 2151
  • Николай Колев
    • Профил
обяснете ми с няколко думи, pls
« Отговор #10 -: Dec 27, 2003, 16:47 »
нестава с няколко думи '<img'>
ако искаш да поразучиш линукс на системно ниво и имаш пари
http://www.amazon.com/exec/obidos/tg/detail/-/0672318245?v=glance
иначе в гугала търсиш "system programing for linux" и ровиш докато ненамериш нещо безплатно за сваляне. също така можеш да потърсиш из р2р мрежите заглавията като ПДФ
http://www.advancedlinuxprogramming.com/
Активен

"за всичко иде час" Еклесиаст 3:1
всеки пост - отговор на въпрос
-----------------
24.12.2003 "MS Free"

vesko_dechev

  • Напреднали
  • *****
  • Публикации: 154
    • Профил
обяснете ми с няколко думи, pls
« Отговор #11 -: Dec 27, 2003, 17:00 »
ако трябва да съм искрен това за апиатата мои се изясни
въпроса е как са организирани процесите на Линукс и windows
Някой ми беше обяснявал, че на линукс процесоте били като слънце, на което всеки лъч се разклонява на по няколко, всяко разклонение на още такива, докато на windows били по-други работите
....
и защо в крайна сметка Линукс е в пълни ясмисъл ОС, а windows  е ос, ама не съвсем в пълния смисъл.
Бях чел във сайта, че например за линукс няма значение какво му подава BIOS-a. и може да ти тръгне хард диск, които по принцип BIOS-a не разпознава
...
кажете нещо за същността на .NET платформата
и....каква е тая ЖАБА ?
'<img'>
Активен

"Но разкажи със думи прости
на тях- на бъдещите хора
които ще поемат поста ни
че ние храбро сме се борили..."
Вапцаров
"Партия велика води нашия победен строй..."
из песента "Мила родино", химн на България

zazzko

  • Напреднали
  • *****
  • Публикации: 626
    • Профил
    • WWW
обяснете ми с няколко думи, pls
« Отговор #12 -: Dec 27, 2003, 18:06 »
Сега дали Линукс е ОС, а Вин не, не мисля да го коменирам (ползвам ги и двете, и двете си имат предимства и недостатъци). Сега за .NET. Каква е идеята:
Хващаш ти като виден програмист и написваш програма на Перл кажем (въпреки, че за някои това не било език '<img'> ). Да, ама тя си работи само на Перл. Тук се вкючва .NET. .NET има набор от езици в които може да работи и да преобразува в т.нар. MSIL (M$ Intermediate Language). След това .NET използва CLI интерпретатора за да обработва този общ код. Сега .NET позволява да пишеш и директно в IL. Това преобразуване се извършва от .NET Framework. На теория би трябвало такава програма да се пуска на всяка платформа, която я поддържа. На практика обаче дажи и Windows не поддържа изцяло .NEТ, т.е. ще трябва да инсталираш допълнителни програми (това за старите 95/98). Новите версии ХР/2003 са значително по-добре, но все още поддръжката не е 100%.
Пък Java-та.... ми това е нещо подобно на .NET, но е доста по-различно (ма го казах и аз). Тук можеш да пишеш само на Java (това е различното, както и други работи). Общото е, че кода отново се транслира до т.нар байт-код и се изпълнява от виртуалната машина на Java. T.e. за да пуснеш една програма писана за Java ти трябва само неговата виртуална машина (Java e пример за код независещ нито от операционната система, нито от хардуерната платформа).
Аз лично се надявам някога да имаме .NET за Линукс, който да е интегриран в ядрото или поне като библиотека, която да идва с дистрибуцията.

Emooo

  • Гост
обяснете ми с няколко думи, pls
« Отговор #13 -: Dec 27, 2003, 18:10 »
Жабата е Java-та. А .NET няма да ти кажа щото пак ще се появи някои да каже ще MS ми плащат за реклама.
От 3 дена пиша в тоя форум и се надявах да срещна програмисти на Линукс които да си кажат впечатленията и дали има някаква промяна отвремето когато и аз писах софтуер.
Въобще спирам да пиша в тоя форум щото явно преча аиде със здраве.
Активен

sebastianz55

  • Напреднали
  • *****
  • Публикации: 1136
    • Профил
    • WWW
обяснете ми с няколко думи, pls
« Отговор #14 -: Dec 27, 2003, 18:29 »
като си зошъл да тирсиш програмити да си общувате, кажи бре! '<img'>
аз съвсем случайно на едно място само видях, че споменаваш за това.
Айде със здраве щом си решил, че тук няма да намериш каквото търсиш.
P.S.Ако намериш някакъв форум за програмисти дай един линк, че да джйда да издеваталствам като почна да уча C++ '<img'>
Активен

С уважения:
Sebastianz55
------------------
http://www.fsa-bg.org
                              
Open Fest Initiative  http://openfest.org
                                              
Моля ви, уважавайте процесорното време на другите - пишете на кирилица и използвайте търсачката на форума!