Dave Cutler’ın Ağzından Kendisinin ve Windows NT’nin Hikayesi

 

(Helen Custer’ın Inside Windows NT adlı kitabı için Dave Cutler’ın yazdığı önsözün Murat Yıldırımoğlu tarafından yapılmış çevirisi)

 

1965 yılında üniversiteden birazcık fizik bilgisi, matematik bölümü diploması ve mühendis olup bir şeyler yapmak için taşıdığım büyük arzu ile mezun oldum. Bu yüzden Wilmington’da bulunan DuPont’da materyal testi yapan bir mühendis olarak işe başladım.

 

Korkunç derecede sıkıntılı olan bir yıllık bir süre sonunda matematik-istatistik grubuna gönderildim. Benden Scott Paper şirketinin geliştirmekte olduğu yeni bir köpük üretim işleminin bilgisayarda benzetimini yapmam istendi. Yapmalarını istediğim şeyleri hiç bir zaman yapmayan makinelerle çalışmak çok aşağılayıcıydı ama altı ay içinde bilgisayarların çekiciliğine kapıldım ve sonra, okuldayken hep uzak durduğum bilgisayarlar hayatımın işi oluverdiler.

 

Bu işten hemen sonra, zamanımın tümünü programlamaya ayırabileceğim DuPont’un mühendislik bölümüne transfer oldum. DuPont’un online bilgisayar uygulamaları geliştiren küçük bir grubu vardı. Bu gruba dahil olmak istememdeki asıl neden ise bilgisayarlara yakın olmaktı; daha doğrusu bir işletim sistemi yaratma işinde çalışmak istiyordum. Bu grup  içindeyken birçok bağımsız gerçel zaman sistemleri ile çalışma şansını elde ettim. Üstünde çalışmakta olduğumuz projeler uygulama kodunun yazımının yanı sıra çeşitli görevlerin planlanması ve sistem etkinliğinin kontrolünü sağlayan merkezi kontrol programının yazımını da içeriyordu.

 

Kısa sürede, bir işletim sistemi oluşturma işinde çalışmak istiyorsam, bilgisayar üreticisi bir şirkette çalışmam gerektiğini anladım. Bu yüzden 1971 yılında DuPont’tan ayrılıp Digital Equipment’a geçtim. Bu iş değişikliği beni işletim sistemleri piyasasına soktu. Daha sonraki yıllar boyunca birçok işletim sistemi geliştireceğimi o zamanlar tahmin edemezdim tabii; normalde bir kişi bir işletim sistemi geliştirme fırsatını kırk yılda bir yakalar.

 

İlk işletim sistemi projem RSX-11M adını taşıyan ve Digital’ın 16 bitlik PDP-11 serisi mini bilgisayarlarında çalışacak gerçel zamanlı bir işletim sistemi geliştirme işi idi.

 

O zamanlar için amaçlarımız çok cüretli görünüyordu. Bizden 32KB’lık bir bellek içinde çalışacak, hiyerarşik bir dosya sistemine sahip olacak, uygulamaları bellek ve ikincil depolama alanları arasında götürüp getirebilecek, gerçel zamanda iş planlaması yapabilen ve birkaç takım da geliştirme programları içeren, çok görevli (multitasking) bir işletim sistemi yaratmamız istenmişti.

 

İşletim sistemi ve yardımcı programların hepsi, PDP-11 platformlarının her çeşidinde (çok küçük sistemlerden 4 MB’lık belleği destekleyebilen ve bellek ataması işlemini donanımda becerebilen PDP-11/70’e kadar tüm bir  dizide) çalışacaktı.

 

RSX-11M’nin geliştiriliş zamanından gelen oldukça eğlenceli anılarım var. Üzerinde “Büyüklük Hedeftir” yazan bir damgam vardı ve programcılar ile ürün yöneticilerinin hedefimize ulaşmanın ne kadar önemli olduğunu anlamaları için projenin en küçük belgesini bile bu damga ile damgalıyordum. Bu iş sırasında koşullu derlemenin gücünü de öğrendik (işletim sistemlerinde yüksek düzeyli diller kullanma alışkanlığı henüz gelişmemişti).

 

RSX-11M’nin geliştirilmesi sırasında zamanımızın çoğunu bellek sorunlarını çözmeye ayırdık. Bütün sistem 32KB içinde çalışmak zorunda olduğu için eldeki belleği işletim sistemi ile diğer programlara eşit olarak bölüştüren bir bellek bütçesi hazırladık. Diğer  programlar için yalnızca 16KB kalıyordu ve bu bellek içinde RSX-11M’nin sistem programlarının kabul edilebilir bir performans ile çalışmasını sağlamak üzere overlay yapılarını ince ince ayarlamak için uzun saatler harcadık.

 

