Sobes.tech
Middle

Ինչպե՞ս է իրականացվում բազմամյա աշխատանքը միակորքային սարքավորումների վրա:

sobes.tech AI

Պատասխան AI-ից

Մի միակ միջուկով սարքավորությունում բազմամյա աշխատանքը սիմուլացվում է օպերացիոն համակարգի կողմից ժամանակային քվանտների և կոնտեքստի փոխանակման մեխանիզմների միջոցով:

  • Ժամանակային քվանտ: Յուրաքանչյուր հոսքին հատկացվում է փոքր ժամանակահատված պրոցեսորում:
  • Նախապես ընդհատվող բազմագործառականություն: Օպերացիոն համակարգը ընդհատում է հոսքի կատարմանը նրա ժամանակային քվանտի ավարտից հետո կամ երբ սպասում է ռեսուրսների (օրինակ, մուտք/ելք):
  • Կոնտեքստի փոխանակում: Ներկա հոսքի վիճակը (պրոցեսորային գրանցամատյաններ, հրահանգների ցուցիչ, հիշողության վիճակ) պահվում է, և հաջորդ հոսքի վիճակը բեռնվում է:
  • Պարալելիզմի մոլորություն: Արագ փոխարկումների շնորհիվ ստեղծվում է տպավորություն, որ նրանք կատարվում են միաժամանակ, թեև իրականում միայն մեկ հոսք է աշխատում պրոցեսորում:

iOS-ը օգտագործում է GCD (Grand Central Dispatch) և Operation Queues շրջանակները, որոնք աբստրակցիա են ստեղծում այս ցածր մակարդակի մեխանիզմներից և պարզեցնում են բազմամյա կառավարման գործընթացը ծրագրավորողի համար: GCD-ը օգտագործում է թելերի պուլեր և ավտոմատ կերպով կառավարում է դրանց կյանքի ցիկլը և պլանավորումը հասանելի պրոցեսորային միջուկների վրա (նույնիսկ մեկում):

Օրինակ՝ GCD-ով:

import Foundation

// Ասինխրոն աշխատանք ստեղծելը
DispatchQueue.global(qos: .userInitiated).async {
    // Կոդ, որը կիրականացվի ֆոնային հոսքում
    // Միակ միջուկով սարքավորությունում, այս կոդը կկապվի
    // այլ հոսքերի/հիմնական հոսքի կատարմամբ
    print("Կատարվում է ֆոնային հոսքում")
}

// Հիմնական հոսքը շարունակում է գործել
print("Կատարվում է հիմնական հոսքում")

Նույնիսկ միակ միջուկով սարքավորությունում, GCD-ը կդնի այս աշխատանքը հերթի մեջ և կտրամադրի նրան ժամանակային քվանտներ, փոխելով այն և հիմնական հոսքի միջև՝ ստեղծելով պարալելիզմի մոլորություն: