Jedna veličina ne odgovara svima zašto softver nije univerzalno kompatibilan

  • Michael Fisher
  • 0
  • 4891
  • 1377
Oglas

Upravo ste preuzeli ažuriranje u obliku značajki u svoju omiljenu aplikaciju otvorenog koda. Sve dobro funkcionira, a koristite ih i na svojim drugim uređajima - tako da je vrijeme da se i njima ustupite.

Osim što vaš sjajni novi Linux laptop nije kompatibilan s vašim Windows instalacijskim paketom. Kako je s vašim Android tabletom? iPhone? PS4? Zašto ne možete jednostavno uzeti taj dio softvera i koristiti ga gdje god želite? Istražimo neke različite barijere do kojih se sanja “kupi jednom, trči bilo gdje.”

Razvoj softvera i arhitektura OS-a

Razumijevanje zašto softver ne funkcionira u operacijskim sustavima zahtijeva malo (samo malo, obećajem) znanja o tome kako se softver izrađuje.

Proces razvoja softvera

U vrlo osnovnom tijeku razvoja softvera za radnu površinu, poslužitelj i mobilni uređaj (tj. Ne web programiranje u odnosu na web razvoj: u čemu je razlika? Programiranje u odnosu na web razvoj: u čemu je razlika? Možda mislite da aplikacijski programeri i web programeri rade isti posao , ali to je daleko od istine. Evo ključnih razlika između programera i web programera.), programer će:

  1. Upišite neke kodirati u jednu ili više datoteka.
  2. Sastaviti kôd u nešto što računalo može izvršiti.
  3. Test kako bi se osiguralo da program radi onako kako se i očekivalo.
  4. Pakiranje i distribucija / implementacija softver.

To je kombinacija prvog i drugog koraka koji se ovdje tiče nas. Postupak od sastavljanje softver ili ga pretvaranje iz koda u one i nule koje računalo razumije (jezik računala) je složeno. Nećemo ući u nju detaljno, ali korisno je na visokom nivou razumjeti što se događa.

OS Arhitektura

Jedna važna stvar koju treba razumjeti je da operativni sustav nije jedna cjelina. Umjesto toga, sastoji se od slojeva softvera.

Kernel operativnog sustava

Operativni sustav zrno odgovoran je za komunikaciju s hardverom računala. Softver svoje naredbe šalje kernelu, a on zauzvrat izdaje naredbe hardveru (na primjer) za čitanje datoteke s tvrdog diska ili crta prozor na zaslonu. U osnovi koordinira sve informacije (bilo da su pohranjeni podaci, proračuni ili unos korisnika) između hardvera i raznih dijelova softvera. Kernel daje svu ovu funkcionalnost dostupnu softveru putem sistemski pozivi.

Kreditna slika: Wikimedia Commons

Svaki kernel operacijskog sustava će na različite načine implementirati sistemske pozive, u smislu kojih su dostupni, kako se pozivaju ili koje opcije uzimaju. Kao rezultat toga, softver mora uzeti u obzir sistemske pozive koje podržava kernel svakog OS-a na koji cilja. Sistemski poziv koji koristite za slanje podataka GPU-u u Linuxu može imati neko drugo ime, popis informacija koje trebate navesti ili oboje u sustavu Windows. Točnog poziva možda uopće nema.

Knjižnice sustava

U mnogim slučajevima softver ne poziva izravno u kernel. Umjesto toga, poziva na sistemske knjižnice, ili zbirke osnovnih funkcija. Knjižnice tako postoje (na primjer), svaki program koji sprema datoteke na tvrdi disk ne treba pisati funkciju da to učini. Umjesto toga, jednostavno veze na knjižnica sustava i koristi postojeću funkciju. GLibC knjižnica za Linux sjajan je primjer, kao i. Mape i zašto je to zgodno Većina mapa OS X knjižnice najbolje je ostaviti same, ali korisno je znati svoj put u i oko Korisničke biblioteke. .

