Reklaam

Olete just alla laadinud funktsioonide komplekti kuuluva värskenduse oma avatud lähtekoodiga rakendusse. Kõik töötab hästi ja kasutate seda ka teistes seadmetes - seega on aeg see ka neile tutvustada.

Välja arvatud see, et teie läikiv uus Linuxi sülearvuti ei ühildu teie Windowsi installipaketiga. Kuidas on teie Androidi tahvelarvutiga? iPhone? PS4? Miks ei saa te lihtsalt võtta seda tarkvara ja kasutada seda kõikjal, kus soovite? Vaatame välja erinevad tõkked unistusel „osta üks kord, jookse ükskõik kuhu”.

Tarkvaraarendus ja OS-i arhitektuur

Mõistmine, miks tarkvara opsüsteemides ei tööta, nõuab tarkvara valmistamise kohta pisut (luban) vaid pisut teadmist.

Tarkvara arendusprotsess

Töölaua-, serveri- ja mobiilseadmete (s.t. mitte veeb Programmeerimine vs. Veebiarendus: milles erinevus on?Võite arvata, et rakenduste programmeerijad ja veebiarendajad teevad sama tööd, kuid see pole kaugeltki tõde. Siin on peamised erinevused programmeerijate ja veebiarendajate vahel. Loe rohkem ), programmeerija:

  1. Tippige mõni kood ühte või mitmesse faili.
  2. Kompileeri koodi millekski, mida arvuti suudab käivitada.
  3. Test veendumaks, et programm töötab ootuspäraselt.
  4. Pakkige ja levitage / juurutage tarkvara.
tarkvara os ühilduvuse arendamise protsess

Siin puudutab meid esimese ja teise sammu kombinatsioon. Protsess koostamine tarkvara, või muuta see koodist sellisteks ja nullideks, millest arvuti aru saab (masinakeel), on keeruline. Me ei jõua sellesse üksikasjalikult, kuid on kasulik kõrgel tasemel aru saada, mis juhtub.

OS-i arhitektuur

Üks oluline punkt, millest tuleb aru saada, on see, et opsüsteem ei ole üksus. Pigem koosneb see tarkvara kihtidest.

Operatsioonisüsteemi tuumad

Operatsioonisüsteemi oma kernel vastutab arvuti riistvaraga suhtlemise eest. Tarkvara edastab oma käsud kernelile, kes omakorda annab riistvarale käsud (näiteks) kõvakettalt faili lugemiseks või ekraanile akna joonistamiseks. Põhimõtteliselt koordineerib see kogu teavet (olgu see siis salvestatud andmeid, arvutusi või kasutaja sisestatud andmeid) riistvara ja erinevate tarkvaraosade vahel. Kernel teeb kogu selle funktsiooni tarkvara kaudu kättesaadavaks süsteemikõned.

tarkvara os ühilduvuse kerneli põhitõed
Pildikrediit: Wikimedia Commons

Iga opsüsteemi kernel rakendab süsteemikõnesid erinevalt, vastavalt sellele, millised neist on saadaval, mida nad kutsutakse või milliseid suvandeid nad kasutavad. Seetõttu peab tarkvara arvestama süsteemikõnedega, mida iga sihitud operatsioonisüsteemi kernel toetab. Süsteemikõnel, mida kasutate andmete GPU-le saatmiseks Linuxis, võib olla erinev nimi, teie pakutavate andmete loend või Windowsis mõlemad nimekirjad. See täpne kõne ei pruugi üldse olemas olla.

Süsteemi teegid

Paljudel juhtudel ei helista tarkvara otse kernelile. Selle asemel helistatakse süsteemiteegidvõi põhifunktsioonide kogumid. Teegid on olemas (näiteks) iga programm, mis salvestab faile kõvakettale, ei pea selleks funktsiooni kirjutama. Selle asemel lihtsalt lingid süsteemiteeki ja kasutab olemasolevat funktsiooni. Linuxi GLibC-teek on hea näide, nagu ka Win32 API või .DLL-failid Maci / süsteemi / raamatukogu kataloogi sisu Kuidas pääseda juurde OS X raamatukogu kaustale ja miks see on mugavEnamik OS X teegi kaustu jäetakse kõige paremini üksi, kuid on kasulik teada oma teed kasutajaraamatukogus ja selle läheduses. Loe rohkem .

tarkvara os ühilduvuse süsteemi teegid
Kujutise krediit: ScottXW Wikimedia Commonsi kaudu

