Кандайча төмөнкү артыкчылыктагы кезек жогорку артыкчылыктагы кезектен эрте ресурстарга жетүү мүмкүнчүлүгүн алат?
sobes.tech AI
AIден жооп
Бул, артыкчылыклардын тескерисинче айлануусу себеп болушу мүмкүн.
Артыкчылыклардын тескерисинче айлануусу, төмөн артыкчылыктагы тапшырма, жогорку артыкчылыктагы тапшырма үчүн зарыл болгон ресурсты (мисалы, mutex) кармап турганда пайда болот. Жогорку артыкчылыктагы тапшырма, ресурстун бошотулушун күтүп, тоскоол болот. Ошол эле учурда, орто артыкчылыктагы тапшырма, бул ресурска муктаж эмес башка тапшырма тарабынан алдын алынышы мүмкүн. Натыйжада, орто артыкчылыктагы тапшырма ишке ашырылат, ал эми төмөн артыкчылыктагы, ресурсты кармап турган жана жогорку артыкчылыктагы, тоскоолдонуп турган тапшырмалар күтүп турушат. Чындыкта, жогорку артыкчылыктагы тапшырма, орто жана төмөн артыкчылыктагы тапшырмалар ресурсту бошотконго чейин күтүп турат.
Артыкчылыклардын тескерисинче айлануусунун маселесин чечүү үчүн:
- Артыкчылык мурас (Priority Inheritance): Төмөн артыкчылыктагы тапшырма, жогорку артыкчылыктагы тапшырма үчүн зарыл болгон ресурсты кармап турганда, ага убактылуу жогорку артыкчылыктагы тапшырманын артыкчылыгы берилет. Ресурс бошотулгандан кийин, артыкчылык кайра баштапкы абалга келет.
- Артыкчылык төбө протоколу (Priority Ceiling Protocol): Ар бир ресурска "төө артыкчылык" берилет — бул ресурсты колдонуп жаткан бардык тапшырмалардын ичинен эң жогорку артыкчылык. Тапшырма, эгер анын учурдагы артыкчылыгы, ошол учурда колдонулуп жаткан бардык ресурстардын төө артыкчылыгынан жогору болсо гана, ресурска кире алат (анын ичинде ал дагы кармап турган ресурстар).
iOSто, Grand Central Dispatch (GCD) жана Operation Queues артыкчылыклардын тескерисинче айлануусун минималдаштыруучу механизмдерге ээ, бирок кыйын сценарийлерде, блоктоолор менен, мындай жагдайлар дагы пайда болушу мүмкүн, эгер туура эмес колдонулса.