Kreditna slika: ScottXW putem Wikimedia Commonsa

Knjižnice sustava djeluju kao svojevrsni prevoditelj između aplikacija i kernela za rutinske zadatke. Prijave čine pozivi funkcija u ove biblioteke, koje obrađuju puno detalja na niskoj razini. Za potrebe pogodnosti oni mogu upućivati ​​sistemski kernel. Kao što ste možda i nagađali, to znači da su te knjižnice napisane za određenu jezgru i stoga ih nije moguće koristiti u operacijskim sustavima s različitim jezgrama.

Zaglavlja izvršenja operativnog sustava

Posljednja prepreka univerzalnom softveru jest format izvršnih datoteka za operacijske sustave. OS očekuje da datoteke koje pokreću slijede određeni binarni format datoteke Sve što trebate znati o formatima datoteka i njihovim svojstvima Sve što trebate znati o formatima datoteka i njihovim svojstvima koristimo izmjenjivo datoteku riječi: glazba, slika, proračunska tablica, prezentacija , i tako dalje. Ali što datoteku uopće čini "datotekom"? Pokušajmo razumjeti ovaj temeljni dio računanja. , Na primjer, izvršni i povezivi format (ELF) datoteke koje se izvode na operativnim sustavima kao što su Linux i FreeBSD moraju odrediti određena svojstva datoteke u određenim bajtovima, kao što je prikazano na donjoj slici.

binarno sučelje aplikacije (ABI) pokazana sposobnost je od posebnog značaja. Kombinacija poziva dostupnih iz procesora, jezgre i sistemske knjižnice, ABI je slična an sučelje programskog programiranja (API) u tome definira kako dva programa međusobno komuniciraju. No API je nešto što programeri (ljudi) koriste u izvornom kodu da naznače dva dijela softvera treba razgovaraju jedni s drugima. ABI je ono što im zapravo omogućuje da se to jednom nakon sastavljanja i pokretanja softvera. Svaki operativni sustav implementira određeni ABI, koji se može ili ne mora mijenjati između verzija istog OS-a.

Općenito, operacijski sustavi implementiraju vlastiti ABI, određen kombinacijom vrste procesora, kernela i bilo koje standardne sistemske biblioteke. Ali ponekad će OS morati implementirati više njih. FreeBSD ima podršku za Linux binarne datoteke, na primjer, jer pruža Linux ABI kao dodatak za FreeBSD kernel (umjesto Linux kernera). To se razlikuje od virtualizatiton programa Što je virtualni stroj? Sve što trebate znati Što je virtualni stroj? Sve što trebate znati Virtualni strojevi omogućuju vam pokretanje drugih operativnih sustava na vašem trenutnom računalu. Evo što biste trebali znati o njima. primjerice VMWare ili VirtualBox koji koriste softver za simulaciju cijelog stroja (hardver i sve). Kao rezultat toga, ova vrsta kompatibilnosti s ABI je brža, ali puno više napora za održavanje. Zbog toga je to rijetko, iako je Microsoft nedavno vidio da je Ubuntu sada dostupan u Windows Storeu malo tko je ikada zamislio da će živjeti dovoljno dugo da bi mogao svjedočiti. u tome.

Izuzetak: Tumačeni softver

Na temelju gore navedenog naučili smo da programeri pišu softver za jedan, i to samo jedan, tip ciljanog sustava. Osim kad ih nema. Postoji mnogo aplikacija koje možete preuzeti i pokrenuti na Mac-u, zatim kopirati i pokrenuti na Windows-u, a možda čak i ponovo kopirati i pokrenuti na Linuxu bez ikakvih problema. Kako je ovo moguće?

Jesam li ležao do sada?

Kako se ispostavilo, postoji kategorija softvera koji na površinu izgleda kao da je to baš takav “radi svuda.” Možete je preuzeti i pokrenuti na bilo kojoj podržanoj platformi - ključna riječ je “podržan.” Zapravo preuzimate izvorni kôd za aplikaciju, dok drugi program (the tumač) vrsta je pokretanja izvornog koda izravno u stvarnom vremenu. Ovo je nešto previše pojednostavljenje, pa pogledajmo kako to točno funkcionira s nekoliko jezika.

