Skelbimas

Ką tik atsisiuntėte funkcijų paketą į savo mėgstamą atvirojo kodo programą. Viskas veikia gerai, o jūs naudojate tai kituose savo įrenginiuose - todėl laikas tai pritaikyti ir tiems.

Išskyrus jūsų naująjį „Linux“ nešiojamąjį kompiuterį, jis nesuderinamas su jūsų „Windows“ diegimo paketu. O kaip su „Android“ planšetiniu kompiuteriu? „iPhone“? PS4? Kodėl negalite tiesiog pasiimti tą programinės įrangos dalį ir naudoti ją kur tik norite? Panagrinėkime keletą skirtingų svajonių „nusipirkti vieną kartą, bėgti bet kur“ kliūčių.

Programinės įrangos kūrimas ir OS architektūra

Norint suprasti, kodėl programinė įranga neveikia operacinėse sistemose, reikia šiek tiek (tik šiek tiek, pažadu) žinių apie programinės įrangos kūrimą.

Programinės įrangos kūrimo procesas

Esant labai paprastam stalinių kompiuterių, serverių ir mobiliųjų programų (t. ne žiniatinklis Programavimas vs. Žiniatinklio kūrimas: koks skirtumas?Galbūt manote, kad programų programuotojai ir žiniatinklio kūrėjai atlieka tą patį darbą, tačiau tai toli gražu nėra tiesa. Čia pateikiami pagrindiniai skirtumai tarp programuotojų ir žiniatinklio kūrėjų.

instagram viewer
Skaityti daugiau ), programuotojas:

  1. Įveskite keletą kodas į vieną ar kelis failus.
  2. Sudarykite kodą į tai, ką kompiuteris gali vykdyti.
  3. Testas įsitikinti, kad programa veikia taip, kaip tikėtasi.
  4. Pakuoti ir platinti / diegti programinė įranga.
programinės įrangos os suderinamumo kūrimo procesas

Čia mus domina pirmojo ir antrojo žingsnių derinys. Procesas sudarydamas programinę įrangą, arba paversti ją kodu tokiu, kuris yra kompiuterio suprantamais (nuliais), nulis (mašinos kalba) yra sudėtingas. Mes nesigilinsime į tai labai išsamiai, tačiau naudinga aukštu lygiu suprasti, kas nutinka.

OS architektūra

Svarbu suprasti, kad operacinė sistema nėra atskiras subjektas. Tai greičiau sudaryta iš programinės įrangos sluoksnių.

Operacinės sistemos branduoliai

Operacinės sistemos branduolys yra atsakingas už ryšį su kompiuterio aparatūra. Programinė įranga perduoda savo komandas branduoliui, kuris savo ruožtu aparatinei įrangai suteikia komandas (pavyzdžiui) nuskaityti failą iš standžiojo disko arba nupiešti langą ekrane. Iš esmės ji koordinuoja visą informaciją (nesvarbu, ar tai saugomi duomenys, skaičiavimai, ar vartotojo įvestas duomenys) tarp aparatinės įrangos ir įvairių programinės įrangos dalių. Branduolys suteikia visas šias galimybes programinei įrangai per sistemos skambučiai.

programinės įrangos os suderinamumo branduolio pagrindai
Vaizdo kreditas: „Wikimedia Commons“

Kiekvieno operacinės sistemos branduolys įgyvendins sistemos skambučius skirtingai, atsižvelgiant į tai, kurie iš jų yra prieinami, kaip jie vadinami ar kokias parinktis jie pasirenka. Dėl to programinė įranga turi atsižvelgti į sistemos skambučius, palaikomus kiekvienos jai skirtos OS branduolio. Sistemos skambutis, kurį naudojate siųsdamas duomenis į „GPU“ operacinėje sistemoje „Linux“, gali turėti skirtingą pavadinimą, informacijos, kurią turite pateikti, sąrašą arba abu „Windows“. Tikslaus skambučio gali net nebūti.

Sistemos bibliotekos

Daugeliu atvejų programinė įranga neskambina tiesiai į branduolį. Užuot tai paskambinę sistemos bibliotekos, arba pagrindinių funkcijų rinkiniai. Bibliotekų yra (pvz.), Todėl kiekvienai programai, kuri įrašo failus į standųjį diską, nereikia rašyti funkcijos. Vietoj to, tiesiog nuorodos į sistemos biblioteką ir naudoja esamą funkciją. „GLibC“ biblioteka „Linux“ yra puikus pavyzdys, kaip ir .DLL failai „Win32“ API arba „Mac“ / sistemos / bibliotekos katalogo turinį Kaip pasiekti OS X bibliotekos aplanką ir kodėl tai patoguDaugumą „OS X Library“ aplankų geriausia palikti ramybėje, tačiau naudinga žinoti savo kelią Vartotojo bibliotekoje ir aplink ją. Skaityti daugiau .

