Bosh sahifa Wiki POSIX

POSIX

POSIX — Portable Operating System Interface iborasining qisqartmasi bo‘lib, Unixga o‘xshash operatsion tizimlarda dastur va tizim o‘rtasidagi standart interfeyslarni belgilovchi IEEE standartlari oilasidir. Uning vazifasi bir tizim uchun yozilgan dastur kodini boshqa mos tizimga imkon qadar kam o‘zgartirish bilan ko‘chirishdir. POSIX alohida operatsion tizim emas; u operatsion tizim qanday xizmatlar va buyruqlar taqdim etishini tavsiflaydigan texnik talablar majmuasidir.

Standartning tarkibi

POSIX dasturchi ko‘radigan bir necha qatlamni qamrab oladi. Eng muhim qismi C dasturlash tilidagi tizim chaqiruvlari va kutubxona funksiyalaridir. Faylni open() bilan ochish, read() orqali o‘qish, fork() yordamida yangi jarayon yaratish va wait() bilan uning tugashini kutish kabi amallar shu qatlamga kiradi. Standart fayl deskriptori, signal, oqim, jarayon, foydalanuvchi va guruh tushunchalarining xulqini ham aniqlaydi.

Buyruq qatori muhiti ham POSIX doirasiga kiradi. Standart shell tili, sh, awk, sed, grep, find kabi yordamchi dasturlarning asosiy parametrlari va chiqish xususiyatlarini tavsiflaydi. Shu sababli POSIX talablariga tayangan shell skripti Linux, BSD yoki boshqa Unixsimon muhitlarda o‘xshash ishlashi mumkin.

Portativlik mexanizmi

Dastur faqat standartda mavjud interfeyslardan foydalansa, uning manba kodi muayyan yadroga kamroq bog‘lanadi. Masalan, fayldan ma’lumot o‘qish jarayoni odatda quyidagi ketma-ketlikdan iborat:

  1. yo‘l nomi bo‘yicha faylni ochish;
  2. qaytgan fayl deskriptorini tekshirish;
  3. baytlarni buferga o‘qish;
  4. xatolarni errno orqali aniqlash;
  5. deskriptorni yopish.

Har bir mos operatsion tizim ushbu interfeysning ichki bajarilishini o‘zi tashkil qiladi. Dastur esa yadro tafsilotlarini emas, standart shartnomani ko‘radi.

Muvofiqlik darajasi

Operatsion tizimning Unixsimon bo‘lishi uning barcha POSIX talablariga rasmiy mosligini anglatmaydi. Rasmiy muvofiqlik sinov va sertifikatlash bilan tasdiqlanishi mumkin. Linux distributivlari POSIX interfeyslarining katta qismini taqdim etadi, biroq distributiv, C kutubxonasi va qo‘shimcha GNU kengaytmalari sababli amaliy xatti-harakatlarda farqlar uchraydi. macOS va ayrim tijoriy Unix tizimlari ham POSIX asosidagi interfeyslarga ega.

Standart bir necha tarixiy hujjatlarni birlashtirib rivojlangan. POSIX.1 tizim interfeyslariga, POSIX.2 esa shell va yordamchi dasturlarga oid nomlar sifatida keng uchraydi. Keyingi nashrlarda ular yagona spetsifikatsiya tarkibida yuritiladi.

Chegaralari

POSIX grafik interfeys, qurilma drayverining ichki modeli yoki har bir tarmoq imkoniyatini bir xil shaklda belgilamaydi. Operatsion tizimlar standartdan tashqari o‘z kengaytmalarini ham beradi. Linuxdagi epoll, BSD oilasidagi kqueue yoki muayyan fayl tizimiga xos funksiyalar portativ kod uchun alohida moslashtirish qatlamini talab qiladi. Shuning uchun POSIX mos kod mutlaq bir xil bajarilish emas, balki umumiy interfeys va semantikaga tayanadi.

Dastur kodidagi amaliy belgilash

POSIX interfeyslaridan foydalanadigan C kodi kerakli header fayllarni ulaydi va qaytish qiymatini tekshiradi. Ayrim funksiyalarning qaysi standart versiyasi bo‘yicha ochilishini feature test macro belgilaydi. Masalan, _POSIX_C_SOURCE qiymati kompilyatsiyadan oldin berilishi mumkin. Bu nomlar to‘qnashuvini kamaytiradi va tasodifiy platforma kengaytmasiga bog‘lanishni aniqlashtiradi. Portativlik sinovi faqat kompilyatsiyadan iborat emas: fayl nomi, locale, signal va parallel jarayon kabi xatti-harakatlar turli mos tizimlarda ham tekshiriladi. Build tizimi platformaga xos imkoniyatni aniqlasa, kod standart yo‘l va maxsus optimallashtirilgan yo‘lni shartli ravishda tanlashi mumkin.

Bog‘liq tushunchalar

Unix, Linux, BSD, system call, C standard library, shell, IEEE