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. Što 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 prepreke sanjanju „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 proizvodi.

Proces razvoja softvera

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

instagram viewer
  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.
softver os kompatibilnost dev proces

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 (strojni jezik) je složeno. Nećemo ući u to detaljno, no 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, što zauzvrat izdaje naredbe hardveru (na primjer) za čitanje datoteke s tvrdog diska ili crta prozor na zaslonu. U osnovi koordinira sve podatke (bilo da su pohranjeni podaci, proračuni ili unos korisnika) između hardvera i različitih dijelova softvera. Kernel daje svu ovu funkcionalnost dostupnu softveru putem sistemski pozivi.

softver os osnova kompatibilnosti kernel
Kreditna slika: Wikimedia Commons

Kernel svakog operativnog sustava različito će implementirati sistemske pozive, s obzirom na to koji 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 se ne poziva izravno na kernel. Umjesto toga, poziva na sistemske knjižniceili zbirke osnovnih funkcija. Knjižnice postoje (na primjer), svaki program koji sprema datoteke na tvrdi disk ne mora pisati funkciju da bi to učinio. Umjesto toga, jednostavno veze na knjižnica sustava i koristi postojeću funkciju. GLibC knjižnica za Linux sjajan je primjer, kao i .DLL datoteke u Win32 API-ju ili sadržaj macovog direktorija / sustava / knjižnice Kako pristupiti fascikli biblioteke OS X i zašto je to zgodnoVećinu mapa OS X knjižnice najbolje je ostaviti same, ali korisno je znati svoj put u i oko Korisničke biblioteke. Čitaj više .

softver os knjižnice sustava kompatibilnosti
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će slijede određene binarni format datoteke Sve što trebate znati o formatima datoteka i njihovim svojstvimaDatoteku riječi koristimo naizmjenično: glazbu, sliku, proračunsku tablicu, prezentaciju i tako dalje. Ali što datoteku uopće čini "datotekom"? Pokušajmo razumjeti ovaj temeljni dio računanja. Čitaj više . Na primjer, izvršni i povezivi format (ELF) datoteke koje rade na operacijskim sustavima kao što su Linux i FreeBSD moraju odrediti određena svojstva datoteke u određenim bajtovima, kao što je prikazano u nastavku slika.

softver os kompatibilnost elf zaglavlje

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 sučelje za programiranje aplikacija (API) jer definira kako dva programa međusobno komuniciraju. Ali API je nešto što programeri (ljudi) koriste u izvornom kodu da naznače dva dijela softvera Treba li razgovaraju jedni s drugima. ABI je ono što im zapravo omogućuje kada se softver sastavi i pokrene. 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 OS mora 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). Ovo se razlikuje od virtualizatiton programi Što je virtualni stroj? Sve što trebate znatiVirtualni strojevi omogućuju vam pokretanje drugih operativnih sustava na vašem trenutnom računalu. Evo što biste trebali znati o njima. Čitaj više 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. Iako je ovo rijetko, Microsoft je nedavno vidio vrijednost Ubuntu je sada dostupan u trgovini WindowsWindows Insiders sada mogu preuzeti i instalirati Ubuntu na Windows 10. Ovo povezuje Linux i Windows u nečasnu zajednicu koje su malo tko zamislili da će živjeti dovoljno dugo da bi bili svjedoci. Čitaj više u tome.

Izuzetak: Tumačeni softver

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

Jesam li ležao do sada?

Kako se ispostavilo, postoji kategorija softvera koji izgleda na površini kao da se samo „odvija svuda“. Možete je preuzeti i pokrenuti na bilo kojem mjestu podržana platforma - ključna riječ koja se podržava. Zapravo preuzimate izvorni kôd za aplikaciju, dok drugi program (The tumač) vrsta je izvođenja 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 se Java prvi put pojavila, obećalo je da je (doslovno) "jednom napisao, trčanje bilo gdje." Ideja je bila stvoriti aplikacije pomoću Java funkcija za spremanje datoteka, izračune ili izradu aplikacije prozor. 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 on ne pokreće "izravno" u operativnom sustavu. Radi u dijelu zvanom JRE Java virtualni stroj a to je ono što se pokreće 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. Donja slika prikazuje ovo na djelu, gdje Java Application Desktop Framework JIDE softvera prikazuje istu aplikaciju za Mac (gore), Windows (srednja lijeva), "čista Java" (srednja desna) i Linux (dolje).

softver os kompatibilnost jide jdaf
Kreditna slika: Softver JIDE

Java programi ne odražavaju se točno u stvarnom vremenu. Umjesto toga, Java prevoditelj će ih pretvoriti u "bajt kod". Bajt kod možete smatrati napola pečenim programom. Kada razvojni 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 će ga "ispeći ostatak" kako bi odgovarao funkcijama domaćin operativnog sustava.

Piton

Popularni je interpretirani jezik Piton 5 razloga zašto Python programiranje nije beskorisnoPython - 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. Čitaj više . Kada pokrenete Python skriptu, tumač Python će prevesti kôd u upute za OS. Također može funkcionirati slično kao na Javi: kada uvezete kôd izvan aplikacije, sastavlja se da bi bytekodirao prvi put kada se pokrene. Tada će tumač znati je li se prilikom sljedećih pokretanja izvorni kod promijenio, u tom trenutku će ga prekomponovati u novi bajt kod.

Sjajan nusproizvod ovog trčanja "na zahtjev" je da interpretator možete koristiti za interaktivni razvoj skripti. Jednostavnim upisivanjem "pythona" u naredbeni redak pokrenut ćete tumač i možete pokrenuti kod i odmah vidjeti rezultate.

softver os kompatibilnost python interpreter

To znači da se programeri mogu igrati i prilagoditi stvari „uživo“. Zatim, nakon što redni kod radi ono što oni žele, kopirajte ga i zalijepite u njega datoteku skripte (koja je mnogo učinkovitija od ciklusa „testiranje-sastavljanje koda“ test koji programeri jezika koji ne tumače moraju učiniti).

Čak i kada je softver isti, vjerovatno nije

Nažalost za korisnike, tehnološka industrija nije razvila istinski "univerzalni" format. A to možda nikad neće učiniti. Uvođenje ovih vrsta standarda često rezultira rješenjem „najmanje zajedničkog nazivnika“, 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 u redu s operativnim sustavom koji koristite i nemate interesa za aplikacije s drugih platformi? Javite nam u nastavku u komentarima!

Slikovni krediti: Masterchief_Productions / Shutterstock

Aaron je u tehnologiji kao poslovni analitičar i voditelj projekata nastavio petnaestak godina, a bio je odan korisnik Ubuntu-a gotovo toliko dugo (još od Breezy Badger). Njegova su zanimanja otvoreni izvor, male poslovne aplikacije, integracija Linuxa i Androida i računarstvo u običnom tekstu.