Реклама
Управо сте преузели ажурирање у пакету са значајкама у своју омиљену апликацију отвореног кода. Све добро функционише, а ви га користите на својим другим уређајима - тако да је време да их откријете и њима.
Осим што ваш сјајни нови Линук лаптоп није компатибилан са вашим Виндовс инсталационим пакетом. Шта кажете на Андроид таблет? иПхоне? ПС4? Зашто не можете једноставно узети тај комад софтвера и користити га где год желите? Истражимо неке различите баријере за сан „купи једном, трчи било где“.
Развој софтвера и архитектура ОС-а
Разумевање зашто софтвер не делује у оперативним системима захтева мало (само мало, обећајем) знања о томе како се софтвер прави.
Процес развоја софтвера
У врло основном току развоја софтвера за радну површину, сервер и мобилни телефон (тј. не веб Программинг вс. Веб развој: у чему је разлика?Можда мислите да програмери апликација и веб програмери раде исти посао, али то је далеко од истине. Ево кључних разлика између програмера и веб програмера. Опширније ), програмер ће:
- Откуцајте мало код у једну или више датотека.
- Саставити код у нешто што рачунар може да изврши.
- Тест како би се уверили да програм ради како се очекује.
- Паковање и дистрибуција / имплементација софтвер.

Ту се тиче нас први и други корак. Процес компајлирање софтвер или његово претварање из кода у оне и нуле које рачунар разуме (машински језик) је сложено. Нећемо ући у то детаљно, али је корисно да на високом нивоу схватимо шта се дешава.
ОС Арцхитецтуре
Једна важна тачка коју треба схватити је да оперативни систем није једна целина. Уместо тога, састоји се од слојева софтвера.
Кернел оперативног система
Оперативни систем кернел одговоран је за комуникацију са хардвером рачунара. Софтвер своје команде шаље кернелу, који заузврат издаје наредбе хардверу (на пример) за читање датотеке са тврдог диска или црта прозор на екрану. У основи координира све информације (било да су то сачувани подаци, прорачуни или унос корисника) између хардвера и разних делова софтвера. Кернел омогућава сву ову функционалност доступном софтверу путем системски позиви.

Сва језгра оперативног система ће различито имплементирати системске позиве, у смислу којих су доступни, како се зову или које опције узимају. Као резултат, софтвер мора узети у обзир системске позиве које подржава језгро сваког ОС-а на који циља. Системски позив који користите за слање података ГПУ-у у Линуку може имати различито име, листу информација које требате да наведете или обоје у Виндовс-у. Тачан позив можда уопште и не буде тамо.
Системске библиотеке
У многим случајевима софтвер се не позива директно на кернел. Уместо тога, позива на системске библиотекеили збирке основних функција. Библиотеке постоје тако (на пример) да сваки програм који спрема датотеке на чврсти диск не треба да напише функцију да би то учинио. Уместо тога, једноставно линкови ка системску библиотеку и користи постојећу функцију. ГЛибЦ библиотека за Линук је одличан пример, као и .ДЛЛ датотеке у Вин32 АПИ-ју или садржај директоријума Мац / Систем / Либрари Како приступити фасцикли библиотеке ОС Кс и зашто је то згодноВећина фасцикли ОС Кс библиотеке је најбоље оставити саме, али корисно је знати свој пут у и око Корисничке библиотеке. Опширније .

Системске библиотеке дјелују као својеврсни преводилац између апликација и кернела за рутинске задатке. Апликације чине позиви функција у ове библиотеке, које обрађују пуно детаља ниског нивоа. Такође могу упутити системске позиве у кернел ради лакшег померања. Као што сте можда и нагађали, то значи да су ове библиотеке написане за одређено језгро и зато их није могуће користити у оперативним системима са различитим језграма.
Заглавља извршења оперативног система
Последња препрека универзалном софтверу је формат извршних датотека за оперативне системе. ОС очекује да датотеке које покрећу прате одређену бинарни формат датотеке Све што требате знати о форматима датотека и њиховим својствимаДатотеку речи користимо заменљиво: музика, слика, табела, презентација итд. Али шта фајл уопште чини "фајлом"? Покушајмо да разумемо овај основни део рачунања. Опширније . На пример, извршни и повезиви формат (ЕЛФ) датотеке које раде на оперативним системима као што су Линук и ФрееБСД морају одредити одређена својства датотеке у одређеним бајтовима, као што је приказано у доњем тексту слика.