programinės įrangos os suderinamumo sistemos bibliotekos
Vaizdo kreditas: „ScottXW“ per „Wikimedia Commons“

Sistemos bibliotekos veikia kaip vertėjas tarp programų ir branduolio atliekant įprastas užduotis. Programos sukuria funkcijos skambučiai į šias bibliotekas, kurios tvarko daug žemo lygio detalių. Jie taip pat gali skambinti sistemai į branduolį, kad būtų patogiau. Kaip jau spėjote atspėti, tai reiškia, kad šios bibliotekos yra sukurtos tam tikram branduoliui, todėl jų negalima naudoti operacinėse sistemose su skirtingais branduoliais.

Operacinės sistemos vykdymo antraštės

Paskutinis universaliosios programinės įrangos kliūtis yra operacinių sistemų vykdomųjų failų formatas. OS tikisi, kad jos vykdomi failai bus sekami tam tikru mastu dvejetainis failo formatas Viskas, ką reikia žinoti apie failų formatus ir jų ypatybesŽodinį failą naudojame pakaitomis: muzika, vaizdas, skaičiuoklė, skaidrių demonstracija ir pan. Bet kas vis dėlto daro failą „failu“? Pabandykime suprasti šią pagrindinę skaičiavimo dalį. Skaityti daugiau . Pvz., Vykdomojo ir susiejamo formato (ELF) failai, kurie veikia tokiose operacinėse sistemose kaip „Linux“ ir „FreeBSD“ turi nurodyti tam tikras failo savybes tam tikrais baitais, kaip parodyta žemiau vaizdas.

programinės įrangos os suderinamumas elf antraštė

programos dvejetainė sąsaja (ABI) parodytas sugebėjimas yra ypač svarbus. Skambučių, gaunamų iš procesoriaus, branduolio ir sistemos žvalgybų, derinys, ABI yra panašus į an programos programavimo sąsaja (API) tuo, kad jis nusako, kaip dvi programos bendrauja viena su kita. Bet API yra kažkas, ką programuotojai (žmonės) naudoja šaltinio kode nurodydami du programinės įrangos elementus turėtų Kalbėtis tarpusavyje. ABI yra tai, kas iš tikrųjų leidžia tai padaryti, kai programinė įranga yra sukompiliuota ir paleista. Kiekviena operacinė sistema įgyvendina tam tikrą ABI, kuri gali pasikeisti arba nesikeisti tarp tos pačios OS versijų.

Apskritai, operacinės sistemos įgyvendina savo pačių ABI, kurias lemia procesoriaus tipo, branduolio ir bet kurių standartinių sistemos bibliotekų derinys. Bet kartais OS įgyvendins ne vieną. Pavyzdžiui, „FreeBSD“ palaiko „Linux“ dvejetainius failus, nes teikia „Linux ABI“ kaip priedą prie „FreeBSD“ branduolio (vietoje „Linux“ branduolio). Tai skiriasi nuo virtualizatiton programos Kas yra virtualioji mašina? Viskas, ką reikia žinotiVirtualios mašinos leidžia dabartiniame kompiuteryje paleisti kitas operacines sistemas. Štai ką turėtumėte žinoti apie juos. Skaityti daugiau pvz., „VMWare“ ar „VirtualBox“, kurios naudoja programinę įrangą, kad imituotų visą mašiną (aparatinę ir visą). Todėl šio tipo suderinamumas su ABI yra greitesnis, tačiau išlaikyti reikia daug daugiau pastangų. Štai kodėl tai yra reta atvejis Neseniai „Microsoft“ pamatė vertę „Ubuntu“ dabar galima rasti „Windows Store“„Windows Insiders“ dabar gali atsisiųsti ir įdiegti „Ubuntu“ į „Windows 10“. Tai sujungia „Linux“ ir „Windows“ į nesąmoningą sąjungą, kurią tik nedaugelis įsivaizdavo, kad gyvens pakankamai ilgai, kad galėtų būti liudytojais. Skaityti daugiau tai darydamas.

Išimtis: išaiškinta programinė įranga

Remiantis tuo, kas išdėstyta aukščiau, mes sužinojome, kad kūrėjai rašo programinę įrangą vieno ir tik vieno tipo tikslinei sistemai. Išskyrus atvejus, kai jie to nedaro. Yra daugybė programų, kurias galite atsisiųsti ir paleisti „Mac“, tada nukopijuoti ir paleisti „Windows“, o gal net dar kartą nukopijuoti ir paleisti „Linux“ be problemų. Kaip tai įmanoma?

Ar aš iki šiol gulėjau?

Kaip paaiškėja, yra programinės įrangos kategorija, kuri atrodo taip, kad ji „veikia visur“. Galite atsisiųsti ir naudoti bet kurią palaikoma platforma - pagrindinis žodis yra palaikomas. Tiesą sakant, jūs atsisiunčiate programos šaltinio kodą, o kitą programą ( vertėjas) yra tarsi šaltinio kodo paleidimas tiesiogiai realiuoju laiku. Tai šiek tiek supaprastina, todėl pažiūrėkime, kaip tai veikia su keliomis kalbomis.

