Hirdetés

Éppen letöltött egy szolgáltatáscsomagú frissítést a kedvenc nyílt forráskódú alkalmazásába. Minden jól működik, és más készülékein is használja - tehát itt az ideje, hogy azokhoz is kibővítsük.

Kivéve, ha a fényes új Linux laptop nem kompatibilis a Windows telepítőcsomagjával. Mi a helyzet az Android táblagépével? iPhone? PS4? Miért nem tudja elhozni ezt a szoftvert, és bárhol felhasználhatja? Fedezzük fel néhány különféle akadályt az „egyszer vásárolj, bárhová futj” álom előtt.

Szoftverfejlesztés és OS architektúra

Annak megértése, hogy a szoftver miért nem működik az operációs rendszerek között, kissé (csak egy kicsit, megígérem) meg kell tudnom, hogyan készül a szoftver.

A szoftverfejlesztési folyamat

Egy nagyon egyszerű szoftverfejlesztési folyamat során az asztali, a szerver és a mobil (azaz nem web Programozás vs. Webfejlesztés: Mi a különbség?Gondolhatja, hogy az alkalmazásprogramozók és a webfejlesztők ugyanazt a munkát végzik, de ez messze van az igazságtól. Itt vannak a legfontosabb különbségek a programozók és a webfejlesztők között. Olvass tovább ), egy programozó:

instagram viewer
  1. Írjon be néhányat kód egy vagy több fájlba.
  2. Compile a kódot, amit a számítógép végrehajthat.
  3. Teszt hogy megbizonyosodjon arról, hogy a program a várt módon működik-e.
  4. Csomagolás és terjesztés / telepítés a szoftver.
szoftver os kompatibilitási fejlesztési folyamat

Itt az első és a második lépés kombinációja érint. A folyamata összeállítása szoftvert, vagy konvertálni a kódból olyanokká és nullákká, amelyeket a számítógép megért (gépi nyelv), bonyolult. Nem fogunk részletesen belemenni ebbe, de hasznos magas szintű megérteni, hogy mi történik.

OS architektúra

Fontos megérteni, hogy az operációs rendszer nem egyetlen entitás. Inkább szoftver rétegekből áll.

Operációs rendszermagok

Egy operációs rendszer mag felelős a számítógép hardverével való kommunikációért. A szoftver továbbítja a parancsokat a kernelnek, amely viszont parancsokat ad ki a hardvernek, hogy (például) olvassa el a fájlt a merevlemezről, vagy rajzoljon egy ablakot a képernyőn. Alapvetően az összes információt koordinálja (akár tárolt adatok, számítások, akár felhasználói adatok) a hardver és a különféle szoftverek között. A kernel mindezt a funkciót a szoftveren keresztül elérhetővé teszi rendszerhívások.

szoftver-os kompatibilitási kernel alapjai
Kép jóváírása: Wikimedia Commons

Az egyes operációs rendszerek kernelei különbözõ módon hajtják végre a rendszerhívásokat, tekintetbe véve, hogy melyek érhetõk el, hívják őket, vagy milyen opciókat választanak. Ennek eredményeként a szoftvernek figyelembe kell vennie a megcélzott operációs rendszerek kernelének támogatott rendszerhívásokat. A rendszerhívásnak, amelyet az adatoknak a GPU-hez való elküldéséhez használsz, eltérő névvel, megadandó információk listájával vagy mindkettővel rendelkezhetsz a Windows rendszerben. Lehet, hogy ez a pontos hívás egyáltalán nem létezik.

Rendszerkönyvtárak

Sok esetben a szoftver nem hívja közvetlenül a rendszermagot. Ehelyett felhívja rendszerkönyvtárak, vagy az alapvető funkciók gyűjteményei. A könyvtárak léteznek, így például a fájlokat a merevlemezre menti minden egyes programnak nem kell függvényt írni. Ehelyett egyszerűen linkek a rendszerkönyvtár, és egy meglévő funkciót használ. A GLibC könyvtár Linuxra kiváló példa, ahogyan a Win32 API vagy a .DLL fájlok is a Mac / System / Library könyvtár tartalmát Az OS X könyvtár mappájának elérése és miért hasznos?A legtöbb OS X Library mappát a legjobb egyedül hagyni, de hasznos megismerni a módját a felhasználói könyvtárban és annak környékén. Olvass tovább .

szoftver os kompatibilitási rendszer könyvtárak
Kép jóváírás: ScottXW keresztül Wikimedia Commons

