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 ин вазифаро дар навбат мегузорад ва квантҳои вақтро барои иҷрои он таъин мекунад, бо иваз кардани он ва сӯрохии асосӣ (ва дигар сӯрохҳо, агар мавҷуд бошанд) барои эҷоди иллюзияи параллелизм.