Bosh sahifa Wiki Runtime

Runtime

Runtime — dastur bajarilayotgan paytdagi muhit va shu bajarilishni ta’minlaydigan xizmatlar to‘plami. Atama ba’zan vaqt oralig‘ini, ba’zan esa runtime system yoki runtime environmentni bildiradi.

Dastur compile vaqtida source code sifatida tekshiriladi va o‘zgartiriladi. Runtime’da esa haqiqiy input, xotira, thread, exception, I/O va operatsion tizim resurslari bilan ishlaydi.

Runtime environment

Runtime environment dasturga quyidagi imkoniyatlarni berishi mumkin:

Har tilning runtime modeli bir xil emas.

Native runtime

C yoki C++ dasturi machine code’ga compile qilinadi va operatsion tizim loaderi orqali ishga tushadi.

Shunga qaramay, u runtime komponentlardan foydalanadi:

Native dastur “runtime’siz” emas; uning runtime qatlami ko‘pincha kichikroq va OSga yaqinroq.

Managed runtime

Managed runtime dastur bajarilishini faol boshqaradi.

Misollar:

Managed runtime:

kabi imkoniyatlarni beradi.

Compile time va runtime

Compile time’da:

  • syntax tekshiriladi;
  • type tekshiriladi;
  • optimization bajariladi;
  • machine code yoki bytecode yaratiladi.

Runtime’da:

  • haqiqiy ma’lumot keladi;
  • object yaratiladi;
  • network so‘rovi bajariladi;
  • exception yuz beradi;
  • dynamic module yuklanadi;
  • permission tekshiriladi.

Masalan, mavjud bo‘lmagan faylni ochish xatosi odatda runtime’da aniqlanadi.

Runtime error

Dastur muvaffaqiyatli compile bo‘lsa ham bajarilish paytida xato berishi mumkin.

Misollar:

  • division by zero;
  • null reference;
  • index out of range;
  • file not found;
  • network timeout;
  • out of memory;
  • stack overflow;
  • invalid cast;
  • permission denied.

Runtime exception qayta ishlanmasa process tugashi mumkin.

Runtime library

Runtime library compiler hosil qilgan kodga tayyor funksiyalar beradi.

Misollar:

  • string operation;
  • memory allocation;
  • floating-point helper;
  • exception unwinding;
  • thread;
  • file I/O;
  • system call wrapper.

Ba’zi oddiy operatorlar ham yashirin runtime function chaqirishi mumkin.

Loader

Operatsion tizim loaderi executable’ni process xotirasiga joylaydi.

U:

  • segmentlarni map qiladi;
  • dynamic librarylarni topadi;
  • relocation bajaradi;
  • stack va environment tayyorlaydi;
  • entry pointga boshqaruv beradi.

Managed runtime keyinchalik assembly, class yoki modulelarni alohida yuklashi mumkin.

Dynamic linking

Dastur library kodini executable ichiga to‘liq qo‘shmasdan runtime’da dynamic libraryga ulanadi.

Afzalliklari:

  • disk va RAMni tejash;
  • bir libraryni ko‘p process bo‘lishishi;
  • libraryni alohida yangilash.

Kamchiligi:

  • mos versiya topilmasligi;
  • ABI mos kelmasligi;
  • deployment murakkabligi.

Garbage collection

Managed runtime ishlatilmay qolgan objectlarni aniqlab xotirani qaytaradi.

GC turlari:

  • reference counting;
  • mark-and-sweep;
  • generational;
  • compacting;
  • concurrent;
  • incremental.

GC pause va memory overhead runtime xatti-harakatiga ta’sir qiladi.

JIT

Just-In-Time compiler bytecode yoki oraliq kodni dastur ishlayotganda machine code’ga aylantiradi.

Runtime haqiqiy workloadni kuzatib:

asosida optimization bajarishi mumkin.

Interpreter

Interpreter instruction yoki AST’ni bajarilish paytida bosqichma-bosqich qayta ishlaydi.

Bu tez startup va dynamic xususiyatlar uchun qulay, ammo har instructionda qo‘shimcha overhead bo‘lishi mumkin.

Ko‘p runtime interpreter va JITni birga ishlatadi.

Runtime type information

Type metadata runtime’da mavjud bo‘lsa:

osonlashadi.

Ba’zi tillar compile’dan keyin type ma’lumotning katta qismini olib tashlaydi.

Runtime configuration

Runtime xatti-harakatini quyidagilar boshqarishi mumkin:

Production va development runtime settinglari farq qilishi mumkin.

Runtime dependency

Dastur ishlashi uchun ma’lum runtime versiyasi talab qilinishi mumkin.

Masalan:

Self-contained build runtime’ning kerakli qismini artifact bilan birga tarqatadi. Framework-dependent build esa hostdagi runtime’ga tayanadi.

Runtime va SDK

Runtime tayyor dastur bajarilishi uchun kerak.

SDK esa dastur yaratish vositalarini ham o‘z ichiga oladi:

Production serverga ko‘pincha to‘liq SDK emas, faqat runtime o‘rnatiladi.

Runtime isolation

Container yoki sandbox runtime processga cheklangan muhit beradi.

Container runtime:

ni boshqaradi.

Bu til runtime’idan boshqa tushuncha, ammo ikkalasi “runtime” atamasi bilan atalishi mumkin.

Observability

Runtime ichki metriclarni taqdim etishi mumkin:

Application metriclari bilan runtime metriclari birga tahlil qilinadi.

Diagnostika

Runtime muammosida:

tekshiriladi.

“Dastur compile bo‘ldi” uning target runtime’da ishlashini kafolatlamaydi.

Runtime lifecycle

Runtime process boshlanishida global state, module va thread tizimini tayyorlaydi. Dastur tugaganda esa finalizer, buffered output va background workerlarni yakunlaydi. Majburiy process termination holatida bu cleanup bosqichlari to‘liq bajarilmasligi mumkin.

Bog‘liq tushunchalar

Runtime environment, Compiler, Interpreter, JIT, Garbage collection, Dynamic linking, SDK, Bytecode, Virtual machine, Exception