Önce sorun: Bir bilgisayar, bir sıra
1960’ların başında bilgisayar bir odayı dolduran, milyonlarca dolarlık tek bir makineydi. Programını delikli kartlara yazar, operatöre verirdin. O da kartları sırayla makineye yükler, sen sonucu çoğu zaman ertesi gün alırdın. Buna toplu iş (batch) deniyor. Tek bir yazım hatası, bir günün gitmesi demekti.
Zaman paylaşımı (time-sharing) bu sırayı ortadan kaldırdı. Makineye birçok terminal bağlanıyor. İşletim sistemi işlemciyi her kullanıcıya sırayla çok kısa bir süre veriyor ve bunu öyle hızlı yapıyor ki herkes makine sadece kendisininmiş gibi hissediyor. Bugün bilgisayarında yüzlerce sürecin aynı anda çalışması da aynı fikre dayanıyor. Bu işi yapan parçaya zamanlayıcı (scheduler) deniyor, işletim sistemi kavramları yazımızda anlattık.
Uyumlu olana karşı “uyumsuz”
MIT’nin ilk zaman paylaşımlı sistemi CTSS’ti: Compatible Time-Sharing System. Videoya göre adındaki “uyumlu”, IBM’in toplu iş yazılımlarıyla uyumlu olmasından geliyordu. Ardından daha büyük ve ciddi bir proje, Multics başladı.
Yapay zekâ laboratuvarındaki ekip ise videoya göre CTSS’i yavaş ve hantal buldu. Ekibin çoğu, Multics’in sıkı güvenliğe ağırlık veren yönünü de benimsemiyordu. Kendi makinelerini aldılar: DEC’in PDP-6’sı. Bu makineden dünyada sadece 23 tane satıldı. Bir süre tek kullanıcılı çalıştılar, sonra kendi zaman paylaşımlı sistemlerini yazdılar. Hedef hafif, hızlı ve etkileşimli bir sistemdi. Adı da CTSS’e bir şakaydı: ITS, Incompatible Timesharing System. İlk sürüm 1967’de çıktı, sonra sistem PDP-10’a taşındı.
Kültür de farklıydı. Başta şifre yoktu, herkes herkesin dosyasını, kaynak kodu dahil, okuyup değiştirebiliyordu. Bu açıklık bugünkü açık yazılım kültürünün kökleri arasında sayılıyor.
O sistemde neler doğdu?
PDP-10/its deposunun README’sine göre Emacs, Zork, Macsyma, Maclisp, Scheme ve çok oyunculu Maze War’ın ilk sürümleri ITS üzerinde çalıştı. Emacs başta TECO adlı editör için yazılmış bir makro koleksiyonuydu. Stallman’ın anlattığına göre komut setini Guy Steele tasarladı, ikisi birlikte başladı, Stallman bitirdi. Terry Winograd’ın İngilizce komutları anlayıp sanal bir blok dünyasında uygulayan SHRDLU programı da burada geliştirildi.
Lisp ile makine arasında da özel bir bağ var. PDP-6’nın 36 bitlik kelimesi tam iki adres taşıyabiliyordu. Lisp’in temel yapı taşı olan cons hücresi de iki işaretçiden oluşuyor, yani tek bir bellek kelimesine sığıyor. Videoya göre Lisp’teki car ve cdr adları da bir önceki makine IBM 704’teki kelime alanlarından kalma. Videoda, MIT’de yazılan ELIZA’nın ITS için yeniden yazılmış DOCTOR sürümü de çalışıyor. ELIZA’nın orijinal kodunun nasıl bulunduğunu ELIZA yazımızda anlattık.
Kapandı ama kaybolmadı
MIT’deki ITS 1990’da kapandı. Videoya göre dosyalar bir süre FTP’de durdu ve biri hepsini kopyaladı. PDP-10 emülatörleri çıktıkça meraklılar bu dosyaları yeniden çalıştırmaya başladı. Lars Brinkhoff önce kurulumu otomatikleştiren bir betik yazdı. Bu betik büyüdü ve bugün bütün sistemi kaynak kodundan derleyen PDP-10/its projesine dönüştü. README’ye göre derleme SIMH ve KLH10 emülatörlerinde çalışıyor. Richard Cornwell’in yazdığı KA10 simülatörü, MIT’nin kullandığı işlemcinin birebir taklidi. Ekip bunun üstüne laboratuvarın kendine özgü donanımını da ekledi.
Masana sığan bir PDP-10
Oscar Vermeulen’in Obsolescence Guaranteed projesi, bu yazılıma bir gövde verdi. PiDP-10, DEC’in 1968 tarihli KA10 modelinin yarım metreyi aşan bir kopyası. Ön panelinde 124 lamba ve 74 anahtar var, arkasında ise bir Raspberry Pi çalışıyor. Sitesine göre kit 370 dolar, Raspberry Pi ayrıca alınıyor (Pi 5 öneriliyor). Panel şart değil: Yazılım düz bir Raspberry Pi’de ya da x86 Linux’ta da çalışıyor ve varsayılan olarak MIT bantlarından kurtarılmış 400 projeyle ITS’i açıyor.
Videoya göre Angelo Papenhoff da artık hiç örneği kalmamış PDP-6’nın emülatörünü şemalarından yazdı. Bir bant görüntüsünde bulunan 1966 tarihli Lisp’in kaynak kodunu da yeniden oluşturdu. Ekip şimdi ITS makinelerini ARPANET yönlendiricileriyle (IMP) birbirine bağlayıp eski ağı da canlandırmaya çalışıyor.
Düşün
- Bugün kullandığın hangi araç, 50 yıl sonra çalıştırılabilecek kadar iyi saklanıyor? Kaynak kodu olmasa ne olurdu?
- Şifresiz, herkesin her dosyayı değiştirebildiği bir sistem bugün neden mümkün olmazdı? Bu açıklığın kaybettirdikleri neler?
Videoyu izle
Kaynaklar (13, İngilizce)
- Computerphile: ITS, Eliza & MiT's AI Lab (video) (yeni sekmede açılır)
- Computerphile: PiDP6 & Lisp (video) (yeni sekmede açılır)
- Computerphile: PiDP10 (video) (yeni sekmede açılır)
- Computerphile: Recreating ITS (video) (yeni sekmede açılır)
- PDP-10/its: Incompatible Timesharing System (GitHub, README) (yeni sekmede açılır)
- Obsolescence Guaranteed: The ITS Reconstruction Project (yeni sekmede açılır)
- Obsolescence Guaranteed: PiDP-10 (yeni sekmede açılır)
- Obsolescence Guaranteed: Get a PiDP-10 (yeni sekmede açılır)
- obsolescence/pidp10 (GitHub, README) (yeni sekmede açılır)
- rcornwell/sims: PDP-6 and PDP-10 simulators for SimH (GitHub) (yeni sekmede açılır)
- Richard Stallman: My Lisp Experiences and the Development of GNU Emacs (yeni sekmede açılır)
- Wikipedia: Incompatible Timesharing System (yeni sekmede açılır)
- Wikipedia: PDP-6 (yeni sekmede açılır)
Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.