Süsteemiteegid toimivad rutiinsete toimingute jaoks omamoodi tõlkina rakenduste ja kerneli vahel. Taotlused teevad funktsioonikõned nendesse raamatukogudesse, mis käsitlevad paljusid madala taseme üksikasju. Nad võivad mugavuse huvides ka kerneli süsteemikõnesid teha. Nagu arvata võis, tähendab see, et need teegid on kirjutatud kindla kerneli jaoks ja seetõttu ei saa neid kasutada erinevate tuumadega opsüsteemides.

Operatsioonisüsteemi täitmise päised

Viimane universaalse tarkvara blokeering on opsüsteemide käivitatavate failide vorming. OS eeldab, et käivitatavad failid järgivad konkreetset binaarne failivorming Kõik, mida peate teadma failivormingute ja nende omaduste kohtaMe kasutame sõnafaili vaheldumisi: muusika, pilt, arvutustabel, slaidiseanss ja nii edasi. Mis aga teeb failist ikkagi faili? Proovime aru saada sellest arvutuse põhiosast. Loe rohkem . Näiteks käivitatava ja ühendatava vormingu (ELF) failid, mis töötavad opsüsteemides nagu Linux ja FreeBSD peavad määrama faili teatavad atribuudid teatud baitides, nagu allpool näidatud pilt.

tarkvara os ühilduvuse päise päis

rakenduse binaarne liides (ABI) oskus on eriti oluline. Protsessori-, kerneli- ja süsteemibüroodes saadaolevate kõnede kombinatsioon on ABI sarnane an rakenduse programmeerimisliides (API) selles osas, kuidas see määratleb, kuidas kaks programmi üksteisega suhelda saavad. Kuid API-d on midagi, mida programmeerijad (inimesed) kasutavad lähtekoodis kahe tarkvara tüki tähistamiseks peaks üksteisega rääkida. ABI on see, mis tegelikult võimaldab neil seda teha pärast tarkvara kompileerimist ja käitamist. Iga opsüsteem rakendab konkreetset ABI-d, mis võib sama operatsioonisüsteemi versioonide vahel muutuda või mitte.

Üldiselt rakendavad opsüsteemid oma ABI-d, mis määratakse kindlaks protsessori tüübi, kerneli ja mis tahes standardse süsteemiteegi kombinatsiooni abil. Kuid mõnikord rakendab OS rohkem kui ühte. FreeBSD toetab näiteks Linuxi binaare, kuna see pakub Linuxi ABI-d FreeBSD kerneli lisandmoodulina (Linuxi kerneli asemel). See erineb virtualiseerimisprogrammid Mis on virtuaalne masin? Kõik, mida peate teadmaVirtuaalsed masinad võimaldavad teil praeguses arvutis käivitada muid opsüsteeme. Siit saate teada, mida peaksite nende kohta teadma. Loe rohkem nagu VMWare või VirtualBox, mis kasutavad tarkvara kogu masina (riistvara ja kõigi) simuleerimiseks. Selle tulemusel on seda tüüpi ABI-ühilduvus kiirem, kuid säilitada on vaja veel palju vaeva. Seetõttu on see siiski haruldane Hiljuti nägi Microsoft seda väärtust Ubuntu on nüüd saadaval Windowsi poesWindows Insiders saab nüüd Ubuntu alla laadida ja installida Windows 10-le. See viib Linuxi ja Windowsi kokku ebapüsivas liidus, mida vähesed kunagi oskasid ette kujutada, et elavad piisavalt kaua, et olla tunnistajaks. Loe rohkem seda tehes.

Erand: tõlgendatud tarkvara

Ülaltoodu põhjal oleme õppinud, et arendajad kirjutavad tarkvara ühte ja ainult ühte tüüpi sihtsüsteemi jaoks. Välja arvatud siis, kui nad seda ei tee. On palju rakendusi, mille saate alla laadida ja Macis käitada, seejärel Windowsis kopeerida ja käitada ning võib-olla isegi uuesti kopeerida ja ilma probleemideta Linuxis töötada. Kuidas on see võimalik?

Kas ma lamasin seni?

Nagu selgub, on olemas mingi kategooria tarkvara, mis näeb välja nagu "lihtsalt jookseb igal pool". Saate seda alla laadida ja käivitada mis tahes toetatud platvorm - võtmesõnaks on „toetatud“. Tegelikult laadite alla rakenduse lähtekoodi, samas kui teise rakenduse ( tõlk) on lähtekoodi otse reaalajas käivitamine. See on midagi lihtsustavat, nii et vaatame täpsemalt, kuidas see paari keelega töötab.

