3 puan yazan GN⁺ 2024-12-28 | 1 yorum | WhatsApp'ta paylaş

Sanal makine nedir?

  • Sanal makine (VM), bilgisayar gibi çalışan bir programdır. CPU’yu ve bazı donanım bileşenlerini simüle ederek aritmetik işlemler gerçekleştirebilir, belleğe okuma ve yazma yapabilir ve G/Ç aygıtlarıyla etkileşime girebilir.
  • VM, belirli bir bilgisayarın davranışını yeniden üretmek veya yazılım geliştirmeyi kolaylaştırmak için oluşturulur.
  • Java Virtual Machine (JVM) başarılı bir örnektir; Java, Kotlin ve Clojure programlarının farklı cihazlarda çalışmasını sağlar.

LC-3 mimarisi

  • LC-3, modern CPU’larda kullanılan temel kavramları gösteren eğitim amaçlı bir bilgisayar mimarisidir.
  • LC-3, 65.536 bellek konumuna sahiptir ve her konum 16 bitlik bir değer depolar.
  • 10 kayıt vardır; bunların 8’i genel amaçlı kayıt, 1’i program sayacı (PC) ve 1’i koşul bayrakları kaydıdır (COND).

Komut kümesi

  • Komutlar, CPU’ya gerçekleştirmesi gereken temel işleri söyleyen talimatlardır.
  • LC-3’te 16 opkod vardır ve her komut 16 bit uzunluğundadır.
  • Komutlar, opkod ile işlem için gereken parametrelerden oluşur.

Koşul bayrakları

  • R_COND kaydı, en son hesaplamanın işaretini gösteren koşul bayraklarını saklar.
  • LC-3, hesaplama sonucunun işaretini göstermek için 3 koşul bayrağı kullanır.

Program yürütme

  • Program, komutları bellekten yükler, PC kaydını artırır, opkodu kontrol eder ve komutu yürütür.
  • Komutlar, PC’yi değiştirerek yürütme akışını kontrol edebilir.

Komutların uygulanması

  • ADD komutu iki sayıyı toplar ve sonucu bir kayda yazar.
  • LDI komutu bellekten bir değer yükler ve bunu bir kayda yazar.
  • Her komut, teknik özelliklere göre uygulanır ve bayrakları güncellemelidir.

Trap rutinleri

  • LC-3, klavye girdisi ve metin çıktısı gibi yaygın işlemleri gerçekleştirmek için trap rutinleri sağlar.
  • Her trap rutini bir trap koduyla tanımlanır ve TRAP komutuyla çalıştırılır.
  • Trap rutinleri C ile yazılır; işletim sisteminin G/Ç rutinlerinden yararlanarak VM’in performansını artırır.

1 yorum

 
GN⁺ 2024-12-28
Hacker News görüşleri
  • Bir kullanıcı, community college'da bilgisayar bilimine giriş dersi alırken basit bir CPU komut seti tasarlayıp, bir VM ve assembler yazarak assembly programlarını çalıştırma deneyimi yaşadığını söyledi. Bu sürecin bilgisayarlar hakkında pek çok şeyi anlamasını sağladığını belirtti

    • FPGA için gerçek bir CPU tasarlamaktan basit bir OS ve programlar yazmaya kadar, hesaplamanın tüm aşamalarının bu şekilde öğrenilebileceğini düşündüğünü ifade etti
    • Modern bilişimin performans ve güvenlik gereksinimleri yoksa, bu tür bir sürecin şaşırtıcı derecede basit olduğunu söyledi
  • Ben Eater'ın breadboard CPU serisini izledikten sonra kendi CPU'sunu tasarlayıp emüle etmek istediğini söyleyen bir görüş vardı

    • Buna zaman ayırıp tasarlamak istediğini dile getirdi
  • Önerilen kitap listesi:

    • "Virtual Machines: Versatile Platforms for Systems and Processes" by Smith and Nair - kapsamlı bir konu genel bakış kitabı gibi görünüyor
    • "Virtual Machines" by Iain Craig - dil ve VM üzerine pratik bir çalışma kitabı gibi görünüyor
    • "Virtual Machine Design and Implementation in C/C++" by Bill Blunden - uygulamalı bir gerçekleştirme kitabı gibi görünüyor
    • Bu kitapları okuyan birinin görüş eklemesinin faydalı olacağı belirtildi
  • Brookshear Machine ve Little Computer gibi eğitim amaçlı mimarilerin gerçek sistemlerden farklı olduğu ve öğrencilere çarpıtılmış bir anlayış verebileceği yönünde bir görüş vardı

    • Bilgisayarların nasıl çalıştığını öğrenmek isteyenlerin bir işletim sistemi dersi almasının daha iyi olacağı önerildi
    • Kısa bir öğretici isteyenler için "Writing my own bootloader" tavsiye edildi
    • Bunun, "Write your own VM" öğreticisinin kötü olduğu anlamına gelmediği; sadece başka konuların daha faydalı olabileceği ifade edildi
  • "Virtual Machine" teriminin günümüzde genellikle donanım sanallaştırma özelliklerini kullanan ortamları ifade etmek için kullanıldığı yönünde bir görüş vardı

    • Emülatör ile VM arasındaki fark açıklanırken, geçmişte terimde bir belirsizlik olsa da bugün bunun daha net hale geldiği belirtildi