İngilizce dilinde oku

Aracılığıyla paylaş


"Yönetilen kod" nedir?

.NET ile çalışırken genellikle "yönetilen kod" terimiyle karşılaşırsınız. Bu makale, yönetilen kodun ne anlama geldiğini açıklar ve bununla ilgili ek bilgiler sağlar.

Basitçe ifade etmek gerekirse, yönetilen kod yalnızca şöyledir: yürütmesi çalışma zamanı tarafından yönetilen kod. Bu durumda söz konusu çalışma zamanı, uygulamadan bağımsız olarak Ortak Dil Çalışma Zamanı veya CLR olarak adlandırılır (örneğin, Mono, .NET Framework veya .NET Core/.NET 5+ ). CLR, yönetilen kodu almaktan, makine koduna derlemekten ve sonra yürütmekle görevlidir. Buna ek olarak, çalışma zamanı otomatik bellek yönetimi, güvenlik sınırları ve tür güvenliği gibi çeşitli önemli hizmetler sağlar.

Bu, "yönetilmeyen kod" olarak da adlandırılan bir C/C++ programını çalıştırma yönteminize karşılık gelir. Yönetilmeyen dünyada, programcı hemen hemen her şeyden sorumlu. Asıl program, temelde işletim sisteminin (OS) belleğe yükleyip başlattığı bir ikili dosyadır. Bellek yönetiminden güvenlikle ilgili dikkat edilmesi gerekenlere kadar diğer her şey programcının yükünü oluşturur.

Yönetilen kod C#, Visual Basic, F# ve diğerleri gibi .NET'in üzerinde çalıştırılabilen üst düzey dillerden birinde yazılır. İlgili derleyicileriyle bu dillerde yazılmış kodu derlediğinizde, makine kodunu alamazsınız. Çalışma zamanının daha sonra derleyip yürüttüğü Ara Düzey Dil kodunu alırsınız. C++, Windows üzerinde çalışan yerel, yönetilmeyen ikili dosyalar da üretebildiği için bu kuralın tek özel durumudur.

Ara Düzey Dil & yürütme

"Ara Dil" (veya kısaca IL) nedir? Üst düzey .NET dillerinde yazılmış kod derlemesinin bir ürünüdür. Kodunuzu bu dillerden birinde derledikten sonra IL'de oluşturulan bir ikili dosya alırsınız. IL'nin herhangi bir özel dili çalışma zamanı üzerinde çalıştırmadan bağımsız olduğunu belirtmek önemlidir; hatta, ilginizi çekerse okuyabileceğiniz ayrı bir teknik şartname bile bulunmaktadır.

Üst düzey kodunuzdan IL'yi ürettikten sonra büyük olasılıkla çalıştırmak istersiniz. Burada CLR devreye girer ve kodunuzu IL'den bir CPU üzerinde çalıştırılabilecek makine koduna dönüştürmek için Just-In-Time derleme veya JIT (tam zamanında derleme) işlemini başlatır. Bu şekilde CLR, kodunuzun tam olarak ne yaptığını bilir ve etkili bir şekilde yönetebilir.

Ara Dil bazen Ortak Ara Dil (CIL) olarak da adlandırılır.

Yönetilmeyen kod birlikte çalışabilirliği

Elbette CLR, yönetilen ve yönetilmeyen dünya arasındaki sınırların aşılmasına izin verir ve .NET sınıf kütüphanelerinde bile bunu yapan çok sayıda kod vardır. Buna"birlikte çalışabilirlik" veya kısaca "birlikte çalışma" denir. Bu hükümler, örneğin yönetilmeyen bir kütüphaneyi sarmalamanıza ve içine çağrı yapabilmenizi sağlar. Ancak, bunu yaptıktan sonra kod çalışma zamanının sınırlarını geçtiğinde yürütmenin gerçek yönetiminin yeniden yönetilmeyen kodun elinde olduğunu ve bu nedenle aynı kısıtlamaların altında olduğunu unutmayın.

Buna benzer şekilde C#, clr tarafından yönetilmeyen bir kod parçası belirten güvenli olmayan bağlamkullanarak doğrudan kodda işaretçiler gibi yönetilmeyen yapıları kullanmanıza olanak tanıyan bir dildir.

Diğer kaynaklar