06. Jarayonlar va tizim resurslari — 15 ta savol-javob
Avval javobni o'zingiz ayting, so'ng ochib solishtiring.
1. Dastur (program) va jarayon (process) farqi nima?
Javob
Dastur — diskdagi bajariladigan fayl (passiv). Jarayon — shu dasturning xotiraga yuklangan, ishlayotgan nusxasi: o'z PID i, xotira maydoni, ochiq fayllari, muhit o'zgaruvchilari va holati bor. Bitta dasturdan bir vaqtda ko'p jarayon ishlashi mumkin.
2. PID, PPID va PID 1 nima?
Javob
PID — jarayonning noyob raqami, PPID — uni yaratgan (ota) jarayon raqami. PID 1 — yadro yuklangandan keyin ishga tushadigan birinchi jarayon (zamonaviy tizimlarda systemd); u boshqa barcha jarayonlarning ajdodi va yetim qolgan jarayonlarni o'ziga qabul qiladi. Daraxtni pstree yoki ps --forest bilan ko'rasiz.
3. Yangi jarayon qanday yaratiladi: fork va exec?
Javob
Unix'da yangi jarayon ikki bosqichda yaratiladi. fork() joriy jarayonning nusxasini (bola) yaratadi; exec() esa bola jarayon ichidagi dasturni yangisi bilan almashtiradi. Shell buyruqni aynan shunday ishga tushiradi: fork qiladi, bolada exec qiladi va ota (shell) tugashini wait bilan kutadi.
4. Jarayon holatlari (R, S, D, Z, T) nimani bildiradi?
Javob
R — ishlayapti yoki ishga tayyor, S — voqea kutayotgan (uxlayapti, odatiy), D — uzilmas kutish (odatda disk yoki NFS I/O, signal bilan to'xtamaydi), Z — zombi, T — to'xtatilgan (Ctrl+Z yoki SIGSTOP). Ko'p D jarayon — saqlash tizimi yoki tarmoq fayl tizimi bilan muammo belgisi.
5. Zombi va yetim (orphan) jarayon farqi nima?
Javob
Zombi — allaqachon tugagan, lekin ota jarayon uning chiqish kodini hali wait() bilan o'qimagan jarayon; faqat jarayonlar jadvalidagi yozuv qoladi, resurs olmaydi, kill bilan o'ldirib bo'lmaydi (ota tuzatilishi kerak). Yetim — ota jarayoni tugab ketgan, ishlab turgan jarayon; uni PID 1 (init) qabul qiladi.
6. SIGTERM va SIGKILL farqi nima? SIGHUP nima uchun ishlatiladi?
Javob
SIGTERM (15) — jarayondan o'zini toza yopishni so'rash; jarayon uni ushlab, tozalash ishlarini bajarishi mumkin. SIGKILL (9) — kernel jarayonni darhol tugatadi, ushlab bo'lmaydi va tozalash bajarilmaydi. Avval TERM, ishlamasa KILL. SIGHUP (1) — terminal yopilganda keladi, ko'p daemon'lar uni "konfiguratsiyani qayta o'qi" deb tushunadi.
7. nice va renice nima? Qiymatlar qanday?
Javob
nice qiymati (-20 dan 19 gacha) jarayonning CPU ustuvorligiga ta'sir qiladi: qiymat kattaroq bo'lsa, jarayon "muloyimroq" va CPU'ni kamroq oladi. Oddiy foydalanuvchi faqat qiymatni oshira oladi; ustuvorlikni oshirish (manfiy qiymat) uchun root kerak. Fon vazifalari (zaxira, arxivlash) uchun nice foydali.
8. Foreground va background jobs: &, Ctrl+Z, bg, fg, nohup.
Javob
cmd & jarayonni fonda ishga tushiradi. Ctrl+Z oldingi plandagisini to'xtatadi; bg uni fonda davom ettiradi, fg oldingi planga qaytaradi, jobs ro'yxatni ko'rsatadi. Terminal yopilganda jarayonlar SIGHUP oladi va to'xtaydi; nohup yoki disown buni oldini oladi. Uzoq muddatli ishlar uchun tmux yoki systemd xizmati ishonchliroq.
9. Load average nima? 4 yadroli mashinada load average: 6.0 nimani bildiradi?
Javob
Load average — oxirgi 1, 5 va 15 daqiqada ishlayotgan va ishga navbat kutayotgan (shuningdek, Linux'da I/O kutayotgan D) jarayonlarning o'rtacha soni. 4 yadroda 6.0 — doimiy ravishda yadrolar sonidan ko'p jarayon navbat kutmoqda, ya'ni tizim yuklanib ketgan. Qiymat tendensiyasi muhim: 1 daqiqalik 5 va 15 dan yuqori bo'lsa, yuk oshmoqda.
10. VSZ va RSS farqi nima? Virtual xotira nima?
Javob
VSZ — jarayonga ajratilgan virtual manzil maydoni hajmi (ishlatilmagan va umumiy qismlar ham kiradi). RSS — hozir haqiqatan RAM da turgan qismi. Virtual xotira har bir jarayonga alohida manzil maydoni berib, uni sahifa jadvali orqali fizik RAM yoki diskka (swap) moslaydi. Xotira sarfini baholashda VSZ emas, RSS ga qaraladi.
11. free -h da qaysi ustun haqiqiy bo'sh xotirani bildiradi? Kesh nima?
Javob
available ustuni yangi dastur uchun haqiqatda ajrata oladigan xotirani ko'rsatadi. free kam ko'rinishi odatiy: Linux bo'sh RAM ni disk keshi (page cache) uchun ishlatadi va kerak bo'lganda uni qaytaradi. Real muammo — available juda kam bo'lishi va swap faol almashinuvi.
12. OOM killer nima? Qanday bilib olasiz?
Javob
Xotira tugab, uni bo'shatib bo'lmaganda kernel eng "arziydigan" jarayonni (OOM score bo'yicha) SIGKILL bilan o'ldiradi. Jarayon o'zi hech narsa yozmaydi: iz faqat kernel logida: dmesg -T | grep -i 'out of memory' yoki journalctl -k. Oldini olish: xotira chegaralari (cgroups), monitoring, ilovadagi xotira oqishini tuzatish.
13. /proc fayl tizimi jarayonlar haqida nimani beradi?
Javob
Har bir jarayon uchun /proc/PID/ katalogi bor: cmdline (buyruq qatori), status (holat, xotira — VmRSS), exe (dastur), cwd (joriy katalog), fd/ (ochiq fayllar), environ (muhit), limits. ps, top, lsof aslida shu ma'lumotlarni o'qiydi. Bu diskda emas, kernel xotirasidagi virtual ko'rinish.
14. Swap nima? Nega uni butunlay o'chirish yoki juda faol ishlatish yomon?
Javob
Swap — RAM yetmaganda kamdan-kam ishlatiladigan sahifalarni vaqtincha ko'chirish uchun disk maydoni. Butunlay yo'q bo'lsa, xotira tugashi bilan OOM killer ishga tushadi. Doimiy yuqori swap faolligi (vmstat da si/so) esa tizim sekinlashishini bildiradi, chunki disk RAM dan yuzlab marta sekin. Bu — xotira yetishmasligining belgisi, normal ish rejimi emas.
15. ulimit nima? Too many open files xatosi nimani bildiradi?
Javob
ulimit — jarayon uchun resurs chegaralari (ochiq fayllar -n, jarayonlar soni, xotira va hokazo). Har bir ochiq fayl, socket va ulanish fayl deskriptori oladi; chegara oshsa, Too many open files chiqadi. Yuklangan serverda odatiy: chegarani doimiy ko'tarish (limits.conf yoki systemd'da LimitNOFILE=) yoki fayl deskriptor oqishini topish (ls /proc/PID/fd | wc -l).