Operatsion tizim
Apparat va ilovalar o'rtasida turadigan asosiy dastur: u yuklanadi, resurslarni taqsimlaydi, dasturlarni bir-biridan himoya qiladi va diskdagi bloklardan "fayl" yasaydi.
Apparat o'z-o'zidan hech narsa qila olmaydi — unga buyruq beradigan dastur kerak. Lekin har bir dastur disk, xotira, ekran bilan to'g'ridan-to'g'ri ishlaganida, tartibsizlik yuzaga kelardi: ikki dastur bir xil xotira joyiga yozib, bir-birini buzardi. Bu muammoni operatsion tizim (OS) hal qiladi. OS — apparat va ilovalar o'rtasida turadigan asosiy dastur. Mashhur OS'lar: Windows, macOS, Linux (serverlarning ~90% i), Android (Linux yadrosi asosida), iOS.
OS'ning uchta asosiy vazifasi bor: (1) resurslarni boshqarish — protsessor vaqti, xotira, disklarni dasturlar o'rtasida adolatli taqsimlash; (2) abstraksiya — apparatning murakkabligini yashirib, dasturlarga oddiy interfeys berish (masalan, "fayl" tushunchasi); (3) himoya — dasturlarni bir-biridan va tizimni xato yoki zararli dasturlardan himoya qilish.
11.1. Kompyuterning yuklanishi
Quvvat tugmasi bosilganda PSU barqaror kuchlanish hosil qilgach, ona plataga "Power Good" signalini yuboradi. Protsessor qayta o'rnatiladi (reset) va xotiraning belgilangan manzilidan birinchi buyruqni o'qiydi — bu manzil BIOS/UEFI flesh chipiga yo'naltirilgan. UEFI POST (yoqilishdagi o'z-o'zini tekshirish) jarayonini bajaradi: RAM, videokarta, disklarni tekshiradi. Agar biror narsa ishlamasa, signal tovushlari chiqaradi. So'ng u sozlamalarda ko'rsatilgan diskdan bootloaderni (Linux'da GRUB, Windows'da Windows Boot Manager) topib, RAM'ga yuklaydi va boshqaruvni unga beradi. Bootloader OS yadrosini RAM'ga yuklaydi. Yadro qurilmalarni ishga tushiradi, drayverlarni yuklaydi, birinchi jarayonni (Linux'da systemd) boshlaydi, u esa qolgan barcha xizmatlarni va nihoyat grafik interfeysni ishga tushiradi.
11.2. Yadro va himoya rejimlari
OS'ning markaziy qismi — yadro (kernel). U protsessorning maxsus imtiyozli rejimida (kernel mode) ishlaydi va barcha apparat resurslariga to'liq kirish huquqiga ega. Oddiy ilovalar esa foydalanuvchi rejimida (user mode) ishlaydi — ular apparatga to'g'ridan-to'g'ri murojaat qila olmaydi. Protsessorning o'zi bu cheklovni apparat darajasida nazorat qiladi. Ilova faylni o'qishi yoki tarmoqqa ma'lumot yuborishi kerak bo'lsa, u yadroga tizim chaqirig'i (system call) orqali murojaat qiladi. Node.js'dagi fs.readFile() oxir-oqibat Linux'ning open() va read() tizim chaqiriqlariga aylanadi.
11.3. Jarayonlar va rejalashtirish
Ishga tushirilgan dastur jarayon (process) deyiladi. Har bir jarayonning o'z xotira maydoni, ochiq fayllari va kamida bitta bajarilish oqimi (thread) bor. Kompyuteringizda bir vaqtda yuzlab jarayon ishlaydi, protsessor yadrolari esa bor-yo'g'i 4-16 ta. Qanday qilib? OS'ning rejalashtiruvchisi (scheduler) har bir jarayonga bir necha millisekundlik vaqt bo'lagi beradi, so'ng uni to'xtatib, keyingisiga o'tadi. Bu almashinuv (kontekst almashinuvi) shunchalik tez sodir bo'ladiki, barcha dasturlar bir vaqtda ishlayotgandek tuyuladi.
Jarayon disk yoki tarmoqdan javob kutayotganda "kutish" holatiga o'tadi va protsessor vaqtini boshqalarga beradi. Node.js'ning asinxron modeli aynan shunga asoslangan: await fetch(...) yozganingizda, Node.js OS'ga so'rov yuboradi va javob kelguncha boshqa so'rovlarga xizmat qiladi. Shuning uchun bitta oqimli Node.js serveri minglab foydalanuvchiga xizmat qila oladi.
11.4. Virtual xotira
Har bir jarayon o'zini butun xotiraning yagona egasi deb "o'ylaydi": uning uchun manzillar 0 dan boshlanadi va juda katta maydon mavjud. Bu virtual xotira deyiladi. Aslida OS va protsessordagi MMU (xotirani boshqarish bloki) har bir virtual manzilni haqiqiy fizik manzilga o'giradi. Xotira 4 KB lik sahifalarga bo'lingan va OS har bir jarayon uchun sahifalar jadvalini yuritadi.
Bu yondashuvning afzalliklari: (1) izolyatsiya — bir jarayon boshqasining xotirasini ko'ra olmaydi, shuning uchun brauzerdagi bitta sahifa qulasa, boshqalari ishlashda davom etadi; (2) RAM'dan ko'proq xotira — kam ishlatiladigan sahifalar diskka (swap fayl) chiqariladi va kerak bo'lganda qayta yuklanadi; (3) qulaylik — dasturchi fizik manzillar haqida o'ylamaydi. Mashhur "Segmentation fault" xatosi — dastur o'ziga ajratilmagan manzilga murojaat qilganda MMU uni to'xtatishining natijasi.
11.5. Fayl tizimi
Disk aslida raqamlangan bloklarning (odatda 4 KB) katta ketma-ketligi. "Fayl" va "papka" tushunchalarini OS'ning fayl tizimi yaratadi. U har bir fayl haqida ma'lumotni (nomi, hajmi, yaratilgan sanasi, huquqlari va qaysi bloklarda joylashgani) maxsus tuzilmalarda saqlaydi. Linux'da bu tuzilma inode deyiladi. Mashhur fayl tizimlari: NTFS (Windows), ext4 (Linux), APFS (macOS), FAT32/exFAT (fleshkalar).
Faylni o'chirganingizda, odatda faqat uning yozuvi o'chiriladi, ma'lumot bloklari esa "bo'sh" deb belgilanadi va ustiga yangi ma'lumot yozilgunicha saqlanib qoladi. Shuning uchun maxsus dasturlar o'chirilgan fayllarni ba'zan tiklay oladi.