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.