Ինչպե՞ս է իրականացվում բազմամյա աշխատանքը միակորքային սարքավորումների վրա:
sobes.tech AI
Պատասխան AI-ից
Մի միակ միջուկով սարքավորությունում բազմամյա աշխատանքը սիմուլացվում է օպերացիոն համակարգի կողմից ժամանակային քվանտների և կոնտեքստի փոխանակման մեխանիզմների միջոցով:
- Ժամանակային քվանտ: Յուրաքանչյուր հոսքին հատկացվում է փոքր ժամանակահատված պրոցեսորում:
- Նախապես ընդհատվող բազմագործառականություն: Օպերացիոն համակարգը ընդհատում է հոսքի կատարմանը նրա ժամանակային քվանտի ավարտից հետո կամ երբ սպասում է ռեսուրսների (օրինակ, մուտք/ելք):
- Կոնտեքստի փոխանակում: Ներկա հոսքի վիճակը (պրոցեսորային գրանցամատյաններ, հրահանգների ցուցիչ, հիշողության վիճակ) պահվում է, և հաջորդ հոսքի վիճակը բեռնվում է:
- Պարալելիզմի մոլորություն: Արագ փոխարկումների շնորհիվ ստեղծվում է տպավորություն, որ նրանք կատարվում են միաժամանակ, թեև իրականում միայն մեկ հոսք է աշխատում պրոցեսորում:
iOS-ը օգտագործում է GCD (Grand Central Dispatch) և Operation Queues շրջանակները, որոնք աբստրակցիա են ստեղծում այս ցածր մակարդակի մեխանիզմներից և պարզեցնում են բազմամյա կառավարման գործընթացը ծրագրավորողի համար: GCD-ը օգտագործում է թելերի պուլեր և ավտոմատ կերպով կառավարում է դրանց կյանքի ցիկլը և պլանավորումը հասանելի պրոցեսորային միջուկների վրա (նույնիսկ մեկում):
Օրինակ՝ GCD-ով:
import Foundation
// Ասինխրոն աշխատանք ստեղծելը
DispatchQueue.global(qos: .userInitiated).async {
// Կոդ, որը կիրականացվի ֆոնային հոսքում
// Միակ միջուկով սարքավորությունում, այս կոդը կկապվի
// այլ հոսքերի/հիմնական հոսքի կատարմամբ
print("Կատարվում է ֆոնային հոսքում")
}
// Հիմնական հոսքը շարունակում է գործել
print("Կատարվում է հիմնական հոսքում")
Նույնիսկ միակ միջուկով սարքավորությունում, GCD-ը կդնի այս աշխատանքը հերթի մեջ և կտրամադրի նրան ժամանակային քվանտներ, փոխելով այն և հիմնական հոսքի միջև՝ ստեղծելով պարալելիզմի մոլորություն: