Систем извршавања

6
{{семинарски рад}} {{About|инфраструктури која је потребна за покретање програма|фазу извршења софтверских апликација|Рантајм}} {{Извршење програма}} '''Рантајм систем''', или''' систем извршавања''', примарно спроводи делове једног [[Модел извршавања|модела извршења]]. Ово је у супротности са животним циклусом система [[Рантајм|извршавања]], током које је он у употреби. Већина језика поседује неку врсту система извршавања, који контролише редослед по којем ће се назначени послови обављати у складу са условима језика који се користи. Након неколико година, значење термина "систем извршавања" се проширио и у њега се данас убрајају скоро сва динамички одређена понашања у току извршења операције. == Преглед == Сваки програмски језик посебно наводи одређени модел извршења, а много њих спроводи барем део тог модела кроз цео систем извршења. Дискутабилно, један од начина да се дефинише систем извршавања је следећи: свако понашање које није дело програма јесте понашање за које је одговоран систем извршавања. У ову дефиницију се убрајају операције као што су стављање параметара на стек пре коориштења одређене функције, начин рада диска за [[Улаз/Излаз|улаз/излаз]], начин рада везан за паралелно извршавање операција. По овој дефиницији, у бити сваки језик има систем извршавања, укључујући [[Превођени програмски језик|превођене језике]]; [[Интерпретирани програмски језик|интерпретиране језике]]; и [[Предметно-оријентисани језик|предметно оријентисне програмске језике]]. Чак и АПИ захтева самоодржавајуће моделе извршавања, као што [[ПОСИКС Теме|Pthreads]] поседује систем извршавања који спроводи начин рада извршног модела.

Upload: milos-nikolic

Post on 30-Jan-2016

224 views

Category:

Documents


0 download

DESCRIPTION

wiki

TRANSCRIPT

Page 1: Систем извршавања

{{семинарски рад}}

{{About|инфраструктури која је потребна за покретање програма|фазу извршења софтверских апликација|Рантајм}}

{{Извршење програма}}

'''Рантајм систем''', или''' систем извршавања''', примарно спроводи делове једног [[Модел извршавања|модела извршења]]. Ово је у супротности са животним циклусом система [[Рантајм|извршавања]], током које је он у употреби. Већина језика поседује неку врсту система извршавања, који контролише редослед по којем ће се назначени послови обављати у складу са условима језика који се користи. Након неколико година, значење термина "систем извршавања" се проширио и у њега се данас убрајају скоро сва динамички одређена понашања у току извршења операције.

== Преглед ==

Сваки програмски језик посебно наводи одређени модел извршења, а много њих спроводи барем део тог модела кроз цео систем извршења. Дискутабилно, један од начина да се дефинише систем извршавања је следећи: свако понашање које није дело програма јесте понашање за које је одговоран систем извршавања. У ову дефиницију се убрајају операције као што су стављање параметара на стек пре коориштења одређене функције, начин рада диска за [[Улаз/Излаз|улаз/излаз]], начин рада везан за паралелно извршавање операција.

По овој дефиницији, у бити сваки језик има систем извршавања, укључујући [[Превођени програмски језик|превођене језике]]; [[Интерпретирани програмски језик|интерпретиране језике]]; и [[Предметно-оријентисани језик|предметно оријентисне програмске језике]]. Чак и АПИ захтева самоодржавајуће моделе извршавања, као што [[ПОСИКС Теме|Pthreads]] поседује систем извршавања који спроводи начин рада извршног модела.

