Reklāma
Jūs tikko lejupielādējāt funkciju atjauninājumu savā iecienītajā atvērtā pirmkoda lietotnē. Viss darbojas labi, un jūs to izmantojat arī savās citās ierīcēs - tāpēc ir laiks to parādīt arī tām.
Izņemot jūsu spīdīgo jauno Linux klēpjdatoru, tas nav savietojams ar jūsu Windows instalācijas pakotni. Kā ir ar jūsu Android planšetdatoru? iPhone? PS4? Kāpēc jūs nevarat vienkārši ņemt šo programmatūras daļu un izmantot to visur, kur vēlaties? Izpētīsim dažus dažādus šķēršļus sapnim “vienreiz iegādāties, skriet jebkur”.
Programmatūras izstrāde un OS arhitektūra
Lai saprastu, kāpēc programmatūra nedarbojas visās operētājsistēmās, ir vajadzīgas nedaudz (tikai nedaudz, es apsolu) zināšanas par programmatūras izveidi.
Programmatūras izstrādes process
Ļoti vienkāršā darbvirsmas, servera un mobilā (t.i. nevis tīmeklī Programmēšana vs. Web attīstība: Kāda ir atšķirība?Varētu domāt, ka lietojumprogrammu programmētāji un tīmekļa izstrādātāji veic to pašu darbu, taču tas ir tālu no patiesības. Šeit ir galvenās atšķirības starp programmētājiem un tīmekļa izstrādātājiem. Lasīt vairāk
), programmētājs:- Ierakstiet dažus kods vienā vai vairākos failos.
- Sastādīt kods kaut kas dators var izpildīt.
- Pārbaude lai pārliecinātos, ka programma darbojas, kā paredzēts.
- Iesaiņojiet un izplatiet / izvietojiet programmatūru.

Šeit mūs uztrauc pirmā un otrā soļa kombinācija. Process sastādīšana programmatūra, vai arī pārveidot to no koda uz nullēm, kuras dators saprot (mašīnas valoda), ir sarežģīti. Mēs tajā neiedziļināsimies, taču ir noderīgi augstā līmenī saprast, kas notiek.
OS arhitektūra
Svarīgi saprast, ka operētājsistēma nav viena vienība. Drīzāk to veido programmatūras slāņi.
Operētājsistēmas kodoli
Operētājsistēmas kodols ir atbildīgs par saziņu ar datora aparatūru. Programmatūra paziņo savas komandas kodolam, kas savukārt aparatūrai piešķir komandas, lai (piemēram) nolasītu failu no cietā diska vai uzzīmētu logu uz ekrāna. Tas pamatā koordinē visu informāciju (neatkarīgi no tā, vai tā ir saglabātie dati, aprēķini vai lietotāja ievadītā informācija) starp aparatūru un dažādiem programmatūras elementiem. Kodols visu šo funkcionalitāti padara programmatūru pieejamu, izmantojot sistēmas zvani.

Katra operētājsistēmas kodola ieviesīs sistēmas izsaukumus atšķirīgi, ņemot vērā to, kuri no tiem ir pieejami, kā tos sauc vai kādas iespējas izvēlas. Tā rezultātā programmatūrai ir jāņem vērā sistēmas izsaukumi, kurus atbalsta katras mērķētās OS kodola. Sistēmas zvanam, kuru izmantojat, lai nosūtītu datus uz GPU operētājsistēmā Linux, var būt cits nosaukums, sniedzamās informācijas saraksts vai arī Windows abi. Šis precīzais zvans vispār pat var nebūt.
Sistēmas bibliotēkas
Daudzos gadījumos programmatūra neaicina tieši uz kodolu. Tā vietā tas aicina sistēmas bibliotēkas, vai pamatfunkciju kolekcijas. Bibliotēkas pastāv (piemēram), tāpēc katrai programmai, kas failus saglabā cietajā diskā, nav jāraksta funkcija, lai to izdarītu. Tā vietā vienkārši saites uz sistēmas bibliotēka un izmanto esošo funkciju. Lielisks piemērs ir GLibC bibliotēka Linux, tāpat kā .DLL faili Win32 API vai Mac / System / Library direktorija saturu Kā piekļūt OS X bibliotēkas mapei un kāpēc tas ir parocīgiLielāko daļu OS X bibliotēkas mapju vislabāk atstāt atsevišķi, taču ir noderīgi zināt savu ceļu Lietotāju bibliotēkā un ap to. Lasīt vairāk .