Java

Kui Java esmakordselt välja anti, oli see lubadus (sõna-sõnalt) „kirjuta üks kord, jookse ükskõik kuhu”. Idee oli luua kasutades Java-funktsioone failide salvestamiseks, arvutuste tegemiseks või rakenduste loomiseks aken. Siis üks Java Runtime Enviornment (JRE) käivitaks iga toetatud arvutiplatvormi koodi ja tõlgiks selle omapärastesse OS-i funktsioonidesse. Java trikk on siis see, et see ei tööta opsüsteemis “otse”. See töötab JRE nimega osas Java virtuaalmasin ja just see töötab opsüsteemis.

Sisestades selle täiendava tarkvarakihi rakenduse ja operatsioonisüsteemi vahele, võimaldab Java teil keskenduda funktsioonide komplektile, mis on opsüsteemides ühesugused. Te ütlete Java-le, mida soovite teha, ja laske oma süsteemi JVM-il muretseda, kuidas seda tegelikult teha. Allolev pilt näitab seda tegevuses, kus JIDE Tarkvara Java töölauarakenduste raamistik kuvab sama rakenduse Maci (üleval), Windowsi (vasakul keskel), “puhta Java” (paremal keskel) ja Linuxi (all) jaoks.

tarkvara os ühilduvuse jide jdaf
Pildikrediit: tarkvara JIDE

Java programmid ei "täpselt" kompileeri ennast reaalajas. Pigem muudab Java kompilaator need “baitkoodiks”. Võite mõelda baidikoodile kui pooleks küpsetatud programmile. Kui arendaja avaldab rakenduse, on see kompileeritud nii palju kui võimalik, teadmata, millises OS-is see töötab. Kui selle tegelikult käivitate, küpsetab JVM selle ülejäänud viisil, et see sobiks host OS-i konkreetsete funktsioonidega.

Python

Populaarne tõlgendatud keel on Python 5 põhjust, miks Pythoni programmeerimine pole mõttetuPython - sa kas armastad seda või vihkad seda. Võiksite isegi pendelda ühest otsast teise. Sõltumata sellest on Python keel, mille suhtes on raske olla ambivalentne. Loe rohkem . Pythoni skripti käivitamisel tõlgib Pythoni tõlk koodi OS-i juhisteks. See võib toimida ka sarnaselt Javaga: kui impordite koodi väljastpoolt oma rakendust, on see komponeeritud baitkoodiks esmakordsel käivitamisel. Siis saab tõlk teada, kas järgnevatel käikudel on algne kood muutunud, seejärel kompileerib ta selle uueks baidikoodiks.

Selle nõudmisel käitamise lahe kõrvalprodukt on see, et saate tõlgi abil oma skripte interaktiivselt arendada. Tippides käsureale lihtsalt "python", saate tõlgi käivitada ja saate koodi käivitada ning tulemusi kohe näha.

tarkvara os ühilduvuse python tõlk

See tähendab, et arendajad saavad mängida ja näpistada asju reaalajas. Seejärel kopeerige ja kleepige see, kui koodirida teeb seda, mida nad tahavad skriptifail (mis on palju efektiivsem kui tsükkel „koodi kompileerimise test”, mida tõlgendamata keeleprogrammeerijad peavad tegema).

Isegi kui tarkvara on sama, siis tõenäoliselt seda pole

Kahjuks pole kasutajate jaoks tehnikatööstus välja töötanud tõeliselt “universaalset” vormingut. Ja see ei pruugi kunagi nii olla. Seda tüüpi standardite tutvustamine toob sageli kaasa väikseima nimetaja lahenduse koos järeleandmistega kõigi nõusoleku saamiseks.

Mida sa arvad? Kas teil oleks pigem universaalselt ühilduvat tarkvara, isegi kui see tähendaks, et see pole nii hea? Või on teie kasutatava opsüsteemiga kõik korras ja teil pole huvi teiste platvormide rakenduste vastu? Andke allpool kommentaarides teada!

Piltide autorid: Masterchief_Productions / Shutterstock

Aaron on ärianalüütiku ja projektijuhina juba viisteist aastat töötanud küünarnukis ning on peaaegu sama kaua (alates Breezy Badgerist) olnud lojaalne Ubuntu kasutaja. Tema huvide hulka kuuluvad avatud lähtekoodiga, väikeettevõtete rakendused, Linuxi ja Androidi integreerimine ning lihtteksti režiimis arvuti kasutamine.