shm ajratish (ism);
qaytish 0;
}
Rasm 3.17 Iste'molchi jarayon tasvirlash POSIX umumiy xotira API.
3.17-rasmda ko'rsatilgan iste'molchi jarayoni umumiy xotira tarkibini o'qiydi va chiqaradi. Iste'molchi shm unlink() funktsiyasini ham ishga tushiradi, qaysi olib tashlaydi the umumiy xotira segment keyin the iste'molchi kirgan _ bu. Biz ta'minlash yana mashqlar foydalanish the POSIX umumiy xotira API ichida dasturlash mashqlar da the oxiri ning bu bob. Bundan tashqari, biz 13.5-bo'limda xotira xaritasini batafsilroq yoritishni ta'minlang .
Mach Xabar uzatish
Xabarni uzatish misoli sifatida biz Mach operatsion tizimini ko'rib chiqamiz. Mach edi ayniqsa ishlab chiqilgan uchun tarqatilgan tizimlari, lekin edi 2-bobda muhokama qilinganidek, ish stoli va mobil tizimlar uchun ham mos ekanligi ko'rsatilgan, buni mac OS va i OS operatsion tizimlariga kiritilganligi tasdiqlaydi .
Mach yadrosi qo'llab-quvvatlaydi the yaratish va halokat jarayonlarga o'xshash, biroq bir nechta boshqaruv iplariga ega bo'lgan bir nechta vazifalardan va kamroq bog'langan resurslar. Ko'pchilik aloqa ichida Mach — shu jumladan hammasi o'zaro vazifa aloqa — hisoblanadi xabarlar orqali amalga oshiriladi . Xabarlar yuboriladi va qabul qilinadi dan, pochta qutilari, qaysi bor chaqirdi portlar ichida Mach. Portlar bor cheklangan ichida hajmi va bir tomonlama; uchun ikki tomonlama aloqa, a xabar hisoblanadi yuborilgan uchun bitta port va javob alohida javob portiga yuboriladi . Har bir portda bir nechta jo'natuvchi bo'lishi mumkin, lekin faqat bitta qabul qiluvchi. Mach vazifalar, mavzular, xotira va protsessorlar kabi resurslarni ko'rsatish uchun portlardan foydalanadi, xabarlarni uzatish esa ushbu tizim resurslari va xizmatlari bilan o'zaro aloqa qilish uchun ob'ektga yo'naltirilgan yondashuvni ta'minlaydi. Xabar o'tish mumkin yuzaga keladi orasida har qanday ikki portlar yoqilgan the bir xil xost yoki taqsimlangan tizimdagi alohida xostlarda.
Bog'langan bilan har biri port hisoblanadi a yig'ish ning port huquqlar bu port bilan o'zaro ishlash uchun vazifa uchun zarur bo'lgan imkoniyatlarni aniqlash. Masalan, uchun a vazifa uchun olish a xabar dan a port, bu kerak bor the qobiliyati MACH PORT RIGHT RECEIVE uchun bu port. The vazifa bu yaratadi a port hisoblanadi bu port egasi, va the egasi hisoblanadi the faqat vazifa bu hisoblanadi ruxsat berilgan uchun qabul qilish dan xabarlar bu port. A portlar egasi mumkin shuningdek manipulyatsiya qilish the qobiliyatlar uchun a port. Bu hisoblanadi eng odatda bajarildi ichida tashkil etish a javob bering port. Uchun misol, Faraz qilaylik, T 1 vazifasi P 1 portiga ega va u yuboradi portga xabar P 2, unga tegishli vazifa T 2. Agar T 1 kutadi uchun qabul qilish a javob bering dan T 2, bu kerak grant T 2 o'ng MACH PORT O'ngga yuborish uchun port P 1. Egalik ning port huquqlar hisoblanadi da vazifa darajasi, ya'ni bir xil vazifaga tegishli barcha iplar bir xil port huquqlariga ega. Shunday qilib, bir vazifaga tegishli bo'lgan ikkita ip osongina bog'lanishi mumkin tomonidan almashish xabarlar orqali the har bir mavzu port har bir ip bilan bog'langan.
Vazifa yaratilganda ikkita maxsus port - Vazifaning o'zi port va bildirishnoma port — bor ham yaratilgan. Yadro Task Self portiga huquqlarni oladi, imkon beradi a vazifa uchun yuborish xabarlar uchun the yadro. Yadro voqea sodir bo'lganligi to'g'risida bildirishnomani topshiriqning Bildirish portiga yuborishi mumkin (albatta, topshiriq olish huquqiga ega).
Mach _ port allocate() funksiya chaqiruvi yangi port yaratadi va uning xabarlar navbati uchun joy ajratadi. Shuningdek, u port uchun huquqlarni aniqlaydi. Har bir port to'g'ri ifodalaydi a nomi uchun bu port, va a port mumkin faqat bo'l kirgan orqali
huquq. Port nomlari oddiy butun son qiymatlari bo'lib, UNIX fayl identifikatorlari kabi ishlaydi . Quyidagi misol ushbu API yordamida port yaratishni ko'rsatadi :
mach port t port; // the nomi ning the port to'g'ri
Dostları ilə paylaş: |