A rendszerkönyvtárak egyfajta fordítóként működnek az alkalmazások és a rendszermag között a rutin feladatokhoz. Az alkalmazások készítik függvényhívások ezekre a könyvtárakra, amelyek sok alacsony szintű részletet kezelnek. Azt is megkérhetik, hogy a rendszer rendszerhívást kezdeményezzen. Mint gondoltam, ez azt jelenti, hogy ezeket a könyvtárakat egy adott kernelre írják, és ezért nem használhatók különböző rendszermaggal rendelkező operációs rendszerekben.

Operációs rendszer végrehajtási fejlécek

Az univerzális szoftver utolsó akadálya az operációs rendszerek futtatható fájljainak formátuma. Az operációs rendszer elvárja, hogy az általa futtatott fájlok egy adott eseményt kövessék bináris fájlformátum Minden, amit tudnia kell a fájlformátumokról és azok tulajdonságairólA szófájlt felcserélhetően használjuk: zene, kép, táblázat, diavetítés és így tovább. De miért teszi a fájlt "fájlnak"? Próbáljuk megérteni a számítástechnika ezen alapvető részét. Olvass tovább . Például az ELF (Executable and Linkable Format) fájlok, amelyek olyan operációs rendszereken futnak, mint a A Linuxnak és a FreeBSD-nek meg kell határoznia a fájl bizonyos tulajdonságait bizonyos bájtokban, az alábbiak szerint kép.

szoftver os kompatibilitási elf fejléc

Az alkalmazás bináris felülete (ABI) Különösen fontos a bizonyított képesség. A processzor, a kernel és a rendszerkönyvtárakból elérhető hívások kombinációja, az ABI hasonló a egy alkalmazásprogramozási felület (API) abban, hogy meghatározza, hogy a két program hogyan kommunikál egymással. De az API-t a programozók (emberek) használják a forráskódban két szoftver jelzésére kellene beszélnek egymással. Az ABI valójában lehetővé teszi számukra ezt a szoftver összeállítása és futtatása után. Minden operációs rendszer egy adott ABI-t valósít meg, amely változhat vagy nem változhat ugyanazon operációs rendszer verziójai között.

Általában az operációs rendszerek saját ABI-t valósítanak meg, amelyet a processzor típusa, a kernel és a szokásos rendszerkönyvtárak kombinációja határoz meg. De néha egy operációs rendszer egynél többet is megvalósít. A FreeBSD támogatja például a Linux bináris fájlokat, mert Linux ABI-t biztosít a FreeBSD kerneléhez (a Linux kernel helyett). Ez eltér a virtualizatiton programok Mi az a virtuális gép? Minden, amit tudnod kellA virtuális gépek lehetővé teszik más operációs rendszerek futtatását a jelenlegi számítógépen. Itt van, amit tudnia kell róluk. Olvass tovább mint például a VMWare vagy a VirtualBox, amelyek szoftvert használnak egy teljes gép (hardver és minden) szimulálására. Ennek eredményeként az ilyen típusú ABI-kompatibilitás gyorsabb, de sokkal több erőfeszítést kell fenntartani. Ezért is ritka A Microsoft nemrégiben látta az értéket Az Ubuntu már elérhető a Windows Store-banA Windows Insiders most letöltheti és telepítheti az Ubuntu szoftvert a Windows 10 rendszerre. Ez összekapcsolja a Linuxot és a Windowsot egy olyan szentségtelen unióban, amelyet néhány ember elképzelte, hogy elég hosszú ideig él, hogy tanúja lehessen. Olvass tovább ezt csinálva.

Kivétel: Értelmezett szoftver

A fentiek alapján megtudtuk, hogy a fejlesztők szoftvert írnak egy és csak egy típusú célrendszerre. Kivéve, ha nem. Számos alkalmazás letölthető és futtatható Mac számítógépen, majd lemásolható és futtatható Windows rendszeren, esetleg újra másolható, és Linux nélkül is futtatható probléma nélkül. Hogyan lehetséges ez?

Mostanáig feküdtem?

Mint kiderült, létezik egy olyan szoftverkategória, amely úgy néz ki a felszínről, mintha „mindenhol fut”. Bármilyen módon letöltheti és futtathatja támogatott platform - a kulcsszó „támogatott”. Valójában letöltötte az alkalmazás forráskódját, míg egy másik alkalmazást (az tolmács) a forráskód közvetlen valósidejű futtatása. Ez egy egyszerűsítés valami, ezért nézzük meg, hogy pontosan hogyan működik ez pár nyelven.

Jáva