Sistēmas bibliotēkas darbojas kā sava veida tulks starp lietojumprogrammām un kodolu ikdienas uzdevumiem. Pieteikumi rada funkciju zvani šīm bibliotēkām, kuras apstrādā ļoti daudz zema līmeņa detaļu. Ērtības labad viņi var arī veikt sistēmas izsaukumus uz kodola. Kā jūs jau varējāt nojaust, tas nozīmē, ka šīs bibliotēkas ir izveidotas noteiktam kodolam, un tāpēc tās nevar izmantot operētājsistēmās ar dažādiem kodoliem.
Operētājsistēmas izpildes galvenes
Pēdējais universālās programmatūras bloķētājs ir operētājsistēmas izpildāmo failu formāts. OS sagaida, ka tās palaistie faili sekos noteiktam binārā faila formāts Viss, kas jums jāzina par failu formātiem un to īpašībāmMēs vārdu failu izmantojam aizvietojami: mūzika, attēls, izklājlapa, slaidrāde un tā tālāk. Bet kas tik un tā padara failu par failu? Mēģināsim izprast šo būtisko datortehnikas daļu. Lasīt vairāk . Piemēram, izpildāmā un savienojamā formāta (ELF) faili, kas darbojas tādās operētājsistēmās kā Linux un FreeBSD ir jāprecizē noteiktas faila īpašības noteiktos baitos, kā parādīts zemāk attēls.

lietojumprogrammu binārā saskarne (ABI) pierādīt, ka spēj, ir īpaša nozīme. Zvanu kombinācija, kas pieejama no procesora, kodola un sistēmas libērām, ABI ir līdzīga an lietojumprogrammu saskarne (API) tajā definēts, kā divas programmas sazinās viena ar otru. Bet API ir kaut kas, ko programmētāji (cilvēki) izmanto avota kodā, lai norādītu divus programmatūras veidus vajadzētu Runā viens ar otru. Pēc programmatūras sastādīšanas un palaišanas ABI ir tas, kas viņiem faktiski to ļauj. Katra operētājsistēma ievieš noteiktu ABI, kas var mainīties vai nemainīties vienas un tās pašas OS versijās.
Parasti operētājsistēmas ievieš pats savu ABI, ko nosaka procesora veida, kodola un jebkuru citu standarta bibliotēku kombinācija. Bet dažreiz OS ieviesīs vairāk nekā vienu. FreeBSD, piemēram, atbalsta Linux bināros failus, jo tas nodrošina Linux ABI kā papildinājumu FreeBSD kodolam (nevis Linux kodolam). Tas atšķiras no virtualizatiton programmas Kas ir virtuālā mašīna? Viss, kas jums jāzinaVirtuālās mašīnas ļauj pašreizējā datorā palaist citas operētājsistēmas. Lūk, kas jums būtu jāzina par viņiem. Lasīt vairāk piemēram, VMWare vai VirtualBox, kas izmanto programmatūru, lai simulētu visu mašīnu (aparatūru un visu). Rezultātā šāda veida ABI savietojamība ir ātrāka, taču daudz vairāk jācenšas saglabāt. Tāpēc tas ir reti Nesen Microsoft redzēja vērtību Ubuntu tagad ir pieejams Windows veikalāWindows Insiders tagad var lejupielādēt un instalēt Ubuntu operētājsistēmā Windows 10. Tas apvieno Linux un Windows necilvēcīgā savienībā, ko daži kādreiz ir iedomājušies, ka dzīvos pietiekami ilgi, lai būtu liecinieki. Lasīt vairāk to darot.
Izņēmums: interpretēta programmatūra
Balstoties uz iepriekš teikto, mēs esam uzzinājuši, ka izstrādātāji raksta programmatūru vienam un tikai vienam mērķa sistēmas tipam. Izņemot gadījumus, kad viņi to nedara. Ir daudzas lietojumprogrammas, kuras varat lejupielādēt un palaist operētājsistēmā Mac, pēc tam kopēt un palaist operētājsistēmā Windows, un varbūt pat atkal kopēt un palaist operētājsistēmā Linux bez problēmām. Kā tas ir iespējams?
Vai es līdz šim guļu?
Kā izrādās, pastāv kāda programmatūras kategorija, kas izskatās pēc virsmas, piemēram, ka tā “visur darbojas”. Jūs to varat lejupielādēt un palaist jebkurā atbalstīta platforma - atslēgas vārds tiek atbalstīts. Faktiski jūs lejupielādējat lietojumprogrammas avota kodu, bet citu programmu ( tulks) ir sava veida avota koda palaišana tieši reāllaikā. Tas ir pārāk vienkāršojums, tāpēc apskatīsim, kā tas darbojas ar pāris valodām.
Java
Kad Java pirmo reizi tika izlaista, tiek solīts (burtiski) “rakstīt vienreiz, palaist jebkur”. Ideja bija radīt izmantojot Java funkcijas, lai saglabātu failus, veiktu aprēķinus vai izveidotu programmu logs. Tad a Java Runtime Enviornment (JRE) katrai atbalstītajai datoru platformai darbosies kods un tiks tulkots vietējās OS funkcijās. Java triks ir tas, ka operētājsistēmā tas netiek palaists “tieši”. Tas darbojas JRE daļā, kuru sauc Java virtuālā mašīna un tieši tas darbojas operētājsistēmā.
Ievietojot šo papildu programmatūras slāni starp lietojumprogrammu un OS, Java ļauj jums koncentrēties uz funkciju kopumu, kas ir vienāds visās operētājsistēmās. Jūs sakāt Java, ko vēlaties darīt, un ļaujiet sistēmas JVM uztraukties par to, kā to faktiski izdarīt. Zemāk redzamajā attēlā parādīts, kā tas notiek JIDE programmatūras Java darbvirsmas lietojumprogrammu sistēma parāda to pašu lietojumprogrammu Mac (augšpusē), Windows (pa kreisi pa kreisi), “tīrā Java” (pa labi pa labi) un Linux (apakšā).

