RAM'in Yapısı
RAM de dahil olmak üzere birçok bilgisayar donanımı transistörlerden oluşturulmuştur. Bir transistör, açık/kapalı değerlerini tutabilir, yani 0-1'i temsil eder, bir biti temsil eder. Transistör, elektronik ortama 0-1 değerlerini geçirmeyi başaran ve bunlar üzerinde işlem yapmayı sağlayan bir icattır ve Nobel Ödülü almıştır.
RAM, kendi içinde bölümlendirilir:
Stack: Oldukça hızlıdır ve bir RAM'in bütününün küçük bir parçasıdır, genellikle 2-6 MB arasındadır. Kodunuzdaki değişkenleri tutmak için kullanılır ve üst üste koyma prensibiyle çalışır.
Yani, bir programı ağaç şeklinde düşünürsek, a(b(c())) fonksiyonunu çalıştırdığınızda, en üstteki stack RAM parçası c'ye aittir, bir altındaki b'ye aittir ve daha bir altındaki a'ya aittir. Bu düzen sayesinde, hangi değişkenin nerede olduğu bilinir ve ulaşım oldukça hızlıdır.
Heap: RAM'in neredeyse tamamını oluşturur ve allocation (ayırma) ve de-allocation (geri alma) işlemleri burada gerçekleştirilir. Stack bölümüne göre daha yavaşdır, çünkü her allocate edilen parçanın kendine özgü bir adresi vardır. Heap'teki her parçaya herhangi bir yerden erişilebilir. Modern programlama dillerinde çoğu değişken heap'te tutulur ve stack başka amaçlar için kullanılır.
BSS/Data Segment: Statik değişkenler için ayrılmış bir alandır. Modern dillerde genellikle kullanılmaz, ancak sanki statik değişkenler varmış gibi davranılabilir. Örneğin;
JavaScript:
var incr = (function() {
var i = 1;
return function() {
return i++;
}
})();
incr(); // 1
incr(); // 2
RAM'in yapı taşları bunlardır. Ayrıca, program kodumuzun asıl bulunduğu text segment vardır. İçerisinde işlemci emirleri bulunur ve bunlara CPU instructions denir.
İlk resim stack RAM'in yapısını, ikinci resim ise bir programın yapısını gösterir.