„Java“

Kai „Java“ pirmą kartą buvo išleista, žadama (pažodžiui) „parašyti vieną kartą, bėgti bet kur“. Idėja buvo kurti naudojant „Java“ funkcijas, kaip išsaugoti failus, atlikti skaičiavimus ar sukurti programą langas. Tada „Java Runtime Enviornment“ (JRE) kiekviena palaikoma kompiuterio platforma paleistų kodą ir išverstų juos į vietines OS funkcijas. Taigi „Java“ apgaulė yra ta, kad ji neveikia „tiesiogiai“ operacinėje sistemoje. Jis vykdomas vadinamoje JRE dalyje „Java“ virtualioji mašina ir tai, kas veikia operacinėje sistemoje.

Įterpdami šį papildomą programinės įrangos sluoksnį tarp programos ir OS, „Java“ leidžia sutelkti dėmesį į funkcijų rinkinį, tą patį visose operacinėse sistemose. Jūs sakote „Java“, ką norite padaryti, ir leiskite savo sistemos JVM susirūpinti, kaip tai iš tikrųjų padaryti. Žemiau pateiktoje nuotraukoje tai parodyta, kur „JIDE Software“ „Java Desktop Application Framework“ ta pati programa rodoma „Mac“ (viršuje), „Windows“ (viduryje kairėje), „grynoji Java“ (viduryje dešinėje) ir „Linux“ (apačioje).

programinės įrangos os suderinamumo jide jdaf
Vaizdo kreditas: JIDE programinė įranga

„Java“ programos nėra tiksliai „sukompiliuotos“ realiu laiku. Atvirkščiai, „Java“ kompiliatorius pavers juos „baitų kodais“. Galite manyti, kad baitinis kodas yra pusiau pakeista programa. Kai kūrėjas išleidžia programą, ji gali būti sukompiliuota nežinant, kurią OS ji veiks. Kai iš tikrųjų paleisite, JVM „iškeps“ visą likusį kelią, kad atitiktų konkrečias pagrindinės OS funkcijas.

Python

Populiari interpretuojama kalba yra Python 5 priežastys, kodėl „Python“ programavimas nenaudingasPython - tu arba myli, arba nekenti. Jūs netgi galite pasisukti iš vieno galo į kitą kaip švytuoklė. Nepaisant to, „Python“ yra kalba, apie kurią sunku būti dvilypiai. Skaityti daugiau . Kai vykdote „Python“ scenarijų, „Python“ vertėjas išvers kodą į OS instrukcijas. Jis taip pat gali veikti panašiai kaip „Java“: kai „importuojate“ kodą iš savo programos ribų, jis yra sudarytas kaip baitinis kodas pirmą kartą paleidžiant. Tada vertėjas žinos, ar vėlesnių eigų metu pirminis kodas pasikeitė, tada jis perkompiliuos jį į naują baitinį kodą.

Šaunus šio „pagal pareikalavimą“ veikimo šalutinis produktas yra tas, kad galite naudoti vertėją interaktyviai kurti scenarijus. Tiesiog komandinėje eilutėje įvedę „python“, paleisite vertėją ir galėsite paleisti kodą ir iškart pamatyti rezultatus.

programinės įrangos os suderinamumo python interpreter

Tai reiškia, kad kūrėjai gali žaisti ir keistis dalykai „tiesiogiai“. Tada, kai kodo eilutė daro tai, ko jie nori, nukopijuokite ir įklijuokite ją scenarijaus failas (kuris yra daug efektyvesnis nei „kodo kompiliavimo-testo“ ciklas, kurį turi daryti neišaiškinti kalbų programuotojai).

Net jei programinė įranga yra ta pati, jos tikriausiai nėra

Deja, vartotojų, technologijų pramonė nesukūrė iš tikrųjų „universalaus“ formato. Ir gali niekada to nedaryti. Įdiegus šių tipų standartus, dažnai gaunamas „mažiausio vardiklio“ sprendimas su nuolaidomis, kad visi būtų patvirtinti.

Ką tu manai? Ar verčiau turėtumėte visuotinai suderinamą programinę įrangą, net jei ji reikštų, kad ji nebuvo tokia gera? Ar jums viskas gerai su jūsų naudojama operacine sistema ir nesidomi kitų platformų programomis? Leiskite mums sužinoti žemiau komentaruose!

Kreditai vaizdams: „Masterchief_Productions“ / „Shutterstock“

Aaronas jau penkiolika metų gilinasi į technologijas kaip verslo analitikas ir projektų vadovas ir beveik tiek pat ilgai (nuo „Breezy Badger“) buvo ištikimas „Ubuntu“ vartotojas. Jo interesai apima atvirojo kodo, smulkaus verslo programas, „Linux“ ir „Android“ integraciją ir skaičiavimą paprasto teksto režimu.