27 Linuxda Jarayonlar.Jarayonlarni boshqarish
Jarayon strukturasi
Fayl strukturasiga o'xshab jarayon strukturasi ham onalari, bolalari va hatto root ierarxikdir. Ona jarayon o'z navbatida boshqa jarayonlarga bo'linuvchi bola jarayonga bo'linadi.(Bo'linish (fork) so'zi, yo'llarning bo'linishi kabi bir jarayonni ikkitaga aylanishini bildiradi. Avval ikkita fork biri ona, biri bola bo'lishidan tashqari bir xil bo'ladi.) Yangi jarayonlar yaratuvchi operatsion tizim kundalik ishi(rutinasi) yoki tizim chaqiruvi (system call) fork deb nomlanadi.
Tizim boshlanganda, Linux ijroni boshlaganda u 1 raqamli PID bilan initsalizatsiyani, spontan (ixtiyoriy) jarayon deb nomlanuvchi yagona jarayonni boshlaydi. Bu jarayon jarayon strukturasida root direktoriyasi fayl strukturasida egallagandek pozitsiyani egallaydi: Bu tizim va foydalanuvchilar ishlaydigan hamma jarayonlarning ajdodidir. Tizim multifoydalanuvchi rejimida ishlaganida init getty yoki mingetty jarayonlarini ishga tushiradi (loginni ko'rsatadi: terminal va virtual konsoldagi yordam). Kimdir yordamga javob berib RETURNni bosganda getty foydalanuvchi nomi va parol kombinatsiyasini tekshiruvchi, login deb nomlanuvchi utilita ustidan nazoratni o'z qo'liga oladi. Foydalanuvchi kirgandan keyin login jarayoni foydalanuvchining shell jarayoniga aylanadi. Jarayon identifikatsiyasi
Linux har bir jarayonning boshida unikal PID (process identification-jarayon identifikatsiyasi) raqam o'rnatadi. Qancha uzoq muddat jarayon mavjud bo'lsa, u shuncha payt bir xil PID raqamga ega bo'ladi. Bitta seans davomida bir xil jarayon har doim login shellini bajaradi. Yangi jarayonni bo'layotganingizda, masalan, tahririlovchidan foydalanilganda yangi (bola) jarayonning PID raqami uning ona jarayoninikidan turlicha bo'ladi.Siz login shellga qaytib kirganingizda, boshida kirganingizdagi huddi o'sha jarayon, huddi o'sha PID raqam bilan bajarilayotgan bo'ladi. Quyidagi misol ishlayotgan ps jarayon shell (ona) jarayonidan bo'linib chiqganini ko'rsatadi(242-bet). Siz uni -f parametri orqali chaqirganingizda ps har bir jarayon haqidagi ma'lumotning to'liq ro'yxatini ko'rsatadi. PS displeyi qatori bilan CMD ustunidagi bash ishlayotgan shell jarayoniga qaraydi. PID deb nomlangan ustun PID raqamni aniqlaydi. PPID deb nomlangan ustun ona jarayon PID raqamini aniqlaydi. PID va PPID ustunlaridan ishlayotgan shell jarayoni (PID 21341) sleep rejimidagi jarayonning (PID 22789) onasi ekanligini ko'rishimiz mumkin. Sleepning ona PID raqami shellning PID raqami (21341) bilan bir xil bo'ladi.
$ sleep 10 &
[1] 22789
$ ps -f
UID PID PPID C STIME TTY TIME CMD
alex 21341 21340 0 10:42pts/16 00:00:00 bash
alex 22789 21341 0 1 7:30pts/16 00:00:00 sleep 10
alex 22790 21341 0 17:30pts/16 00:00:00ps -f ps man buyrug'i ps to'g'risidagi ma'lumotlarni sahifaga chiqaradi va -f qo'shimchasi bilan ustunlar ko'rinishida chiqaradi. Ikkinchi sleep va ps-f komandalar juftligi shell haligacha o'sha-o'sha jarayonni ishga tushirayotganini, ammo u sleepni ishga tushirish uchun boshqa jarayonga bo'linishini ko'rsatadi.
$ sleep 10 &
[1] 22791
$ ps -f
UID PID PPID C STIME TTY TIME CMD alex 21341 21340 0 10:42pts/16 00:00:00 bash
alex 22791 21341 0 17:31 pts/16 00:00:00 sleep 10
alex 22792 21341 0 17:31 pts/16 00:00:00ps -f Shuningdek, siz jarayonlarning ona-bola aloqalarini pstree(yoki -e parametri (option) bilan yoki usiz ps --forest)dan foydalangan holda ko'rishingiz mumkin. Keyingi misol PID raqamini ko'rsatish uchun chaqiruvchi pstree dagi -p parametrini ko' rsatadi: $ pstree -p init(1)-+-acpid(1395) -atd(1758) -crond(1702)
-kdeinit(2223)-+-firefox(8914)—run-mozilla.sh(8920)—firefox-bin(8925) -gaim(2306) -gqview(14062) -kdeinit(2228) -kdeinit(2294)
-kdeinit(2314)-+-bash(2329) ---ssh (2561) \-bash(2339)
'-bash(15821)---bash(16778) -kdeinit(16448) -kdeinit(20888) -oclock(2317)
r-pam-panel-icon(2305)—pam_timestamp_c(2307)
-login(1823)---bash(20986)-+-pstree(21028) '-sleep(21026)
Odingi chiqish qisqartiriladi. –kdeinit bilan boshlanuvchi qator grafik foydalanuvchi ishga tushirayotgan barcha jarayonlarni, shuq atordaf irefox, gaim va oclocklarni ko'rsatadi. –login bilan boshlanuvchi qator matnli foydalanuvchi pstree ni ishchi fonda ishga tushirayotgan vaqtda, sleepni orqa fonda ishga tushirishini ko'rsatadi.
Do'stlaringiz bilan baham: |