Uy / Yangiliklar / POSIX standartining asosiy tushunchalari va g'oyalari. Posix-dagi POSIX buyruq qatori interfeysining kutilmagan hodisalari

POSIX standartining asosiy tushunchalari va g'oyalari. Posix-dagi POSIX buyruq qatori interfeysining kutilmagan hodisalari

Mavzu: Operatsion tizimlar.
Savol: № 8

—————————————————————

OS dizayn tamoyillari:

1.) Modullilik printsipi– umumiy holatda modul deganda qabul qilingan modullararo interfeyslarga muvofiq tuzilgan tizimning funktsional jihatdan to‘liq elementi tushuniladi. O'z ta'rifiga ko'ra, modul, agar ko'rsatilgan interfeyslar mavjud bo'lsa, uni osongina boshqasiga almashtirish qobiliyatini o'z ichiga oladi. Ko'p jihatdan tizimning modullarga bo'linishi foydalaniladigan OTni loyihalash usuli bilan belgilanadi (pastdan yuqoriga yoki aksincha).

Operatsion tizimni qurishda alohida ahamiyatga ega bo'lgan imtiyozli, qayta kirish va qayta kirish modullari (qayta kirish - tom ma'noda qayta kirish; maxsus atama dasturning funksionalligini ko'rsatish; uzilishdan rekursiv (qaytarilgan) qo'ng'iroq paytida to'g'ri bajarilishi uchun dasturning xossasi).

Agar ushbu printsip bir vaqtning o'zida OT, amaliy dasturlar va apparat vositalariga tarqatilsa, ushbu printsipdan foydalanishning eng katta samarasiga erishish mumkin.

2.) Funktsional selektivlik printsipi- OT doimiy ravishda mavjud bo'lishi kerak bo'lgan muhim modullarning ma'lum qismini ajratadi Ram hisoblash jarayonini yanada samarali tashkil etish uchun. OTning bu qismi yadro deb ataladi, chunki u tizimning asosi hisoblanadi. Yadro tarkibini shakllantirishda ikkita qarama-qarshi talabni hisobga olish kerak. Bir tomondan, yadro eng ko'p ishlatiladigan tizim modullarini o'z ichiga olishi kerak, ikkinchi tomondan, modullar soni yadro tomonidan egallagan xotira hajmi juda katta bo'lmasligi kerak. Yadroning bir qismi bo'lgan va doimiy ravishda RAMda joylashgan dastur modullaridan tashqari, boshqa ko'plab modullar bo'lishi mumkin. tizim dasturlari deb ataladigan nal modullar tranzit. Tranzit dastur modullari operativ xotiraga faqat kerak bo'lganda yuklanadi va bo'sh joy bo'lmasa, boshqa tranzit modullar bilan almashtirilishi mumkin.

3.) OS yaratish printsipi: Printsipning mohiyati OT ning markaziy tizim boshqaruv dasturini (yadro va operativ xotirada doimiy joylashgan asosiy komponentlar) dastlabki ko'rsatish usulini tashkil qilish (tanlash) dan iborat bo'lib, bu tizimning ushbu nazorat qismini sozlash imkonini berdi. ma'lum bir hisoblash kompleksining o'ziga xos konfiguratsiyasi va hal qilinayotgan vazifalar doirasiga asoslangan. Ushbu protsedura kamdan-kam hollarda operatsion tizimni uzoq vaqt ishlatishdan oldin amalga oshiriladi. Ishlab chiqarish jarayoni maxsus generator dasturi va ushbu dastur uchun mos keladigan kirish tili yordamida amalga oshiriladi, bu tizimning dasturiy imkoniyatlarini va mashinaning konfiguratsiyasini tavsiflash imkonini beradi. Avlodning natijasidir to'liq versiya OS. Yaratilgan OS versiyasi modullar va ma'lumotlarning tizim to'plamlari to'plamidir.

4.) Funktsional ortiqchalik printsipi: Bu tamoyil bir xil ishni turli vositalar bilan bajarish imkoniyatini hisobga oladi. OT bir nechta turdagi monitorlarni (u yoki bu turdagi resurslarni boshqaradigan supervayzer modullari), hisoblash jarayonlari o'rtasidagi aloqalarni tashkil qilishning turli vositalarini o'z ichiga olishi mumkin. Bir nechta turdagi monitorlar va bir nechta fayl boshqaruv tizimlarining mavjudligi foydalanuvchilarga operatsion tizimni ma'lum bir kompyuter tizimining konfiguratsiyasiga tez va mos ravishda moslashtirishga, muayyan sinf muammolarni hal qilishda apparatning eng samarali yuklanishini ta'minlashga va hal qilishda maksimal ishlashga imkon beradi. berilgan muammolar sinfi.

5.) Virtualizatsiya printsipi: virtual resurslarni qurish, ularni tarqatish va ulardan foydalanish hozirda deyarli har qanday OTda qo'llaniladi. Bu tamoyil tizim strukturasini jarayonni rejalashtirish va resurslarni taqsimlovchilar (monitorlar)ning ma’lum to‘plami ko‘rinishida taqdim etish va resurslarni taqsimlashning yagona markazlashgan sxemasidan foydalanish imkonini beradi.

Virtuallik kontseptsiyasining eng tabiiy va to'liq ko'rinishi bu tushunchadir virtual mashina . Foydalanuvchiga taqdim etilgan virtual mashina haqiqiy mashinaning arxitekturasini takrorlaydi, ammo bu tasvirdagi me'moriy elementlar yangi yoki takomillashtirilgan xususiyatlar bilan namoyon bo'ladi, odatda tizim bilan ishlashni soddalashtiradi. Xarakteristikalar o'zboshimchalik bilan bo'lishi mumkin, lekin ko'pincha foydalanuvchilar arxitektura xususiyatlari bo'yicha o'zlarining "ideal" mashinasiga ega bo'lishni xohlashadi, ular quyidagilardan iborat:

— amalda cheklanmagan sig'imga ega virtual xotira, operatsion mantiqda bir xil.

— parallel ishlay oladigan va ish vaqtida oʻzaro taʼsir oʻtkaza oladigan virtual protsessorlarning ixtiyoriy soni.

— virtual mashina xotirasi bilan parallel yoki ketma-ket, asinxron yoki sinxron ishlay oladigan tashqi virtual qurilmalarning ixtiyoriy soni, bu qurilmalarning ishlashini boshlaydigan muayyan virtual protsessorning ishlashiga nisbatan.

Virtualizatsiyaning jihatlaridan biri boshqa OTlar uchun ishlab chiqilgan ma'lum OTda ilovalarni ishga tushirish imkoniyatini tashkil etishdir. Boshqacha qilib aytganda, biz bir nechta operatsion muhitni tashkil qilish haqida gapiramiz.

6.) Dasturdan mustaqillik printsipi tashqi qurilmalar: Ushbu tamoyil hozirda umumiy operatsion tizimlarning ko'pchiligida qo'llaniladi. Birinchi marta bu tamoyil UNIX OTda eng izchil amalga oshirildi. U ko'pgina zamonaviy kompyuter operatsion tizimlarida ham amalga oshiriladi. Bu tamoyil shundan iboratki, dasturlar bilan bog'lanish maxsus qurilmalar dasturni efirga uzatish darajasida emas, balki uni amalga oshirishni rejalashtirish davrida amalga oshiriladi. Natijada, dasturni ma'lumotlar joylashgan yangi qurilmada ishga tushirishda qayta kompilyatsiya qilish talab qilinmaydi.

7.) Muvofiqlik printsipi: Muvofiqlikning bir jihati - bu operatsion tizimning boshqa operatsion tizimlar uchun yoki boshqa operatsion tizimlar uchun yozilgan dasturlarni ishga tushirish qobiliyati oldingi versiyalar ushbu OS, shuningdek, boshqa apparat platformalari uchun. Savollarni ajratish kerak ikkilik moslik Va manba darajasidagi muvofiqlik ilovalar.

Ikkilik moslik, bajariladigan dasturni olib, uni boshqa OTda ishga tushirishingiz mumkin bo'lganda erishiladi. Bu protsessor ko'rsatmalari darajasida muvofiqlikni va tizim chaqiruvi darajasida va hatto dinamik ravishda bog'langan bo'lsa, kutubxona chaqiruvi darajasida muvofiqlikni talab qiladi.

Manba matni darajasidagi muvofiqlik tizimning bir qismi sifatida tegishli tarjimonning mavjudligini talab qiladi dasturiy ta'minot, shuningdek, kutubxona va tizim qo'ng'iroqlari darajasida moslik. Bunday holda, mavjud manba matnlarni yangi bajariladigan modulga qayta kompilyatsiya qilish kerak.