RSX-11M’nin çok katı büyüklük ve performans kısıtlamaları vardı ama daha sonra üzerinde çalıştığım işletim sistemlerine göre en kolayı da buydu. Var olan bir sistemi alıp yeniden yazıyorduk ama var olan uygulamaların çok az bir değişiklik ile yeni sistemde de çalışmasını garantilediğimiz sürece, istediğimiz değişikliği yapmakta özgürdük. Sonuçta, işe başlamamızdan 18 ay sonra, 1973 yılında,  RSX-11M  piyasaya çıktı. Sistem büyük başarı kazandı ve PDP-11’in zamanının en popüler 16 bitlik mini bilgisayarı olmasına yardımcı oldu.

 

PDP-11 bilgisayarı ana bilgisayarlara göre dahi iyi fiyat/performans oranına sahipti. Şirketlerin tümüne olduğu gibi bölümlerine de kurulabiliyordu. Bu sistem çağının  diğer mini bilgisayarlarıyla birlikte bilgisayar endüstrisinin ilk küçültme (downsizing) dalgasını başlattı. Küçültme, ana bilgisayar uygulamalarını daha ucuz olan mini bilgisayarlara uyarlama çabası anlamına geliyordu. Ana bilgisayar programlarının çoğu PDP-11’lerin rahatça çalıştırabileceğinden  çok daha fazla büyüktü ve Digital yeterince belleğe sahip olmamanın sıkıntıları ile kısa zamanda tanıştı.

 

Bu bellek sıkıntısından VAX serisi bilgisayarlar doğdu. Bu seri, 70’lerin sonundan başlayıp 80’lerin ortalarına kadar en popüler bilgisayar serisi oldu. VAX’ın yapısı 32 bitlik sanal adres alanı sağlıyordu ve bu da programların sürekli azalan bir bellek için mücadele etmelerini gereksiz kılıyordu.

 

Bir işletim sistemi geliştirmek için ikinci fırsatımı VAX ile yakaladım. VAX-11 mimarisinin işletim sistemini oluşturmak için kurulan grubun başına getirildim. Bu işin sonunda VMS işletim sistemi doğdu.

 

VMS işletim sistemi özel olarak VAX mimarisi için üretilmişti ve Digital’ın ikinci genel amaçlı zaman paylaşımlı sistemiydi. VAX mimarisi, PDP-11’lerin büyük başarısının ardından geldiği için var olan uygulamalar ile kaynak kodu düzeyinde bir uyumluluktan daha ileri bir uyumluluk gerekiyordu. Bu yüzden VAX-11 mimarisi, PDP-11 komutlarının donanım tarafından doğrudan çalıştırıldığı bir PDP-11 uyumluluk modu içeriyordu. O zamanlar bir işletim sisteminin birden fazla uyumluluk ortamını desteklemesi anlaşılır bir şey değildi. PDP-11 bilgisayarlarında kullanılan işletim sistemlerinin en tanınanı olmamasına karşın (şaşırtıcı gelecek ama PDP-11’in üzerinde çalışan ondan fazla işletim sistemi vardı) VAX üzerindeki PDP-11 uyumluluk modunda kullanılacak sistem olarak RSX-11M sistemi seçildi.

 

RSX-11M’nin seçilmesinin nedeni  uygulama geliştirme araçlarının ve genel amaçlı işletim sistemlerinin taşıması gereken özelliklerin çoğunu içermesi, çok görevliliği desteklemesi ve geliştirilebilecek  bir dosya sistemine sahip olması idi. 

 

Sonuç olarak VAX-11 sistemi, herhangi bir  RSX-11M programını hiçbir değişikliğe gerek kalmadan çalıştırabiliyor, RSX-11M disklerine ve dosyalarına doğrudan erişebiliyor ve bu dosyaların VMS programları ile RSX-11M programları tarafından kullanılabilmesine olanak tanıyordu.

 

Olaya teknik açıdan bakarsak VMS’i yazarken yaptığımız en büyük hata yüksek düzeyli bir dil kullanmamamızdı. O zamanlar çok yetenekli ve başarılı bir makina dili programcı kadrosu vardı, büyüklük kısıtlamaları bulunuyordu ve işletim sistemi yazmaya yetecek nitelikte bir derleyici de yoktu. Bu yüzden, sistemi pazarlama açısından doğru bir zamanda bitirebilmek amacıyla makina dilini kullandık. Şimdi geçmişe dönüp baktığımızda VMS’i yüksek düzeyli bir dilde yazmaya karar vermenin zor olduğunu görüyoruz (Kıssadan hisse: Teknik olarak yapılması doğru olan şey parasal olarak yapılması gereken şey olmayabilir).

 

80’lerin başında mini bilgisayarlar ana bilgisayarların pazarını kapmaya devam ederken iki önemli teknoloji ortaya çıkıyordu: Kişisel bilgisayarlar (PC) ve iş istasyonları. VMS projesinden sonra birkaç yılımı derleyici geliştirme ile geçirdim ve sonra Digital’ın ilk iş istasyonu olan MicroVAX I’i yaratan grubu yönettim.

 

