Middle
როგორ ხორციელდება მრავალმხრივი მუშაობა ერთეულ ბირთვზე?
sobes.tech AI
პასუხი AI-სგან
ერთეულიანი პროცესორის მოწყობილობაზე მრავალმხრივი შესრულება ემულირებულია ოპერაციული სისტემის მიერ დროის კვოტირების და კონტექსტის გადართვის მექანიზმის საშუალებით.
- დროის კვოტა: თითოეულ ნაკადს გამოყოფილი მცირე დროის მონაკვეთი.
- წაშლადი მრავალშრიანობა: ოპერაციული სისტემა იწყვეტს ერთ ნაკადს მისი დროის კვოტის ამოწურვის ან რესურსების (მაგალითად, შეტანა-გამოტანა) მოლოდინის დროს.
- კონტექსტის გადართვა: მიმდინარე ნაკადის მდგომარეობა (პროცესორის რეგისტრები, ინსტრუქციის მაჩვენებელი, მეხსიერების მდგომარეობა) ინახება, ხოლო შემდეგი ნაკადის მდგომარეობა იტვირთება.
- პარალელურობის ილუზია: სწრაფი გადართვით ნაკადებს შორის, იქმნება შთაბეჭდილება, რომ ისინი პარალელურად ხორციელდება, მაშინაც კი, როდესაც ერთ დროს მხოლოდ ერთი ნაკადი მუშაობს პროცესორზე.
iOS იყენებს ფრეიმვორკებს, როგორიცაა GCD (Grand Central Dispatch) და ოპერაციების რიგები, რომლებიც ამ დაბალ დონეზე მექანიზმებს ამარტივებენ და მართვას უწყობენ ხელს. GCD იყენებს ნაკადების პულებს და ავტომატურად მართავს მათ სიცოცხლის ციკლს და დაგეგმვას ხელმისაწვდომ პროცესორულ ბირთვებზე (მიუხედავად ერთბირთვიანობის).
მაგალითად, GCD-ის გამოყენებით:
import Foundation
// ასინქრონული დავალების შექმნა
DispatchQueue.global(qos: .userInitiated).async {
// კოდი, რომელიც შესრულდება ფონურ ნაკადზე
// ერთბირთვიან მოწყობილობაზე, ეს კოდი ინტერლივდება
// სხვა ნაკადების/მთავარი ნაკადის შესრულებასთან ერთად
print("ფონურ ნაკადზე შესრულდება")
}
// მთავარი ნაკადი აგრძელებს მუშაობას
print("მთავარ ნაკადზე შესრულდება")
მიუხედავად ერთბირთვიანობის, GCD დააყენებს ამ დავალებას რიგში და გამოყოფს მას დროის კვოტებს, გადართვით მას და მთავარ ნაკადს შორის (და სხვა ნაკადებს, თუ არიან) პარალელურობის ილუზიის შესაქმნელად.