A Java első kiadásakor ígéretük volt (szó szerint) „egyszer írj, bárhová fuss”. Az ötlet az volt, hogy készítsen alkalmazásokat a Java funkciók segítségével fájlok mentéséhez, számításokhoz vagy alkalmazás létrehozásához ablak. Akkor a Java Runtime Enviornment (JRE) minden támogatott számítógépes platformon futtatja a kódot, és lefordítja ezeket natív operációs rendszer funkcióira. A Java trükkje tehát az, hogy az nem az operációs rendszeren fut "közvetlenül". A JRE úgynevezett részén fut az Java virtuális gép és ez működik az operációs rendszeren.

A kiegészítő szoftverréteg beillesztésével az alkalmazás és az operációs rendszer közé a Java lehetővé teszi, hogy olyan funkciók összességére összpontosítson, amelyek azonosak az operációs rendszerek között. Mondja el a Java-nak, mit szeretne csinálni, és hagyja, hogy a rendszer JVM aggódjon, hogy valójában hogyan csinálja. Az alábbi kép azt mutatja, hogy hol működik A JIDE Software Java Desktop alkalmazásrendszere ugyanazt az alkalmazást jeleníti meg a Mac (felül), a Windows (balra középen), a „tiszta Java” (jobbra középső) és a Linux (alsó) esetén.

szoftver os kompatibilitási jide jdaf
Kép jóváírása: JIDE szoftver

A Java programok nem pontosan „fordítják” magukat valós időben. Ehelyett a Java fordító „bájtkód” -vá teszi őket. A bájtkódot félig sütött programnak tekintheti. Amikor a fejlesztő kiadja az alkalmazást, amennyire csak lehet, összeállítja anélkül, hogy tudná, melyik operációs rendszer fut. Amikor ténylegesen elindítja, a JVM „egész egészen megsütheti”, hogy illeszkedjen a host operációs rendszer sajátos funkcióihoz.

Piton

A népszerű értelmezett nyelv Piton 5 ok, amiért a Python programozás nem feleslegesPython - Vagy szereted, vagy utálod. Lehet, hogy ingaként ingadozik az egyik végről a másikra is. Függetlenül attól, hogy a Python olyan nyelv, amelyben nehezen lehet kétértelmű. Olvass tovább . A Python parancsfájl futtatásakor a Python értelmező lefordítja a kódot az operációs rendszer utasításaira. A Java-hoz hasonlóan is működhet: amikor az alkalmazástól kívülről „importál” kódot, akkor az első futtatáskor byte kódnak állítja össze. Ezután a tolmács tudni fogja, hogy az azt követő futtatások során megváltozott-e az eredeti kód, és ezen a ponton újra összeállítja az új bytekódra.

A „kívánságon alapuló” futás hűvös mellékterméke az, hogy a tolmács segítségével interaktív módon fejlesztheti meg a szkripteket. Ha egyszerűen beírja a „python” parancsot a parancssorba, elindítja a tolmácsot, és futtathatja a kódot, és azonnal láthatja az eredményeket.

szoftver os kompatibilitási python tolmács

Ez azt jelenti, hogy a fejlesztők körül tudnak játszani és „élőben” csíptethetik a dolgokat. Ezután, ha egy kódsor megcsinálja, amit akar, másolja be és illessze be szkriptfájl (ami sokkal hatékonyabb, mint a „kód-fordítás-teszt” ciklus, amelyet a nem értelmezett nyelvi programozóknak meg kell tenniük).

Még akkor is, ha a szoftver ugyanaz, valószínűleg nem

A felhasználók számára sajnos a technológiai ipar nem fejlesztett ki valóban „univerzális” formátumot. És ezt soha nem teheti meg. Az ilyen típusú szabványok bevezetése gyakran „legkevésbé közös nevező” megoldást eredményez, engedményekkel annak érdekében, hogy mindenki jóváhagyjon.

Mit gondolsz? Inkább egy univerzálisan kompatibilis szoftvert szeretne, még akkor is, ha azt jelentette, hogy nem olyan jó? Vagy jól van a használt operációs rendszerrel, és nincs érdeklődése a más platformok alkalmazásai iránt? Az alábbiakban ossza meg velünk a megjegyzéseket!

Kép-hitelek: Masterchief_Productions / Shutterstock

Aaron üzleti elemzőként és projektmenedzserként tizenöt éven keresztül könyök mélyén játszik technológiát, majdnem annyira hűséges Ubuntu felhasználó (a Breezy Badger óta). Érdeklődési körébe tartozik a nyílt forráskódú, a kis üzleti alkalmazások, a Linux és az Android integrálása, valamint a számítástechnika egyszerű szöveges módban.