MicroVAX benzeri iş istasyonları, bilgisayar destekli tasarım (CAD) gibi yüksek performans isteyen uygulamalar için bir ortam sağlamakta iken kişisel bilgisayarlar elektronik tablolama ve kelime işlemciler gibi kişisel verimliliği arttıran iş uygulamalarını desteklemekte idi. İş istasyonları nispeten daha pahalı iken kişisel bilgisayarlar küçük iş yerleri için bile alınabilecek fiyatta olmalıydı.

 

Maliyetleri düşürmek için ilk PC’ler 8 bit ve daha sonra da 16 bitlik mikroişlemcilerin çevresinde biçimlendiler. RSX-11M’i kısıtlayan unsurlar bu bilgisayarlar için de geçerliydi ve bu kısıtları aşmak için programcıların ve işletim sistemi tasarımcılarının epey ter dökmesi gerekti.

 

Donanım kaynakları o kadar kısıtlıydı ki işletim sistemlerinin başlıca görevi, birkaç alçak düzey donanım fonksiyonu ve bir takım dosya sistemi kütüphaneleri oluşturmaktan ileri gitmiyordu. Ama yine de kişisel bilgisayarlar mini bilgisayarların sağlayamadığı bir şeyi sağlıyordu: Bağımsız yazılım geliştiricileri için daha önce görülmemiş büyüklükte  bir pazar. Sonuç olarak, PC’ler üzerinde çalışan programların çeşitliliği ve özellikleri gerçekten şaşırtıcı oldu.

 

80’lerin ortalarında mikroişlemciler 32 bitlik adresleme özelliğini kazandılar ve bu olanaktan ilk yararlanan bilgisayarlar da iş istasyonları oldu. Bununla birlikte kişisel bilgisayarların ve bu bilgisayarlarda çalışan programların sayılarının aşırı fazla olması yüzünden bu yeni işlemcileri  kullanan yeni bir bilgisayar üretip piyasaya sürmek ve programların bu işlemcilere göre yeniden derlenmelerini istemek pek kolay değildi. PC kullanıcıları, var olan programları ile tam uyumluluk istiyorlardı.

 

1988’in yazında Microsoft’un başkanı Bill Gates’ten ilgi çekici bir çağrı aldım. Bill, gelip kişisel bilgisayarlar için yepyeni bir işletim sistemi yaratmak isteyip istemiyeceğimi soruyordu.  O zamanlar kişisel bilgisayarlarda çalışmaya pek hevesli değildim ama bunun Bill ile tanışıp kafasında ne olduğunu öğrenmek için iyi bir fırsat olduğunu düşündüm.

 

Bill’in önerdiği şey değişik bilgisayar sistemlerine taşınabilir, kişisel bilgisayarları çok önemli işlerde kullanmak isteyip de özellikle güvenlik sorunları yüzünden şimdiye kadar kullanamamış kişilerin kaygısını giderecek, yepyeni bir işletim sistemi yaratma fırsatıydı. Benim içinse bir başka işletim sistemi yaratma fırsatı anlamına geliyordu.

 

Bill beni ikna etti. 1988’in Ekim’inde Microsoft’a gelip yeni işletim sistemini yazacak olan kadroyu kurdum. O anda pek kavrayamamıştım ama bu proje, şimdiye kadar içinde bulunduklarımın en cüretlisiydi.

 

Sistemi oluştururken amaçlarımız taşınabilirlik, güvenlik, POSIX uyumluluğu, önceki sistemlerle uyumluluk, ölçeklenebilir performans (birden fazla işlemciyi destekleyebilme), geliştirilebilirlik ve yerelleştirmede kolaylık idi.

 

Bu amaçların içinde en zor olanı ve sistem üzerinde en etkili olanı, önceki sistemlerle uyumluluk idi. Çalışmakta olan PC’lerin sayısı on milyonları buluyordu. Bu da yetmezmiş gibi üç ayrı 16 bitlik işletim sistemi ortamını uyumluluk açısından desteklemek ve 32 bitlik bir ortam sağlamak durumundaydık. Hepsinin üstüne de POSIX denilen UNIX standart arabirim spesifikasyonunu desteklemek de istiyorduk.

 

Şimdi hemen hemen dört yıl sonra, Windows NT’yi pazara sunma aşamasına geldik. Windows NT’nin tasarımına katkıda bulunanların hepsini burada sayıp teşekkür etmek olanaksız. Windows NT’yi tasarlayan kişinin ben olmadığını söylemek zorundayım; ben sistem tasarımına katkıda bulunanlardan birisiyim sadece. Bu sistemin tasarımı bir grup çalışmasıdır ve içinde yüzlerce kişi-yıllık emek vardır.