Revision 4293628 of "Procesas (informatika)" on ltwiki{{otheruses|Procesas|}}
'''Procesas''' (informatika) ({{en|process}}) - iš anksto apibrėžta konkrečios [[Programa (kompiuterio)|programos]] arba kokios nors jos dalies [[vykdymas|vykdymo]] metu įvykstančių įvykių seka.<ref name=LST2382>LST ISO 2382-1: 1996. Informacijos technologija. Terminai ir apibrėžimai. 1-oji dalis. Pagrindiniai terminai. Lietuvos standartizacijos departamentas. 1996. 33 ps.</ref>
Pati [[kompiuteris|kompiuterio]] programa yra tiktai statinis instrukcijų rinkinys, tuo tarpu procesas yra aktualus šių instrukcijų vykdymas. Keletas procesų gali būti siejami su ta pačia programa. Pvz., kelių langų atidarymas toje pačioje programoje paprastai reiškia kelių skirtingų procesų vykdymą. Kompiuterijoje ''procesus'' formaliai apibrėžia [[operacinė sistema]], juos ji vykdo ir skirtingose operacinėse sistemose tam tikromis detalėmis gali skirtis.
Vienas atskiras kompiuterio [[procesorius]] vienu metu vykdo tik vieną instrukciją (paprastą arba sudėtinę), jas visas vykdydamas vieną po kitos. Norint leisti naudotojui vykdyti keletą programų tuo pačiu metu (kai procesorius yra priverstas laukti tam tikrų [[resursas|resursų]]), vieno procesoriaus kompiuterinės sistemos paprastai naudoja [[laiko paskirstymas|laiko paskirstymą]]. Toks laiko paskirstymas leidžia laikas nuo laiko persijungti į kelių procesų vykdymą juos vis pratęsiant. Dažniausiai tai vyksta labai greitai, todėl atrodo, kad keli procesai vykdomi „vienu metu“. (Tai yra vadinama [[vienalaikiškumas|vienalaikiškumu]] arba [[multiprogramavimas|multiprogramavimu]]) Naudojant daugiau nei vieną kompiuterio procesorių, atliekamas '''tikras''' vienalaikis skirtingų procesų instrukcijų apdorojimas, nors ir šiuo atveju paprastai taip pat yra naudojamas laiko paskirstymas, kad būtų užtikrintas didesnio procesų kiekio vykdomų „vienu metu“ kiekis nei turimų procesorių kiekis.
Dėl saugumo ir patikimumo daugelis šiuolaikinių [[operacinė sistema|operacinių sistemų]] draudžia tiesioginį ryšį tarp „nepriklausomų“ procesų ir tik leidžią griežtai apibrėžtą ir kontroliuojamą tokių procesų tarpusavio ryšį.
== Po-procesai ir daugiasrautis režimas ==
{{main|Daugiasrautis režimas}}
Procesai gali būti padalinti į „dukterinius“ po-prococesus arba [[srautas|srautus]] vykdomus lygiagrečiai, kurių vykdymo metu apdorojamos skirtingos instrukcijos ir naudojami tie patys [[resursas|resursai]] bei [[duomenys]] (arba, kitu atveju, tos pačios instrukcijos naudojant logiškai skirtingus resursus ir duomenis).
Daugiasrautis apdorojimas leidžia apdoroti įvairius „įvykius“ įvykusius tam tikra tvarka ir kurie turi būti apdoroti tam tikra galbūt kita tvarka nei jie įvyko, pvz., priklausomai nuo reikalingo atsakymo laiko. Daugiasrautiškumas leidžia laikinai sustabdyti tam tikrų įvykių apdorojimą tam, kad būtų apdoroti aukštesnį prioritetą turintys įvykiai.
Daugiasrautis apdorojimas leidžia [[serveris|serveriams]], tokiems kaip [[interneto serveris|interneto serveriai]], apdoroti vartotojų užklausas lygiagrečiai.
Procesai yra dažnai vadinami užduotimis įterptosiose [[Operacinė_sistema|operacinėse sistemose]]. Proceso reikšmė yra 'tas kas užima šiek tiek laiko', palygintus su [[Atmintis_(kompiuteris)|atminties reikšme]] 'užima vietos'. (Istoriškai terminai 'užduotis' ir 'procesai' buvo naudojami tarpusavį, tačiau terminas 'užduotis' pradeda nykti iš kompiuterio terminų žodyno.)
Anksčia naudoti aprašymai galioja procesams valdomiems [[Operacinė_sistema|operacinės sistemos]], ir apibūdintiems procesams [[Procesų_algebra|Procesų Algebroje]].
Jeigu procesas užklausia ko nors, dėl ko jis turi palaukti, procesas yra užblokuojamas. Kai proceso būsena yra užblokuota, atitinkamai persijungiama į diską, bet visa tai yra atvira [[Virtualioji_atmintis|virtualios atminties]] sistemoje, kur tam tikri atminties reikšmių blokai gali būti diske, o ne [[Atmintis (kompiuteris)|pagrindinėje atmintyje]]. Pastaba: Nenaudojamos aktyvių procesų/užduočių dalys(vykdomos programos) atitinkamai persikelia į diską. ''Visos vykdomos programos dalys ir jos duomenys neprivalo būti fizinėje [[Atmintis (kompiuteris)|atmintinėje]], kad susietas procesas būtų vykdomas/aktyvus.''
______________________
*Užduotys ir procesai priklauso tai pačiai esybei. Nors ir jie turi skirtingas terminologines istorijas, jie yra naudojami kaip sinonimai. Šiandien labiau priimtinas terminas yra užduotis.
== Kontekstinė jungtis (context switch) ==
Konteksto perjungimas padeda išsaugoti ir atkurti procesui, jo konteksto ir [[procesorius|procesoriaus]] būseną, kad vykdymas galėtų būti tęsiamas nuo to pačio taško vėliau. Tai leidžia keliems [[Procesas_(informatika)|procesams]] dalintis vienu (ar keletu) procesorių. Konteksto perjungimas yra viena iš esminių [[:en:Computer_multitasking|daugiaužduotinėje]] [[OS|operacinėje sistemoje]] savybių. Konteksto perjungimas dažniausiai imlus resursams, ir jo optimizavimas viena iš pagrindinių užduočių [[OS|operacinių sistemų]] kūrėjams. Konteksto perjungimas gali reikšti registro konteksto perjungimą, užduoties konteksto perjungimą, [[gija|gijos]] (angl. [[:en:Thread_(computer_science)|thread]]) arba [[Procesas_(informatika)|proceso]] konteksto perjungimą. Kas tai yra kontekstas, apsprendžia [[CPU|procesorius]] ir [[OS|operacinė sistema]]. Procesų perjungimas užima tam tikrą laiką, reikia atlikti įvairius darbus - išsaugoti ir užkrauti registrus ir atminties žemėlapius, atnaujinti įvairias lenteles, sąrašus, ir t. t.
== Kreipinių dėklas ==
[[Informacinės technologijos | Kompiuterių moksle]] '''kreipinių''' [[dėklo]] '''rinkinys''' ({{En|Call stack}}) yra duomenų rinkinio struktūra, kuri saugo informaciją apie aktyvias [[paprogrames]] [[kompiuterinėje programoje]]. Šis rinkinys taip pat žinomas, kaip '''įvykdymo''', '''kontrolės''', '''funkcijos''' arba '''vykdymo laiko''' („run-time“) dėklas ir dažnai yra sutrumpintas tiesiog iki žodžio dėklas („the stack“). Kreipinių dėklo techninė priežiūra yra svarbi, kad tinkamai funkcionuotų dauguma [[programinė įranga | programinės įrangos]] duomenų, detalės paprastai yra skaidrios [[aukšto lygio programavimo kalbose]].
Kreipinių dėklo rinkinys yra naudojamas keliems susijusiems tikslams, bet pagrindinė priežastis viena yra stebėti iš taško, į kurį kiekviena aktyvi paprogramė turėtų grįžti, kontrolę, kai ji baigiama vykdyti. (Aktyvios paprogramės yra tos, kurios buvo iššauktos, bet dar nebuvo baigtos vykdyti grąžinant). Jeigu, pavyzdžiui, paprogramė ''DrawSquare'' iškviečia paprogramę ''DrawLine'' iš keturių skirtingų vietų, ''DrawLine'' kodas turi žinoti kelią, kur grįžti. Tai paprastai daroma kodo pagalba kiekvieno iškvietimo metu, viduje įdedant ''DrawSquar'' [[instrukcijos]] [[adresą]], po tam tikro iškvietimo [[sakinys|sakinio]] („return address“) ant kreipinių dėklo.
==Vaiko procesas==
Vaiko procesas yra kompiuterio procesas, sukurtas kito proceso ([[Tėvinis_procesas|tėvinio proceso]]).
Vaiko procesas daugumą atributų paveldi iš tėvinio proceso. [[UNIX]], [[Linux]] atveju dažniausiai vaiko procesas
yra sukuriamas kaip [[Tėvinis_procesas|tėvinio proceso]] kopija, naudojant ''fork'' komandą, tačiau naudodamas ''exec'' komandą
vaiko procesas gali pakeisti save kita programa.
Kiekvienas procesas gali sukurti daug vaiko procesų, bet procesas gali turėti tik vieną tėvinį procesą. Jeigu procesas neturi tėvinio proceso, tai dažniausiai reiškia, kad jis buvo sukurtas branduolio. Kai kuriose sistemose, pvz., [[UNIX]] šeimos sistemose, tokiose kaip [[Linux]], pirmieji procesai (vadinami pirminio paleidimo, angl. init) yra sukuriami branduolio sistemos užkrovimo metu ir niekada nenutraukiam; kitų procesai be tėvų dažnai vykdo [[daemon]] užduotis vartotojo aplinkoje. Procesas gali likti be [[Tėvinis_procesas|tėvinio proceso]], jeigu jo [[Tėvinis_procesas|tėvinio procesas]] baigia darbą ir palieka [[Pamestas_procesas|pamestą procesą]], tačiau tokiu atveju jo [[Tėvinis_procesas|tėvinio procesu]] tampa init.
== Planavimo (indeksas) ==
'''Planavimas''' yra pagrindinė sąvoka [[daugiaprogramių kompiuterių režime]], [[skyrime, ]] apdorojantis [[operacinę sistemą]] ir skubiai atliekamus operacinius sistemos projektus. '''Planavimas''' remiasi būdu, kurio procesas yra paskirtas vykdyti turimą [[CPU]], nes jie daug geriau veikia kai ten yra [[CPU]]. Ši užduotis yra atlikta programinių įrangų, žinomų kaip sąrašo ir dispečerio.
Sąrašas yra susijęs daugiausia su:
* [[CPU]] – kad sulaikytų CPU tiek užimtą, kiek įmanoma.
* [[Pralaidumas]] – skaičius procesų, kurie baigia savo vykdymą per laiko vienetą.
* Laikotarpis – visas laikas tarp proceso pateikimo ir jo baigimo.
* Laukimo laikas - kai laiko procesas jau laukia [[pasirengęs eilėje]].
* [[Reakcijos laikas]] - tai trunka nuo tada, kai prašymas buvo pateiktas iki tada kai buvo pradėtas vykdyti pirmas atsakymas.
* Sąžiningumas - Vienodas CPU laikas kiekvienam pokalbiui.
[[Realių laikų]] aplinkose, pavyzdžiui, [[mobiliųjų prietaisų]], [[automatinio valdymo]] pramonėje (pavyzdžiui, [[robotų]]), sąrašuose taip pat turi užtikrinti, kad procesai atitinka [[terminus]], tai yra labai svarbu stabiliai palaikymo sistemai. Numatytos užduotys yra siunčiamos į mobiliuosius įrenginius ir [[tvarkomos]] per kitus administracinius galus.
== Tėvinis procesas ==
Tėvinis procesas yra kompiuterinis procesas, kuris sukūrė vieną ar daugiau vaiko procesų.
Operacinėje sistemoje [[UNIX]], kiekvienas procesas išskyrus nulinį procesą (kintamasis) yra sukuriamas, kai kitas procesas atlieka šakutės sistemos paklausimą (angl. [[:en:Fork_(operating_system)|fork]] [[:en:System_call|system call]]). Procesas, kuris taiko šakutės procesą yra tėvinis procesas, o naujai sukurtas procesas yra vaiko procesas. Kiekvienas procesas (išskyrus nulinį procesą) turi tik vieną tėvinį procesą, bet gali turėti daug vaikų procesų.
Branduolys (angl. [[Branduolys_(OS)|kernel]]) identifikuoja kiekvieną procesą prie savo proceso identifikuotojo (PID) (angl. [[:en:Process_identifier|process identifier]]). Nulinis procesas yra ypatingas procesas, kuris yra sukuriamas kai sistema užsikrauna; po vaiko proceso išsišakojimo (1 procesas), nulinis procesas tampa kintamuoju procesu. Pirmasis procesas, žinomas kaip pirminis (angl. [[:en:Init|init]]), yra protėvis kiekvieno kito proceso sistemoje.
Kai vaiko procesas baigia darbą ir kviesdamas sistemos pabaigos paklausimą (angl. [[:en:Exit_(operating_system)|exit]][[:en:System_call|system call]]), sukeldamas lemtingą pabaigos klaidą (angl. [[:en:Fatal_error|fatal execution error]]), ar gaudamas darbo pabaigos signalą, išėjimo padėtis yra grąžinama į operacinę sistemą. Tėvinis procesas yra informuojamas apie jo vaiko proceso nutraukimą per SIGCHLD (SIGCHILD – vaiko proceso signalas) signalą. Tėvinis procesas tipiškai atkurs jo vaiko proceso išėjimo padėtį, kviesdamas laukti sistemos paklausimo. Tačiau, jei tėvinis procesas nedaro taip, vaiko procesas tampa mirusiu procesu (angl. [[:en:Zombie_process|zombie process]]).
== Procesų bendradarbiavimas ==
Kai [[procesas|procesai]] komunikuoja tarpusavyje vienas su kitu - tai vadinama "inter-process communication" ([[IPC]]) – bendradarbiavimu. Procesai dažnai sąveikauja tarpusavyje, pavyzdžiui, vykdant užduotį, pirmojo proceso rezultatas turėtų būti perduotas antrajam, ir taip toliau. Siekiama, kad tai būtų atliekama tvarkingai ir struktūriškai, o ne naudojant pertraukimus.
Kelių procesų bendradarbiavimas įmanomas ir jiems veikiant ant skirtingų kompiuterių. Tačiau kadangi procesai gali veikti skirtingose operacinėse sistemose ([[OS]]), dažnai reikalingi tarpininkai (vadinami [[protokolas|protokolais]]), suteikiantys galimybę procesams sąveikauti.
== Istorija ==
1960-ųjų pradžioje [[kompiuteris|kompiuterių]] valdymo [[programinė įranga]] patobulėjo, t. y. iš monitoriaus programinės įrangos, pvz., [[IBSYS]], tapo vykdomosios kontrolės programine įranga. Kompiuteriai tapo greitesni, tačiau vis tiek kompiuterio darbo laikas nebuvo pilnai išnaudojamas. To pasekoje atsirado multiprogramavimas.
Multiprogramavimas reiškia, kad kelios programos veikia tuo pačiu metu. Iš pradžių jos veikė atskiruose [[procesorius|procesoriuose]] ([[uniprocessor]]) naudodami bendrus išteklius. Vėliau atsirado daugiaprocesis veikimas, kuris yra bendresnė [[multiprogramavimo]] forma.
Programa, tai instrukcijų seka procesoriui. Vienas procesorius gali vykdyti tik vieną instrukciją vienu metu. Todėl neįmanoma vykdyti daugiau programų tuo pat metu. Taip pat programai gali reikėti kai kurių išteklių (įvesties), kuris ilgai užtrunka. Jeigu programa pradeda kažkokią lėtą operaciją, pvz., spausdina, ji tuo metu nenaudoja procesoriaus, bet laiko jį užimtą. Kad efektyviau išnaudoti procesorių, programa ''lėtos operacijos'' metu sustabdoma, ir procesorių gali naudoti kita programa. Tuo tarpu vartotojui susidaro įspūdis, kad programos buvo vykdomos tuo pačiu metu.
Netrukus po to, sąvoka „programa“ buvo išplėtota į „vykdančiosios programos sąvoką ir jos kontekstą“, t. y. pasiūlyta [[procesas|proceso]] koncepcija. Tai tapo būtina pradėjus naudoti [[paprogramė|paprogrames]].
[[gija|Gijos]] atsirado šiek tiek vėliau. Atsiradus laiko paskirstymui, [[kompiuterių tinklas|kompiuterių tinklams]], daugialypiams centriniams procesoriams, bendrosios atminties kompiuteriais ir pan., multiprogramavimą pakeitė [[daugiaprogramis]] modelis, po to [[daugiaprocesis]], ir galiausiai [[gija|multigijos]].
== Procesų būsenos ==
[[Operacinė sistema|Operacinės sistemos]] branduolys “[[:en:Kernel_(computing)|kernel]]” leidžia atlikti kelias užduotis vienu metu. Šis procesas turi tam tikras būsenas. Šių būsenų vardai yra nestandartizuoti, bet jie yra panašios paskirties.
# Pirmasis procesas yra „sukūrimas“ – jis yra leidžiamas iš antrinės atminties įrenginių ([[Kietasis diskas|standžiojo disko]], [[CD-ROM įrenginys|CD-ROM]] ir kt.) į [[Atmintis (kompiuteris)|operatyvinę atmintį]]. Po šio proceso jis yra pristabdomas – įgauna "laukimo" būseną.
# Kol procesas yra „laukimo“ būsenoje, jis laukia kol gaus signalą ir bus paleistas į procesorių. Procesas tampa „vykdomas“, kai procesorius ima vykdyti šią komanda.
# Jei procesas turi laukti (vartotojo įvesties ar kol atsidarys failas), procesas įgauna būseną - „blokuojamas“. Proceso būsena pakeičiama atgal į „laukimo“, kai šis procesas yra baigiamas.
# Kai procesas baigiamas arba operacinė sistema nutraukia jo darbą, jis yra nebereikalingas. Todėl jis iškart yra pašalinamas arba įgauna būseną „sunaikintas“. Kai šis procesas įgauna būseną „sunaikintas“, jis tiesiog laukia, kol bus pašalintas iš [[Atmintis (kompiuteris)|operatyvinės atminties]].
== Taip pat skaitykite ==
* [[Pamestas procesas]]
* [[Tėvinis procesas]]
* [[Operacinė sistema]]
== Nuorodos ==
{{reflist|1}}
{{vikižodynas|no=t|procesas}}
{{inf-stub}}
[[Kategorija:Informatika]]
[[ar:معالجة (حاسوب)]]
[[bg:Процес (информатика)]]
[[ca:Procés informàtic]]
[[cs:Proces (program)]]
[[de:Prozess (Informatik)]]
[[el:Διεργασία (υπολογιστές)]]
[[en:Process (computing)]]
[[es:Proceso (informática)]]
[[eu:Prozesu (informatika)]]
[[fa:فرایند (رایانه)]]
[[fr:Processus (informatique)]]
[[he:תהליך (מדעי המחשב)]]
[[hr:Proces (računarstvo)]]
[[id:Proses (komputasi)]]
[[it:Processo (informatica)]]
[[ja:プロセス]]
[[ko:프로세스]]
[[nl:Proces (informatica)]]
[[nn:Programvareprosess]]
[[no:Prosess (informatikk)]]
[[pl:Proces (informatyka)]]
[[pt:Processo (informática)]]
[[ru:Процесс (информатика)]]
[[simple:Process (computing)]]
[[sk:Proces (informatika)]]
[[sl:Proces (računalništvo)]]
[[sr:Процес (рачунарство)]]
[[sv:Process (datorteknik)]]
[[ta:செயலாக்கம் (கணினியியல்)]]
[[tr:İşlem (bilgisayar)]]
[[uk:Процес (інформатика)]]
[[ur:عملیت (شمارندکاری)]]
[[vi:Tiến trình]]
[[zh:行程]]All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://lt.wikipedia.org/w/index.php?oldid=4293628.
![]() ![]() This site is not affiliated with or endorsed in any way by the Wikimedia Foundation or any of its affiliates. In fact, we fucking despise them.
|