• Jarayonlar va oqimlar
  • Linux da fizik xotirani boshqarish
  • Linux da virtual xotira
  • Operatsion · � � tizimlar o‘zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti u




    Download 4,88 Mb.
    bet109/129
    Sana18.11.2023
    Hajmi4,88 Mb.
    #100808
    1   ...   105   106   107   108   109   110   111   112   ...   129
    Bog'liq
    a12b69867f018f785135aa04d3624799 Operatsion tizimlar грифли 100 шт

    Vakolatlar (Credentials). Har bir jarayon unga bog‘liq foydalanuvchi identi-fikatori va bir yoki undan ko‘p identifikatorlar guruhiga ega bo‘lishi kerak.
    Shaxsni identifikatsiyalash (Personality). UNIX turidagi tizimlarda bu an’anaviy bo‘lmasa ham, Linux da har bir jarayon tizim chaqiruvlarning semantik qatorini ma’lum tarzda modifikatsiya qilishga imkon beruvchi yagona shaxsiy identifikatorga ega. U asosan emulyatsiya kutubxonalarida tizim chaqiruvlarini u yoki bu maxsus UNIX versiyalari (dialekti) bilan mosligi bo‘yicha so‘rov uchun foydalaniladi. Jarayonning muhiti ona jarayondan olinadi; nollar bilan tugatiladigan ikki vektordan iborat:

    • argumentlar vektori – bajarilayotgan dasturni chaqirishda foydalaniladigan buyruqlar qatorining agrumentlari ro‘yxatidan iborat; an’anaviy tarzda dasturning o‘zini nomi bilan boshlanadi;

    • muhit vektori – o‘zgaruvchan muhitlarni berilgan nomlar va ularning ixtiyoriy matn qiymatlarini bog‘lovchi "name=value" juftlar ro‘yxati.

    Muhitlar o‘zgaruvchilarini jarayonlar o‘rtasida uzatish va bu o‘zgaruvchilarni farzand jarayonlar tomonidan qabul qilish (meros qilib olish) – bu imtiyozsiz rejimda ishlaydigan tizim dasturiy ta’minotining komponentlariga ma’lumotlarni uzatishning moslashuvchan vositalaridir. Muhit o‘zgaruvchilarining mexanizmi butun tizimni sozlash orqali emas, balki, har bir jarayon uchun alohida o‘rnatilishi mumkin bo‘lgan OTni sozlash vositalarini taqdim etadi.
    Jarayon konteksti – bu bajarilayotgan dasturning vaqtning har bir onida doimiy o‘zgaruvchan holatidir. Rejalashtirish konteksti – bu jarayon kontekstining eng muhim qismi; bu rejalashtiruvchi jarayonni
    vaqtincha uzilish va ishga tushurish uchun foydalanadigan ma’lumot. Yadro har bir jarayon tomonidan har bir onda foydalanadigan resurslar va har bir jarayon tomonidan uni yaratilishdan boshlab to hozirgi vaqtigacha foydalanilgan resurslarning umumiy hajmi to‘g‘risida statik ma’lumotlar saqlanishini qo‘llab-quvvatlaydi. Fayllar jadvali – bu tizim fayl tuzilmalariga ko‘rsatkichlar vektori. Kiritish/chiqarish uchun tizimli chaqirishlar bajarilganida jarayonlar fayllar jadvalidagi indekslar yordamida bu tuzilmalarga havola etadi. Fayllar jadvalida ochiq fayllar ro‘yxati saqlanadigan bo‘lsa, fayl tizimining konteksti yangi fayllarni ochish uchun so‘rovlar uchun qo‘llaniladi. Bu yerda fayllarni izlash uchun joriy ildiz (root) katalog va ishchi (default) kataloglarga havolalar saqlanadi. Signallarga ishlov beruvchilar jadvali tegishli signallar paydo bo‘lganida chaqirilishi mumkin bo‘lgan, jarayonning manzil maydonidagi kichik dasturlarni belgilaydi. Jarayonning virtual xotirasi konteksti uning shaxsiy manzil maydonining barcha tarkiblarini belgilaydi.

    Jarayonlar va oqimlar


    Linuxda jarayon va oqimlar uchun bitta umumiy tasavvurdan foydalaniladi. Linux dagi oqim – bu umumiy manzil maydonini ona jarayon bilan birga foydalanidigan yangi jarayon. Farqi faqat clone tizim chaqiruvi bilan yangi oqim yaratilishida namoyon bo‘ladi:

    • fork klassik tizim chaqiruvi batamom yangi kontekstli, yangi jarayonni yaratadi;

    • clone tizim chaqiruvi o‘zining yangi shaxsiy identifikatoriga ega yangi jarayonni tashkil etadi, lekin unga o‘zining ona jarayoni bilan birga ma’lumotlar tuzilmasidan birgalikda foydalanishga ruxsat berilgan.

    Clone tizim chaqiruvidan foydalanish jarayonlarga oqimlar tomonidan qanday resurslardan birgalikda foydalanishi ustidan ochiqdan-ochiq nazorat qilishga imkon beradi.

    Yadro vazifalarini rejalashtirish va yadroda sinxronlash


    Eslatib o‘tamiz, rejalashtirish – bu operatsion tizim protsessori vaqtining turli vazifalar o‘rtasida taqsimlash. OT larning aksariyatida rejalashtirish deyilganida jarayonlarni ishga tushurish va vaqtinchalik uzilishlar nazarda tutilsa, Linux da rejarashtirishga yadroning turli vazifalarini bajarish ham kiritiladi. Yadro vazifalarini bajarish o‘z
    ichiga ham mazkur jarayon tomonidan so‘ralgan ma’lumotlar bo‘yicha vazifalar, hamda drayver ishlashi jarayonida bajariladigan vazifalar ham kiradi. Yadro rejimida bajarish bo‘yicha so‘rov ikki vaziyatda paydo bo‘lishi mumkin:

    • bajarilayotgan dastur ochiqdan-ochiq tizim so‘rovi yordamida yoki pinhoniy, masalan, sahifa buzilishida OT ning xizmatini so‘rashi mumkin;

    • qurilma drayveri apparat uzilishlarini ishga tushurishi mumkin, natijada protsessor yadro rejimida mazkur uzilishning ishlov beruvchisi vazifasini bajarishni boshlashi mumkin.

    Yadroda sinxronlash yadroning muhim bo‘limlari boshqa muhim bo‘limlar tomonidan uzilishlarsiz bajarilishini talab qiladi.
    Linux muhim bo‘limlarini himoyalashning ikki usulidan foydalanadi:

    1. Yadroning oddiy kodi – to‘xtatilmaydi. Agar jarayon yadroning tizimli xizmat ko‘rsatish kichik dasturi bajarilayotgan paytida vaqt bo‘yicha uzilish qabul qilingan bo‘lsa, need_ resched bayrog‘i tizim chaqiruvi tugashi va boshqaruv imtiyozsiz kodga uzatilishi kerak bo‘lganida rejalashtiruvchi ishga tushishi uchun ko‘rsatma sifatida xizmat qiladi.

    2. Ikkinchi usul uzilishlarga ishlov berish servislarida bajariladigan yadronining muhim bo‘limlariga nisbatan qo‘llaniladi. Muhim bo‘limni bajarilishi paytida uzilishlarni o‘chirish uchun protsessorning uzilishlarni boshqaradigan appraturadan foydalanib, yadro ma’lumotlarning umumiy tuzilmalariga bir vaqtda murojaat qilishining xavfsiz bajarilishini kafolatlaydi.

    Unumdorlikda yo‘qotishlarga yo‘l qo‘ymaslik uchun Linux yadrosi muhim bo‘limlar ko‘pchiligini muhim bo‘lim bajarilishini to‘la vaqtiga uzilishlarni o‘chirish zarurligi bo‘lmasdan, bajarilishiga imkon beruvchi sinxronlash arixitekturasidan foydalaniladi.
    Uzilishlarga ishlov berish xizmatlari yuqori yarmiga (top half) va pastki yarmiga (bottom half) bo‘linadi:

      • yuqori yarmi – bu rekursiv uzilishlarni o‘chirish tarzda bajariladigan uzilishlarga ishlov berishning oddiy protsedurasi;

      • pastki yarmi – uzilishlar rejimi yoqilgan holda, kichik yarimlar bir-birini to‘xtatmasligini ta’minlovchi mini- rejalashtiruvchidan foydalanib bajariladi.

    Bu arixitektura yadroning oddiy kodi bajarilishida pastki yarimlarni tanlash mexanizmi bilan to‘ldiriladi. 9.3- rasmda uzilishlarni himoyalashning darajalari ko‘rsatilgan.

    Yuqori yarmidagi uzilishlarga ishlov beruvchilar

    Pastki yarmidagi uzilishlarga ishlov beruvchilar

    Yadroning xizmat ko‘rsatadigantizimli kichik dasturlar tizimlari (uzilib qolmaydigan)

    Foydalanuvchi qoladigan)

    darajasidagi

    kichik

    dasturlar

    (uzulib

    9.3- rasm. Uzilishlarni himoyalashning darajalari


    Har bir darajaning kodi yuqoriroq darajali kod bilan to‘xtatilishi mumkin, lekin teng yoki pastroq darajali kod bilan hech qachon to‘xtatilmaydi.


    Foydalanuvchi jarayoni doimo boshqa jarayon bilan to‘xtalishi mumkin, agar uzilish vaqtni taqsimlash rejimida rejalashtiruvchi tomonidan amalga oshirilsa.
    Linux jarayonlar rejalashtirishning ikki algoritmidan foydalanadi:

      • jarayonlar o‘rtasida uzilishlarni teng huquqli ravishda rejalashtirish uchun vaqtni taqsimlash algoritmi;

      • teng huquqlikka nisbatan absolyut ustuvorlik muhimroq bo‘lishi hollari uchun real vaqtli algoritmi.

    Jarayonni rejalashtirish sinfi aynan qaysi algoritm qo‘llanilishini belgilaydi. Vaqtni taqsimlash jarayonlari uchun Linux ishonch (credits) asosidagi ustuvorliklar (priority) qo‘llaniladigan algoritmdan foydalanadi. credits := credits / 2 + priority qoidasi ham jarayon tarixini, ham uning ustuvorligini inobatga oladi. Bunday tizim bo‘yicha interaktiv yoki kiritish/chiqarishni bajaruvchi jarayonlarning ustuvorliklari avtomatik ravishda belgilanadi. Linux rejalashtirishda quyidagi algoritmlardan foydalanadi: FIFO va Round Robin; ikkala vaziyatda faqat ayrim rejalashtirish klassi emas, balki har bir jarayon
    ustuvorlikka ega. Rejalashtiruvchi jarayonni eng yuqori ustuvorlik bilan ishga tushiradi; teng ustuvorlikka ega jarayonlaridan eng ko‘p vaqt kutib qolgan jarayon bajariladi. FIFO – jarayonlar tugaguncha yoki blokirovka qilinguniga qadar bajariladi. Round-robin – jarayon ma’lum vaqt o‘tgach to‘xtatiladi va rejalashtirish navbatining oxiriga joylashtiriladi; shuning uchun teng ustuvorlikka ega. RR-jarayonlar vaqtni avtomatik tarzda o‘zaro taqsimlaydi. Linux 2.0 versiyasi SMP qurilmalarni qo‘llab-quvvatlovchi Linux ning birinchi yadrosi bo‘lgan; turli jarayonlar yoki oqimlar bir nechta protsessorlarda parallel ravishda bajarilishi mumkin. Yadroning uzilishlarsiz bajarish talabiga rioya qilish uchun SMP quyidagi cheklashni o‘rnatadi: har bir onda bittadan ko‘p bo‘lmagan jarayon yadro rejimida kodni bajarishi mumkin.

    Linux da fizik xotirani boshqarish


    Linux da fizik xotirani taqsimlash tizimi xotiraning sahifalari, sahifalar guruhlari va uncha katta bo‘lmagan bloklarini joylashtirish va bo‘shatish bilan shug‘ullanadi. U bajarilayotgan jarayonlarining manzil maydonida aks ettiriladigan virtual xotira uchun qo‘shimcha mexanizmlarga ega. Sahifalarni taqsimlovchi fizik sahifalarni joylashtiradi va bo‘shatadi; u so‘rov bo‘yicha yondosh sahifalar guruhlarini ham joylashtirishi mumkin. Linux ning sahifalar taqsimlovchisi buddy-heap (hamkorlik to‘plami) algoritmini foydalanidigan fizik sahifalarni kuzatish uchun ishlatadi; uning tamoyillari quyidagicha:

      • taqsimlanishi lozim bo‘lgan xotiraning har bir qismi uning yondosh “hamkori” bilan birga juftlikni tashkil etadi;

      • ikkala qism-hamkorlar bo‘shatilganida ular birlashadi va ikki barobar kattaroq yondosh hududni tashkil etadi.

    Agar xotiraga kichik so‘rovni qondirishga xotiraning kichik maydoni bo‘lmasa, unda mazkur so‘rovni qondirish maqsadida xotiraning kattaroq maydoni ikkita hamkor-maydonga bo‘linadi.
    Xotirani Linux ning yadrosi uchun bo‘linish ham statik (drayver tizimni yuklash paytida xotiraning statik hududini zahiralaydi) ham dinamik (sahifalarni taqsimlash yordamida) tarzda amalga oshirish mumkin. Xotirani bo‘linishi 9.4- rasmda ko‘rsatilgan.

    9.4- rasm. Linux tizimida xotirani bo‘linishi




    Linux da virtual xotira


    Linux dagi virtual xotira tizimi har bir jarayonga ko‘rinadigan manzil maydonni qo‘llab-quvvatlaydi: u talab bo‘yicha virtual xotiraning sahifalarini tashkil etadi va bu sahifalarni diskka yuklashni, hamda kerak bo‘lganda diskdan qayta chiqarishni boshqaradi. Virtual xotiraning menejeri har bir jarayonning manzil maydoniga ikki nuqtai nazarni qo‘llab-quvvatlaydi:

      • mantiqiy – manzil maydonini boshqarish buyruqlarini qo‘llab-quvvatlash; manzil maydoni kesishmaydigan yondosh hududlar jamlamasi sifatida qaraladi;

      • fizik – har bir jarayonning sahifalar jadvali yordamida. Virtual xotirani boshqarish uchun quyidagilardan foydalaniladi:

      • mazkur hududga qayerdan sahifalar olinishini tavsiflovchi qayta chiqarish fayli (backing store);

      • hududlar odatda fayl tomonidan qo‘llab-quvvatlanadi, yoki umuman qo‘llab-quvvatlanmaydi (xotira talabiga ko‘ra bekor qilinadi);

      • hududni yozuvga javob harakati (sahifalardan birgalikda foydalanish yoki yozib olish vaqtida nusxa olish - cow).

    Yadro ikki vaziyatda yangi virtual manzil maydonni yaratadi:

    Yangi dastur bajarilishida jarayonga yangi, bo‘sh manzil maydoni tadqim etiladi; dasturlarni yuklash protseduralari bu manzil maydoni virtual xotiraning hududlari bilan to‘ldiradi. Fork yordamida yangi jarayonni yaratish amaldagi manzil maydonining to‘liq nusxasini yaratishni nazarda tutadi. Yadro ona jarayonning virtual xotirasidan foydalanish deskriptorlaridan nusxa oladi, keyin farzand jarayon uchun sahifalar jadvallarining yangi jamlamasini yaratadi. Ona jarayonning sahifalar jadvallaridan bevosita farzand jarayonning sahifalar jadvallariga nusxalar olinadi. fork bajarilganidan keyin ona va farzand jarayonlar o‘z virtual manzili maydonlarida bir xil fizik sahifalaridan foydalanadi. Agar fizik xotiraning sahifalarini birorta boshqa maqsad uchun kerak bo‘lsa, sahifalarni boshqarish tizimi ularni diskka ko‘chiradi (o‘tkazadi). Sahifalarni boshqarish tizimi ikki qismga bo‘linadi:

      • qaysi sahifalarni va qachon diskka ko‘chirishni belgilaydigan algoritm;

      • almashtirish mexanizmi, kerak bo‘lgan hollarda ma’lumotlarni uzatish va fizik xotiraga qayta ko‘chirishni amalda bajaradi.

    Linux yadrosi har bir jarayonga, uni o‘ziga tegishli ichki foydalanish uchun doimiy, hudud arxitekturasiga bog‘liq manzil maydonni zahiralaydi. Virtual xotiraning bu hududi ikki hududdan iborat:

      • statik hudud – tizimdagi xotiraning har bir foydalanadigan fizik sahifa uchun sahifalar jadvalida havolani saqlaydi, shuning uchun yadro kodi bajarilishida fizik manzilni virtual manzilga translyatsiya qilishda ishlatiladi;

      • zahiralangan qismning qoldig‘i – birorta boshqa maqsadda ishlatilmaydi; uning sahifalar jadvalining elementlari o‘zgartirilishi va xotiraning istalgan sahifalariga yo‘naltirilishi mumkin.

    Linux da foydalanuvchi dasturlarini bajarish va yuklash


    Linux dasturlarni yuklash funksiyalar jadvalini qo‘llab- quvvatlaydi. Exec tizim chaqiruvi bajarilganida, har bir funksiyaga mazkur faylni yana bir marta yuklashga imkon beriladi. Ko‘p marotaba dasturlarni ro‘yhatdan o‘tkazish Linux ga ham ELF, ham a.out kodlar formatlarini qo‘llab-quvvatlashga imkon beradi. Dastlab ikkilik fayl sahifalari virtual xotiraga yuklanadi; agar dastur mazkur
    sahifaga kirishga urinayotgan bo‘lsa va sahifa buzilishi ro‘y bersa (sahifa ishlamasa), natijada mazkur sahifa fizik xotiraga yuklanadi.ELF (Executable and Linkage Format) formatli ikkilik fayl sarlavhadan iborat; undan keyin bir nechta sahifagacha tekislangan bo‘limlar joylashadi. ELF yuklovchi sarlavhani o‘qiydi va faylning bo‘limlarini virtual xotiraning ma’lum hududlarida aks ettiradi. Linux da ELF-dasturlar uchun xotiraning taqsimlanishi 9.5- rasmda ko‘rsatilgan.

    Yadro virtual xotirasi

    Stek
















    Xotiraga aks ettiriladigan hudud




    Xotiraga aks ettiriladigan hudud










    Bajarilish vaqti ma’lumotlari

    Faollashtirilmagan ma’lumotlar

    Faollashtirilgan ma’lumotlar

    Dastur matni




    9.5- rasm. ELF-dasturlar uchun xotiraning taqsimlanishi


    Linux yadrosi moduli uchun ELF fayl bo‘limining tuzilishi 9.2- jadvalda keltirilgan.
    9.2- jadval


    Download 4,88 Mb.
    1   ...   105   106   107   108   109   110   111   112   ...   129




    Download 4,88 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Operatsion · � � tizimlar o‘zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti u

    Download 4,88 Mb.