Turli arxitekturalarga asoslangan protsessorlar o'rtasida ikkilik muvofiqlikka erishish ancha qiyinroq. Bir kompyuter boshqasining dasturlarini bajarishi uchun (masalan, IBM PC kabi kompyuter uchun dastur Apple Macintosh kabi shaxsiy kompyuterda bajarilishi kerak), bu kompyuter dastlab tushunarsiz bo'lgan mashina ko'rsatmalari bilan ishlashi kerak. unga. Bunday holda, 680x0 protsessor (yoki PowerPC) i80x86 protsessor uchun mo'ljallangan ikkilik kodni bajarishi kerak. 80x86 protsessor o'zining ko'rsatmalar dekoderiga, registrlariga va ichki arxitekturasiga ega. 680x0 protsessor 80x86 ikkilik kodini tushunmaydi, shuning uchun u har bir ko'rsatmani olib, nima ekanligini aniqlash uchun uni dekodlashi kerak.

nima qilishni mo'ljallagan va keyin 680x0 uchun yozilgan ekvivalent tartibni bajaring.

Dasturiy ta'minot va o'rtasidagi muvofiqlikni ta'minlash vositalaridan biri foydalanuvchi interfeyslari POSIX standartlariga muvofiqligi bo'lib, ulardan foydalanish bir tizimdan ikkinchisiga oson o'tkaziladigan UNIX uslubidagi dasturlarni yaratish imkonini beradi.

8.) Ochiqlik va miqyoslilik printsipi: Ochiq operatsion tizim ham foydalanuvchilar, ham kompyuter tizimiga xizmat ko'rsatuvchi tizim mutaxassislari tomonidan tahlil qilish uchun mavjud. Kengaytiriladigan (o'zgartirilgan, ishlab chiqilgan) OT nafaqat avlod imkoniyatlaridan foydalanishga, balki uning tarkibiga yangi modullarni kiritishga, mavjudlarini yaxshilashga va hokazolarga imkon beradi. Boshqacha qilib aytganda, tizimning yaxlitligini buzmasdan, kerak bo'lganda osongina qo'shimcha va o'zgartirishlar kiritish imkoniyati bo'lishi kerak. Kengaytirish uchun ajoyib imkoniyatlar mikro-yadro texnologiyasidan foydalangan holda OTni tizimlashtirishda mijoz-server yondashuvi bilan ta'minlanadi. Ushbu yondashuvga muvofiq, OT imtiyozli boshqaruv dasturlari va imtiyozsiz xizmatlar (serverlar) to'plami sifatida qurilgan. OTning asosiy qismi o'zgarishsiz qoladi, yangi serverlar qo'shilishi yoki eskilarini yaxshilash mumkin. Bu tamoyil ba'zan shunday talqin qilinadi tizimning kengaytirilishi.

9.) Mobillik printsipi: operatsion tizim portga nisbatan oson bo'lishi kerak

bir turdagi protsessordan boshqa turdagi protsessorga va protsessor turi bilan bir qatorda barcha kompyuter texnikasini (kompyuter tizimi arxitekturasi) tashkil qilish usulini o'z ichiga olgan bir turdagi apparat platformasidan apparat platformasiga o'tkazish. boshqa tur. E'tibor bering, portativlik printsipi moslik printsipiga juda yaqin, garchi ular bir xil narsa emas. Portativ operatsion tizimni yaratish har qanday portativ kodni yozishga o'xshaydi, lekin siz ba'zilariga amal qilishingiz kerak qoidalar:

— OTning aksariyati kelajakda o‘tkazilishi rejalashtirilgan barcha tizimlarda mavjud bo‘lgan tilda bajarilishi kerak. Bu, birinchi navbatda, OS tilda yozilishi kerakligini anglatadi yuqori daraja, yaxshisi standartlashtirilgan, masalan, S tilida assembler tilida yozilgan dastur odatda portativ emas.

- To'g'ridan-to'g'ri apparat bilan o'zaro ta'sir qiladigan kod qismlarini minimallashtirish yoki iloji bo'lsa, yo'q qilish muhimdir. Uskunaga bog'liqlik turli shakllarda bo'lishi mumkin. Ba'zi aniq qaramlik shakllari registrlar va boshqa apparat vositalarini bevosita manipulyatsiya qilishni o'z ichiga oladi. Nihoyat, agar apparatga bog'liq bo'lgan kodni butunlay yo'q qilishning iloji bo'lmasa, u bir nechta yaxshi mahalliylashtirilgan modullarda ajratilishi kerak. Uskunaga bog'liq kod butun tizim bo'ylab tarqalmasligi kerak. Masalan, mavhum turdagi dastur tomonidan belgilangan ma'lumotlarda qurilmaga bog'liq tuzilmani yashirishingiz mumkin.

POSIX standartlarini joriy etish yaratilayotgan dasturiy ta'minotning portativligini ta'minlash uchun mo'ljallangan edi.

10.) Hisoblash xavfsizligi printsipi: hisob-kitoblarni amalga oshirishda xavfsizlikni ta'minlash har qanday ko'p foydalanuvchili tizim uchun kerakli xususiyatdir. Xavfsizlik qoidalari bir foydalanuvchining resurslarini boshqalardan himoya qilish va bir foydalanuvchining xotira kabi barcha tizim resurslarini egallashiga yo'l qo'ymaslik uchun resurs kvotalari o'rnatish kabi xususiyatlarni belgilaydi.

Axborotni ruxsatsiz kirishdan himoya qilishni ta'minlash tarmoq operatsion tizimlarining majburiy funktsiyasidir.

—————————————————————

Nima bo'ldiPOSIX: Kompyuter muhitlari uchun platformadan mustaqil tizim interfeysi POSIX (Kompyuter muhiti uchun portativ operatsion tizim interfeysi) IEEE (Elektrotexnika va elektronika muhandislari instituti) standarti boʻlib, ochiq operatsion tizimlar, jumladan qobiqlar, yordamchi dasturlar va asboblar toʻplamlari uchun tizim interfeyslarini tavsiflaydi. Bundan tashqari, POSIXga ko'ra, xavfsizlik vazifalari, real vaqtda vazifalar, ma'muriy jarayonlar, tarmoq funktsiyalari va tranzaktsiyalarni qayta ishlash standartlashtirilgan. Standart UNIX tizimlariga asoslangan, lekin boshqa operatsion tizimlarda ham amalga oshirilishi mumkin. POSIX dunyoga mashhur IEEE tomonidan mavhum, platformadan mustaqil standartni ishlab chiqish orqali UNIX muhitlarida ilovalarni ko'chirishni targ'ib qilishga urinishi sifatida paydo bo'ldi. Masalan, taniqli QNX real vaqt rejimidagi OT ushbu standartning texnik xususiyatlariga mos keladi.

Ushbu standart tizimni batafsil tavsiflaydi virtual xotira Operatsion tizimlarni uzatish uchun VMS (Virtual xotira tizimi), MPE (Multi-Process Executing) multitasking va CTOS (An Operating System created Convergent Technology...) texnologiyasi. Demak, POSIX aslida POSIX.I orqali POSIX.12 deb nomlangan standartlar to'plamidir. Shuni ham alohida ta'kidlash kerakki, POSIX.1 C tilini asosiy til sifatida qabul qiladi

tizim API funktsiyalarini tavsiflash uchun til.

Shunday qilib, ushbu standartlarga yozilgan dasturlar barcha POSIX-mos keladigan tizimlarda bir xil ishlaydi. Biroq, ba'zi hollarda standart faqat maslahat xarakteriga ega. Ba'zi standartlar juda qat'iy tavsiflangan, boshqalari esa asosiy talablarni faqat yuzaki ochib beradi.

POSIX API-ni darajada tatbiq etish operatsion tizim har xil. UNIX tizimlarining katta qismi dastlab IEEE Standard 1003.1-1990 spetsifikatsiyalariga mos kelsa-da, WinAPI POSIX bilan mos kelmaydi. Biroq, ushbu standartni qo'llab-quvvatlash uchun MS Windows NT operatsion tizimi foydalanuvchi jarayonlarining imtiyozlar darajasida ishlaydigan maxsus POSIX API qo'llab-quvvatlash modulini taqdim etdi.

Ushbu modul Win API orqali yadro bilan ishlaydigan foydalanuvchi dasturidan tizim yadrosiga va orqaga qo'ng'iroqlarni aylantirish va uzatishni ta'minlaydi. WinAPI yordamida yaratilgan boshqa ilovalar standart kiritish-chiqarish oqim mexanizmlari (stdin, stdout) orqali POSIX ilovalariga ma'lumotlarni uzatishi mumkin.

Shunga o'xshash postlar yo'q...

POSIX (Kompyuter muhitlari uchun portativ operatsion tizim interfeysi) tizim interfeyslarini tavsiflovchi IEEE (Elektrotexnika va elektronika muhandislari instituti) standartidir.

"Shu nuqtai nazardan, tizim buyruqlarini hisoblash jarayonlarini boshqarishga imkon beruvchi ma'lum dasturlar to'plami sifatida tushunish kerak, masalan, pstat, kill, dir va boshqalar.


POSIX interfeysi________________________________________________________ 305

ochiq operatsion tizimlar, shu jumladan qobiqlar, yordamchi dasturlar va asboblar uchun yuzlar. Bundan tashqari, POSIXga ko'ra, xavfsizlik vazifalari, real vaqtda vazifalar, ma'muriy jarayonlar, tarmoq funktsiyalari va tranzaktsiyalarni qayta ishlash standartlashtirilgan. Standart UNIX tizimlariga asoslangan, lekin boshqa operatsion tizimlarda ham amalga oshirilishi mumkin.

