Bilgisayar Bir Programı Nasıl Çalıştırır?
Kaynak koddan çalışan sürece kadar derleyici, işletim sistemi, CPU ve belleğin görevlerini temel bir örnek üzerinden öğrenin.
Bir dosyaya console.log("Merhaba") yazıp çalıştırdığınızda ekranda neden bir metin görünür? Tek satırın arkasında kaynak kod, çalışma zamanı, işletim sistemi, bellek ve işlemci birlikte çalışır. Bu yazının çözdüğü problem, bu görünmez zinciri anlaşılır hâle getirmektir.
Temel kavramlar
- Kaynak kod: İnsanların okuyabildiği program metnidir.
- Derleyici: Kaynak kodu başka bir dile, çoğunlukla makine koduna çevirir.
- Yorumlayıcı: Talimatları çalışma sırasında okuyup yürütür. Modern ortamlar yorumlama ve derlemeyi birlikte kullanabilir.
- İşletim sistemi: Programlara işlemci zamanı, bellek, dosya ve ağ erişimi sağlar.
- Process: Çalışmakta olan program örneğidir.
- CPU: Makine talimatlarını getirir, çözer ve uygular.
- RAM: Çalışan programın kodunu ve verisini geçici olarak tutar.
Adım adım ne olur?
Terminalde node app.js çalıştırıldığında kabuk, işletim sisteminden Node.js programını başlatmasını ister. İşletim sistemi diskteki yürütülebilir dosyayı belleğe yükler ve bir process oluşturur. Node.js, JavaScript dosyasını okur; sözdizimini ayrıştırır ve yürütülebilecek talimatlara dönüştürür. console.log çalışma zamanının sunduğu bir fonksiyondur. Metni standart çıktı akışına yazar; terminal de bu akışı ekranda gösterir.
CPU kabaca üç aşamayı tekrarlar: fetch talimatı bellekten getirir, decode ne yapılacağını belirler, execute işlemi uygular. Pipeline, bir talimat yürütülürken sonraki talimatın çözülmeye başlanmasıdır; bir çamaşırhattaki farklı aşamaların aynı anda çalışmasına benzer. Cache, sık gereken verinin işlemciye yakın küçük ve hızlı bir kopyasıdır. Gerçek işlemciler bu tekniklerle birden fazla talimat aşamasını örtüştürür; fakat temel model değişmez.
Derleme mi yorumlama mı?
C ve Rust gibi diller çoğunlukla çalıştırmadan önce makine koduna derlenir. Java, işlemciden bağımsız bir ara talimat biçimi olan bytecode üretir; bunu JVM, yani Java Virtual Machine çalıştırır. JavaScript motorları sık çalışan “sıcak” kodu JIT (Just in Time compiler) ile program çalışırken makine koduna çevirebilir. Önceden derleme hızlı başlangıç ve güçlü optimizasyon sunabilir; yorumlama ise hızlı geliştirme ve taşınabilirlik sağlar. Bunlar kesin karşıtlar değil, farklı aşamalarda birlikte kullanılabilen stratejilerdir.
Yaygın yanılgı
“Program CPU’da durur” demek eksiktir. Program dosyası disktedir, çalışan kod ve veri RAM’dedir, CPU ise o anda gereken talimatları işler. CPU cache’leri sık kullanılan küçük veri parçalarını işlemciye daha yakın tutar.
Kendin dene
Uzun süren bir program başlatıp işletim sisteminin görev yöneticisinde process’i gözlemleyin. CPU ve bellek kullanımının farklı şeyler olduğunu fark edin. Sonra programı kapatın: dosya diskte kalırken process ve ona ayrılan geçici bellek sona erer.