• Nazariy qism
  • Thread 1 Thread 2
  • Amaliy ish 5 Mavzu: Time-Of-Check-To-Time-Of-Use tahdidini amalga oshirish va himoyalash. Ishdan maqsad




    Download 183.17 Kb.
    Sana31.03.2023
    Hajmi183.17 Kb.
    #47932
    Bog'liq
    5-praktika (3)
    FANNING TA\'LIM TEXNOLOGIYASI ko\'piya, 17-маъруза, Mavzu Mehmonxonada ovqatlanishni tashkil etish, Kimyo-7-sinf, 3-4 кл. матем кружок, Programmalashdan laboratoriya topshiriqlari, 2 mavzu, , kiberxavfsizlik 131.docx SMB, Musiqa elementar nazariyasi. Garmoniya (G.Ibraximjanova, L.Urmanova), DIS0512, 8-sinf, 4 застава далолатнома камиш, 1. Armatura va uning xossalari va qo’llanishi Armatura klassifik-kompy.info

    Amaliy ish - 5
    Mavzu: Time-Of-Check-To-Time-Of-Use tahdidini amalga oshirish va himoyalash.
    Ishdan maqsad: Tezkor murojaat sharti tahdidi haqida tushumcha hosil qilish, TOCTOU tahdidi haqida tushumcha hosil qilish, tahdidlarning oldini olish ko‘nikmasini shakllantirish.
    Nazariy qism
    Tezkor murojaat sharti tahdidi (Race condition) bu dasturiy mahsulotning yoki elektron tizimning o‘zini tutish holati bo‘lib, chiqish qiymati boshqarib bo‘lmas boshqa hodisalar ketma-ketligi yoki vaqtiga bog‘liq bo‘ladi. Dasturlashda bu holda xatolik yuzaga kelib, ikkita signal birinchi chiqish uchun harakat qiladi. Bu hodisa asosan, dasturlashda parallel hisoblashda (thread) yuzaga keladi.

    5.1 – rasm. Tezkor murojaatda misol
    Uch turdagi mustaqil oqimlar bo‘lishi mumkin:
    - Oqimlar (thread);
    - Jarayonlar;
    - Vazifalar.
    Ushbu hodisaning yuzaga kelishi uchun uch turdagi xususiyat mavjud:
    - Konkurensiyaning mavjudligi. Kamida ikkita oqim amalga oshirilgan bo‘lishi shart;
    - Taqsimlangan obyekt. Taqsimlangan obyektlar barcha konkurent oqimlar tomonidan boshqarilishi shart;
    - Holatni o‘zgarishi. Kamida bitta oqim tezkor murojaatni amalag oshirishi shart.
    Quyida ikkita oqim tomonidan o‘z qiymatini birga oshirish uchun bajargan tezkor murojati keltirilgan. Agar tizim to‘g‘ri ishlaganda quyidagi natija olinishi shart edi.

    Thread 1

    Thread 2


    Integer value




    0

    read value




    0

    increase value



    0

    write back




    1


    read value



    1


    increase value


    1


    write back



    2

    Ammo, tezkor murojaat natijasida quyidagi holat kelib chiqdi:



    Thread 1

    Thread 2


    Integer value




    0

    read value




    0


    read value



    0

    increase value



    0


    increase value


    0

    write back




    1


    write back



    1

    Bu tahdid mavjud dasturiy mahsulotlarda time-of-check-to-time-of-use
    (TOCTTOU) zaifligi mavjud bo‘ladi.
    Muammo biror oqim “check-then-act” ni amalga oshirish vaqtida (masalan, "check" agar X biror kattalikga teng bo‘lsa, u holda "act" X bilan bog‘liq biror amal) va boshqa bir oqim bu qiymatga "check" va "act" oralig‘iga ta’sir qiladi.
    Masalan:
    if (x == 5) //"Check"
    {
    y = x * 2; //"Act"
    // agar boshqa biror oqim x ni "if (x == 5)" va "y
    = x * 2" oralig‘ida o‘zgartirsa
    // y kattalik 10 ga teng bo‘lmaydi.
    }
    Odatda bu tahdidlarni oldini olishda dasturlash tillarida global o‘zgaruvchini qulflab qo‘yish usullaridan foydalaniladi. // x uchun qulflashni amalga oshirish
    if (x == 5)
    { y = x * 2; // qulflash olib tashlagmagunga qadar
    boshqa oqim tomonidan o‘zgartirib bo‘lmaydi
    // SHuning uchun y = 10
    }
    // x ni qulfdan ozod etish


    Amaliy qism
    Quyida oqimdan foydalangan holda va asosiy funksiya ichida chop etish buyrug‘idan foydalanilib, qiymatlar chop etilgan kod berilgan:
    #include #include void thread_function()
    {
    for (int i = -100; i < 0; i++)
    std::cout << "thread function: " << i << "\n"; }
    int main() {
    std::thread t(&thread_function);
    for (int i = 0; i < 100; i++)
    std::cout << "main thread: " << i << "\n";
    t.join();
    return 0;
    }

    5.1 – rasm. Dasturning kompilatsiya qilingan holati
    Natijadan ko‘rinib turibdiki, bu holda tartib buzilgan.
    Bu holatni oldini olish uchun C++ dasturlash tilida mutex: funksiyasidan foydalaniladi va u bilan chop etish buyrug‘i qulflanadi:
    #include
    #include #include #include std::mutex mu;
    void shared_cout(std::string msg, int id)
    {
    mu.lock();
    std::cout << msg << ":" << id << std::endl; mu.unlock();
    }
    void thread_function()
    {
    for (int i = -100; i < 0; i++)
    shared_cout("thread function",i);
    }
    int main() {
    std::thread t(&thread_function);
    for (int i = 0; i < 100; i++) shared_cout("main thread", i);
    t.join(); return 0;
    }

    5.1 – rasm. Dasturning mutex funksiyasi bilan kompilatsiya qilingan holati


    Topshiriq
    TOCTOU va Race Conditional tahdidlariga bir donadan misol keltirish va tahdidlarning oldini olish yo‘llarini qo‘llash.

    Download 183.17 Kb.




    Download 183.17 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Amaliy ish 5 Mavzu: Time-Of-Check-To-Time-Of-Use tahdidini amalga oshirish va himoyalash. Ishdan maqsad

    Download 183.17 Kb.