POSIX interfeysi IEEE tomonidan mavhum, platformadan mustaqil standartni ishlab chiqish orqali UNIX muhitlarida ilovalarni ko'chirishni targ'ib qilishga urinishi sifatida boshlandi. Biroq, POSIX UNIX tizimlari bilan cheklanmaydi; IEEE standarti 1003.1-1990 (POSIX.1) talablariga javob beradigan tizimlarda ushbu standartning turli xil ilovalari mavjud. Masalan, mashhur QNX real vaqt rejimidagi OT ushbu standartning spetsifikatsiyalariga mos keladi, bu esa ilovalarni ushbu tizimga portlashni osonlashtiradi, lekin u hech qanday shaklda UNIX tizimi emas, chunki uning arxitekturasi butunlay boshqacha tamoyillardan foydalanadi.

Ushbu standart Virtual xotira tizimi (VMS), Multiprocess Executing (MPE) va Portativ operatsion tizim (CTOS) texnologiyasini batafsil tavsiflaydi. Shunday qilib, POSIX aslida ko'p POSIX standartlaridir. 1-POSIX. 12. Jadvalda. 9.1 ushbu standartlarda tavsiflangan asosiy yo'nalishlarni sanab o'tadi. Shuni ham alohida ta'kidlash kerakki, POSIX-da. 1 Tizim API funksiyalarini tavsiflash uchun asosiy til C sifatida qabul qilinadi.

9.1-jadval. POSIX standartlari oilasi

Standart ISO standarti qisqacha tavsifi

POSIX.0 Yo'q Ochiq tizimlar standartiga kirish. Ushbu hujjat

sof shaklda standart emas, balki tavsiyalarni ifodalaydi va qisqacha ma'lumot texnologiyalar

POSIX.1 Ha System API (C tili)

POSIX.2 Shells va yordamchi dasturlar yo'q (IEEE tomonidan tasdiqlangan)

POSIX.3 Sinov va tekshirish yo'q

POSIX.4 Haqiqiy vaqtda vazifalar va bajarilish bosqichlari yo'q

POSIX.5 Ha ADA tilidan foydalanish mumkin

POSIX standartiga. 1

POSIX.6 Tizim xavfsizligi yo'q

POSIX.7 Tizim boshqaruvi yo'q

POSIX.8 Tarmoq yo'q, fayllarga shaffof kirish, mavhum

tarmoq interfeyslari, jismoniy protokollardan mustaqil, RPC qo'ng'iroqlari, protokolga bog'liq ilovalar bilan tizim aloqasi

POSIX.9 Ha Fortran tilidan foydalanish, amal qilishi mumkin

POSIX standartiga. 1

POSIX. 10 Super-hisoblash ilovalari muhiti profili (AEP) yo'q

POSIX. 11 AEP tranzaksiyalarini qayta ishlash yo'q

POSIX. 12 Grafik foydalanuvchi interfeysi yo'q (GUI)


306____________________________ 9-bob. Operatsion tizimlar arxitekturasi

Shunday qilib, ushbu standartlarga yozilgan dasturlar barcha POSIX-mos keladigan tizimlarda bir xil ishlaydi. Biroq, standartlar qisman faqat maslahat xarakteriga ega. Ba'zi standartlar juda qat'iy tavsiflangan, boshqalari esa asosiy talablarni faqat yuzaki ochib beradi. Ko'pincha dasturiy ta'minot tizimlari POSIX-mos deb e'lon qilinadi, ammo ularni bunday deb atash mumkin emas. Buning sabablari turli xil operatsion tizimlarda POSIX interfeysini amalga oshirishga rasmiy yondashuvda yotadi. Shaklda. 9.1-rasmda POSIX-ga qat'iy mos keladigan dastur uchun odatiy dastur diagrammasi ko'rsatilgan.

Guruch. 9.1. POSIX standartiga qat'iy mos keladigan dasturni amalga oshirish diagrammasi

Rasmda ko'rinib turibdiki, dastur operatsion tizim bilan ishlash uchun faqat POSIX kutubxonalaridan foydalanadi. 1 va faqat 110 xil funksiyadan foydalanish mumkin bo'lgan standart C RTL kutubxonasi, shuningdek, POSIX standarti tomonidan tasvirlangan. 1.

Afsuski, ko'pincha, ma'lum bir quyi tizimning ishlashini oshirish yoki tegishli operatsion muhitga dasturni qo'llash doirasini cheklaydigan xususiy texnologiyalarni joriy qilish uchun dasturlash paytida POSIX standartiga mos kelmaydigan boshqa funktsiyalar qo'llaniladi.

Operatsion tizim darajasida POSIX standartini amalga oshirish turlicha. UNIX tizimlarining katta qismi dastlab IEEE Standard 1003.1-1990 spetsifikatsiyalariga mos kelsa-da, WinAPI POSIX bilan mos kelmaydi. Biroq, operatsiya xonasida uni qo'llab-quvvatlash uchun Windows tizimi NT foydalanuvchi jarayonlarining imtiyozlar darajasida ishlaydigan POSIX standartini qo'llab-quvvatlash uchun maxsus API modulini taqdim etdi. Ushbu modul qo'ng'iroqlarni foydalanuvchi dasturidan tizim yadrosiga va orqaga o'tkazish va WinAPI orqali yadro bilan ishlashni ta'minlaydi. WinAPI yordamida yozilgan boshqa ilovalar POSIX ma'lumotlarini ilovalarga standart stdin va stdout I/U oqim mexanizmlari orqali o'tkazishi mumkin.


Turli API uchun dasturlash misollari____________________ 307

Turli API uchun dasturlash misollari

Shaxsiy kompyuterlar uchun eng mashhur zamonaviy operatsion tizimlarning API interfeyslari o'rtasidagi tub farqlarni aniq ko'rsatish uchun keling, ko'rib chiqaylik. eng oddiy misol, unda siz bo'shliqlar sonini hisoblashingiz kerak matnli fayllar, ularning nomlari buyruq satrida ko'rsatilishi kerak. Dasturning ikkita versiyasini ko'rib chiqaylik: Windows uchun (WinAPI yordamida) va Linux uchun (POSIX API).

Biz parallel topshiriqlar bilan ishlashdan manfaatdormiz, deb faraz qilaylik, dastur bajarilganda buyruq satrida sanab o'tilgan fayllarning har biri uchun boshqa jarayonlar bilan parallel ravishda o'z jarayoni yoki bajaruvchi ip (topshiriq) yaratiladi. (iplar), "o'z" faylidagi bo'shliqlarni hisoblash ishini bajaradi. Dasturning natijasi har biri uchun hisoblangan bo'shliqlar soniga ega fayllar ro'yxati bo'ladi.

Quyida keltirilgan ushbu muammoni hal qilish bo'yicha dasturlarni amalga oshirish yagona mumkin bo'lmagan holatlar emasligiga alohida e'tibor qaratish lozim. Ko'rib chiqilayotgan ikkala operatsion tizim ham fayl tizimi bilan ishlash va jarayonlarni boshqarishning turli usullariga ega. IN Ushbu holatda faqat bitta variant ko'rib chiqiladi, lekin u tegishli API interfeysi uchun eng tipik variant hisoblanadi.

Ushbu (9.1 ro'yxat) va keyingi (9.2 ro'yxat) dasturlarni solishtirishni qulayroq qilish uchun, shuningdek, vazifa uni hal qilish uchun oyna interfeysini talab qilmasligini hisobga olgan holda, faqat API qo'ng'iroqlari ta'sir qilmaydi. matnda grafik interfeysdan foydalaniladi. Albatta, bugungi kunda dastur GUI imkoniyatlaridan foydalanmasligi kamdan-kam uchraydi, ammo bizning holatlarimizda siz darhol boshlangan hisob-kitoblarning parallel ishlashini tashkil etishdagi farqni ko'rishingiz mumkin.

Aleksey Fedorchuk
2005 yil

POSIX oilasi operatsion tizimlari fayl tizimining mantiqiy tuzilishining o'ziga xos xususiyatlaridan biri bu ularning ierarxik yoki daraxtga o'xshash tashkil etilishidir (garchi, men aytganimdek, daraxt biroz g'alati ko'rinadi). Ya'ni, har qanday turdagi DOS yoki Windows-da bo'lgani kabi, alohida ommaviy axborot vositalari va ularning bo'limlari uchun hech qanday belgi (masalan, alifbo yoki boshqa) mavjud emas: ularning barchasi asosiy katalogning pastki kataloglari sifatida bitta tuzilishga kiritilgan. ildiz deb ataladi. Ulanish jarayoni fayl tizimlari mustaqil jismoniy tashuvchilarda (va ularning bo'limlarida) fayl daraxtining ildiziga o'rnatish mount deb ataladi va ular tarkibiga kiruvchi kichik kataloglar ulanish nuqtalari deb ataladi.