Java

Kada je Java prvi put objavljena, obećalo je (doslovno) “piši jednom, trči bilo gdje.” Ideja je bila stvoriti aplikacije pomoću Java funkcija za spremanje datoteka, izračun ili stvaranje prozora aplikacija. Zatim a Java Runtime Enviornment (JRE) svaka bi podržana računalna platforma pokrenula kôd i pretočila ih u izvorne OS funkcije. Trik za Javu, dakle, je da se ona ne pokreće “direktno” na operacijskom sustavu. Provodi se u dijelu JRE koji se zove Java virtualni stroj i to je ono što radi u operativnom sustavu.

Umetanjem ovog dodatnog softverskog sloja između aplikacije i OS-a Java vam omogućuje da se usredotočite na skup funkcija koje su iste u operacijskim sustavima. Kažete Javi što želite raditi i pustite JVM vašeg sustava da se brine o tome kako to zapravo učiniti. Sljedeća slika to prikazuje na djelu, gdje Java Desktop Application Framework JIDE Software prikazuje istu aplikaciju za Mac (gore), Windows (srednja lijeva), “čista Java” (u sredini desno) i Linux (dolje).

Kreditna slika: Softver JIDE

Java programi ne rade točno “sastaviti” sami u stvarnom vremenu. Umjesto toga, Java kompajler će ih pretvoriti u “bajt.” Bajt kod možete smatrati napola pečenim programom. Kada programer izda aplikaciju, ona se sastavila onoliko koliko može, a da ne zna na kojem OS-u će se pokrenuti. Kad ga zapravo pokrenete, JVM hoće “ispecite ga ostatak puta” da se uklapaju u funkcije koje su posebne u host OS-u.

Piton

Popularni tumačeni jezik je Python 5 razloga zašto Programiranje Pythona nije beskorisno 5 razloga zašto Python programiranje nije beskorisno Python - ili ga volite ili mrzite. Možete čak i ljuljati s jednog kraja na drugi poput klatna. Bez obzira na to, Python je jezik o kojem je teško biti ambivalentan. , Kada pokrenete skriptu Python, prevoditelj Python će prevesti kôd u upute za OS. Može funkcionirati slično kao i Java: kad vi “uvoz” kôd izvan vaše aplikacije sastavlja se da bi bytecode prvi put pokrenuo. Tada će tumač znati je li se prilikom sljedećih izvođenja izvorni kod promijenio, u tom trenutku će ga prekomponirati u novi bajt kod.

Super nusproizvod ovog “na zahtjev” trčanje je to što možete koristiti tumač za interaktivni razvoj svojih skripti. Jednostavnim tipkanjem “piton” u naredbenom retku pokrenut ćete tumač i možete pokrenuti kod i odmah vidjeti rezultate.

To znači da se programeri mogu igrati i mijenjati stvari “uživo.” Zatim, nakon što linija koda napravi ono što oni žele, kopirajte je i zalijepite u datoteku skripte (što je mnogo učinkovitije od “kod dekompilirati-testa” ciklus koji moraju raditi programeri koji ne tumače jezik).

Čak i kada je softver isti, to vjerojatno nije

Nažalost za korisnike, tehnološka industrija nije se doista razvila “univerzalan” format. A to možda nikad neće učiniti. Uvođenje ovih vrsta standarda često rezultira a “najmanje zajednički nazivnik” rješenje, s ustupcima u interesu da svatko dobije odobrenje.

Što misliš? Da li biste radije imali univerzalno kompatibilan softver, čak i ako to znači da nije tako dobar? Ili ste dobro u operativnom sustavu koji koristite i nemate interesa za aplikacije s drugih platformi? Javite nam u nastavku u komentarima!

Slikovni krediti: Masterchief_Productions / Shutterstock




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.