Genel Bakış
Konu: Bir Ağ Görünür Makinesi (Network Visible Machine) soyutlama katmanı için öneri.
Kavram: Tüm ağ host'larının taklit edebileceği soyut bir makine oluşturarak, ağ genelinde şeffaf program yürütmeyi mümkün kılma.
Vizyon: Kullanıcılar herhangi bir ağ host'una program gönderebilir ve programlar alttaki donanımdan bağımsız olarak özdeş şekilde çalışır.
İçindekiler
- Giriş
- Problem
- Ağ Görünür Makinesi Kavramı
- Mimari
- Makine İşlemleri
- Host Sorumlulukları
- Faydalar
- Uygulama Yaklaşımı
- Önem
Giriş
Arka Plan
Erken ARPANET host'ları çeşitliydi:
| Host | Donanım | Mimari |
|---|---|---|
| UCLA | IBM System/360 | 32-bit, big-endian, EBCDIC |
| SRI | PDP-10 | 36-bit, benzersiz komut seti |
| UCSB | IBM System/360 | 32-bit, big-endian, EBCDIC |
| Utah | PDP-10 | 36-bit, benzersiz komut seti |
| BBN | Özel IMP donanımı | 24-bit kelime boyutu |
Zorluk
Problem: Bir host için yazılmış bir program başka bir host'ta çalışamaz.
İstenilen Durum: Herhangi bir ARPANET host'unda çalışabilecek tek bir program.
Problem
Donanım Uyumsuzlukları
Kelime Boyutu Farklılıkları
IBM System/360: 32-bit kelime
PDP-10: 36-bit kelime (4 işaret biti dahil)
IMP: 24-bit kelime
Etki: Bir boyut için tasarlanmış veri yapıları diğerine uymaz.
Komut Seti Farklılıkları
IBM 360: Karmaşık komut seti (~150 komut)
PDP-10: Farklı komut seti (~200+ komut)
Her biri farklı mimariler için özelleştirilmiş
Etki: Makine kodu taşınabilir değil; her sistem için yeniden derleme gerekir.
Veri Temsili
Tamsayılar: Big-endian vs. little-endian
Floatlar: Farklı boyutlar ve hassasiyetler
Karakterler: ASCII vs. EBCDIC
Dizeler: Uzunluk önekli vs. null-sonlandırılmış
Etki: Host'lar arasında veri formatı dönüşümü gerekir.
Mevcut Çözümler (Hepsi Yetersiz)
Çözüm 1: Kaynak Kod İletimi
Kaynak kodu ağ üzerinden gönder
Her host yerel makine için yeniden derler
Problemler:
- Derleyiciler farklı; davranış değişir
- Kaynak her zaman mevcut değil
- Yeniden derleme zaman ek yükü
Çözüm 2: Adaptör Programları
Her platform için manuel olarak adaptör yaz
Problemler:
- Emek yoğun
- Hataya açık
- Sürdürmesi zor
Çözüm 3: Kod Paylaşımı Yok
Programların host'a özgü olduğunu kabul et
Problemler:
- Ağ bilişim faydası yok
- Her sitede tekrarlanan çaba
- Bilgi yerel olarak hapsedilmiş
Ağ Görünür Makinesi Kavramı
Temel Fikir
Aşağıdakilere sahip bir soyut makine tanımla:
- Standart kelime boyutu (örn. 32-bit)
- Standart komut seti
- Standart veri temsilleri
- Standart bellek modeli
Her host, bu standart makineyi taklit eden bir "sanal makine" uygulaması sağlar.
Makine Modeli
┌─────────────────────────────────────┐
│ Ağ Görünür Makinesi (NVM) │
│ - Standart 32-bit kelime boyutu │
│ - 100+ standartlaştırılmış komut │
│ - ASCII karakter kodlaması │
│ - Big-endian veri temsili │
└─────────────────────────────────────┘
│
┌─────────┼─────────┐
│ │ │
▼ ▼ ▼
┌───────┐ ┌────────┐ ┌────────┐
│IBM 360│ │PDP-10 │ │ Diğer │
│NVM │ │NVM │ │NVM │
│Motoru │ │Motoru │ │Motoru │
└───────┘ └────────┘ └────────┘
Soyutlama Seviyeleri
Seviye 1: Sanal İşlemci
- Standart komut seti
- Standart kayıtlar
- Standart bellek erişim desenleri
Seviye 2: Veri Temsili
- Standart tamsayı boyutları
- Standart kayan nokta formatı
- Standart karakter kodlaması
Seviye 3: G/Ç Soyutlaması
- Sanal dosya sistemi arayüzü
- Sanal ağ arayüzü
- Sanal cihaz işlemleri
Mimari
Önerilen Makine Özellikleri
İşlemci Mimarisi
| Yön | Spesifikasyon |
|---|---|
| Kelime Boyutu | 32-bit |
| Adreslenebilir Birimler | 8-bit baytlar |
| Bellek | 16MB (adreslenebilir alan) |
| Kayıtlar | 8 genel amaçlı |
| Program Sayacı | 32-bit |
| Durum Kaydı | Koşul bayrakları |
Komut Formatı
|||
Komut Türleri:
| Tür | Sayı | Örnekler |
|---|---|---|
| Aritmetik | 12 | ADD, SUB, MUL, DIV |
| Mantık | 8 | AND, OR, XOR, NOT |
| Bellek | 6 | LOAD, STORE, MOVE |
| Kontrol | 8 | JUMP, CALL, RETURN |
| G/Ç | 10 | READ, WRITE, OPEN, CLOSE |
| Özel | 6 | HALT, NOP, SYNC |
Bellek Modeli
Adres Aralığı Amaç
000000-003FFF Ayrılmış/İS
004000-FFFFFF Kullanıcı programı ve verisi
Makine İşlemleri
Temel İşlemler
Aritmetik İşlemler
ADD reg1, reg2 // reg1 ve reg2'yi topla
SUB reg1, reg2 // reg1'den reg2'yi çıkar
MUL reg1, reg2 // Çarp
DIV reg1, reg2 // Böl
MOD reg1, reg2 // Modülo
Bellek İşlemleri
LOAD reg, address // Bellekten yükle
STORE reg, address // Belleğe kaydet
MOVE src, dest // Bellek bloğunu kopyala
Kontrol Akışı
JUMP address // Koşulsuz atlama
JUMPE address // Eşitse atla
JUMPL address // Küçükse atla
CALL address // Alt rutini çağır (dönüşü yığına koy)
RETURN // Alt rutinden dön
G/Ç İşlemleri
READ filehandle // Dosyadan/cihazdan oku
WRITE filehandle // Dosyaya/cihaza yaz
OPEN filename // Dosya aç
CLOSE filehandle // Dosyayı kapat
Host Sorumlulukları
Her Host'un Sağlaması Gerekenler
1. NVM Yorumlayıcı/Derleyici
Her host şunlardan birini uygulamalıdır:
Seçenek A: Yorumlayıcı
- NVM komutlarını birer birer yürüt
- Anında host komut setine çevir
- Daha yavaş ama uygulaması daha kolay
Seçenek B: Derleyici
- NVM bayt kodunu host makine koduna derle
- Yerel kodu yürüt
- Daha hızlı, daha karmaşık uygulama
Seçenek C: JIT (Tam Zamanında)
- Sık kullanılan kod bölümlerini derle
- Daha az kullanılan kodu yorumla
- Dengeli yaklaşım
2. G/Ç Soyutlama Katmanı
Sanal G/Ç arayüzü sağla:
host'a özgü dosya sistemi ←→ NVM standart G/Ç
host'a özgü cihazlar ←→ NVM sanal cihazlar
host'a özgü ağ ←→ NVM ağ arayüzü
3. Veri Türü Eşlemesi
Arasında dönüştürme:
NVM 32-bit tamsayı ←→ IBM 360 32-bit tamsayı
NVM kayan nokta ←→ Host kayan nokta (muhtemelen farklı hassasiyet)
NVM dizeler ←→ Host dizeler (muhtemelen farklı kodlama)
4. Hata İşleme
Tutarlı hata kodları ve istisna işleme sağla:
NVM standart hata → Host yorumlama
Host istisnası → NVM standart hata
Faydalar
Ağ Kullanıcıları İçin
- Bir Kez Yaz, Her Yerde Çalıştır
- Programı NVM için derle
- Herhangi bir ağ host'unda yürüt
- Yeniden derleme gerekmez
- Standartlaştırılmış Davranış
- Tüm host'larda özdeş sonuçlar
- Mimari farklılıklarından kaynaklanan sürprizler yok
- Öngörülebilir performans
- Basitleştirilmiş Geliştirme
- Tercih edilen host'ta geliştir
- Başka herhangi bir host'a kopyala
- Tam kaynak paylaşımı
Ağ İşlemleri İçin
- Yük Dengeleme
- İşi en az yüklü host'a gönder
- İşler her yerde özdeş şekilde yürütülür
- Ağ kaynak kullanımını optimize et
- Hata Toleransı
- Bir host başarısız olursa, işi başka bir host'ta yeniden başlat
- Kod yeniden derlemesi yok
- Değişiklik olmadan devam et
- Kaynak Paylaşımı
- İşlem yoğun iş en güçlü host'u kullanabilir
- Özel araçlar her yerde kullanılabilir
- Hesaplama silolarını yık
Sistem Yöneticileri İçin
- Tek Tip Ortam
- Ağ genelinde aynı NVM uygulaması
- Daha basit kullanıcı desteği
- Azaltılmış eğitim yükü
- Basitleştirilmiş Sorun Giderme
- Her yerde aynı komut seti
- Hataları teşhis etmek daha kolay
- Yürütmeyi özdeş şekilde izle
Uygulama Yaklaşımı
Faz 1: Tasarım (Şimdi - Eylül)
- NVM spesifikasyonunu kesinleştir
- Tam komut setini tanımla
- G/Ç arayüzünü belirt
- Hata işlemeyi tanımla
- RFC olarak yayınla
Faz 2: Kavram Kanıtı (1969 4. Çeyrek)
- UCLA, IBM 360'ta NVM yorumlayıcısını uygular
- SRI, PDP-10'da NVM yorumlayıcısını uygular
- Ağlar arası program yürütmesini test et
- Performansı ölç
Faz 3: Optimizasyon (1970 1. Çeyrek)
- Her host için yerel derleyiciler geliştir
- JIT derleme tekniklerini uygula
- G/Ç soyutlama katmanını optimize et
- Performans ayarlaması
Faz 4: Entegrasyon (1970 2. Çeyrek)
- Tüm ARPANET host'ları NVM'yi uygular
- Nihai komut setinde standartlaş
- Ağ genelinde dağıt
- Uygulama kütüphanesi geliştir
Zorluklar ve Açık Sorular
Teknik Zorluklar
- Performans Ek Yükü
- NVM yorumlama 2-10x yavaşlama ekler
- Derleme yardımcı olur ama gecikme ekler
- Uyumluluk ve hız arasında denge
- Kayan Nokta Hassasiyeti
- Farklı host'lar farklı hassasiyete sahip
- Standartlaştırma gerekli (muhtemelen hassasiyeti azaltma)
- Taşınabilirlik sürprizleri çıkarabilir
- G/Ç Semantiği
- Farklı host'lar farklı dosya sistemlerine sahip
- Sanal G/Ç'yi host sistemlerine eşlemek zor
- Uç durumlar ve uyumluluk sorunları
Topluluk İçin Sorular
- NVM yorumlayıcı mı yoksa derleyici yaklaşımını mı izlemeli?
- Ne kadar performans kaybı kabul edilebilir?
- Belirli kayan nokta hassasiyetinde standartlaşmalı mıyız?
- G/Ç'de host'a özgü özellikler nasıl ele alınmalı?
Önem
RFC 11 devrimci bir kavram önermektedir: şeffaf program dağıtımını mümkün kılan ağ genelinde soyut bir makine.
Tarihsel Önem
Öneri modern teknolojileri öngördü:
- Sanal Makineler: VMware, VirtualBox, KVM
- Bayt Kod Yorumlama: Java Virtual Machine (JVM), Python
- Tam Zamanında Derleme: V8 (JavaScript), Java HotSpot
- Konteyner Orkestrasyon: Kubernetes özdeş konteynerleri dağıtma
- Bulut Bilişim: "Kodunuzu her yerde çalıştırın" modeli
Mimari İlkeler
RFC 11 temel içgörüyü oluşturdu: soyutlama katmanı dağıtımı mümkün kılar
Modern paralel:
NVM (1969) → Java (1995) → Konteynerler (2013) → Kubernetes (2014)
Hepsi şeffaf dağıtımı mümkün kılan soyutlama katmanı sağlar
Neden Önemli
RFC 11'de önerilen kavram — şeffaf platformlar arası yürütmeyi mümkün kılan standart soyut makine — modern bilişim altyapısının temelini oluşturdu.
Sonuç
RFC 11'in spesifik Sanal Makine önerisi ARPANET'te hiçbir zaman resmi olarak standartlaştırılmamış olsa da, ağ bilişimi hakkında vizyoner düşünceyi belgeler.
Öneri, gerçek ağ bilişiminin iletişim protokollerinden fazlasını gerektirdiğini; paylaşılan hesaplama soyutlamalarını gerektirdiğini kabul etti.
Bu içgörü onlarca yıl sonra Java'da, sonra konteynerlerde, sonra sunucusuz bilişimde yeniden ortaya çıktı — her seferinde RFC 11'in 1969'da ifade ettiği aynı temel ilkeyi yeniden keşfetti.
Stanford Research Institute
Network Working Group
Ağustos 1969