Tarixan, Unix ma'lum bir katalog tuzilmasini ishlab chiqdi, bu oilaning turli a'zolari orasida umumiy nuqtai nazardan juda o'xshash, ammo tafsilotlari bilan bir oz farq qiladi. Xususan, BSD tizimlarida fayllar ierarxiyasi deyarli bir xil bo'lib, Linuxdagidan farq qiladi. Va ikkinchisida, turli xil taqsimotlar o'rtasida sezilarli farqlar topiladi. Fayl ierarxiyasining tuzilishi tarqatishning o'ziga xos xususiyatlaridan biri ekanligiga.

Ushbu holat platformalararo ilovalarni yozishni qiyinlashtiradi. Va shuning uchun fayl ierarxiyasini standartlashtirish loyihasi mavjud va faol rivojlanmoqda - FHS (Fayl tizimi ierarxiyasi standarti).

FHS loyihasi dastlab ko'plab Linux distributivlarining katalog tuzilmasini tartibga solishga qaratilgan edi. Keyinchalik u Unix-ga o'xshash boshqa tizimlar uchun moslashtirildi (jumladan, BSD klan). Hozir esa uni nafaqat nomi, balki haqiqatda POSIX tizimlari uchun standart qilish bo‘yicha faol (lekin unchalik muvaffaqiyatli emas) harakatlar olib borilmoqda.

FHS standarti ikkita asosiy tamoyilga tayanadi - bir tomondan, umumiy va umumiy bo'lmagan kataloglarning fayl ierarxiyasida aniq ajratish, boshqa tomondan o'zgarmas va o'zgaruvchan.

Umumiy va umumiy bo'lmagan kataloglar o'rtasidagi ziddiyat Unix ning o'ziga xos tarmoq xususiyatiga bog'liq. Ya'ni, mahalliy mashina bilan bog'liq ma'lumotlar (masalan, uning qurilmalari uchun konfiguratsiya fayllari) mahalliy yoki global tarmoqdagi boshqa mashinalardan mazmuniga kirish mumkin bo'lgan kataloglardan alohida kataloglarda joylashgan bo'lishi kerak (bunga misol faqat foydalanuvchi emas) ma'lumotlar, balki dasturlar).

O'zgarmas va o'zgaruvchan kataloglar o'rtasidagi kontrastning mohiyatini misol bilan osongina tushuntirish mumkin. Shunday qilib, bir xil umumiy foydalanuvchi dasturlari tabiatan o'zgarmas bo'lishi kerak (aniqrog'i, o'zgartirish faqat tizim ma'muri uchun mavjud, lekin ulardan o'z ishida foydalanadigan foydalanuvchining o'zi uchun emas). Shu bilan birga, ushbu dasturlar o'z faoliyati davomida nafaqat ma'lumotlar fayllarini, aytaylik, matnlar yoki tasvirlarni (ularning o'zgaruvchan tabiati izohsiz aniq), balki barcha turdagi xizmat ma'lumotlarini, masalan, log fayllari, vaqtinchalik fayllar va kabi). Ularni ishga tushirish uchun zarur bo'lgan dasturlar, kutubxonalar, konfiguratsiya fayllari va boshqalarning haqiqiy bajariladigan fayllaridan ajratilgan kataloglarda guruhlash kerak.

Biroq, ko'pgina eng keng tarqalgan Linux distributivlarida faol reklama qilinishiga qaramay, FHS haqiqiy standart maqomiga erisha olmadi. Uning ba'zi qoidalaridan foydalanmaydigan ko'plab Linux distributivlari mavjud. Va bu faqat qisman BSD tizimlarining an'anaviy fayl ierarxiyasi bilan bog'liq.

Buning sababi shundaki, FHS foydalanuvchi uchun juda muhim bo'lgan yana bir kontrastni e'tiborsiz qoldiradi: fayl tizimining oson tiklanadigan qismlari va uning tiklanishi qiyin yoki umuman tiklanmaydigan qismlari o'rtasidagi kontrast.

Birinchisi, g'alati darajada, asosiy tizimning o'zini o'z ichiga oladi: oxir-oqibat, halokatli halokat sodir bo'lgan taqdirda uni tarqatish vositasidan qayta o'rnatish unchalik qiyin emas. Fayl tizimining qayta tiklanishi qiyin bo'lgan qismlari foydalanuvchi ma'lumotlarini o'z ichiga oladi: ular muntazam ravishda zaxiralangan bo'lsa ham (va qancha foydalanuvchilar juda ehtiyotkor?), ularni arxivdan olib tashlash juda ko'p vaqtni oladi (va deyarli muqarrar ravishda shunday bo'ladi). ba'zi yo'qotishlar).

Bundan tashqari, BSD tizimlarida va Manbaga asoslangan Linux distributivlarida paketlarni boshqarish bilan bog'liq hamma narsani tiklash qiyin bo'lgan kataloglar sifatida tasniflagan bo'lardim - NetBSD'dagi FreeBSD portlar daraxti yoki pkgsrc (va uni qarzga olgan tizimlar), ularning Linux distributivlaridagi o'xshashlari, portlangan dasturlarning haqiqiy manbalari va tizimning manba kodlari ham. Chunki, bularning barchasi tarqatish to'plamida mavjud bo'lsa ham, ushbu fayl tizimining komponentlari, qoida tariqasida, tarmoq orqali loyiha serverlari bilan sinxronlash orqali foydalanuvchi tomonidan yangilanib turadi (aks holda ulardan foydalanish ma'nosizdir). Va ularning yo'qolishi vaqtinchalik (ayniqsa modem ulanishi bilan) va moliyaviy (bir necha kishi bepul Internetga kirishning baxtli egalari) yo'qotishlariga olib keladi.

