Було запропоновано цю статтю або розділ з Процес (інформатика), але, можливо, це варто додатково . Пропозиція з квітня 2017. |
Процес в ОС UNIX — програма, що виконується у власному віртуальному адресному просторі. Коли користувач входить у систему, автоматично створюється процес, у якому виконується програма командного інтерпретатора. Якщо командному інтерпретаторові зустрічається команда, що відповідає виконуваному файлу, то він створює новий процес і запускає в ньому відповідну програму, починаючи з функції main. Ця запущена програма, у свою чергу, може створити процес і запустити в ньому іншу програму (вона теж повинна містити функцію main) і т. д.
Для утворення нового процесу й запуску в ньому програми використовуються два системних виклики (примітива ядра ОС UNI) — fork() і exec (ім'я-виконуван-файлу). Системний виклик fork приводить до створення нового адресного простору, стан якого абсолютно ідентичний стану адресного простору основного процесу (тобто в ньому втримуються ті ж програми й дані).
Інакше кажучи, одразу після виконання системного виклику fork основний і породжений процеси є абсолютними близнюками; керування й у тім, і в іншому перебуває в крапці, що безпосередньо випливає за викликом fork. Щоб програма могла розібратися, у якому процесі вона тепер працює — в основному або породженому, функція fork повертає різні значення: 0 у породженому процесі й ціле позитивне число (ідентифікатор породженого процесу) в основному процесі.
Тепер, якщо ми хочемо запустити нову програму в породженому процесі, потрібно звернутися до системного виклику exec, указавши як аргументи виклику ім'я файлу, що містить нову виконувану програму, і, можливо, один або кілька текстових рядків, які будуть передані як аргументи функції main нової програми. Виконання системного виклику exec приводить до того, що в адресний простір породженого процесу завантажується нова виконувана програма з адреси, що відповідає входу у функцію main.
У наступному прикладі користувацька програма, іменована як команда shell, виконує в окремому процесі стандартну команду shell ls, що видає на екран уміст поточного каталогу файлів:
main() { if(fork()==0) wait(0); /* батьківський процес */ else execl("ls", "ls", 0); /* породжений процес */ }
Див. також
Ця стаття не містить . (січень 2015) |
Це незавершена стаття про інформаційні технології. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Bulo zaproponovano ob yednati cyu stattyu abo rozdil z Proces informatika ale mozhlivo ce varto dodatkovo Propoziciya z kvitnya 2017 Proces v OS UNIX programa sho vikonuyetsya u vlasnomu virtualnomu adresnomu prostori Koli koristuvach vhodit u sistemu avtomatichno stvoryuyetsya proces u yakomu vikonuyetsya programa komandnogo interpretatora Yaksho komandnomu interpretatorovi zustrichayetsya komanda sho vidpovidaye vikonuvanomu fajlu to vin stvoryuye novij proces i zapuskaye v nomu vidpovidnu programu pochinayuchi z funkciyi main Cya zapushena programa u svoyu chergu mozhe stvoriti proces i zapustiti v nomu inshu programu vona tezh povinna mistiti funkciyu main i t d Dlya utvorennya novogo procesu j zapusku v nomu programi vikoristovuyutsya dva sistemnih vikliki primitiva yadra OS UNI fork i exec im ya vikonuvan fajlu Sistemnij viklik fork privodit do stvorennya novogo adresnogo prostoru stan yakogo absolyutno identichnij stanu adresnogo prostoru osnovnogo procesu tobto v nomu vtrimuyutsya ti zh programi j dani Inakshe kazhuchi odrazu pislya vikonannya sistemnogo vikliku fork osnovnij i porodzhenij procesi ye absolyutnimi bliznyukami keruvannya j u tim i v inshomu perebuvaye v krapci sho bezposeredno viplivaye za viklikom fork Shob programa mogla rozibratisya u yakomu procesi vona teper pracyuye v osnovnomu abo porodzhenomu funkciya fork povertaye rizni znachennya 0 u porodzhenomu procesi j cile pozitivne chislo identifikator porodzhenogo procesu v osnovnomu procesi Teper yaksho mi hochemo zapustiti novu programu v porodzhenomu procesi potribno zvernutisya do sistemnogo vikliku exec ukazavshi yak argumenti vikliku im ya fajlu sho mistit novu vikonuvanu programu i mozhlivo odin abo kilka tekstovih ryadkiv yaki budut peredani yak argumenti funkciyi main novoyi programi Vikonannya sistemnogo vikliku exec privodit do togo sho v adresnij prostir porodzhenogo procesu zavantazhuyetsya nova vikonuvana programa z adresi sho vidpovidaye vhodu u funkciyu main U nastupnomu prikladi koristuvacka programa imenovana yak komanda shell vikonuye v okremomu procesi standartnu komandu shell ls sho vidaye na ekran umist potochnogo katalogu fajliv main if fork 0 wait 0 batkivskij proces else execl ls ls 0 porodzhenij proces Div takozhKonveyer Unix Keruvannya pam yattyu v Unix Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno sichen 2015 Ce nezavershena stattya pro informacijni tehnologiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi