WikiDer > Futex
Yilda hisoblash, a futex ("tezkor foydalanuvchilar maydoni" uchun qisqartirilgan muteks") a yadro tizim qo'ng'irog'i bu dasturchilar asosiyni amalga oshirish uchun foydalanishi mumkin qulflashyoki kabi yuqori darajadagi qulflash abstraktsiyalari uchun qurilish bloki sifatida semaforalar va POSIX mutekslar yoki holat o'zgaruvchilari.
Futex a dan iborat yadro maydoni navbat kuting ga biriktirilgan atom tamsayı yilda foydalanuvchilar maydoni. Bir nechta jarayonlar yoki iplar butun sonda to'liq foydalanuvchi maydonida ishlaydi (yordamida) atom operatsiyalari bir-biriga aralashmaslik uchun) va faqat nisbatan qimmatga murojaat qilish tizim qo'ng'iroqlari kutish navbatida operatsiyalarni talab qilish (masalan, kutish jarayonlarini uyg'otish yoki kutish navbatiga joriy jarayonni qo'yish). To'g'ri dasturlashtirilgan futex-ga asoslangan blokirovka, blokirovkaga qarshi bo'lgan holatlardan tashqari tizim qo'ng'iroqlaridan foydalanmaydi; aksariyat operatsiyalar jarayonlar o'rtasida hakamlik talab qilmagani uchun, ko'p hollarda bunday bo'lmaydi.
Tarix
Yoqilgan Linux, Hubertus Franke (IBM Tomas J. Vatson tadqiqot markazi), Metyu Kirkvud, Ingo Molnar (Qizil shapka) va Rusty Rassell (IBM Linux Texnologiya Markazi) futex mexanizmidan kelib chiqqan. Futexes birinchi marta Linux yadrosi rivojlanishining 2.5.7 versiyasida paydo bo'ldi; semantikasi 2.5.40 versiyasi bo'yicha barqarorlashdi va futexes Linux yadrosi magistral liniyasi 2003 yil dekabr oyida 2.6.x barqaror yadro seriyasining chiqarilishidan beri.
2002 yilda maxsus tugunni yaratib, fayl tizimi orqali futexes-ga kirishni taklif qilish bo'yicha munozaralar bo'lib o'tdi / dev
yoki / prok
. Biroq, Linus Torvalds ushbu g'oyaga qat'iy qarshi chiqdi va tegishli yamoqlarni rad etdi.[1]
Futexes Windows 8 yoki Windows Server 2012 dan beri Microsoft Windows-da WaitOnAddress nomi bilan amalga oshirilmoqda.[2]
2013 yilda Microsoft futexes patentini oldi va patent 2014 yilda berildi.[3]
2014 yil may oyida CVE tizim Linux yadrosi futex quyi tizimida kashf etilgan, xizmatdan voz kechish xujumlariga yoki mahalliy imtiyozlarning kuchayishiga yo'l qo'ygan zaiflik haqida e'lon qildi.[4][5]
2015 yil may oyida Linux yadrosi orqali blokirovka qilingan xatoni taqdim etdi B0c29f79ecea-ni bajaring bu foydalanuvchi dasturlarini osib qo'yishiga olib keldi. Xato ko'plab korporativ Linux tarqatishlariga ta'sir qildi, jumladan 3.x va 4.x yadrolari va Red Hat Enterprise Linux versiyasi 5, 6 va 7, SUSE Linux 12 va Amazon Linux.[6]
Futexes 2016 yildan beri OpenBSD-da amalga oshiriladi.[7]
Futex mexanizmi Zirkon yadrosining asosiy tushunchalaridan biridir[8] yilda Google"s Fuchsia operatsion tizimi kamida 2018 yil aprelidan beri.[9]
Amaliyotlar
Futexes ikkita asosiy operatsiyaga ega, KUTMOQ
va Uyg'oning
. Uchinchi operatsiya chaqirildi Navbati
mavjud va umumiyroq vazifasini bajaradi Uyg'oning
iplarni kutish navbatlari orasida siljitadigan operatsiya. [10]
WAIT (addr, val)
- Agar qiymat manzilda saqlansa
addr
buval
, hozirgi ipni uxlashga qo'yadi.
WAKE (addr, num)
- Uyg'onadi
num
manzilda kutayotgan iplar soniaddr
.
CMP_REQUEUE (old_addr, new_addr, num_wake, num_move, val)
- Agar qiymat manzilda saqlansa
old_addr
buval
, uyg'onadinum_wake
manzilda kutayotgan iplarold_addr
va enqueuesnum_move
manzilda kutayotgan iplarold_addr
hozirda manzilni kutingnew_addr
. Buning oldini olish uchun foydalanish mumkin momaqaldiroq podasi muammosi uyg‘onishda[11][12]
Shuningdek qarang
Adabiyotlar
- ^ Torvalds, Linus. "Futex asenkron interfeysi".
- ^ "WaitOnAddress funktsiyasi". Olingan 2019-11-01.
- ^ "US8782674B2 manzilni sinxronlash interfeysini kuting". Olingan 2019-11-01.
- ^ CVE-2014-3153
- ^ "[SECURITY] [DSA 2949-1] Linux xavfsizligini yangilash". Lists.debian.org. 2014-06-05. Olingan 2014-06-08.
- ^ "Linux futex_wait () bug ..." 2015-05-13. Olingan 2018-03-24.
- ^ Mazurek, Mixal. "'OpenBSD uchun Futexes '- MARC ". marc.info. Olingan 30 aprel 2017.
- ^ "Zirkon yadrosi tushunchalari". fuchsia.dev. Olingan 20 oktyabr 2019.
- ^ "zx_futex_wait". fuchsia.dev. Olingan 20 oktyabr 2019.
- ^ Futexes ayyor Ulrix Drepper (Red Hat, v1.6, 2011)
- ^ Linux futex (2) man sahifasi, FUTEX_CMP_REQUEUE bo'limi
- ^ Zircon zx_futex_requeue hujjatlari
Tashqi havolalar
- - futex () tizim qo'ng'irog'i
- - futex semantikasi va ishlatilishi
- Hubertus Franke, Rusty Rassel, Metyu Kirkvud. Shov-shuv, futexes va furwocks: Linuxda tezkor foydalanuvchi darajasida bloklash, Ottava Linux simpoziumi 2002.
- Drepper, Ulrich (2011). "Futexes ayyor" (PDF). 1.6. Qizil shapka.
- Bert Xubert (2004). Futexning norasmiy ma'murlari
- Ingo Molnar. "Sog'lom Futexes", Linux yadrosi hujjatlari
- "Fritekslarning ustuvorligi", Linux yadrosi hujjatlari