Birgalikda va umumiy bo'lmagan, o'zgarmas va o'zgarmas, tiklanadigan va tiklanmaydigan kataloglarni bir-biridan ajratish kontseptsiyasiga qat'iy rioya qilish, bitta daraxtga o'xshash fayl ierarxiyasi doirasida uning alohida filiallarini jismoniy, ya'ni shaklda ajratish imkonini beradi. ajratilgan qurilmalarda joylashgan mustaqil fayl tizimlari (disklar, disk bo'limlari, bo'laklar, bo'limlar va boshqalar). Buning ko'plab sabablari bor - tezlikni oshirish, ishonchlilikni oshirish va oddiygina qulaylik haqida fikr yuritish - lekin biz hozir ular haqida gapirmaymiz. Chunki ichida hozirgi paytda Biz uchun muhim narsa shundaki, fayl daraxtining bu shoxlari umumiy fayl tizimiga kiritilishi kerak.

POSIX tizim kataloglarining odatiy to'plami

Aslida, ishlash uchun faqat bitta fayl tizimi bo'lishi kerak - bu fayl daraxtining ildiz katalogiga o'rnatilgan (Yggdrassil dunyo daraxtining o'ziga xos analogi). Ildiz katalogi va uning asosiy filiallari bitta tashuvchida joylashgan yagona fayl tizimini tashkil qilishi kerak - disk, disk bo'limi, dasturiy yoki apparat RAID massivi yoki LVM ma'nosida mantiqiy hajm. Va u tizimni ishga tushirish uchun zarur bo'lgan barcha komponentlarni o'z ichiga olishi kerak va ideal holda, boshqa hech narsa yo'q.

Buyruq yordamida ildiz katalogining tarkibini ko'rishingiz mumkin

$ls -1/

har qanday POSIX tizimida ma'lum bir minimal janoblar kataloglari to'plamini ko'rsatadi:

Bin/ boot/ etc/ root/ sbin/

Ularda tizim mavjud bo'lmagan barcha fayllar mavjud. Boshqa kataloglar shunga o'xshash:

Bosh sahifa/ mnt/ opt/ tmp/ usr/ var/

Ular a) talab qilinmaydi (hech bo'lmaganda nazariy jihatdan - amalda ularsiz qilish qiyin), b) ularning har biri barcha tizimlar va taqsimotlarda mavjud emas va c) ularning har biri bo'lishi mumkin (va ko'pincha - agar siz hamma narsani oqilona qilasiz) ) fayl daraxtining o'z filialining o'rnatish nuqtasi.

Bundan tashqari, ko'p hollarda, POSIX-mos keladigan operatsion tizimlarning fayl tizimining ildizida yana ikkita kichik katalog mavjud:

Dev/proc/

Bu odatda virtual fayl tizimlarining ulanish nuqtalari - mos ravishda qurilmalar va jarayonlar (garchi qurilma fayl tizimi ishlatilmasa, /dev katalogi ildiz fayl tizimining tarkibiy qismi bo'lishi kerak. Nihoyat, Linux tizimlarida, qoida tariqasida. , fayl daraxtining ildizi, shuningdek, asosiy tizim kutubxonalari uchun mo'ljallangan /lib katalogi mavjud va udev mexanizmidan foydalanganda, sysfs virtual fayl tizimi o'rnatilgan /sys katalogi ham muqarrar.

Ildiz fayl tizimi

Ildiz fayl tizimi umumiy bo'lmagan (ya'ni uchun mo'ljallanmagan almashish tarmoqdagi turli xil mashinalar) va o'zgarmas (ya'ni, unga o'zgartirishlar faqat tizim administratori tomonidan amalga oshirilishi mumkin, lekin foydalanuvchi dasturlari va ayniqsa, foydalanuvchilar tomonidan emas). Bundan tashqari, unda standartda (va yuqorida sanab o'tilgan) ko'rsatilganlardan tashqari kichik kataloglarni yaratish tavsiya etilmaydi.

Ildiz fayl tizimining tarkibi shunday tanlanganki, mashina favqulodda yuklash paytida (yoki bitta foydalanuvchi rejimida), boshqa barcha fayl tizimlari o'rnatilmagan bo'lsa ham (va shunga mos ravishda uning /usr yoki / var kabi filiallar mavjud bo'lmasligi mumkin.

Shunga ko'ra, mashinaning ishga tushirilishi / boot va / etc katalog fayllari bilan ta'minlanadi. Birinchisi tizim yadrosini o'z ichiga oladi - "maxsus maqsadli" bajariladigan fayl - va uni yuklash uchun zarur bo'lgan barcha narsalar: Linuxda, masalan, bu tizim xaritasi (fayl /etc/System.map) va FreeBSD-da - yuklanishi mumkin yadro modullari. Biroq, ba'zida yadro to'g'ridan-to'g'ri fayl tizimining ildizida joylashgan bo'lib, keyin /boot katalogi umuman yo'q bo'lishi mumkin va /modules katalogi yadro modullari uchun ajratilgan bo'lishi mumkin.

/etc katalogi yuklash shartlarini aniqlaydigan tizim bo'ylab konfiguratsiya fayllari uchun mo'ljallangan. Uning mazmuni juda ko'p tizimga bog'liq (va Linuxda, shuningdek, tarqatishda) va shuning uchun men buni bu erda ko'rib chiqmayman - men bu mavzuga bir necha marta qaytishim kerak.

Minimal talab qilinadigan funksionallik /bin va /sbin kataloglarining mazmuni bilan ta'minlanadi - ular eng muhim foydalanuvchi va tizim dasturlarining bajariladigan fayllarini o'z ichiga oladi, ular sizga ta'mirlash va qutqarish choralarini ko'rishga imkon beradi. nosozlikdan keyin mashinani inson qiyofasiga qaytaring.

Tizim va foydalanuvchi dasturlarini ildizning pastki kataloglariga taqsimlash juda o'zboshimchalik bilan amalga oshiriladi. Ushbu buyruqlarning hech biri haqiqatan ham foydalanuvchi muammolarini hal qilish uchun mo'ljallanmagan. Shunchaki, /bin katalogida oddiy foydalanuvchi vaqti-vaqti bilan kiradigan (yoki kirishi mumkin bo'lgan) boshqaruv buyruqlari mavjud va sbin katalogi foydalanuvchi bilishi kerak bo'lmagan buyruqlar uchun mo'ljallangan. Va ko'p hollarda u tegishli ruxsatnomalar yo'qligi sababli hali ham foydalana olmaydi (masalan, qurilma fayllariga kerakli kirish huquqlari).

POSIX dasturlarini (shu jumladan, /bin va sbin kataloglarida to'planganlar) ishga tushirish uchun, qoida tariqasida, butun tizim kutubxonalari (birinchi navbatda, asosiy glibc kutubxonasi) funksiyalariga kirishingiz kerak. Va shuning uchun (deyarli) ildiz katalogining ajralmas komponenti /lib pastki katalogi bo'lib, ular to'planadi.

Linuxda /lib katalogi yana bir muhim maqsadga xizmat qiladi - uning pastki katalogi (/lib/modules) yuklanadigan yadro modullarini o'z ichiga oladi (FreeBSD-da ularning o'rni /boot/kernel katalogi).

FreeBSD-da /lib katalogi ildiz fayl tizimida topilmaydi - tegishli komponentlar bu erda /usr/lib da joylashgan (pastga qarang). Buning sababi shundaki, tarixan FreeBSD butun tizim bo'ylab muhim dasturlarni yaratgan, shuning uchun ular talab qilinadigan kutubxona funktsiyalari ularning bajariladigan fayllariga o'rnatilgan (statik bog'lanish deb nomlanadi, 14-bobda muhokama qilingan). FreeBSD 5-boʻlimida /bin va /sbin kataloglaridagi dasturlar dinamik ravishda bogʻlangan, yaʼni /usr katalogi boʻlmaganda (Free-da esa bu deyarli har doim fayl tizimining alohida boʻlimi boʻladi), ular ishlamaydi. . Buning o'rnini qoplash uchun bir xil dasturlarni o'z ichiga olgan, ammo statik ravishda bog'langan nostandart / tiklash katalogi taqdim etiladi (katalog nomidan ko'rinib turibdiki, uning mazmunining yagona maqsadi favqulodda qutqaruv ishlaridir).

Va nihoyat /root . Bu xuddi shu nomdagi foydalanuvchining odatiy uy katalogi, ya'ni tizim ma'muri. Chunki yo'q amaliy ish unday emas (yoki hech bo'lmaganda bo'lmasligi kerak), uning mazmuni faqat superuserning o'z konfiguratsiya fayllari (foydalanuvchining buyruq qobig'i, sevimli muharriri va boshqalar).

Filial /usr

Tarixiy jihatdan, /usr katalogi foydalanuvchi dasturlari va ma'lumotlari uchun edi. Bu funksiyalar endi /usr/local va /home kataloglari o'rtasida bo'lingan (garchi ikkinchisi hali ham FreeBSD-da sukut bo'yicha /usr/home ga simli bog'lanish bo'lsa ham). /usr katalogi o'zgaruvchan emas, balki umumiy bo'lib, amaliy dasturlarning asosiy qismi va ular bilan bog'liq bo'lgan barcha narsalar - manba kodlari, konfiguratsiya fayllari, umumiy kutubxonalar, hujjatlar va boshqalar uchun ombor bo'lib xizmat qiladi.

/usr katalogining tarkibi BSD tizimlari va Linux o'rtasida sezilarli darajada farq qiladi. Birinchisida, unda faqat operatsion tizimning ajralmas qismlari joylashtirilgan (FreeBSD-da nima tarqatish tushunchasi bilan birlashtirilgan). Portlar yoki paketlardan o'rnatilgan ilovalar /usr/local pastki katalogida ro'yxatga olinadi, bu fayl daraxtining alohida bo'limini ko'rsatishi mumkin.

Linuxda /usr katalogi standart ravishda taqsimotga kiritilgan barcha dasturlar (va ularning komponentlari) uchun ombor vazifasini bajaradi. Va /usr/local pastki katalogi odatda manbalardan mustaqil ravishda tuzilgan dasturlar uchun mo'ljallangan.

Qanday bo'lmasin, /usr katalogining odatiy tarkibi quyidagicha (ls -1 buyrug'ining chiqishi kabi):

X11R6/ bin/ etc/ include/ lib/ libexec/ local/ sbin/ share/ src/

Yuqorida aytib o'tilganidek, /usr/local pastki katalogi fayl daraxtining alohida filiali bo'lib, shuning uchun alohida ko'rib chiqiladi. Boshqa kataloglarning maqsadi quyidagilardan iborat:

  • /usr/bin va /usr/sbin foydalanuvchi va tizim dasturlarining bajariladigan fayllari uchun mo'ljallangan (bu erda ular orasidagi chegara ildiz katalogiga qaraganda ko'proq o'zboshimchalik bilan bo'ladi), ularning maqsadi asosiy ishlashini ta'minlashdan tashqarida. tizim;
  • /usr/etc alohida ilovalarning konfiguratsiya fayllari uchun;
  • /usr/include bajariladigan fayllarni kutubxona komponentlari bilan bog'lash uchun zarur bo'lgan sarlavha fayllarini o'z ichiga oladi;
  • /usr/lib va ​​/usr/libexec foydalanuvchi ilovalari bog'liq bo'lgan umumiy kutubxonalar uchun kataloglardir;
  • /usr/share - keng ko'lamli deb ataladigan konteyner. arxitektura jihatdan mustaqil komponentlar: bu yerda siz turli formatdagi hujjatlarni, konfiguratsiya fayllari misollarini, konsol boshqaruv dasturlari tomonidan foydalaniladigan maʼlumotlarni (shriftlar, klaviatura maketlari) va vaqt zonalari tavsiflarini koʻrishingiz mumkin;
  • /usr/src - manba kodlari uchun katalog; Linuxda odatda bu yerda faqat tizim yadrolari (yadrolarining) manba kodlari joylashtiriladi, BSD klonlarida esa FreeBSD da Distributionlar deb ataladigan kompleks manba kodlarining to'liq to'plami; Qoidaga ko'ra, bu erda o'z-o'zidan yig'ilgan dasturlarning manba kodlarini joylashtirish tavsiya etilmaydi;
  • /usr/X11R6 - X oyna tizimining komponentlari uchun katalog - bajariladigan fayllar (/usr/X11R6/bin), kutubxonalar (/usr/X11R6/lib), sarlavhalar (/usr/X11R6/include), hujjatlar (/usr/ X11R6/ man); X ilova fayllari bu erga joylashtirilmasligi kerak (oyna boshqaruvchilaridan tashqari) - ularning o'rni tizimga qarab /usr, /usr/local yoki /optda.

Bundan tashqari, /usr katalogida /usr/var va /usr/tmp pastki kataloglari bo'lishi mumkin - odatda ildiz katalogining tegishli bo'limlariga ramziy havolalar. Va ba'zi Linux distributivlarida tizim bo'ylab asosiy hujjatlar - man sahifalari (/usr/man pastki katalogida) to'g'ridan-to'g'ri /usr-ga joylashtirilgan.

Va nihoyat, BSD tizimlarida va ba'zi Source-based Linux distributivlarida (masalan, Gentoo) /usr katalogi paketlarni boshqarish tizimi uchun pastki katalogni o'z ichiga oladi - FreeBSD va OpenBSD portlari (/usr/ports), ularning boshqa tizimlardagi analoglari (/usr) Gentoodagi portage). FHS standartining harfi va ruhiga rioya qilish nuqtai nazaridan (uning o'zi portlar va shunga o'xshash tizimlar haqida hech qanday so'z aytilmagan), ularni joylashtirish uchun mantiqiyroq joy /var katalogi bo'ladi (pastga qarang) - va Bu aynan CRUX va Archlinux kabi tarqatishlarda amalga oshiriladigan narsa.

Filial /usr/local

Yuqorida aytib o'tilganidek, Linux-dagi /usr/local bo'limi manba kodidan mustaqil ravishda tuzilgan dasturlar uchun mo'ljallangan (ushbu distributsiyaga kiritilmagan). FreeBSD-da esa u ko'pchilik foydalanuvchi ilovalari uchun konteyner bo'lib xizmat qiladi - Distributionlardan tashqariga chiqadigan va paketlar yoki portlardan o'rnatiladigan deyarli hamma narsa. Shunga ko'ra, katalog tuzilishi umuman /usr filialiga mos keladi (aniq istisnolardan tashqari):

Bin/ etc/ include/ lib/ man/ sbin/ share/

Kichik kataloglarning mazmuni ham o'xshash: bajariladigan dastur fayllari (/usr/local/bin va /usr/local/sbin), ularning konfiguratsiyasi (/usr/local/etc), ular bog'langan kutubxonalar va ularning sarlavha fayllari (mos ravishda/usr/ local/lib va ​​/usr/local/include ), man sahifalari (/usr/local/man) va arxitekturadan mustaqil barcha turdagi narsalar (/usr/local/share), shu jumladan boshqa formatlardagi hujjatlar .

Filial / opt

/opt katalogi FHS standarti tomonidan taqdim etilgan, lekin aslida barcha Linux distributivlarida ishlatilmaydi va BSD tizimlarida umuman yo'q. Biroq, ko'proq va ko'proq dasturlar standart o'rnatishni hisobga olgan holda yoziladi.

Tarixan, /opt katalogi Linuxda tijorat ilovalari va mutlaqo bepul bo'lmagan barcha turdagi dasturlar uchun mo'ljallangan. Hozirgi vaqtda uning maqsadi Qt kutubxonasi, barcha komponentlari va ilovalari bilan KDE, OpenOffice.org va boshqalar kabi o'zini o'zi ta'minlaydigan yirik dasturiy komplekslarni joylashtirishdir. Katalog tuzilishi shunday bo'lishi kerak: /opt/pkg_name. Mening tizimimda (Archlinux) shunday ko'rinadi:

$ ls -1 /opt gnome/ kde/ OpenOffice.org1.1.2/ qt/

Kichik kataloglarning har biri o'zining ichki tuzilishiga ega:

$ ls -1 /opt/* /opt/gnome: bin/ lib/ man/ share/ /opt/kde: bin/ etc/ include/ lib/ share/ /opt/OpenOffice.org1.1.2: yordam/ LITSENZIYa. html dasturi/ README README.html setup@ share/ spadmin@ THIRDPARTYLICENSEREADME.html foydalanuvchisi/ /opt/qt: bin/ doc/ include/ lib/ mkspecs/ phrasebooks/ plugins/ templates/ translations/

/opt/pkg_name ichidagi pastki kataloglarning maqsadini /usr va /usr/local bilan taqqoslash orqali aniqlash oson. Masalan, /opt/kde/bin KDE tizimining bajariladigan fayllari va uning ilovalari uchun, /opt/kde/etc konfiguratsiya fayllari uchun, /opt/kde/include sarlavhali fayllar uchun, /opt/kde/lib kutubxonalar uchun va /opt/kde/share - umumiy fayllar, jumladan, hujjatlar uchun. KDE-da man formatidagi hujjatlar yo'q, lekin agar mavjud bo'lsa, u holda (Gnome misolida bo'lgani kabi - men uni o'rnatmaganman, Gimp va shunga o'xshash Gtk ilovalari tortgan narsa) siz /opt/pkg_name/ pastki katalogini ko'rishingiz mumkin. odam.

Ko'rishingiz mumkinki, /opt katalogining tuzilishi tarixiy (va o'xshash komponentlarni kataloglarga - bajariladigan fayllar, kutubxonalar va boshqalarga birlashtirishning ichki asosli POSIX an'anasidan) chetga chiqadi. Va unda o'rnatilgan ko'p sonli dasturlar bilan bu muayyan qiyinchiliklarni keltirib chiqaradi. : o'zgaruvchini yoki buyruqlarga tezkor kirishni ta'minlaydigan $PATH qiymatlari bilan ortiqcha yuklashingiz kerak (bu 12-bobda muhokama qilinadi) yoki maxsus /opt/bin katalogini yarating va unda bajariladigan dastur ikkiliklariga ramziy havolalarni joylashtiring , bir qator Linux distribyutorlarida (masalan, CRUX-da) opti printsipial jihatdan ishlatilmaydi, chunki barcha BSD tizimlarida bu yaxshi bo'lishi mumkin.

/var filiali

Nomidan ko'rinib turibdiki, /var katalogi turli dasturlarning normal ishlashi paytida hosil bo'lgan o'zgaruvchan fayllarni saqlash uchun mo'ljallangan - dasturiy ta'minot (masalan, brauzer) keshlari, jurnal fayllari, chop etishni saqlash va pochta tizimlari, pochta qutilari, ishlaydigan jarayonlarning tavsiflari va boshqalar. Xususan, /var katalogida axlatxonalar deb ataladigan narsalar joylashtirilgan - uning sabablarini aniqlash uchun g'ayritabiiy o'chirish paytida hosil bo'lgan RAM holatining oniy tasvirlari. Ushbu komponentlarning barchasining o'ziga xos xususiyati ish seansi paytida ularning o'zgaruvchanligi va shunga qaramay, tizim qayta ishga tushirilganda saqlanishi kerakligidir.

/var ning ichki tuzilishi tizimdan tizimga juda katta farq qiladi, shuning uchun men uning tuzilishi tafsilotlariga to'xtalmayman. Shuni ta'kidlash kerakki, ushbu katalog har qanday portga o'xshash paketlarni boshqarish tizimlarining tarkibiy qismlarini joylashtirish uchun mantiqiy joy, masalan, Archlinux distributivida, u uchun /var/abs pastki katalogi ajratilgan (abs). - Archlinux Building System).

Katalog /mnt

/mnt katalogi, qoida tariqasida, olinadigan muhitda joylashgan vaqtinchalik foydalaniladigan fayl tizimlarini o'rnatish uchun mo'ljallangan. To'liq o'rnatilgan tizimda odatda bo'sh bo'ladi va uning tuzilishi hech qanday tartibga solinmaydi. Foydalanuvchi ommaviy axborot vositalarining alohida turlari uchun unda pastki kataloglarni yaratishi mumkin. Misol uchun, mening tizimimda bu /mnt/cd, /mnt/dvd, /mnt/usb va /mnt/hd - CD, DVD, flesh-disklar va olinadigan qattiq disklar uchun.

FreeBSD-da CD va floppi disklarni o'rnatish uchun standart kataloglar to'g'ridan-to'g'ri ildiz katalogida /cdrom va /floppy hisoblanadi. Bu standartga to'liq mos kelmaydi, lekin o'ziga xos tarzda mantiqiydir - har qanday mashinada mavjud bo'lgan (masalan, CD ROM) yoki yaqin vaqtgacha mavjud bo'lgan (floppi diski) qurilmalarning ulanish nuqtalari ildizga joylashtirilgan.

Filial / uy

/home katalogi foydalanuvchining uy kataloglarini o'z ichiga olishi uchun mo'ljallangan. Uning mazmuni hech qanday tarzda tartibga solinmaydi, lekin odatda u /home/(foydalanuvchi nomi1,...,foydalanuvchi nomi#) kabi ko'rinadi. Ko'p foydalanuvchilarga ega bo'lgan katta tizimlarda ularning uy kataloglari birlashtirilgan bo'lishi mumkin.

/home katalogida nafaqat haqiqiy, balki ba'zi virtual foydalanuvchilarning uy kataloglari ham bo'lishi mumkin. Shunday qilib, agar mashina veb yoki ftp serveri sifatida ishlatilsa, siz mos ravishda /home/www yoki /home/ftp kabi pastki kataloglarni ko'rishingiz mumkin.

Filial /tmp

Vaqtinchalik fayllarni saqlash uchun katalog haqida gapirish uchun qolgan yagona narsa - / tmp. /var komponentlari singari ular ham hosil qilinadi turli dasturlar ularning normal hayot faoliyati davomida. Biroq, /var dan farqli o'laroq, /tmp komponentlari joriy sessiyadan tashqarida saqlanishi kutilmaydi. Bundan tashqari, barcha qo'llanmalar tizim boshqaruvi Ushbu katalogni muntazam ravishda (masalan, mashinani qayta ishga tushirganda) yoki vaqti-vaqti bilan tozalash tavsiya etiladi. Va shuning uchun /tmp sifatida fayl tizimlarini operativ xotiraga o'rnatish tavsiya etiladi - tmpfs (Linux-da) yoki mfs (FreeBSD-da). Bu qayta ishga tushirilgandan so'ng uning mazmuni tozalanishini ta'minlashdan tashqari, ish faoliyatini yaxshilaydi, masalan, vaqtinchalik mahsulotlari diskka yozilmagan, lekin /tmp/obj kabi virtual katalogga joylashtirilgan dasturlarni kompilyatsiya qilish.

Ko'pgina tizimlarda siz /usr/tmp va /var/tmp kabi kataloglarni ko'rasiz. Bular odatda /tmp ga ramziy havolalardir.

Fayl tizimini qismlarga ajratish strategiyasi

Fayllar ierarxiyasi haqidagi suhbat oxirida shuni ta'kidlash kerakki, faqat paragrafda sanab o'tilgan kataloglar bitta fayl tizimida (majoziy qilib aytganda, bitta disk bo'limida, garchi bu mutlaqo to'g'ri bo'lmasa-da) joylashgan bo'lishi kafolatlanadi. Ildiz fayl tizimi. Boshqa barcha kataloglar - /usr, /opt, /var, /tmp va, albatta, /home alohida jismoniy muhitda yoki ularning bo'limlarida mustaqil fayl tizimlari uchun ulanish nuqtalarini ko'rsatishi mumkin.

Bundan tashqari, in mahalliy tarmoq Ushbu kataloglar hatto turli xil mashinalarda ham joylashgan bo'lishi mumkin. Demak, dastur serveri vazifasini bajaruvchi bitta kompyuter tarmoqda ulashilgan /usr va /opt kataloglarini, ikkinchisi fayl serverida esa barcha foydalanuvchi uy kataloglarini va hokazolarni o'z ichiga olishi mumkin.

Qolgan narsa, qaysi fayl tizimlarini umumiy fayl daraxtidan ajratishga mos kelishini va nima uchun buni qilish kerakligini hal qilishdir. Bu savollarga javob ko'p jihatdan ishlatiladigan operatsion tizimga, Linuxda esa uning tarqalishiga bog'liq. Shunga qaramay, fayl tizimlarini ajratishning umumiy tamoyillarini ko'rsatish mumkin. Shu sababli, biz, bir tomondan, o'zgarmas va o'zgaruvchan kataloglar, ikkinchidan, osongina tiklanadigan, tiklanishi qiyin va amalda tiklanmaydigan ma'lumotlar o'rtasidagi kontrastni esga olishimiz kerak. Keling, ushbu harakatni foydalanuvchi ish stoliga nisbatan qilaylik - serverda hisob-kitoblar sezilarli darajada farq qiladi.

Shubhasiz, /bin, /boot, /etc, /root, /sbin kataloglaridan iborat bo'lgan, tarqatish vositasidan osongina tiklanadigan va deyarli o'zgarmas ma'lumotlarni o'z ichiga olgan ildiz fayl tizimi diskning izolyatsiya qilingan qismida joylashgan bo'lishi kerak. . Linuxda bu /lib katalogini ham o'z ichiga olishi kerak. Boshqa tomondan, GRUB-dan yuklovchi sifatida foydalanilganda (operatsion tizimdan qat'iy nazar), /boot katalogini alohida bo'limga joylashtirish tavsiya etiladi.

Linux haqidagi eski manbalarda siz /boot katalogiga bo'lim ajratishning yana bir sababi va diskning eng boshida o'qishingiz mumkin: Lilo dasturi tomonidan yadroni 1023 dan yuqori silindr raqamidan yuklashning iloji yo'qligi sababli. . Bootloaderlarning zamonaviy versiyalarida bunday cheklovlar yo'q. Biroq, agar /boot uchun bo'lim allaqachon yaratilgan bo'lsa, uni diskda birinchi bo'lib, almashtirish bo'limini to'g'ridan-to'g'ri uning orqasiga qo'yish maqsadga muvofiqdir: bu almashtirishni amalga oshirishda besh tsent unumdorlikni oshiradi.

Tarix sohasidan yana bir narsa: ildiz va yuklash bo'limlari birlamchi bo'lishi kerakligi talabi ham uzoq vaqt oldin olib tashlangan. Va bu fayl tizimlari Kengaytirilgan bo'lim ichidagi mantiqiy bo'limlarga mos kelishi mumkin.

Fayl tizimining o'zgartirilishi mumkin bo'lgan filiallari - /var va /tmp kataloglari - ildiz bo'limidan tashqariga ko'chirilishi kerakligi bir xil darajada aniq. Bundan tashqari, ikkinchisi, ilgari ko'p marta aytilganidek, odatda uni operativ xotirada (tmpfs yoki mfs) fayl tizimiga joylashtirish tavsiya etiladi. Agar /var katalogida Archlinux-da /var/abs, /var/cache/pacman/src va /var/cache/pacman/pkg kabi portga o'xshash paketlarni boshqarish tizimlari uchun pastki kataloglar mavjud bo'lsa, ular alohida fayl tizimlarini ham yaratishi kerak.

Endi - asosiy tizim komponentlarini (BSD-da bo'lgani kabi) yoki foydalanuvchi ilovalarining asosiy qismini (ko'p Linux distributivlarida bo'lgani kabi) o'z ichiga olgan /usr katalogi. U osonlik bilan qayta tiklanadigan ma'lumotlarni o'z ichiga oladi va adolatli bo'lsa, amalda o'zgarmas bo'lishi kerak va shuning uchun, albatta, alohida bo'limda ajratishga loyiqdir. Bundan tashqari, uning tarkibidan, bir tomondan, /usr/X11R6 va /usr/local pastki kataloglarini, boshqa tomondan - portga o'xshash paketlarni boshqarish tizimlari uchun quyi kataloglarni ajratish tavsiya etiladi: /usr/ports, /usr/pkgsrc va BSD tizimlarida /usr/pkg , Gentoo Linuxda /usr/portages va hokazo. Bundan tashqari, ikkinchisini portlarni qurishda tarmoqdan yuklab olingan manbalarni joylashtirish uchun pastki kataloglarga ajratish kerak - /usr/ports/distfiles, /usr/pkgsrc/disfiles, /usr/portages/distfiles va boshqalar.

BSD tizimlarida, qo'shimcha ravishda, /usr katalogidan asosiy komponentlarning (shu jumladan yadro) manba kodini o'z ichiga olgan /usr/src va /usr/obj pastki kataloglarini va ularni kompilyatsiya qilishning oraliq mahsulotlarini tanlash maqsadga muvofiqdir. make buildworld natijasi va Buildkernel protseduralarini qiling.

Va nihoyat, o'zgaruvchan va ko'pincha qayta tiklanmaydigan ma'lumotlarni o'z ichiga olgan /home katalogi fayl ierarxiyasining ildizidan olib tashlanishi kerak. Bundan tashqari, men uni har doim alohida bo'limga (BSD-da) yoki asosiy bo'limga (Linux-da) joylashtirishga harakat qilaman.

Fayl tizimlarini ajratish uchun taklif qilingan sxema keraksiz darajada murakkab ko'rinishi mumkin. Shu bilan birga, u oson tiklanadigan, tiklanishi qiyin va tiklanmaydigan ma'lumotlarning izolyatsiyasini kafolatlaydi, bu favqulodda holatlarda tizimni qayta o'rnatishni va hatto tizimdan tizimga o'tishni osonlashtiradi.

Uning qo'shimcha afzalligi shundaki, fayl daraxtining alohida filiallari uchun, undagi ma'lumotlarning tabiatiga qarab, Linuxda jismoniy jihatdan optimal fayl tizimini tanlashingiz mumkin. Misol uchun, /boot bo'limi uchun Ext2fs dan boshqa hech narsadan foydalanishning ma'nosi yo'q. Odatda ildiz bo'limini ishonchli va eng mos Ext3fs-da formatlash tavsiya etiladi. Archlinux-da /var/abs, Gentoo-da /usr/portages kabi juda ko'p sonli kichik fayllarga ega kataloglar uchun ReiserFS-dan foydalanish tavsiya etiladi: kichik fayllar bilan mohirona ishlov berish uning profilidir. Va katta multimedia fayllari paydo bo'lishi mumkin bo'lgan /home katalogida (va o'zi odatda juda katta), XFS foydali bo'lishi mumkin (garchi o'lchovlar shuni ko'rsatadiki, ReiserFS bu erda juda yaxshi ko'rinadi). Bunday chora-tadbirlar ma'lumotlarni saqlash ishonchliligini ham, fayllar bilan ishlash tezligini ham oshirishga yordam beradi.

BSD operatsion tizimlari foydalanuvchilari FFS fayl tizimlariga alternativasiz bog'langan. Biroq, ularda manevr uchun joy ham bor. Birinchidan, alohida fayl tizimlarining bloklari va fragmentlari o'lchamlarini o'zgartirish orqali, bu diskdagi operatsiyalarni bajarishga yoki disk maydonini tejashga yordam beradi. Va ikkinchidan, fayl daraxtining ba'zi filiallari (masalan, /tmp yoki /usr/obj, tavsiyalardan farqli o'laroq, sof asinxron rejimda ishonchli tarzda o'rnatilishi mumkin, bu esa ishlashda bir yoki ikki foizni oladi.

- (IPAEng|ˈpɒzɪks) yoki Portativ operatsion tizim interfeysi vebdan iqtibos | sarlavha = POSIX | url = http://standards.ieee.org/regauth/posix/ | ish = Standartlar | publisher = IEEE] - IEEE tomonidan belgilangan tegishli standartlar oilasining umumiy nomi ... Vikipediya

POSIX- 1988 yil Elektr va elektronika muhandislari instituti va IEEE 1003 loyihasini ishlab chiqish. API mantiqiy taqdirini standartlashtirish loyihasi bo'yicha CE standartlari.

Posix- 1988 yil IEEE va formellement dizayn IEEE 1003. IEEE 1003 standartlashtirish standartlari. API mantiqiy loyihalarini standartlashtirish bo'yicha standartlashtirish standartlari.

POSIX- Portativ operatsion tizim interfeysi uchun es el acrónimo; API identidad de la X UNIX dan foydalaniladi. Richard Stallman IEEE talabiga javob berdi, bu ro'yxatga olish nomini oldi. Una traducción … Vikipediya Español

POSIX- , 1986 im Standard 1003.1 der IEEE niedergelegte Zugriffe yoki Unix tizimida ishlash uchun maxsus spezifikatsiya. Sowohl Unix Sy…Universal-Lexikon

POSIX- standartai statusas T sritis informatika apibrėžtis Standartų grupė, apibrėžianti operacinės sistemos sąsajas tarp joje veikiančių programų bei tarnybų. Pirmuosius standartus sukūrė Elektros ir elektronikos inžinierių institutas (IEEE) Linux… … Enciklopedinis kompiuterijos žodynas

POSIX- Portable Operating System Interfeys interfeysi, UNIX-ning X-ning interfeysi (API ma'nosi) (UNIX-da Portativ Operatsion tizimi tizimi). Estos son una familia de estándares de llamadas al sistema… … Universal Enciclopedia

POSIX- (uniX asosidagi portativ operatsion tizim interfeysi) n. Unix (Kompyuterlar) ga asoslangan operatsion tizimlar uchun standartlar to'plami ... Zamonaviy inglizcha lug'at

POSIX

Posix- Portativ operatsion tizim interfeysi (POSIX [ˈpɒsɪks]) IEEE va Open Group uchun Unix standarti bo'lib, amaliy dasturlash interfeysi, amaliy dastur va ilovalar… … Deutsch Wikipedia.

Kitoblar

  • , Stiven A. Rago, V. Richard Stivens. "UNIX. Professional dasturlash" bu batafsil ma'lumotnoma bo'lib, u 20 yil davomida professional C dasturchilariga faqat yozishda yordam beradi...
  • UNIX. Professional dasturlash Stivens V. Richard, Rago Stiven A. Bu kitob butun dunyo bo'ylab jiddiy dasturchilar orasida mashhurdir, chunki unda UNIX va Linux yadrolarini boshqarish bo'yicha eng muhim va amaliy ma'lumotlar mavjud. Bularsiz...

Kurs mobil operatsion tizim interfeysi standartini (POSIX), shuningdek, ko'plab misollar bilan tushuntirilgan ushbu standart asosida ilovalarni dasturlash texnikasi va usullarini o'z ichiga oladi. Ko'p jarayonli tizimlarni dasturlash va taqsimlangan konfiguratsiyalar doirasida ilovalarning o'zaro ta'siri masalalari ko'rib chiqiladi. Dasturiy ta'minotning harakatchanligini (portativligini) ta'minlash juda muhim va murakkab vazifadir; Bizning davrimizda bu holat keng qamrovli asoslashga muhtoj emas, balki dasturiy ta'minotning ko'chma qobiliyatini oshirishning umumiy qabul qilingan usullaridan biri dastur muhitini standartlashtirishdir: taqdim etilgan dasturiy interfeyslar, yordamchi dasturlar va boshqalar. Tizim xizmatlari darajasida bunday muhit POSIX standarti (Portable Operating System Interface - mobil operatsion tizim interfeysi) bilan tavsiflanadi; Bu nomni mashhur mutaxassis, Free Software Foundation asoschisi Richard Stallman taklif qilgan.

Kurs 2003 yilda o'zgartirilgan uning eng zamonaviy versiyasini ko'rib chiqadi, uni "uchlik standart" deb atash mumkin, ya'ni: IEEE Std 1003.1 standarti, Ochiq guruh texnik standarti va biz uchun eng muhimi ISO/IEC 9945 xalqaro standarti. Asosiy vazifa Bu kurs standartlashtirilgan yordamchi dasturlar va funksiyalardan foydalanish texnikasi va usullarini tushunishdan iborat. Maqsad OTni amalga oshirishning barcha nozik tomonlarini, barcha mumkin bo'lgan xato kodlarini va hokazolarni ta'kidlab, standartni qayta aytib berish emas edi. Asosiysi, bizning fikrimizcha, standart ruhini his qilish va unga xos bo'lgan imkoniyatlardan mobil tarzda foydalanishni o'rganishdir. O'quvchi C tilida gapiradi deb faraz qilsak, biz uning sintaksisi yoki darslik kutubxonasi funktsiyalarini hisobga olmadik. Standart buyruq tili va uning tarjimoniga kelsak, bu mavzu ba'zi tafsilotlar bilan taqdim etilgan, garchi ko'plab amaliyotchi dasturchilar boshqa tarjimonlardan foydalanishni afzal ko'rishadi. Hajmida ham, rolida ham muhim o'rin dastur misollariga bag'ishlangan. Standartning ko'plab qoidalari (masalan, xatolik holatlarini hal qilish bilan bog'liq) asosiy matnda emas, balki tegishli misollarda, iloji bo'lsa, bir nechta apparat va dasturiy platformalarda tuzilgan va bajarilgan. daraja yoki boshqa, POSIX standartiga muvofiqligini da'vo qilish. Biroq, albatta, e'tibordan chetda qolish mumkin. Biz umuman kurs va individual dastur misollari bilan bog'liq barcha sharhlar va takliflar uchun minnatdor bo'lamiz.

POSIX standartining yaratilish tarixi va hozirgi holati.

Dasturiy ta'minotning harakatchanligini (portativligini) ta'minlash juda muhim va murakkab vazifadir; bizning davrimizda bu holat keng qamrovli asoslashga muhtoj emas. Dasturiy ta'minotning portativligini oshirishning umumiy qabul qilingan usullaridan biri dastur muhitini standartlashtirishdir: taqdim etilgan dasturiy interfeyslar, yordamchi dasturlar va boshqalar. Tizim xizmatlari darajasida bunday muhit POSIX standarti (Portable Operating System Interface - mobil operatsion tizim interfeysi) bilan tavsiflanadi; Bu nomni mashhur mutaxassis, Free Software Foundation asoschisi Richard Stallman taklif qilgan.

Sarlavha sahifasi.
Chiqish ma'lumotlari.
Ma'ruza 1. POSIX standartining asosiy tushunchalari va g'oyalari.
Ma’ruza 2. Shell tili.
Ma’ruza 3. “Foydalanuvchi” tushunchasiga xizmat qiluvchi yordamchi dasturlar va funksiyalar.
Ma'ruza 4. Fayl tizimini tashkil etish.
Ma'ruza 5. Fayl kiritish/chiqarish.
Ma'ruza 6. Strukturaviy ma'lumotlarni qayta ishlash vositalari.
Ma’ruza 7. Jarayonlar.
Ma’ruza 8. Jarayonlararo aloqa vositalari.
Ma'ruza 9. Umumiy terminal interfeysi.
10-ma'ruza. Xost xususiyatlarini o'lchash va ulardan amaliy dasturlarda foydalanish.
Ma’ruza 11. Tarmoq vositalari.
Ma’ruza 12. Vaqt va u bilan ishlash.
Ma’ruza 13. Lingvistik va madaniy muhit.
Ma’ruza 14. Xulosa.
Ma'lumotnomalar.


Bepul yuklab olish elektron kitob qulay formatda tomosha qiling va o'qing:
POSIX standartida dasturlash kitobini yuklab oling, 1-qism, Galatenko V.A., 2016 - fileskachat.com, tez va bepul yuklab oling.