IlmHamroh
JavaScript Full-stack/1-qism. Kompyuter, fayllar va terminal10/40-dars13 daqiqa
Mundarija (28)

Operatsion tizim nima: kernel, jarayon va oqim

Qisqacha: Operatsion tizim (OS) — dasturlar va apparat orasidagi boshqaruvchi. Uning markazi — kernel: u protsessor vaqtini, xotirani, disk va qurilmalarni dasturlar orasida taqsimlaydi. Har bir ishlayotgan dastur — alohida jarayon (process) bo'lib, o'z xotirasiga ega. Jarayon ichida bir nechta oqim (thread) bir vaqtda ishlashi va shu xotirani bo'lishishi mumkin.

Bu darsda

  • Operatsion tizim qanday vazifalarni bajarishini aytib bera olasiz.
  • Kernel, drayver va system call nima ekanini tushunasiz.
  • Dastur va jarayon farqini bilasiz, Task Manager'da jarayonlarni topa olasiz.
  • Jarayon va oqim (process va thread) farqini misol bilan tushuntira olasiz.
  • Kompyuter nega "qotib" qolishi va sekinlashishini (scheduler, swap) tushunasiz.

Oldin bilishingiz kerak: CPU: kompyuterning miyasi, Xotira ierarxiyasi.

1. Nega bu kerak?

Hozir kompyuteringizda brauzer, Telegram va musiqa bir vaqtda ochiq. Protsessor yadrolari esa bor-yo'g'i 4 yoki 8 ta. Musiqa to'xtamaydi, Telegram xabar qabul qiladi, brauzer sahifa ochadi. Buni kim boshqaryapti?

Yana bir savol. Dastur yozayotganda siz hech qachon "RAM'ning 1 000 000-katagiga yoz" yoki "diskning 5-sektorini o'qi" demaysiz. Siz shunchaki "faylni o'qi" deysiz. Kim buni diskning tiliga tarjima qiladi?

Ikkalasining javobi — operatsion tizim. Dasturchi uning ishini tushunsa, ko'p xatolarni tez hal qiladi: "fayl boshqa dasturda ochiq", "ruxsat yo'q", "dastur javob bermayapti", "server xotirasi tugadi".

2. Operatsion tizim nima ish qiladi?

Operatsion tizim (operating system, OS) — kompyuter yoqilganda birinchi ishga tushadigan va qolgan barcha dasturlarni boshqaradigan asosiy dastur.

O'xshatish: restoran. Mijozlar — sizning dasturlaringiz. Oshxona — apparat: protsessor, xotira, disk. Operatsion tizim — ofitsiant va ma'muriyat. Mijoz oshxonaga o'zi kirmaydi. U buyurtmani ofitsiantga beradi, ofitsiant oshxonaga yetkazadi va tayyor taomni qaytarib olib keladi.

OS ning asosiy vazifalari:

  1. Protsessor vaqtini taqsimlash — qaysi dastur qachon ishlaydi.
  2. Xotirani taqsimlash — har dasturga RAM'dan joy berish va ularni bir-biridan himoyalash.
  3. Fayllarni boshqarish — diskdagi baytlarni fayl va papkalarga aylantirish (keyingi darsda).
  4. Qurilmalar bilan ishlash — klaviatura, ekran, printer, tarmoq.
  5. Xavfsizlik — kim nimaga ruxsatga ega ekanini tekshirish.

Mashhur operatsion tizimlar:

OS Qayerda Qiziq fakt
Windows ko'p noutbuk va ofis kompyuterlari o'yinlar va ofis dasturlari uchun eng keng tarqalgan
macOS Apple kompyuterlari Linux'ga o'xshash tuzilgan (ikkalasi Unix oilasidan)
Linux (Ubuntu va boshqalar) serverlarning katta qismi internetdagi saytlar asosan shunda ishlaydi
Android, iOS telefonlar Android ichida Linux kernel ishlaydi

Dasturchi sifatida siz ko'pincha Windows yoki macOS'da kod yozasiz, u esa Linux serverda ishlaydi. Shuning uchun kursda ikkala dunyoni ham o'rganamiz.

