Pythonda multiprotsessorlash

|
Pythonda multiprotsessorlash
|
bet | 6/11 | Sana | 21.05.2024 | Hajmi | 0,91 Mb. | | #249305 |
Bog'liq Operatsion tizim kurs ishi (2)2.1 Pythonda multiprotsessorlash.
Python multiprocessing moduli jarayonlarni yaratish va boshqarish uchun sodda va izchil interfeysni taqdim etadi va intuitiv API-ni o'z ichiga oladi. Bu bizga jarayonlarni yaratishga, jarayonlar o'rtasida aloqa o'rnatishga imkon beradi. Pythonda multiprotsessorlash bilan ishlashda ko'pincha jarayonlar o'rtasida ma'lumotlarni almashish kerak bo'ladi. Biroq, jarayonlar o'rtasida ma'lumot almashish qiyin vazifa bo'lishi mumkin, chunki har bir jarayon o'z xotira maydoniga ega va boshqa jarayonlarning xotirasiga to'g'ridan-to'g'ri kira olmaydi.
Ba'zi ma'lumotlarni bir jarayondan ikkinchisiga o'tkazishda ma'lumotlar avval manba jarayonida seriyalashtirilishi, so'ngra boshqasiga ko'chirilishi va keyin Python ob'ektiga aylantirilishi kerak.
Yaxshiyamki, Python jarayonlar o'rtasida ma'lumotlarni almashish uchun bir nechta mexanizmlarni, shu jumladan umumiy xotira, navbatlar, quvurlar va sinxronizatsiya ibtidoiylarini taqdim etadi.
Multiprotsessor modulini import qilish uchun:
import multiprocessing
Jarayonni yaratish uchun biz jarayon sinfining ob'ektini yaratamiz.
p1 = multiprocessing.Process(target=print_square, args=(10, ))
p2 = multiprocessing.Process(target=print_cube, args=(10, ))
Bir jarayonni boshlash uchun, biz jarayoni sinf start usuli foydalanish.
p1.start()
p2.start()
Jarayonlar boshlangandan so'ng, joriy dastur ham bajarilishini davom ettiradi. Jarayon tugamaguncha joriy dasturning bajarilishini to'xtatish uchun biz qo'shilish usulidan foydalanamiz.
p1.join()
p2.join()
Natijada, joriy dastur avval P1 va keyin p2 tugashini kutadi. Bir marta, ular tugallangandan so'ng, joriy dasturning keyingi bayonotlari bajariladi.
2.2 Master/slave multiprotsessorlash tizimi
Master / slave multiprotsessorlash tizimida asosiy protsessor kompyuterni boshqaradi va CPU(lar) berilgan vazifalarni bajaradi. CPU tezligi va arxitekturasi jihatidan butunlay boshqacha bo'lishi mumkin. Protsessorlarning ba'zilari (yoki barchasi) umumiy avtobusada bo'lishishi mumkin, ularning har biri shaxsiy avtobusga ega bo'lishi mumkin (xususiy resurslar uchun) yoki ular umumiy aloqa yo'lidan tashqari izolyatsiya qilinishi mumkin. Xuddi shunday, protsessorlar umumiy Ramni baham ko'rishlari va/yoki boshqa protsessor(lar) kira olmaydigan shaxsiy Ramga ega bo'lishlari mumkin. Magistr va qulning rollari bir protsessordan boshqasiga o'zgarishi mumkin.
Asosiy ramka ustasi/qul multiprotsessorining ikkita dastlabki misoli Bull Gamma 60 va Burrouz B5000.
Mikroprotsessorlarning Master / slave multiprotsessorli tizimining dastlabki namunasi Tandy / Radio Shack TRS-80 Model 16 1982-yil fevral oyida chiqqan va ko'p foydalanuvchi/ko'p vazifali ish stoli kompyuteri Xenix operatsion tizim, Microsoft versiyasi UNIX (TRS-XENIX deb nomlangan). Model 16 ikkita mikroprotsessorga ega: 8-bit Zilog Z80 CPU 4 MGts da ishlaydi va 16-bit Motorola 68000 CPU 6 MGts da ishlaydi. Tizim yuklanganda, z-80 usta va Xenix yuklash jarayoni qul 68000 ni ishga tushiradi va keyin boshqaruvni 68000 ga o'tkazadi, shu bilan protsessorlar rollarni o'zgartiradi va Z-80 barcha I/u operatsiyalari, shu jumladan disk, aloqa, printer va tarmoq uchun javobgar bo'lgan slave protsessoriga aylanadi, shuningdek, klaviatura va o'rnatilgan monitor, operatsion tizim va ilovalar 68000 protsessorida ishlaydi. Z-80 boshqa vazifalarni bajarish uchun ishlatilishi mumkin.
Oldingi TRS-80 model II, 1979-yilda chiqarilgan, shuningdek, multiprotsessorli tizim deb hisoblanishi mumkin, chunki uning ikkalasida ham Z-80 protsessor va Intel 8021mikrokontroller klaviaturada. 8021 Model II-ni bitta ingichka egiluvchan sim bilan bog'langan alohida olinadigan engil klaviaturaga ega bo'lgan birinchi ish stoli kompyuter tizimiga aylantirdi.
|
| |