CLR
Tags: dotnet, clr, dotnetframework, dotnetcore
Published: 2024-07-04 05:49:41

**Clr haqida**
Common Language Runtime(CLR) .NET dasturlarining ishlash jarayonini boshqaradi. O'z vaqtida kompilyator kompilyatsiya qilingan codeni yani (MSIL) codeni mashina codega ( 0 va 1 larga) kompilyatsiya qiladi.

CLR tomonidan taqdim etiladigan xizmatlar xotirani boshqarish, xatoliklar bilan ishlash, xavfsizlik va boshqalarni o'z ichiga oladi.

**Common Language Runtime(CLR)ni to’liqroq tushuntiradigan bo’lsam:**
CLR .NET ning asosiy komponentidir. Bu codelarni boshqaradigan va turli xizmatlarni taqdim etish orqali ishlab chiqish jarayonini osonlashtirishga yordam beradigan .NET runtime muhitidir. Asosan, u har qanday .NET dasturlash tilidan qat'iy nazar .NET dasturlari bajarilishini boshqarish uchun javobgardir. Common Language Runtime ostida ishlaydigan code boshqariladigan code deb ataladi. Boshqacha qilib aytganda, CLR .NET uchun boshqariladigan runtime muhitini ta'minlaydi, deb ayta olamiz.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xvsbumo5fchbkj3n0649.png)

**C# dasturini Run qilishda CLR ning roli.**
Faraz qilaylik, siz C# dasturini yozdingiz va uni program deb nomlanuvchi faylga saqladingiz. Tilga xos kompilyator manba codeini metama'lumotlari bilan birga CIL (Common Intermediate Language) yoki IL (Intermediate Language) deb ham ataladigan MSIL (Microsoft Intermediate Language) ga kompilyatsiya qiladi.

Endi CLR ning navbati. CLR MSIL codega xizmatlar va runtime ish muhitini taqdim etadi. Ichki CLR MSIL codeni keyinchalik protsessor tomonidan bajariladigan mashina codega aylantiruvchi JIT (Just-In-Time) kompilyatorini o'z ichiga oladi. CLR MSIL codeini boshqaradigan dasturlash tili, muhiti, versiyasi va classlari haqida ma'lumot beradi. CLR keng tarqalgan bo'lgani uchun u boshqa tilda yozilgan classga boshqa tilda yozilgan classni ulash imkonini beradi.


****Boshqa manba****
Asosiy xususiyatlar: CLR .NET platformasida yozilgan boshqariladigan ilovalar uchun ish vaqti muhitini taqdim etadi. U kodning bajarilishini boshqaradi, kod xavfsizligini, xotirani boshqarishni va dastur bajarilishining boshqa jihatlarini ta'minlaydi.

**Xotirani boshqarish**: CLR avtomatik xotira boshqaruvidan foydalanadi, bu esa ishlab chiquvchilarning xotirani aniq ajratish va ajratish zaruratini yo'q qiladi.

**Mavzuni boshqarish**: CLR bajarilish iplarini boshqarish, shu jumladan umumiy ma'lumotlarga kirishni sinxronlashtirish uchun imkoniyatlarni taqdim etadi.

**Tur xavfsizligi**: CLR ma'lumotlar turlaridan noto'g'ri foydalanish bilan bog'liq ko'plab ish vaqtidagi xatolarning oldini olishga yordam beradigan tip xavfsizligini ta'minlaydi.

**Bir nechta tilni qo'llab-quvvatlash**: CLR O'rta til (IL) ga kompilyatsiya qilingan bir nechta dasturlash tillarini qo'llab-quvvatlaydi, bu ishlab chiquvchilarga bir xil dastur yoki loyiha doirasida bir nechta tillardan foydalanishga imkon beradi.

**.NET Framework bilan integratsiya**: CLR .NET Frameworkning asosiy qismi boʻlib, .NET tarkibiga kiritilgan turli tillarda yozilgan komponentlarning oʻzaro ishlashini taʼminlaydi.

CLR apparat va operatsion tizimdan yuqori darajadagi abstraktsiyani ta'minlash orqali .NET ilovalarini ishlab chiqishni sezilarli darajada soddalashtiradi, bu esa ishlab chiquvchilarga resurs va platformalarni boshqarish tafsilotlariga emas, balki dastur mantig'iga e'tibor qaratishga imkon beradi.