Тхе бинарни интерфејс апликације (АБИ) показана способност је од посебног значаја. Комбинација позива доступних из процесора, кернела и системских библиотека, АБИ је слична ан интерфејс за програмирање (АПИ) јер дефинише како два програма међусобно комуницирају. Али АПИ је нешто што програмери (људи) користе у изворном коду да назначе два дела софтвера требало би разговарају једни са другима. АБИ је оно што им заправо омогућава да се то уради након што се софтвер састави и покрене. Сваки оперативни систем имплементира одређени АБИ који се може или не мора мењати између верзија истог оперативног система.
Опћенито, оперативни системи имплементирају свој АБИ, одређен комбинацијом врсте процесора, кернела и било које стандардне системске библиотеке. Али понекад ОС мора имплементирати више од једног. ФрееБСД има подршку за Линук бинарне датотеке, на пример, јер обезбеђује Линук АБИ као додатак за ФрееБСД кернел (уместо Линук кернера). Ово је другачије од виртуализатитон програми Шта је виртуелна машина? Све што треба да знатеВиртуелне машине омогућавају вам покретање других оперативних система на вашем тренутном рачунару. Ево шта бисте требали знати о њима. Опширније као што су ВМВаре или ВиртуалБок, који користе софтвер да симулирају читаву машину (хардвер и све). Као резултат тога, ова врста компатибилности са АБИ је бржа, али много више напора за одржавање. То је разлог зашто је то ретко Мицрософт је недавно видео вредност Убунту је сада доступан у Виндовс Сторе-уВиндовс Инсајдери сада могу да преузму и инсталирају Убунту на Виндовс 10. Ово повезује Линук и Виндовс у нечасну заједницу које су мало кога и замислили да ће живети довољно дуго да би били сведоци. Опширније у томе.
Изузетак: Интерпретирани софтвер
На основу горе наведеног научили смо да програмери пишу софтвер за један и само један тип циљаног система. Осим кад их нема. Постоји много апликација које можете преузети и покренути на Мац-у, затим копирати и покренути у Виндовс-у, а можда чак и поново копирати и покренути на Линуку без икаквих проблема. Како је то могуће?
Да ли сам лежао до сада?
Како се испоставило, постоји категорија софтвера који на површини изгледа као да само „тече свуда“. Можете је преузети и покренути на било ком мјесту подржана платформа - кључна реч која се „подржава“. У ствари, преузимате изворни код за апликацију, док другу апликацију (тхе преводилац) је врста извођења изворног кода директно у реалном времену. Ово је нешто превише поједностављења, па погледајмо како тачно функционише са неколико језика.
Јава
Када се Јава први пут појавила, обећало се да је (буквално) „написао једном, трчи било где“. Идеја је била да се створи апликације користећи Јава функције за чување датотека, израчуне или креирање апликације прозор. Онда Јава Рунтиме Енвиронмент (ЈРЕ) за сваку подржану рачунарску платформу покренуо би се код и превео их у изворне ОС функције. Трик код Јаве је, дакле, да се он не покреће „директно“ на оперативном систему. Ради у делу ЈРЕ који се зове тхе тхе Јава Виртуал Мацхине и то је оно што ради на оперативном систему.
Уметањем овог додатног софтверског слоја између апликације и ОС, Јава вам омогућава да се фокусирате на скуп функција које су исте у оперативним системима. Кажете Јави шта желите да урадите и препустите ЈВМ-у вашем систему да брине о томе како да то заиста учините. Доња слика приказује ово на делу, где Јава-Десктоп оквир за апликацију ЈИДЕ софтвера приказује исту апликацију за Мац (горе), Виндовс (средња лева), „чиста Јава“ (средња десна) и Линук (доња).

Јава програми се тачно не „компајлирају“ у стварном времену. Уместо тога, Јава преводилац ће их претворити у „бајт код“. Бајт код можете сматрати напола печеним програмом. Када програмер изда апликацију, она је састављена онолико колико може, а да не зна на ком ОС ће се покренути. Када га заправо покренете, ЈВМ ће га „испећи остатак пута“ како би одговарао функцијама домаћин оперативног система.
Питхон
Популарни интерпретирани језик је Питхон 5 разлога зашто Питхон програмирање није бескорисноПитхон - или га волите или мрзите. Можете се чак љуљати с једног краја на други попут клатна. Без обзира на то, Питхон је језик о којем је тешко бити амбивалентан. Опширније . Када покренете скрипту Питхон, тумач Питхон ће преводити код у упутства за ОС. Такође може функционисати слично као на Јави: када увезете код изван апликације, он се саставља да би бајт кодовао први пут када се покрене. Тада ће преводилац знати да ли је приликом следећих извођења оригинални код промењен, у том тренутку ће га поново компилирати у нови бајт код.
Слатки нуспроизвод овог покретања на захтев је да интерпретатор можете користити за интерактивни развој својих скрипти. Једноставним уписивањем „питхона“ у командну линију покренућете преводилац и можете покренути код и одмах видети резултате.

То значи да програмери могу да се играју и подешавају ствари „уживо“. Затим, након што линија кода уради оно што они желе, копирајте је и залепите у њу датотека скрипте (која је много ефикаснија од циклуса „тестирање коде-тестирање“ који програмери језика који не тумаче морају да ураде).
Чак и када је софтвер исти, то вероватно није
Нажалост за кориснике, технолошка индустрија није развила заиста „универзални“ формат. А то можда никад неће учинити. Увођење ових врста стандарда често резултира решењем „најмање заједничког називника“, са уступцима у интересу добијања одобрења свих.
Шта мислиш? Да ли бисте радије имали универзално компатибилан софтвер, чак и ако је то значило да није тако добар? Или сте у реду с оперативним системом који користите и немате интереса за апликације са других платформи? Јавите нам испод у коментарима!
Имаге Цредитс: Мастерцхиеф_Продуцтионс / Схуттерстоцк
Аарон је био технолошки висок као пословни аналитичар и руководилац пројеката већ петнаестак година и био је веран Убунту корисник скоро као дуго (од Бреези Бадгер). Његова интересовања укључују отворени извор, мале пословне апликације, интеграцију Линука и Андроид-а и рачунарство у обичном текстуалном режиму.