Bellekte kaydedilen program fikrinin John von Neumann ile neden ilişkilendirildiğini, EDVAC raporunun rolünü ve bu fikrin yeniden kullanılabilir yazılım ile modern programlamayı nasıl mümkün kıldığını öğrenin.

Modern hesaplamanın merkezinde basit bir soru yatar: tek bir makinenin her seferinde yeniden inşa edilmeden birçok farklı görevi yapabilmesini mümkün kılan neydi? Erken elektronik bilgisayarlar hızlı hesaplayabiliyordu, ama “işi değiştirmek” çoğunlukla makinenin fiziksel olarak nasıl kurulduğunu değiştirmek anlamına geliyordu. Bellekte kaydedilen program fikri, bilgisayarları gerçekten programlanabilir yapan dönüm noktasıdır.
Bir bellekte kaydedilen program bilgisayarı, bir görevin talimatlarını (programı) işlemcinin kullandığı veri ile aynı tür iç bellekte tutar. Donanımı yeniden kablolamak veya panelleri elle yeniden yapılandırmak yerine, belleğe yeni bir talimat seti yükleyip farklı bir işi çalıştırabilirsiniz.
Bu şimdi bariz geliyor olabilir, ama derin bir değişimdir:
Bu sadece tarihsel bir merak değil. Bellekte kaydedilen program kavramı, “yazılım”ın “donanımdan” niye ayrı bir şey olarak var olduğunu ve bir cihazı güncellemenin neden içindeki çipleri değiştirmeden yeni özellikler açabildiğini açıklar.
Aşağıdaki bölümlerde, erken bilgisayarların karşılaştığı problemi, bellekte kaydedilen program yaklaşımının neyi değiştirdiğini, fikri netleştiren kişi ve belgeleri (ünlü EDVAC raporu dahil) ve “von Neumann mimarisi” teriminin nasıl yaygın bir tasarımı temsil etmeye başladığını inceleyeceğiz.
John von Neumann’ın ismi bellekte kaydedilen program bilgisayarlarıyla güçlü şekilde anılsa da, kredi daha geniş bir ekip ve döneme paylaştırılır. Birçok araştırmacı, ilk pratik elektronik bilgisayarları inşa ederken benzer fikirler üzerinde aynı anda yoğunlaşıyordu. Bu makale o bağlamı koruyor; çünkü ekip çalışmasını anlamak, fikrin nasıl hızla yayıldığını ve sonraki çoğu bilgisayar için varsayılan modele nasıl dönüştüğünü açıklamaya yardımcı olur.
Bellekte kaydedilen program fikrinden önce birçok erken bilgisayar, günümüz anlamında “yazılım çalıştırmıyordu”. Etkileyici hızlarda hesap yapabiliyorlardı, ama ne yapacaklarını söylemek genellikle makinenin kendisini fiziksel olarak değiştirmek demekti.
Yaygın bir yaklaşım, priz panoları, yama kabloları ve anahtar panoları kullanmaktı. Operatörler, soketler arasında kablolar bağlar, anahtar satırlarını ayarlar ve bazen sinyallerin doğru sırada gelmesini sağlamak için zamanlama birimlerini ayarlardı. “Program” yüklenecek bir dosya değil—geçici bir kablolama diyagramıydı.
Bu düzen çalışıyordu, ama gizli bir maliyeti vardı: her yeni görev bir mini mühendislik projesiydi. İşlem sırasını değiştirmek istiyorsanız (toplama, çarpma, karşılaştırma, döngü ekleme), onlarca hatta yüzlerce bağlantıyı taşımak gerekebilirdi. Tek bir yanlış kablo, mantığın donanım bağlantılarına dağılmış olması nedeniyle teşhis edilmesi zor hatalar yaratabilirdi.
Yeniden yapılandırma saatler veya günler alabiliyordu; özellikle makine dikkatlice kapatılıp yeniden kablolanıp test edilmesi gerekiyorsa. Bu durumda esneklik sınırlıydı: bu makineler uzun süreler boyunca tek tür hesaplama için planlanıyordu çünkü iş değiştirmek çok kesintiye uğratıcıydı.
Bir makineyi topçu atış tabloları (sabit formüllerle uzun, tekrarlı hesaplar) hesaplamak üzere kurduğunuzu düşünün. Araştırmacılar aynı makineyi nüfus sayımı için istatistik tablolama gibi farklı bir problem çözmek için kullanmak istediklerinde, bu hızlı bir “programı düzenleyip tekrar çalıştır” meselesi değildi. İşlem sırası, ara depolama adımları ve koşullu kontroller farklı olabilir; bu da tam bir priz paneli yeniden tasarımı ve yeni bir doğrulama turu gerektirebilir.
İşte bellekte kaydedilen program bilgisayarının kaçmayı hedeflediği dünya budur.
Bir bellekte kaydedilen program bilgisayarı, talimatların (programın) programın kullandığı veriyle aynı çalışma belleğinde yaşadığı makinadır. Başka bir deyişle, bilgisayar “ne yapılacağı”nı “ne üzerinde çalışılacağı”ndan ayrı tutmaz—ikisi de bellek içindeki bit örüntüleri olarak depolanır.
Erken bilgisayar öncülerinin bahsettiği bellek, bilgisayarın hızlı, doğrudan kullanılabilir iç depolamasıydı—bugün çoğunlukla RAM ile ilişkilendireceğimiz yer. İşlemcinin çalışırken hızlıca okuduğu ve yazdığı alandır.
Bu, sabit disk veya SSD gibi uzun süreli depolamadan farklıdır. Bir disk, güç kapalıyken dosyaları saklamak için iyidir ama işlemcinin sonraki talimatı alıp ara sonuçları güncellemesi için sürekli kullandığı anlık kâğıt defteri değildir.
Talimatlar bellekte tutulduğunda, görev değiştirmek dramatik şekilde basitleşir: yeni bir programı belleğe yükleyip çalıştırabilirsiniz, donanımı yeniden inşa etmeden, yeniden kablolamadan veya fiziksel olarak yeniden yapılandırmadan. Aynı genel amaçlı makine sabah bordro, öğleden sonra balistik hesaplar yapabilir—çünkü işin “nasıl” olduğu bellekte değiştirilebilen bir bit kümesidir.
Tarif ve malzemelerin aynı kilerde saklandığı bir mutfağı hayal edin. Aşçı (işlemci) bir sonraki tarif adımını (talimat) okumak ve malzemeleri (veri) almak/güncellemek için tekrar tekrar kilere (bellek) gider.
Farklı bir yemek yapmak mı istiyorsunuz? Mutfağı yeniden dekore etmezsiniz. Sadece farklı bir tarif takarsınız—aynı tezgâhları, fırını ve aletleri kullanarak.
John von Neumann bilgisayarı “icat etmedi” ve bellekte kaydedilen program fikrini tek başına oluşturmadı. Ancak yaptığı—parlak bir şekilde—umut veren bir kavramı başkalarının inşa edebileceği açık, paylaşılabilir bir tasarıya dönüştürmeye yardımcı olmaktı.
Von Neumann savaş zamanı ve savaş sonrası hesaplama projelerine derinlemesine dahil oldu, ekipleri danışmanlık yaptı ve erken tasarımların mantıksal yapısını netleştirdi. Karmaşık teknik seçimleri sade, düzenli terimlerle açıklama yeteneği önemliydi; çünkü erken elektronik hesaplama hızlı ilerliyordu ve birden çok grup benzer problemleri çözüyordu.
Daha da önemlisi, program talimatlarının veriyle aynı bellek içinde saklanabileceğini açıklayan etkili tasvirler yazdı ve dolaşıma soktu. Bu net çerçeve, başkalarının yaklaşımı tartışmasını, öğretmesini ve çoğaltmasını kolaylaştırdı.
İsimler genellikle bir fikrin ilk sahibi olana değil, açıklaması referans noktası haline gelen kişiye yapışır. Von Neumann’ın yazıları genişçe okunup alıntılandığı için, sonraki okuyucular “bellekte kaydedilen” düzeni doğal olarak ona atfettiler.
Bu etiketleme tarihi basitleştirir: “von Neumann mimarisi” demek, her katılımcıyı ve raporu listelemekten daha kolaydır. Ancak bu kısaltma gerçeği biraz bulanıklaştırabilir.
Erken elektronik hesaplama, matematikçiler, mühendisler ve programcıların dahil olduğu işbirlikçi, kurumlar arası bir çabaydı. Bellekte kaydedilen kavram, ekipler arasında tartışmalar, taslaklar, prototipler ve revizyonlar yoluyla olgunlaştı. Von Neumann’ın kalıcı rolü, fikri kristalleştirip yaymak—benliğini tek başına mucit olarak sunmaktan çok—ve benimsenmesini hızlandırmaktı.
EDVAC (Electronic Discrete Variable Automatic Computer), “tek seferlik” makinelerin ötesine geçmeyi amaçlayan erken savaş sonrası projelerden biriydi. Donanım çabasının yanı sıra, tasarım fikirlerini açıkça yazma kararı da en az onun kadar önemliydi. O zamanlar bilgisayar inşası hâlâ deneysel mühendislik düzeyindeydi—bilgi laboratuvar defterlerinde, toplantılarda ve birkaç uzmanın kafasında yaşıyordu. Bir rapor, bu dağınık içgörüleri diğer ekiplerin tartışabileceği, eleştirebileceği ve yeniden kullanabileceği bir şeye dönüştürebilirdi.
First Draft of a Report on the EDVAC (kısaca “EDVAC raporu”), bellekte kaydedilen fikri açık, kavramsal terimlerle özetledi: bir bilgisayarın program talimatlarını verilerle aynı tür dahili bellekte tutması gerektiği. O bellek, sadece hesaplama sırasında sayıların tutulduğu bir yer değil—makineye bir sonraki adımda ne yapacağını söyleyen adımların da saklandığı yerdi.
Bu çerçeve, bir bilgisayarı sabit amaçlı bir cihazdan, bellekte ne olduğuna göre “yeniden görev verilebilen” genel bir makineye dönüştürüyordu. Sistemi bir görevden diğerine geçirmek için yeniden kablolamaya gerek yoktu; sadece farklı bir talimat dizisi yüklüyordunuz.
Kavramsal fikrin ötesinde, rapor insanların bilgisayar hakkında nasıl konuşacağı konusunda standardizasyon sağlamaya yardım etti: bellek, kontrol, aritmetik ve giriş/çıkış gibi ayrı fonksiyonel parçalardan söz etmek. Ortak bir sözcük dağarcığı ve genişçe okunan bir açıklama, sadece EDVAC’i anlatmakla kalmadı—tüm alana, stored-program bilgisayarları kurmak, karşılaştırmak ve geliştirmek için ortak zihinsel bir model verdi.
“Stored-program bilgisayarını kim icat etti?” gibi bir soru sormak ve tek bir isim beklemek cazip gelebilir. Ama bilim ve mühendislik nadiren böyle işler. Fikirler genellikle paralel gelişir, tartışmalarla rafine olur ve ancak çalışan donanımda gösterildiğinde ikna edici hale gelir.
John von Neumann bellekte kaydedilen kavramla güçlü şekilde ilişkilendirilse de, erken çalışmalar birçok kişi ve grubu içeriyordu:
Bir stored-program bilgisayar tek bir içgörü değildir. Bu (1) talimatların veriler gibi bellekte tutulabileceği kavramsal sıçrama, (2) güvenilir bellek ve kontrol birimleri inşa etmek için gereken mühendislik ve (3) tasarımı kullanılabilir kılan programlama uygulamalarının birleşimidir. Farklı kişiler farklı parçalara katkıda bulundu.
Bir fikri önermek, tek başına makineyi gün be gün çalıştıran bir sisteme dönüştürmekle aynı şey değildir. Erken raporlar ve tartışmalar kavramı netleştirdi; erken prototipler ve üretim sistemleri ise bunun uygulanabilir olduğunu kanıtladı. Titiz bir tarih her iki katkı türünü de saygıyla ele alır—basit bir “ilk mucit” hükmü vermeye çalışmadan.
İnsanlar “von Neumann mimarisi” dediğinde genellikle bir stored-program bilgisayarın nasıl düzenlendiğini gösteren basit, yaygın öğretilen bir modelden söz ederler. Bu bir marka ya da tek bir tarihsel makine değil—çeşitli bilgisayarlarda bir biçimde ortaya çıkan temel plan için kullanışlı bir etikettir.
Kavramsal olarak resim şu parçalardan oluşur:
Temel fikir CPU’nun “program” için ayrı bir fiziksel yeri olmamasıdır; gereken her şeyi bellekten çeker.
CPU, genellikle alma–çözümleme–yürütme olarak tanımlanan bir döngüyü tekrarlayarak bir program çalıştırır:
Bu açıklama basitleştirilmiştir ama özünü yakalar: program, bellekte depolanmış talimat dizisidir ve CPU bunları adım adım işler.
Talimatları ve veriyi aynı bellekte tutmak bir bilgisayarı pratik bir şekilde genel amaçlı yapar:
Dolayısıyla “von Neumann mimarisi”, CPU, talimatları ve veriyi paylaşan bir bellek ve I/O içeren stored-program modelinin kısaca ifade edilmesidir; von Neumann’ın açık açıklamalarıyla ilişkilendirilen bir etiket olup erken hikâyenin birden çok katkıda bulunanını gizleyebilir.
“Von Neumann” ve “Harvard” genellikle rakip felsefeler gibi konuşulur. Aslında bunlar bilgisayarın ihtiyaç duyduğu talimatları ve veriyi CPU’ya nasıl ulaştıracağını düzenlemenin iki pratik yoludur.
Von Neumann tarzında, talimatlar ve veri aynı bellekte yaşar ve genellikle CPU’ya aynı ana yol üzerinden giderler.
Bu kavramsal olarak basittir: bir program, bellek içindeki baytlardan ibarettir; hemen yanında veriler vardır. Genel amaçlı hesaplama bu sayede kolaylaşır—yazılım aynı mekanizmalarla yüklenebilir, değiştirilebilir ve depolanabilir.
Takas: talimatlar ve veri aynı “yolu” paylaştığında bant genişliği için rekabet olabilir. (Bunu bazen bir “darboğaz” olarak duyarsınız; temel fikir paylaşım yapılmasıdır.)
Harvard tarzı, talimat depolamayı veri depolamadan ayrı tutar, genellikle her biri için ayrı yollarla.
Bu ayrım, bir yandan bir sonraki talimatı alırken diğer yandan veri okuma/yazma yapılmasını kolaylaştırabilir—küçük, öngörülebilir sistemlerde faydalıdır. Basit bir örnek, program kodunun flash bellekte, değişkenlerin ise RAM'de olduğu birçok mikrokontrolcüdür.
Modern CPU'lar yazılım açısından genellikle “von Neumann” görünürken, içlerinde Harvard-benzeri fikirler kullanırlar. Yaygın bir örnek ayrı talimat ve veri önbellekleridir (I-cache ve D-cache). Programcıya tek bir bellekmiş gibi gelir ama donanım kod ve veriyi daha verimli almak için ayırabilir.
Unutulması gereken: evrensel bir kazanan yok. Von Neumann sadelik ve esnekliği vurgular; Harvard ayırım ve verimi. Birçok makine maliyet, güç ve hız arasında denge kurmak için ikisini karıştırır.
Bellekte kaydedilen program bilgisayarı sadece hesaplama yapmaz—bellekten talimat yükleyip çalıştırabilir ve sonra farklı bir set yükleyebilir. Bu değişim, yazılımı yeniden kullanılabilir ve paylaşılabilir yaptı: bir program bir kez yazılıp kaydedilebilir, kopyalanabilir, geliştirilebilir ve donanımı değiştirmeden dağıtılabilirdi.
Program bellekteyken, aynı fiziksel bilgisayar sadece okuduğu talimatları değiştirerek birçok farklı işi yapabilir. İşte “genel amaçlı”nın asıl anlamı budur: bir makine, birçok program.
Güncel bir örnek olarak dizüstünüzde e‑posta, oyun ve hesap tabloları çalıştırabilmenizi verin. Alt katta aynı fikir yatar: donanım sabitken farklı saklanan programlar yüklenip yürütülür.
Talimatlar bellekte veri gibi ele alındığında, yazılım yazmayı kolaylaştıran üst katman araçları oluşturmak pratik hale gelir:
Bu araçlar, programların saklanabileceği, taşınabileceği ve işlenebileceği varsayımına dayanır. Bu sayede yazılım bir ekosistem haline geldi; tek seferlik kablolamaya bağlı bir nesne olmaktan çıktı.
Uzun vade görmek için yararlı bir yol: bellekte kaydedilen programlar derleyicileri ve işletim sistemlerini mümkün kıldı; daha iyi araçlar daha iddialı programları gerçekleştirdi—bugün doğal dilde bir uygulama tarif edip araçların çalışan kod üretmesine kadar uzanan katmanlar oluştu. Örneğin Koder.ai, sohbet arayüzüyle web, backend veya mobil uygulamalar oluşturmanıza izin veren bir vibe-coding platformudur; LLM'ler ve ajan tabanlı iş akışı kullanarak niyetten ("ne yapmalı?") çalışır durumda talimatlara (kaydedilebilir, dışa aktarılabilir kaynak kodu) hızlıca geçişi hızlandırır.
Sonuç aynı olumlu döngüdür: bellekte kaydedilen programlar daha iyi araçları mümkün kıldı, daha iyi araçlar daha büyük programları mümkün kıldı—bilgisayarları esnek, genel amaçlı makineler haline getirdi.
Bellekte kaydedilen program fikri bilgisayarları esnek kıldı, ama aynı zamanda mühendislerin hâlâ konuştuğu pratik bir kısıtı da ortaya çıkardı: “von Neumann darboğazı”. Günlük tabirle, CPU (işçi) ile bellek (depo) arasındaki yol üzerindeki trafik sıkışıklığı gibidir.
Tipik bir stored-program tasarımında hem talimatlar hem veriler bellekte yaşar. CPU bir talimatı alır, sonra ihtiyacı olan veriyi alır, sonra sonuçları yazar—çoğunlukla aynı bağlantı üzerinden. Eğer o bağlantı bilgiyi yeterince hızlı taşıyamıyorsa, CPU beklemek zorunda kalır, oysa hesaplama çok daha hızlı yapılabilir.
Bu darboğazı şekillendiren iki faktör vardır:
CPU saniyede milyarlarca işlem yapabiliyor olabilir, ama bellek sürekli talimat ve veri sağlayamazsa performans en yavaş adım tarafından sınırlanır.
Bu mühendislik açısından sık tartışılan bir konudur ve modern bilgisayarlar etkiyi azaltmak için birkaç yöntem kullanır:
Bu yaklaşımlar temel “yolu” ortadan kaldırmaz ama tıkanıklığı azaltmaya yardımcı olur—böylece CPU daha çok çalışır, daha az bekler.
Bellekte kaydedilen program kavramı bir müze objesi değil—günlük hesaplamanın esnek kalmasını sağlayan temel yöntemdir. Cihazlarınız yeni bir şey yapmak için yeniden kablolamaya ihtiyaç duymazlar; belleğe farklı talimatlar yükler ve çalıştırırlar.
Bir telefonda bir uygulama simgesine dokunmak, işletim sisteminin o uygulamanın kodunu depolamadan belleğe yüklemesine ve CPU'nun onu yürütmesine neden olur. Dizüstünde bir tarayıcı açtığınızda, bir belgeyi düzenlediğinizde veya bir oyun çalıştırdığınızda aynı şey olur. Sunucularda daha görünürdür: makine binlerce değişen iş yükünü—web istekleri, veritabanı sorguları, arka plan görevleri—donanımı değiştirmeden çalıştırabilir.
Donanım gibi düşündüğümüz birçok özellik aslında yazılım tanımlıdır. Ağ yönlendirme, video kod çözme yolları, fotoğraf geliştirme ve güç yönetimi politikaları genellikle firmware ve sistem yazılımlarıyla güncellenir—aynı cihaz, yeni talimatlarla yeni davranış kazanır.
Python ve JavaScript gibi diller genellikle bir yorumlayıcı veya sanal makine üzerinden çalışır. CPU doğrudan kaynak kodunuzu yürütmek yerine, programınız bellekte saklanan yapılandırılmış bir biçime (bytecode veya iç talimatlar) çevrilir ve adım adım yürütülür. Java'nın JVM'si, .NET, WebAssembly runtime'ları ve tarayıcı JavaScript motorları bu yaklaşıma dayanır: talimatlar çalıştırılabilir, taşınabilir veriler haline gelir.
Talimatlar sadece bilgi olduğundan, saldırılar bazen kötü amaçlı kodu veri yoluyla sokmaya çalışır—klasik kod enjeksiyonu örnekleri. Bellek koruması, kod imzalama ve çalıştırılamaz bellek bölgeleri gibi savunmalar, güvensiz verinin çalıştırılabilir talimata dönüşmesini engellemeye çalışır.
Tüm bunlar bellekte kaydedilen programların merkezi vaadine döner: aynı donanım üzerinde yazılımla esneklik—aynı donanımda yeni davranışlar.
Bir bilgisayara (veya bir spesifikasyona) bakarken temel modeli tespit etmenize yardımcı olacak sorular:
Eğer bu tür arka plan odaklı, erişilebilir yazıları daha fazlasını okumak isterseniz, /blog bölümünü inceleyebilirsiniz.
Not: Talimatları çalışır sistemlere dönüştürmenin modern yollarını deniyorsanız—ister doğrudan kod yazma, ister sohbetle oluşturma platformları kullanma—öğrendiklerinizi belgelemeyi düşünün. Koder.ai ayrıca yayınlanan içerik ve yönlendirmeler aracılığıyla kredi kazanma programı sunar; bu, daha fazla deney ve öğretici finanse etmek için pratik bir yol olabilir.
Bir stored-program bilgisayar, program talimatlarını aynı dahili bellekte tutar; bu bellek, talimatların üzerinde çalıştığı verileri de içerir. Görevi değiştirmek için makineyi yeniden kablolamak yerine belleğe farklı bir talimat kümesi yükleyip çalıştırırsınız.
Stored-program öncesi dönemde birçok makine priz panoları, yama kabloları ve anahtar ayarları ile “programlanıyordu”. İşlem sırasını değiştirmek saatler veya günler süren yeniden kablolama ve yeniden test gerektirebilir; tek yanlış bağlantı, tespit edilmesi zor hatalara yol açabilirdi.
Bu bağlamda “bellek”, CPU'nun çalışırken sürekli okuyup yazdığı hızlı çalışma depolaması demektir (bugünkü benzerliği RAM). Uzun süreli depolama (diskler/SSD'ler) ise gücü kapattığınızda dosyaları saklamak içindir; işlemcinin anlık olarak kullandığı çalışma alanı değildir.
EDVAC raporu, talimatların ve verinin aynı iç bellekte paylaşıldığı düzeni açıkça tanımladı ve bellek, kontrol, aritmetik ve giriş/çıkış gibi parçalar hakkında ortak bir söylem sundu. Bu netlik, diğer ekiplerin benzer sistemleri daha hızlı tartışıp inşa etmesine yardımcı oldu.
John von Neumann'in adı, açıklamalarının yaygın şekilde dolaştırılması ve referans alınması nedeniyle öne çıktı; o tek başına buluşun sahibi değildi. Stored-program yaklaşımı, aynı dönemde çalışan mühendisler, matematikçiler ve programcılar arasındaki ortak çabanın ürünüdür.
“Von Neumann mimarisi” genelde şu modele işaret eder:
Bu, stored-program düzeninin öğretim için kullanılan pratik bir etiketi; tek bir makine ya da tek bir mucit iddiası değildir.
Bir von Neumann tasarımında talimatlar ve veriler tek bir bellek paylaşır. Bir Harvard tasarımında talimat belleği veri belleğinden ayrıdır (genellikle ayrı yollarla). Modern sistemler çoğunlukla ikisinin karışımını kullanır—yazılıma tek bir adres alanı hissi verirken donanım içi önbelleklerde ayrım yaparlar.
“Von Neumann darboğazı”, CPU ile bellek arasındaki paylaşılan bağlantının sınırlı olması nedeniyle oluşan performans kısıtını tanımlar. Yaygın hafifletme yolları önbellekler, önceden getirme ve paralellik (birden çok çekirdek gibi) kullanmaktır; bunlar beklemeyi azaltır ama temel sınırlamayı ortadan kaldırmaz.
Programlar belleğe yüklenmiş bilgi olduğundan, davranışı değiştirmek için donanımı değiştirmeye gerek yoktur. Bu yüzden telefonunuz veya dizüstünüz farklı uygulamalar çalıştırabilir; firmware/OS güncellemeleri donanımı yeniden tasarlamadan yeni özellikler ekleyebilir.
Talimatlar verinin bir biçimi olduğundan, saldırganlar bazen güvenilmeyen veriyi çalıştırılabilir koda dönüştürmeye çalışır (ör. kod enjeksiyonu). Modern savunmalar arasında bellek koruması (çalıştırılamaz bölgeler), kod imzalama ve diğer kontroller bulunur.