Tekshirib ko'ring: Telegram fayl yuklamoqchi. U diskka o'zi yozadimi?

Javob

Yo'q. Telegram operatsion tizimdan "shu baytlarni faylga yoz" deb so'raydi, diskka esa OS yozadi. Oddiy dasturlar apparatga to'g'ridan-to'g'ri tegmaydi.

3. Kernel va drayverlar

3.1 Kernel — tizimning yuragi

Operatsion tizim ko'p qismdan iborat: oynalar, menyular, sozlamalar. Lekin eng muhim qismi — kernel (yadro). Kernel apparatni to'liq boshqaradi va boshqa hamma dasturlar undan ruxsat so'raydi.

Diqqat: "Yadro" so'zi ikki ma'noda ishlatiladi. CPU darsida ko'rgan protsessor yadrosi (core) — temir, "mini-CPU". OS yadrosi (kernel) esa — dastur. Adashmaslik uchun OS haqida gapirganda ko'pincha "kernel" deymiz.

Har OS ning o'z kerneli bor: Windows'da — Windows NT yadrosi, macOS va iOS'da — XNU, Ubuntu va Android'da — Linux.

Maslahat: Qat'iy aytganda, "Linux" — faqat kernelning nomi. Ubuntu, Debian, Fedora esa Linux kernel ustiga dasturlar to'plami qo'shilgan distributivlar. Kundalik gapda ikkalasini ham "Linux" deyishadi.

3.2 User space va kernel space

Xavfsizlik uchun protsessor va xotira ikki "hudud"ga bo'lingan:

Hudud Kim ishlaydi Nima qila oladi
User space (foydalanuvchi hududi) brauzer, VS Code, o'yinlar — hamma oddiy dasturlar faqat o'z xotirasi bilan ishlaydi
Kernel space (yadro hududi) faqat kernel va drayverlar apparatning hammasiga kira oladi

Nega bunday bo'lingan? Tasavvur qiling, istalgan dastur diskka to'g'ridan-to'g'ri yoza olsa. Bitta xato yoki virus butun diskni o'chirib yuborardi. Shuning uchun oddiy dasturlar "qo'riqlanadigan hududdan" tashqariga chiqa olmaydi.

3.3 Drayver — qurilma tarjimoni

Printer, videokarta, Wi-Fi moduli — har birini turli kompaniya ishlab chiqaradi. Har biri o'z "tilida" gapiradi. Kernel ularning hammasini qanday tushunadi?

Drayver (driver) — ma'lum bir qurilma bilan qanday gaplashishni biladigan kichik dastur. U kernel ichida ishlaydi va OS buyrug'ini qurilmaning tiliga o'giradi. Printer drayveri "shu sahifani chop et" buyrug'ini aynan shu printer tushunadigan signallarga aylantiradi.

Yangi printer ulaganingizda Windows "drayver o'rnatilmoqda" deydi — aynan shu jarayon. Videokartaning drayverini yangilash o'yinlarni tezlashtirishi ham shundan.

Tekshirib ko'ring: Nega brauzer user space'da ishlaydi, kernel space'da emas?

Javob

Brauzer internetdan kelgan begona kodni bajaradi. U kernel space'da ishlasa, har qanday zararli sayt butun kompyuterni boshqarib olardi. User space'da esa brauzerdagi xato faqat brauzerning o'ziga ta'sir qiladi.

4. System call: kernelga so'rov

User space'dagi dastur faylni o'qishi yoki internetga ulanishi kerak bo'lsa, u kernelga rasmiy so'rov yuboradi. Bu so'rov system call (tizim chaqiruvi) deyiladi.

Masalan, VS Code index.html faylini ochyapti:

sequenceDiagram
  participant D as Dastur (VS Code)
  participant K as Kernel
  participant Q as Disk (drayver orqali)
  D->>K: "index.html ni o'qib ber"
  K->>K: Ruxsat bormi? Tekshiradi
  K->>Q: Kerakli baytlarni o'qi
  Q-->>K: Baytlar
  K-->>D: Mana fayl mazmuni

