User mode — protsessorning ilova kodi cheklangan vakolat bilan bajariladigan himoya rejimidir. Bu rejimdagi jarayon apparat qurilmasi, yadro xotirasi va imtiyozli protsessor buyruqlariga bevosita murojaat qila olmaydi. Chegara bitta ilovadagi xato yoki zararli kodning butun operatsion tizimni darhol egallashini qiyinlashtiradi.
Imtiyoz darajalari
Protsessor arxitekturasi bir nechta privilege level taklif qilishi mumkin, operatsion tizim esa ko‘pincha user mode va kernel mode asosiy ajratmasidan foydalanadi. Sahifa jadvallari user bitlari orqali jarayon o‘qishi, yozishi yoki bajara oladigan xotirani belgilaydi. Taqiqlangan manzil yoki buyruqqa murojaat exception keltirib chiqaradi va boshqaruv yadroga o‘tadi.
Har jarayon o‘z virtual manzil makonida ishlaydi. Boshqa jarayon xotirasiga oddiy ko‘rsatkich bilan kira olmaydi. Shared memory kabi mexanizm yadro orqali ataylab xaritalanganda istisno yuzaga keladi; kirish huquqi baribir tekshiriladi.
System call
Fayl o‘qish, tarmoq paketini yuborish yoki yangi jarayon yaratish uchun ilova system call qiladi. Maxsus ko‘rsatma nazoratli kirish nuqtasi orqali kernel modega o‘tkazadi. Yadro argumentlar va user pointerlarni tekshiradi, amalni bajaradi va natija bilan user modega qaytadi.
Rejim almashishi context switch bilan bir xil emas. System call davomida ayni oqim bajarilishi mumkin; faqat imtiyoz va stek konteksti o‘zgaradi. Agar amal I/Oni kutsa, oqim bloklanib, rejalashtiruvchi boshqa oqimga context switch qiladi.
Himoya va nosozlik
User mode dasturida segmentation fault yuz bersa, operatsion tizim odatda faqat shu jarayonni tugatadi. Kernel mode xatosi esa umumiy tizim holatiga zarar yetkazishi mumkin. Shu sababli driverlarning bir qismini user spacega ko‘chirish va mikro-yadro arxitekturasi nosozlikni izolyatsiya qilishni yaxshilashi mumkin, lekin IPC xarajatini oshiradi.
Sandbox, seccomp va capability mexanizmlari user mode ichida qo‘shimcha cheklov beradi. Oddiy foydalanuvchi nomidan ishlashning o‘zi barcha xavfni bartaraf etmaydi: jarayon foydalanuvchining fayllari va tokenlariga kira olishi mumkin. Eng kam imtiyoz va alohida xizmat hisoblari zarur.
Unumdorlik va interfeys
Kernel bilan tez-tez mayda almashinuv qilish system call xarajatini oshiradi. Bufferlash, batching, memory mapping va asinxron I/O chaqiriqlar sonini kamaytirishi mumkin. Biroq tekshiruvlarni chetlab o‘tishga urinish xavfsizlik va yaxlitlikni buzadi.
User-kernel ABI system call raqami, argumentlar va ma’lumot tuzilmalarini belgilaydi. Kutubxona ko‘pincha bu tafsilotni yashiradi. Container ichidagi root ham odatda user mode jarayonidir; uning fayl va namespace vakolatlari keng bo‘lishi mumkin, ammo protsessorning kernel privilege darajasiga ega emas.
User-space xizmatlari
Ko‘plab tizim funksiyalari imtiyoz talab qilmaydigan qismini user space’da bajaradi. Masalan, fayl tizimi serveri, tarmoq proxy yoki qurilma boshqaruv demoni yadrodan nazoratli handle oladi. Jarayon buzilsa kernel xotirasini bevosita yozolmaydi va supervisor uni qayta ishga tushirishi mumkin. Biroq user-space komponent bilan yadro orasidagi xabarlarni nusxalash, context o‘tishi va validation qo‘shimcha kechikish beradi. Shared memory va batched system call bu xarajatni kamaytiradi. Xavfsizlik modeli ishlashi uchun yadro user pointer, uzunlik, integer overflow va qayta ishlash vaqtida xotiraning o‘zgarishini ehtiyotkor tekshiradi.
Copy-from-user yordamchilari noto‘g‘ri manzilni xavfsiz xatoga aylantiradi. Tekshiruvdan keyin pointerga ikkinchi marta ishonish TOCTOU muammosini yaratishi mumkin, chunki boshqa oqim user xotirasini o‘zgartiradi. Muhim struktura bir marta kernel bufferiga nusxalanib, ayni nusxa tekshiriladi va ishlatiladi.
Bog‘liq tushunchalar
Kernel mode, System call, Virtual memory, Process isolation, Sandbox, Privilege level