Java programmas precīzi “neveido” sevi reāllaikā. Java kompilators tos drīzāk padarīs par “baitkodiem”. Jūs varat domāt par bytecode kā uz pusceptu programmu. Kad izstrādātājs atbrīvo lietojumprogrammu, tā tiek apkopota, cik vien iespējams, nezinot, kurā operētājsistēmā tā darbosies. Kad jūs to faktiski palaidīsit, JVM to “cepīs visu pārējo”, lai tas ietilptu īpašās resursdatora OS funkcijās.
Python
Populāra interpretācijas valoda ir Python 5 iemesli, kāpēc Python programmēšana nav bezjēdzīgaPython - vai nu jums tas patīk, vai arī jūs to ienīst. Jūs pat varētu svārstīties no viena gala līdz otram kā svārsts. Neatkarīgi no tā, Python ir valoda, par kuru grūti izturēties divdomīgi. Lasīt vairāk . Palaižot Python skriptu, Python tulks pārveidos kodu instrukcijās OS. Tas var darboties arī līdzīgi Java: kad “importējat” kodu no savas lietojumprogrammas, tas ir apkopots, lai bytekodu izmantotu pirmo reizi. Tad tulks uzzinās, vai turpmākajos palaišanas gadījumos oriģinālais kods ir mainījies, kurā brīdī tas to atkārtoti kompilēs jaunam baitskodam.
Šīs “pēc pieprasījuma” darbības pamatīgs blakusprodukts ir tas, ka jūs varat izmantot tulku, lai interaktīvi izstrādātu savus skriptus. Komandrindā vienkārši ierakstot “python”, jūs sāksit tulku, un jūs varēsit palaist kodu un uzreiz redzēt rezultātus.

Tas nozīmē, ka izstrādātāji var spēlēties un pielāgot lietas tiešraidē. Pēc tam, kad koda rindiņa izdara to, ko viņi vēlas, nokopējiet un ielīmējiet tajā skripta fails (kas ir daudz efektīvāks nekā “koda sastādīšanas testa” cikls, kas jādara nesaprotamiem valodu programmētājiem).
Pat ja programmatūra ir tāda pati, tas, iespējams, nav
Diemžēl lietotājiem tehnoloģiju industrija nav izstrādājusi patiesi “universālu” formātu. Un tas, iespējams, nekad to nedarīs. Ieviešot šāda veida standartus, bieži tiek radīts “mazākā kopsaucēja” risinājums ar koncesijām, kuru mērķis ir ikviena apstiprinājums.
Ko tu domā? Vai jums drīzāk būtu universāli saderīga programmatūra, pat ja tas nozīmētu, ka tā nav tik laba? Vai arī jums ir labi ar jūsu izmantoto operētājsistēmu, un jums nav interese par citu platformu lietotnēm? Paziņojiet mums komentāros zemāk!
Attēlu kredīti: Masterchief_Productions / Shutterstock
Ārons ir ieguvis padziļinātu tehnoloģiju pieredzi kā biznesa analītiķis un projektu vadītājs piecpadsmit gadus un gandrīz tikpat ilgi (kopš Breezy Badger) ir bijis uzticīgs Ubuntu lietotājs. Viņa interesēs ietilpst atvērtā koda, maza biznesa lietojumprogrammas, Linux un Android integrācija un skaitļošana vienkārša teksta režīmā.