Qadamlar:

  1. Dastur system call yuboradi. Bu so'rovlarning nomlari ham bor, masalan open (ochish) va read (o'qish).
  2. Protsessor himoyalangan rejimga o'tadi va boshqaruv kernelga beriladi.
  3. Kernel ruxsatni tekshiradi, keyin drayver orqali diskdan o'qiydi.
  4. Natija dasturga qaytariladi, protsessor oddiy rejimga qaytadi.

Kernel so'rovni rad etishi ham mumkin. Masalan, faylni o'qishga ruxsatingiz yo'q bo'lsa, dastur Permission denied ("ruxsat berilmadi") xatosini oladi. Ruxsatlarni Fayl ruxsatlari darsida o'rganamiz.

Tekshirib ko'ring: Siz JavaScript'da "faylni o'qi" deb yozasiz. System call'ni kim yuboradi?

Javob

Kodingizni bajarayotgan dastur (masalan, Node.js — JavaScript'ni kompyuterda ishlatadigan dastur) system call yuboradi. Siz uni o'zingiz yozmaysiz. Til va uning kutubxonalari so'rovni siz uchun tayyorlab beradi.

5. Jarayon (process)

5.1 Dastur va jarayon farqi

Diskdagi chrome.exe yoki app.js fayli — shunchaki dastur: harakatsiz yotgan ko'rsatmalar. Uni ishga tushirganingizda OS:

  1. Dastur kodini diskdan RAM'ga yuklaydi.
  2. Unga alohida xotira ajratadi.
  3. Unga takrorlanmas raqam beradi — PID (Process ID).

Shu paytdan u jarayon (process) — ishlayotgan dastur nusxasi bo'ladi.

O'xshatish: kitobdagi plov retsepti — dastur. Hozir qozonda pishayotgan plov — jarayon. Bitta retsept bo'yicha bir vaqtda ikki qozonda plov qilish mumkin. Xuddi shunday, bitta dasturdan bir nechta jarayon ishga tushishi mumkin — masalan, ikkita Notepad oynasi.

5.2 Jarayonlarni o'z ko'zingiz bilan ko'ring

  • Windows: Ctrl + Shift + Esc — Task Manager (vazifalar menejeri) ochiladi. "Details" ("Tafsilotlar") yorlig'ida har jarayonning nomi va PID raqami bor.
  • macOS: Activity Monitor (Tizim monitori) dasturi.
  • Linux: buni terminal buyruqlari bilan qilasiz. Ularni Jarayonlar va band portlar darsida o'rganamiz.

Task Manager'da chrome.exe ni qidiring. Bitta brauzer o'nlab jarayon bo'lib ishlayotganini ko'rasiz. Chrome har bir tab uchun alohida jarayon ochadi.

5.3 Izolyatsiya: bir jarayon boshqasiga xalaqit bermaydi

Har jarayonning xotirasi alohida. Bir jarayon boshqasining xotirasini o'qiy ham, o'zgartira ham olmaydi.

Chrome aynan shuning uchun har tabni alohida jarayonda ochadi. Bitta sayt buzilsa, faqat o'sha tab yopiladi va "Aw, Snap!" ("Voy!") sahifasi chiqadi. Qolgan tablar ishlayveradi.

Tekshirib ko'ring: VS Code'ni ikki marta ochdingiz. Nechta dastur va nechta jarayon bor?

Javob

Dastur — bitta (diskdagi VS Code). Jarayonlar — kamida ikkita, har oyna uchun. Aslida VS Code ham Chrome kabi har oyna uchun bir nechta yordamchi jarayon ochadi, shuning uchun Task Manager'da ancha ko'p ko'rasiz.

6. Oqim (thread)

6.1 Jarayon ichidagi ishchilar

Jarayon bir vaqtda bir nechta ishni bajarishi mumkin. Masalan, Telegram bir tomonda fayl yuklaydi, boshqa tomonda siz xabar yozasiz.

Buning uchun jarayon ichida oqim (thread) lar bo'ladi. Oqim — jarayon ichidagi alohida bajarilish yo'li: kodni qadamma-qadam bajarayotgan "ishchi". Har jarayonda kamida bitta oqim bor.

O'xshatish: jarayon — oshxona. Uning o'z xonasi, qozonlari va masalliqlari bor. Oqimlar — shu oshxonadagi oshpazlar. Ular bitta qozonni, bitta pichoqlar to'plamini bo'lishadi. Qo'shni oshxona (boshqa jarayon) esa butunlay alohida.

Jarayon (process) Oqim (thread)
Xotira o'ziniki, alohida jarayon xotirasini bo'lishadi
Ma'lumot almashish sekinroq, maxsus yo'llar bilan tez — umumiy xotira orqali
Biri qulasa boshqalari ishlayveradi butun jarayon yiqilishi mumkin
Yaratish "og'irroq" "yengilroq"

6.2 "Dastur javob bermayapti" qayerdan chiqadi?

Oynali dasturlarda bitta asosiy oqim oynani chizadi va tugma bosishlarga javob beradi. Bu oqim og'ir ishga band bo'lib qolsa (katta faylni o'qish, uzoq hisoblash), oyna "qotadi". Windows sarlavhaga (Not Responding) ("javob bermayapti") deb yozadi, macOS'da esa aylanuvchi rangli koptok chiqadi.

To'g'ri yozilgan dastur og'ir ishni fon oqimiga beradi. Asosiy oqim esa oynani boshqarishda davom etadi. Telegram fayl yuklayotganda siz yozishda davom etishingiz shundan.

Maslahat: JavaScript kodingiz ham asosan bitta asosiy oqimda ishlaydi. Og'ir ish oynani qotirib qo'ymasligi uchun maxsus usullar bor: asinxron kod va Web Workers. Ularni kursda keyinroq o'rganamiz, hozir bilish shart emas.

Tekshirib ko'ring: Bitta oqim xato qilib, jarayon xotirasini buzdi. Nega butun jarayon yiqilishi mumkin?

Javob

Chunki oqimlar bitta umumiy xotirani bo'lishadi. Bitta oqim buzgan ma'lumotni boshqa oqimlar ham ishlatadi. Jarayonlarda bunday bo'lmaydi — ularning xotirasi alohida.

7. Scheduler: navbat bilan ishlash

Kompyuterda yuzlab jarayon ochiq, yadrolar esa 8 ta. Qanday qilib hammasi "bir vaqtda" ishlaydi?

Kernelning rejalashtiruvchi (scheduler) qismi har oqimga protsessordan juda qisqa vaqt beradi — millisekundlar. Keyin oqimni to'xtatib, keyingisiga o'tadi. Bir oqimdan boshqasiga o'tish kontekstni almashtirish (context switching) deyiladi. OS to'xtatilgan oqim qayerda qolganini eslab qoladi va keyinroq aynan shu joydan davom ettiradi.

O'xshatish: shaxmat grossmeysteri 20 kishi bilan bir vaqtda o'ynayapti. U bir stolda yurish qiladi, keyingisiga o'tadi, keyin keyingisiga. Har bir o'yinchiga grossmeyster faqat u bilan o'ynayotgandek tuyuladi. Scheduler ham shunday: almashish shunchalik tez-ki, siz barcha dasturlar birga ishlayapti deb o'ylaysiz.

CPU darsida Task Manager'da Logical processors sonini ko'rgan edik. Bu — scheduler oqimlarni joylashtira oladigan "o'rinlar" soni. Ko'p protsessorlarda bitta yadro ikkita oqimni navbatma-navbat, juda tez almashtirib bajaradi. Shuning uchun OS uni ikkita mantiqiy protsessor deb ko'radi.

Tekshirib ko'ring: Protsessorda 1 ta yadro bor. Musiqa va brauzer rostdan ham aynan bir lahzada ishlaydimi?

Javob

Yo'q. Bitta yadro bir lahzada faqat bitta oqimni bajaradi. Scheduler ular orasida millisekundlar ichida almashib turadi, shuning uchun bizga ular bir vaqtda ishlayotgandek tuyuladi. Ko'p yadroli protsessorda esa bir nechta oqim haqiqatan ham parallel ishlaydi.

8. Virtual xotira va swap

Har jarayon o'zini "butun xotira meniki" deb o'ylaydi. Aslida OS unga virtual manzillar beradi. Jarayon "5-katak" deganda, OS buni RAM'dagi haqiqiy joyga o'zi bog'laydi. Bu virtual xotira deyiladi. Aynan shu mexanizm jarayonlarni bir-biridan himoyalaydi: har biri faqat o'z manzillarini ko'radi.

RAM to'lib qolsa nima bo'ladi? OS kam ishlatilayotgan ma'lumotni vaqtincha diskka ko'chiradi. Bu joy swap deyiladi. Windows'da u pagefile.sys degan yashirin fayl.

Lekin Xotira ierarxiyasi darsidan eslang: disk RAM'dan ming barobarlab sekinroq. Shuning uchun swap ko'p ishlatilsa, kompyuter keskin sekinlashadi. 50 ta tab ochilgan brauzer noutbukni "qotirib" qo'yishi shundan. RAM holatini Task Manager'ning "Performance" ("Unumdorlik") yorlig'ida ko'rish mumkin.

Tekshirib ko'ring: Swap RAM yetmaganda yordam beradi. Unda nega RAM'ni ko'paytirish maslahat beriladi?

Javob

Swap diskda joylashgan va RAM'dan ancha sekin. U kompyuterni "yiqilishdan" saqlaydi, lekin tezlikni saqlamaydi. RAM yetarli bo'lsa, swap'ga deyarli murojaat qilinmaydi va hammasi tez ishlaydi.

9. Ko'p uchraydigan xatolar

9.1 "Fayl boshqa dasturda ochiq"

Faylni o'chirmoqchi yoki nomini o'zgartirmoqchisiz, Windows esa shunday deydi:

text
The action can't be completed because the file is open in Microsoft Word.

Tarjimasi: "Amalni bajarib bo'lmaydi, chunki fayl Microsoft Word'da ochiq". Sababi: oynani yopgansiz, lekin jarayon hali ishlayapti va faylni ushlab turibdi. Yechim: dasturni to'liq yoping yoki Task Manager'da jarayonni tanlab, "End task" ("Vazifani tugatish") ni bosing.

9.2 (Not Responding) ni ko'rib darhol yopish

Dastur asosiy oqimi og'ir ish bilan band. Ko'pincha 10–30 soniya kutsangiz, u o'ziga keladi. Darhol "End task" qilsangiz, saqlanmagan ishingiz yo'qoladi.

9.3 Dastur apparatni o'zi boshqaradi deb o'ylash

Dastur diskka, tarmoqqa yoki kameraga to'g'ridan-to'g'ri murojaat qilmaydi — hammasi system call orqali. Shuning uchun "kamera ishlamayapti" muammosida avval OS sozlamalaridagi ruxsatni tekshiring.

9.4 Jarayon va oqimni aralashtirish

"Chrome'da 30 ta oqim ochiq" deb aytish noto'g'ri — Task Manager'da ko'ringanlar jarayonlar. Oqimlar esa har bir jarayonning ichida. Farq: jarayonlar xotirani bo'lishmaydi, oqimlar bo'lishadi.

10. Mashqlar

1-mashq (oson): Atamani toping

Har bir ta'rifga mos atamani yozing (kernel, drayver, PID, oqim):

  1. Jarayonning takrorlanmas raqami:
  2. Qurilma bilan gaplashishni biladigan dastur:
  3. OS ning apparatni boshqaradigan markaziy qismi:
Yechim
  1. PID (Process ID) — har jarayonga OS beradigan raqam.
  2. Drayver — kernel buyrug'ini qurilma tiliga o'giradi.
  3. Kernel (yadro) — OS ning eng vakolatli qismi.

2-mashq (o'rta): Task Manager tadqiqoti

Windows'da Ctrl + Shift + Esc ni bosing (macOS'da Activity Monitor'ni oching).

  1. Brauzeringizda 3 ta tab oching. Brauzer nechta jarayon bo'lib ishlayapti?
  2. Yana 5 ta tab oching. Jarayonlar soni o'zgardimi?
  3. Qaysi jarayon eng ko'p xotira olayotganini toping. Ishora: "Memory" ("Xotira") ustunining sarlavhasini bossangiz, ro'yxat saralanadi.
Yechim

Aniq sonlar kompyuterga qarab farq qiladi. Kutiladigan kuzatuv:

  1. Brauzer bittadan ko'p jarayon ochadi: asosiy oyna, har tab va yordamchi jarayonlar.
  2. Tablar ko'payganda jarayonlar soni ham ortadi — har tab alohida jarayon.
  3. Ko'pincha eng ko'p xotirani brauzer oladi. Har tab o'z xotirasiga ega va ular qo'shilib katta hajm beradi.

3-mashq (qiyin): Arxitektura haqida o'ylang

Jasur rasm tahrirlash dasturi yozdi. Katta rasmga filtr qo'yilganda oyna 20 soniya qotib qoladi va (Not Responding) chiqadi.

  1. Muammo qaysi oqimda?
  2. Qanday tuzatish mumkin?
  3. Chrome nega tablarni oqimlarda emas, alohida jarayonlarda ochadi?
Yechim
  1. Filtr asosiy oqimda hisoblanmoqda. Bu oqim band bo'lgani uchun oyna tugma bosishlarga javob bera olmayapti.
  2. Og'ir hisobni alohida fon oqimiga berish kerak. Asosiy oqim esa oynani boshqarishda va, masalan, "Filtr qo'yilmoqda: 40%" ni ko'rsatishda davom etadi.
  3. Xavfsizlik va barqarorlik uchun. Jarayonlar xotirani bo'lishmaydi. Bitta tab qulasa yoki zararli sayt ochilsa, u boshqa tablarning ma'lumotiga (masalan, bank sahifasiga) yeta olmaydi. Oqimlar esa umumiy xotirada ishlaydi va bunday himoya bermaydi.

11. Real ishda

  • Serverlar: siz yozgan backend serverda bitta yoki bir nechta jarayon bo'lib ishlaydi. Server "qotsa", dasturchi birinchi navbatda jarayonlar, xotira va swap holatini tekshiradi. Buni kursning Linux server qismida o'rganamiz.
  • "Port band" xatosi: eski jarayon hali ishlayotgani sababli yangi server ishga tushmaydi. Buni Jarayonlar va band portlar darsida hal qilamiz.
  • Docker (dasturlarni alohida "qutilarda" ishga tushiradigan vosita — kursda alohida qism bor): u jarayonlarni bir-biridan ajratish g'oyasiga asoslangan.
  • Intervyu savoli: "Process va thread farqi nima?" — bu boshlang'ich darajadagi intervyularda juda ko'p beriladi. Javob: jarayonning xotirasi alohida, oqimlar esa bitta jarayon ichida xotirani bo'lishadi.

Xulosa

  • Operatsion tizim protsessor, xotira, fayllar va qurilmalarni dasturlar orasida taqsimlaydi.
  • Kernel — OS ning markazi. Drayver — kernel va qurilma orasidagi tarjimon.
  • Oddiy dasturlar user space'da ishlaydi va kernelga system call orqali murojaat qiladi.
  • Jarayon — ishlayotgan dastur, o'z xotirasi va PID raqami bor. Oqim — jarayon ichidagi ishchi, xotirani boshqa oqimlar bilan bo'lishadi.
  • Scheduler oqimlar orasida tez almashib, "hamma bir vaqtda ishlayapti" taassurotini beradi.
  • RAM yetmasa, OS swap'dan foydalanadi — kompyuter ishlaydi, lekin sekinlashadi.

Keyingi dars: Fayl tizimi: papkalar daraxti va fayllar — OS diskdagi baytlarni qanday qilib fayl va papkalarga aylantirishini ko'ramiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
Operatsion tizim nima: kernel, jarayon va oqim — IlmHamroh