Постоје многи примери расправа на тему систтема извршавања.<ref>{{Cite web|url = http://people.cs.clemson.edu/~jsorber/papers/sorber07sensys.pdf|title = CEon: a language and runtime system for perpetual systems|date = 2007|last=Sorber|first=Jacob|publisher = ACM|display-authors = etal}}</ref><ref>{{Cite paper|id = {{citeseerx|10.1.1.40.5356}}|title = Implementing a parallel C++ runtime system for scalable parallel systems|date = 1993|last=Bodin|first=François|publisher = IEEE|display-authors = etal}}</ref><ref>{{Cite web|url = http://dl.acm.org/citation.cfm?id=209958|title = Cilk: An efficient multithreaded runtime system|date = 1995|author = Blumofe, Robert D.|publisher = ACM|display-authors = etal}}</ref>

Page 2: Систем извршавања

Као додатак начину рада извршног модела, извршни систем такође употребљава услуге као што су провера куцања , [[Дебаговање|отклањање грешака]], [[Стварање кода (преводилац)|стварање кода]] и оптимизација. <ref>{{Cite web|url = https://users-cs.au.dk/hosc/local/LaSC-3-4-pp. 343-380.pdf|title = A Runtime System|date = May 1989|accessdate = 2013-12-30|last=Appel|first=Andrew W.|publisher = Princeton University|format = PDF}}</ref>

Систем извршавања је такође и мрежни пролаз помоћу којег су програми у употреби у интеракцији са '''окружењем извршног система''', који не садржи само установљене вредности које су доступне током извршавања програма, већ и активна језгра која су, помоћу тастатуре у интеракцији са разним врстама извршитеља, као што су нпр, дискови и људи, помоћу тастатуре. На пример, [[Променљива у окружењу|променљиве у окружењу]] су учесници многих оперативних система, и оне су део окружења система извршења; програм који је тренутно у употреби може да их користи кроз систем извршења. Исто тако, уређаји као што је ДВД резач су активна тела са којима програм може да се повезује преко система извршења.

== Примери ==

Једноставан пример основног система извршења, систем извршења [[C (програмски језик)|програмског језика Ц]] је посебан сет инструкција убачен у извршне слике помоћу програмског преводиоца. Између осталог, ове инструкције организују податке који улазе у процесор, стварају места за локалне променљиве и копирају параметре надолазећих функција у стек. Често нема одређених критеријума по којима се одлучује који начин рада програмског језика се сматра делом система извршења, а који начин рада је "преведен". У овом случају, разлог зашто је начин рада Ц стека део система извршења, а не део кључне речи језика, је тај што је систематичан, одржава стање свих стекова у току извршавања пограма. Овај систематични начин рада имплементира [[Модел извршавања|извршни модел]] језика, супротно од имплементирања [[Семантика (рачунарска наука)|семантике]] одређених кључних речи које су директно преведене у код који рачуна резултат.

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

Page 3: Систем извршавања

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

== Додатне карактеристике ==

Неки од преводиоца програмског језика имају интерфејс који омогућава директну интеракцију кода апликације са системом извршења. Пример за то је <code>Thread</code> класа [[Јава (програмски језик)|Јава програмског језика]], која коду којег покреће дозвољава операције као што су заустављање и покретање другог thread-а. Наравно, основни аспекти начина рада програмског језика као што су [[Распоређивање (рачунарство)|распоређивање задатака]] и [[Ресурс (рачунарство)|управљање ресурсима]] нису могући у овом случају.

Захтевнији начин рада имплементиран од стране система извршења може да садржи опције као што је писање текста на екрану или остваривање интернет конекције. Чест је случај да и [[Оперативни систем|оперативни системи]] омогућавају овакав начин рада ,а када је то доступно, систем извршавања се имплементира као [[апстрактни слој]] који преводи позивање система извршавања у позивање оперативног система. Ово сакрива комплексност варијација услуга које нуде различити оперативни системи. Ово такође подразумева да главну компоненту оперативног система можемо гледати и као врсту извршног система и да њен сет команди због којих ОС ради утиче и на рад рунтиме система.

До неке границе систем извршавања може да се понаша као [[П код машина|машина за прогрмско кодирање]] или [[виртуелна машина]], која чак може и да сакрије [[скуп инструкција]] процесора. Овај приступ користе [[Интерпретирани програмски језик|интерпретирани језици]] као што је [[АWК]], или неки језици као [[Јава (програмски језик)|Јава]], који су намењени да се убацују у неке машнски независне псеудокодове ([[Бајткод|бајткодове]]). Овакво решење увелико поједностављује задатак да се језик имплементира и адаптира на одређене машине, и да повећава ефикасност софистициранијих карактеристика језика као што је [[Рефлексија (програмирање)|рефлексија]]. То такође омогућава истом програму да управља било којом машином без додатног прерађивања, ова карактеристика која је постала веома битна након ширења [[Светска мрежа|Интернета]]. Како би убрзали извршење операција, неке извршне системе карактеришу и [[Just-in-time компилација|just-in-time компилације]] машинских кодова.

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

Page 4: Систем извршавања

извршења, са самим процесором- или заправо његовим унутрашњим дигиталним логичким структурама које одређују ствари као што су програмски бројач и распоред инструкција- као најнижим нивоом система извршавања.

Модерни аспект система извршавања јесте паралелно извршење операција, чији је начин рада показао [[ПОСИКС Теме|Pthreads]] и паралелна секција израде у [[OpenMP]]-у. Извршни систем са таквим начином рада може бити модуларизован према [[Прото-извршавање|прото-извршном]] прступу.

== Историја ==

Значајни ранији примери система извршавања су преводиоци за [[Бејсик|БЕЈСИК]] и [[Lisp|Лисп]]. Ова окружења такође укључују и [[Скупљање смећа (рачунарство)|сакупљаче смећа]]. [[Форт (програмски језик)|Форт]] је рани пример језика који је дизајниран да буде израђен у псеудокоду; његов систем извршења је била виртуелна машина која преводи тај псеудокод. Још један популаран, условно теорецки, пример је [[МИКС]] рачунар [[Donald Knut]].

У [[C (програмски језик)|Ц]] и каснијим језицима који су подржали динамичко додељивање меморије, систем извршења такође укључује и библиотеку која управља базеном меморије тог програма.

У [[Објектно-оријентисано програмирање|објектно-оријентисаним програмским језицима]], систем извршења је често одговоран за динамичку проверу типа и за решавање референци метода.

== Види још ==

{{wiktionary|run-time}}

* [[Рантајм]]

* [[Модел извршавања]]

== Референце ==

{{reflist}}

Page 5: Систем извршавања

[[Категорија:Програмирање]]

[[Категорија:Систем извршавања]]