İşletim Sistemi 101 – #8 (Tarihe Saygı)

Serinin ilk yazısında bahsettiğim gibi “computer” kelimesi, hesaplama yapan insanlar için kullanılıyordu. “Bilgisayarlar eskiden oda büyüklüğündeymiş” der dururuz ya, ondan önce de baya baya ofisleri falan vardı. Masalarında çalışıyorlardı. O derece 🙂

1920’lerden sonra hayatımıza giren “computing machine” kavramı, bir “insan bilgisayar”ın yaptığı işleri yapabilen herhangi bir cihaz için kullanılmaya başlandı. 1940’lı yılların sonu ve 1950’li yılların başında ise, elektronik hesap makinelerinin gelişiyle “computing machine” kavramı, yerini “computer”a bıraktı.^1

Charles Babbage

Charles Babbage (26 Aralık 1791 – 18 Ekim 1871), İngiliz hezârfen. Matematikçi, filozof, mucit, makine mühendisi. Dijital, programlanabilir bilgisayar konseptinin tasarımcısıdır.^2 Ayrıca, 1828 – 1839 yılları arasında Cambridge Üniversitesi’nde Lucasian Matematik Profesörü (The Lucasian Professorship of Mathematics at Cambridge University) unvanını taşımıştır. Bu unvanı taşıyan iki ismi örnekleyerek durumun ciddiyetini belirtmek isterim: Sir Isaac Newton ve Stephen Hawking.^3

Bazı kesimlerce “bilgisayarın babası” kabul edilen Charles Babbage, “Fark Makinesi (Difference Engine)” ve “Analitik Makine (Analytical Engine)” ile günümüz kompleks bilgisayar sistemlerinin elzem fikirlerini ortaya atmıştır.

Fark Makinesi (Difference Engine)

Fark Makinesi, Charles Babbage tarafından tasarlanan ve polinomların hesaplanmasında kullanılan mekanik hesap makinesidir.^4

Londra Bilim Müzesi’nde (London Science Museum), Babbage’ın tasarımı referans alınarak yapılmış, çalışır durumda bir Fark Makinesi bulunmaktadır.

Charles Babbage'ın Fark Makinesi (Londra Bilim Müzesi), https://en.wikipedia.org/wiki/File:Babbage_Difference_Engine.jpg
Charles Babbage’ın Fark Makinesi (Londra Bilim Müzesi), https://en.wikipedia.org/wiki/File:Babbage_Difference_Engine.jpg

Babbage, geliştirilme sürecinde farklı versiyonlarda Fark Makineleri tasarladı. Bunlardan bazılarını tamamlayabildi, bazılarını ise çeşitli sebeplerle tamamlayamadı. Analitik Makine üzerine çalışmaya başladı. Bu süreçte edindiği yeni bilgilerle Fark Makinesi’ne de yeni katkılar sundu. Fark Makinesi – 0, 1819 – 1822 yılları arasında tamamlandı. 1823’te çalışmaları başlayan Fark Makinesi – 1 ise tasarımda kaldı. Çünkü o yıllarda Babbage’ın tasarımını karşılayacak mekanik parçaların (dişli çark gibi) üretilmesi mümkün değildi. Benzer hikayeleri, günümüz bilgisayarların küçülme sürecinde de görüyoruz aslında, öyle değil mi? 1846 – 1849 yılları arasında üzerinde çalıştığı Fark Makinesi – 2, kendinden önce gelen sürümlerden daha efektif çalışacaktı.

Şimdi buraya dikkat edelim. Allan George Bromley (1 Şubat 1947 – 16 Ağustos 2002), 1980’li yıllarda Fark Makinesi – 2’nin tasarımları üzerinde çalışmaya başladı. Yukarıda belirttiğim gibi Babbage, bu makinenin tasarımına 1846’da başlamıştı. 100 yıldan daha uzun süreden sonra tekrar gün yüzüne çıkan Babbage’ın çalışmalarında bazı ufak hatalar tespit edildi. Fakat bu hataların, o günün şartlarında çalışmanın çalınmasını engellemek için kasıtlı yapıldığı ihtimali de göz önünde bulunduruldu. VE! Londra Bilim Müzesi’nde Babbage’ın 100 yıldan eski tasarımı hayata geçirildi. Sonuç? Hem cihaz, hem de “yazıcısı” – evet, Fark Makinesi’nin bir printer’ı da vardı – başarıyla çalıştı. Aşağıda, bu makinenin çalıştırıldığı bir video göreceksiniz.

A demo of Charles Babbage’s Difference Engine

Link: https://www.youtube.com/watch?v=BlbQsKpq3Ak

Analitik Makine (Analytical Engine)

Analitik Makine, Babbage’ın 1837 yılında ortaya attığı bir genel amaçlı bilgisayar tasarımıdır.^5

Analitik Makine’de bir arithmetic logic unit (ALU), conditional statement ve loop’lar için bir flow controller, entegre bir bellek bulunuyordu. Yani sizin anlayacağınız hesap yapabilen, karar verebilen, tekrarlı işleri bir döngü hâlinde çalıştırabilen ve bu döngüyü kontrol edebilen, belleği olan bir cihazdı. Bilgisayardı işte 🙂 Tüm bu özelliklerinden dolayı “Turing-complete” kabul edilen ilk bilgisayar tasarımıdır. Makinenin programlanması için delikli kartlar kullanılıyordu.

Analitik Makine’nin tasarımı (1840)

Ufak bir bilgi daha. Babbage, makinesi için “yazılım”a ihtiyacı olduğunu anladığında “Ada Lovelace’ten” yardım aldı.

Ada Lovelace

“Kadınlar teknik işlerde pek şey değil yia” diyen tipler.. 🙂

Lovelace Kontes’i Augusta Ada King (Doğum adı: Augusta Ada Byron, 10 Aralık 1815 – 27 Kasım 1852); İngiliz matematikçi ve yazar.^6 Charles Babbage’ın Analitik Makine tasarımında çalışabileceğini düşündüğü algoritmalar geliştirmiştir.

1840 yılında Babbage, Analitik Makinesi ile ilgili ders vermesi için bir üniversiteye davet edilir. Babbage’ın çalışmaları, Luigi Menabrea (o zamanların genç mühendisi, geleceğin İtalya başbakanı) tarafından Fransızca’ya çevrilir ve yayınlanır. Luıigi Menabrea’nın yayınını İngilizce’ye çevirmek için Sir Charles Wheatstone (stereoskop, Wheatstone köprüsü) tarafından Ada Lovelace görevlendirilir. Ada, çevirisini yaparken Babbage’dan da destek alır ve Menabrea’nın yayınını daha da geliştirir. Bu yeni çalışma da 1843 yılında yayınlanır.

Ada’nın A’dan G’ye harflendirilmiş notlarının arasında, G notunda, Analitik Makine’nin Bernoulli sayılarını hesaplayabileceği bir algoritma bulunmaktadır. “Bir bilgisayarda çalıştırılmak üzere yazılmış ve yayınlanmış ilk algoritma” olarak kabul edilen bu algoritma, makine asla tamamlanamadığı için asla denenememiştir.

Aşağıda tasarımını göreceğiniz algoritma, dünyanın ilk bilgisayar programıdır.

Ada Lovelace'in "G" notu. Yayınlanmış ilk bilgisayar algoritması.
Ada Lovelace’in “G” notu. Yayınlanmış ilk bilgisayar algoritması.

İsmini Ada Lovelace’ten alan bir de programlama dili vardır.^7

//Ada programlama dilinde "Merhaba Dünya!" örneği.

with Ada.Text_IO; use Ada.Text_IO;
procedure Hello is
begin
   Put_Line ("Hello, world!");
end Hello;

İlk Nesil: Vakum Tüplü Bilgisayarlar

Babbage’ın döneminden sonra “dijital bilgisayar” dünyasındaki gelişmeler önemli ölçüde azaldı. Sonrasında ise, birçok teknolojiye öncülük etmesi bizi şaşırtmayan bir şey ortaya çıktı: Savaş. İkinci Dünya Savaşı döneminde bilgisayar alanındaki çalışmalar yükselişe geçti. 1900’lü yılların başında hayatımıza giren vakum tüpleri^8, bu yükselişin en önemli elemanlarından oldu.

Atanasoff – Berry Bilgisayarı

Profesör John Vincent Atanasoff ve öğrencisi Clifford Berry tarafından Iowa State University’de 1937 yılında başlatılan çalışma, lineer denklemleri çözebilen Atanasoff – Berry Bilgisayarı’nı (Atanasoff – Berry Computer, ABC) ortaya çıkardı.^9 Cihaz, 1942 yılında başarıyla test edildi. Her ne kadar programlanabilirlik özelliği bulunmasa ve Turing-complete olmasa da, elektronik anahtarlama ve binary matematik konularında bilgisayar dünyasına öncülük etti. Profesör’ün 2. Dünya Savaşı görevleri nedeniyle üniversiteden ayrılmasıyla, proje durduruldu.

Iowa State University'de bulunan Atanasoff-Berry Bilgisayarı'nın kopyası. https://commons.wikimedia.org/wiki/File:Atanasoff-Berry_Computer_at_Durhum_Center.jpg
Iowa State University’de bulunan Atanasoff-Berry Bilgisayarı’nın kopyası. https://commons.wikimedia.org/wiki/File:Atanasoff-Berry_Computer_at_Durhum_Center.jpg

Z3

Atanasoff ile hemen hemen aynı zamanlarda, Alman Konrad Zuse da “Z3” üzerinde çalışıyordu.^10 1935’te tasarlanan Z3, 1941’de tamamlandı. Z3, dünyanın ilk programlanabilir, dijital, tam otomatik bilgisayarı olarak kabul edilir.^11 Özellikle belirtmek isterim ki, örneğin bu sayfada göreceğiniz “Colossus” gibi, farklı bilgisayarlar da “ilk” kabul edilebiliyor. Bu noktalardaki tartışmalar hiç de sonlanacak gibi görünmüyor.

Konrad Zuse, Alman yönetimini projeye yatırım yapmaları konusunda ikna etmeye çalışsa da; savaş dönemi Almanya’sı, projenin “savaş açısından önemsiz” görülmesi gerekçesiyle projeyi desteklemedi. Cihaz ilk ismi, Versuchsmodell 3’tü (Test modeli 3). Fakat Almanların “Misilleme Silahları (Vergeltungswaffen, V3)” ile isim karışıklığı yaşanmaması için ismi Z3 olarak değiştirildi.

Orijinal Z3, 21 Aralık 1943’te bir bombardıman sırasında yok oldu. 1961’de Zuse’un firması tarafından tekrar yapıldı ve şu an Deutsches Museum’da sergilenmektedir.

Münih Deutsches Museum'da sergilenen Z3 kopyası. https://commons.wikimedia.org/wiki/File:Z3_Deutsches_Museum.JPG
Münih Deutsches Museum’da sergilenen Z3 kopyası. https://commons.wikimedia.org/wiki/File:Z3_Deutsches_Museum.JPG

Colossus

1943 – 1945 yılları arasında; Bletchey Park’ta (İngiltere) bir grup bilim insanı, Alman “Lorenz Şifresi (Tunny olarak da bilinir)^12 üzerinde çalışıyordu. 2. Dünya Savaşı sırasında yapılan bu çalışmanın amacı, yüksek güvenlikli Alman iletişimini deşifre etmekti. Çalışmayı yapan ekibin içinde Alan Turing de bulunuyordu. Colossus^13, ilk olma konusunda Z3 ile çok yakın bir mücadele içindedir. Colossus projesi süresince birkaç farklı model tasarlanmıştır.

Sıklıkla, bu makineyi Turing’in tasarladığı ve Enigma şifrelemesini kırdığı söylenir. Bu yanlış bir bilgidir. Colossus, Dr. Thomas “Tommy” Harold Flowers (22 Aralık 1905 – 28 Ekim 1998) tarafından tasarlanmıştır ve Lorenz’i kırmak için kullanılmıştır.

Alan Turing Enigma şifresini kırmıştır. Tasarladığı makine ise “Bombe“dir.

Kadınlar Kraliyet Donanması (Women's Royal Naval Service, Wren'ler) tarafından kullanılan Colossus Mark 2 bilgisayarı. Dorothy Du Boisson (solda) ve Elsie Booker (sağda), 1943.
Kadınlar Kraliyet Donanması (Women’s Royal Naval Service, Wren’ler) tarafından kullanılan Colossus Mark 2 bilgisayarı. Dorothy Du Boisson (solda) ve Elsie Booker (sağda), 1943.

Lorenz Şifresi

Yeri gelmişken kısaca Lorenz Şifresi’nden de bahsedelim. Almanların üst rütbelileri arasındaki yüksek güvenlikli iletişimi sağlamak amacıyla üretilmiş olan Lorenz’in kırılmasıyla, 2. Dünya Savaşı’nın seyri ciddi şekilde değişmiştir. Baya baya bir odaya kapanıp kağıt kalemle şifre çözmeye çabalayan insanlar, savaşların kaderini değiştirebiliyor. O yüzden kıymetli arkadaşlarım, lütfen “Gidelim savaşalım ağğbi vuralım ağğbi nolcaksa olsun artık.” kafasından kurtulun.

Lorenz SZ42. Bletchey Park Müzesi
Lorenz SZ42. Bletchey Park Müzesi

Lorenz ile şifrelenmiş telsiz mesajları dinleniyor, kayıt altına alınıyor ve Bletchey’e getiriliyordu. 30 Ağustos 1941’de Atina’dan Viyana’ya gönderilen yaklaşık 4000 karakterlik bir mesaj, diğer uçtan doğru şekilde alınamadı. Alıcı taraf, mesajı yeniden istedi. İşler bu noktada bambaşka bir hâl almaya başladı.

Gönderici tarafın tekrar, aynı anahtarla, üstelik kısmen değiştirerek neredeyse aynı mesajı göndermesi; şifrelemenin güvenliğini büyük tehlikeye soktu. Kaldı ki, anahtarın her mesajda değiştirilmesi gerekiyordu ve aynı anahtarla birden fazla mesaj göndermek kesinlikle yasaktı. Bu durum, kriptanalizde “derinlik (depth)^14 dediğimiz durumu oluşturur.

Derinleşmiş bu iki mesaj üzerinde Tuğgeneral John Hessell Tiltman (25 Mayıs 1894 – 10 Ağustos 1982) ve ekibi çalışmaya başladı. Araştırma ekibi, 3 aylık çalışmanın ardından görevi William Thomas Tutte’a (14 Mayıs 1917 – 2 Mayıs 2002) atadı. Tutte ve ekibi, birkaç aylık çalışmanın sonunda elde ettikleri verilerle şifreleme makinesinin mantıksal devresini çıkarmayı başardı.^15 Tam bir tersine mühendislik harikası!

Harvard Mark I

Howard Aiken tarafından konsepti hazırlanan bilgisayar, Kasım 1937’de IBM’e sunuldu. IBM yöneticisi Thomas Watson Sr., projeyi bizzat onayladı ve Şubat 1939’da IBM bu projeye fon desteği sağlamaya başladı.

Harvard Üniversitesi personeli tarafından Mark I adıyla anılan International Business Machines Automatic Sequence Controlled Calculator (IBM ASCC), 2. Dünya Savaşı’nın son dönemlerinde kullanılan genel amaçlı elektromekanik bir bilgisayardır. 7 Ağustos 1944’te tamamlanmıştır.

Hardvard Mark I üzerinde çalıştırılan ilk programlardan biri, Von Neumann mimarisi ile adını sıkça duyduğumuz John von Neumann tarafından 29 Mart 1944’te başlatıldı. Von Neumann o sıralar Manhattan Projesi^16 üzerinde çalışıyordu ve atom bombası için makul bir tetikleyici aramakla meşguldü. Von Neumann ayrıca, atom bombasının ilk hedefleri olarak Hiroşima ve Nagasaki’nin seçiminde rol alan kurulda da yer alıyordu. Patlamaların beklenen boyutu, tahmini ölü sayısı, maksimum patlama etkisi için gerekli şartlarla ilgili hesaplama işlerinin başındaydı.^17 Of John…

ENIAC

Electronic Numerical Integrator and Computer; programlanabilen, elektronik, genel amaçlı ilk dijital bilgisayardı.^18 Dershanelerin Türkiye birincisi çıkardığı gibi ilk bilgisayar çıkarıyoruz değil mi bu yazıda? 3 oldular. Bu 3 arkadaşın kıyaslamasını ayrıca yapmamız gerekecek anlaşılan. Ama ENIAC’ın tahtı epey sallandı, onu söyleyeyim. Atanasoff ve Colossus arasında ise farklar var.

ENIAC, Turing-complete bir bilgisayardı ve yeniden programlanarak birçok problemin çözümünde tekrar tekrar kullanılabiliyordu. Yine 2. Dünya Savaşı döneminde ortaya çıkan, top ve füze atışlarının hesaplanması amacıyla tasarlanan bir makinedir. Amerikan fizikçi John William Mauchly (30 Ağustos 1907 – 8 Ocak 1980) ve öğrencisi John Adam Presper Eckert Jr. (9 Nisan 1919 – 3 Haziran 1995) tarafından tasarlanmıştır.

ABD ordusu tarafından finanse edilen projenin ilk imzaları 5 Haziran 1943’te atıldı ve Pennsylvania Üniversitesi’nde gizli bir proje olarak çalışmaları başladı. Şubat 1946’da gecikmeli olarak tamamlandı ve halka sunuldu. Yaklaşık 487 bin Amerikan Doları’na mal oldu ki bu tutarı 2019 yılına getirdiğimizde 7 milyon 195 bin Amerikan Doları gibi bir fatura karşımıza çıkıyor.^19

Programcılar Betty Jean Jennings (solda) and Fran Bilas (sağda) ENIAC ana kontrol panelini kullanıyor. (Moore School of Electrical Engineering, ABD ordusu arşivleri, 1945 - 1947)
Programcılar Betty Jean Jennings (solda) and Fran Bilas (sağda) ENIAC ana kontrol panelini kullanıyor. (Moore School of Electrical Engineering, ABD ordusu arşivleri, 1945 – 1947)

Vakum Tüplü Bilgisayarların Kullanımı

Çift tıkla sonra next next… Değil.

Bu dönemdeki cihazlar kişisel kullanım için tabii ki de uygun değil. Bir tasarım ekibi, makinenin her şeyini biliyor. Tasarlayan, yapan, kullanan, programlayan bir ekip var. Saf makine dilinde yazılımlar var. Hatta makine dilini de geçtik, baya baya binlerce kablo çekerek yapılıyor programlama işi. İşletim sistemi diye bir şey zaten hiç yok. Hesaplamalar nispeten basit. Birtakım fonksiyonların çözümü var. Mesela 0’dan 360’a açıların sinüsünün hesaplanması gibi. Takdir edersiniz ki arasıra vakum tüpleri patlıyor. Gidip, bulup değiştiriyorsunuz. 1950’li yılların başında ise delikli kartlar hayatımıza giriyor kablo birleştirerek yazılım yapmak yerine, kart delmeye başlıyoruz.

İkinci Nesil: Transistörler ve Yığın Sistemler

Transistör, girişine uygulanan sinyali yükselterek gerilim ve akım kazancı sağlayan; gerektiğinde anahtarlama elemanı olarak kullanılan yarı iletken bir elektronik devre elemanıdır.^20 Günümüz sistemlerinin vaz geçilmezi, çoğunlukla silikon tabanlı; 64-bit AMD Ryzen 9 3900X işlemcide, 7-12 nanometre boyutunda olup 273 milimetrekare alana 9 milyar 890 milyon adet sığdırılmış^21, Silikon Vadisi’ne ismini verdiği sanılan^22 teknoloji.

Oda büyüklüğündeki bilgisayar konusuna zaten yukarıdaki cihazlarla gelmiştik aslında. Burada da konu biraz datacenter’a dönecek sanki.

Bu dönemde bilgisayar kavramı; bir müşterinin para ödemek isteyeceği, ödediği paranın ardından sağlıklı bir şekilde kullanmaya devam edebileceği bir cihaz hâline geldi.

Bu dönemin bilgisayarları, günümüzdeki “mainframe” kavramında karşılık buluyor diyebiliriz. Bilgisayarlar, iklimlendirilmiş büyük odalarda kilit altında tutuluyor, başlarında ise onları kullanmakla görevli kişiler bulunuyordu. Milyonlarca dolar değerinde olan bu cihazlar, tahmin edeceğiniz üzere, büyük şirketler ve devlet kurumları tarafından kullanılabiliyordu. Programlar yazılıyor, delikli kartlara geçiriliyor, sonrasında kart destesi içerideki personele devrediliyor ve iş sıraya alınıyordu. Aslında CPU scheduling’i yapan gerçek insanlardan bahsediyoruz. Yazılımcı için ise, “Hadi kodu bir derleyelim, bakalım hata var mı?” gibi bir şey söz konusu değil. Yaz, teslim et, git. Sonucunu öğrenmek için geldiğinde “Bozuk bu.” yanıtını al. Bu süreçte yazılımın çıktıları, operatörler tarafından çıktı bölümüne gönderilirken; yeni yazılım da yine operatörler tarafından bilgisayara yükleniyordu. Bunu bir program kurmak için düşünmeyin. Gerçekten yük yüklemek gibi düşünün. Fiziken kartlar veriliyor makineye. Peki tüm bu süreçte bilgisayar ne yapıyor? Bekliyor. Öylece, hiçbir işe yaramadan, etrafındaki insanların işini bitirmesini bekliyor.

Aslında süreci yavaşlatan şey I/O, öyle değil mi? Bilgisayar dünyasının korkulu rüyası. O günlerden belli etmiş kendini 🙂 Burada yardımımıza batch system koşuyor. Esas işi yapan bilgisayarın yanına, nispeten daha ucuz olan başka bir bilgisayar konuluyor. Kartlar ucuz makineye yükleniyor. Ucuz makine işlemleri okuyup tape’e yazıyor. Operatör tape’i alıp ana makineye götürüyor ve hesaplama yapılıyor. Sonuç yine tape’e yazılıyor. Son olarak tape, ucuz makineye götürülüyor ve çıktıyı yazdırma işi yaptırılıyor. Bu sayede esas hesaplama gücümüz, programın yüklenmesi ya da çıktının yazdırılması gibi işlerle meşgul edilmiyor.

Bu dönemde yazılan programlar çoğunlukla assembly ve adını sıkça duyduğumuz bir programlama dili ile yapılıyor: FORmula TRANslation, FORTRAN. Bazı özel kartlar sayesinde “FORTRAN compiler’ı yükle”, “Şu noktadaki kodu derle.”, “Yüklediğin programı çalıştır.” gibi komutlar veriliyordu. Bu özel kartlar, aslında, bugün kullandığımız shell ve command line interface’lerin (CLI) temelini oluşturuyordu. Yine bu dönemde, IBM’in 7094 cihazına özel IBSYS ya da The Fortran Monitor System (FMS) gibi işletim sistemleri karşımıza çıkmaya başlıyor.

Üçüncü Nesil: Entegre Devreler ve Multiprogramming

Bu döneme gelinene kadar, üreticilerin elinde birden fazla model var. Bu modeller birbirleriyle uyumlu değil. Birinde çalışan yazılım, diğerinde çalışmıyor. Her cihazın uzmanı farklı, üretim şekli farklı, geliştirme süreçleri farklı. Her birinin alıcısı da var. Bunlara yanıt vermek de ek iş yükü gerektiriyor. Nispeten küçük olan ve sonradan büyüyen bir işletme, satın aldığı bilgisayardan verim alamamaya başlayıp yeni bir bilgisayar almaya kalktığında; eski yazılımlarını da çöpe atmak durumunda kalıyor.

IBM, buradaki sorunu çözmek amacıyla yeni bir seri geliştirir, System/360. Bu serideki cihazlar, ortak mmariye ve instruction set’e sahip oldukları için, birbirlerinin yazılımlarını da çalıştırabiliyorlardı, teoride..

IBM 360 serisi, küçük boyutlu entegre devreler kullanan ilk cihazlardı. Bu da gerek üretim süreçleri, gerek maliyet, gerekse performans açısından avantaj sağlıyordu. Bundan önce ise, cihazlar üzerine transistörler teker teker eklenirdi.

IBM’in yapmaya çalıştığı şeyi bir düşünün. Yazılımın taşınabilirliğini sağlamak istiyorlar. Bu cihazları güçlü kılan şey bu. Fakat mümkünlüğü tartışmaya açık. İşletim sistemi de dâhil olmak üzere bütün yazılımların bütün cihazlarda çalışması bekleniyor. Küçük-büyük, ticari-bilimsel tüm sistemlerde; herkesin ihtiyacını karşılayabilecek bir yapı, bu yapıda çalışabilecek yazılımlar… Bu sistemin işletim sistemi, milyonlarca satıra ulaştı. Son derece karmaşık bir hâl aldı ve bu kadar fazla kod içinde binlerce bug olması da bir hayli normal oldu.

Multiprogramming

Yine de OS/360 koşturan IBM/360 ve diğer üreticilerin benzer çalışmaları, müşterileri memnun etmeyi başardı. Her ne kadar sorunlu sistemler olsalar da, ikinci nesil cihazların yerine getiremediği bazı önemli görevleri yerine getirebiliyorlardı. Bunlardan bir tanesi ise “multiprogramming” oldu. Multiprogramming, belleğin bazı parçalara ayrılarak tüm işin bir anda yüklenmesini ve CPU’nun bir işi bitirdikten sonra diğerine geçebilmesini sağladı. Bu sayede CPU, I/O süreçlerini beklemek zorunda kalmadı. Bu da cihazın verimini ciddi ölçüde arttıran bir değişiklikti.

İşletim sisteminin kendi işini kendi yükleyebildiği ve CPU’yu çalıştırmaya devam edebildiği bu sisteme Simultaneous Peripheral Operation On Line (spool, spooling) adı verildi.

Timesharing

Her şey güzel görünüyor, fakat tabii ki değil. İşlerin yüklenmesi, çıktıların yazılması gibi süreçleri hızlandırarak zaman kazanıldı. Fakat yine de bir yazılımcı bir işi sisteme verdikten sonra, kodunun derlenip çalıştırılması için saatlerce beklemek zorunda kalıyordu. Ve çok basit bir yazım hatası bile, programın çalışmasına engel oluyordu. Böyle bir durumda “Keşke baştan bilseydik, bu kadar beklemezdik.” durumunun yaşanması kaçınılmaz. Bir tarafta milyonlarca veri üzerinde işlem yapan program çalışırken; diğer tarafta bir başka yazılımcı yalnızca kodundaki hataların temizlenip temizlenmediğini denemek istiyor. Fakat beklemekten başka yapabilecek hiçbir şeyi yok.

Bu “hızlı yanıt alma” isteği, bizi timesharing sistemlere getirdi. Her kullanıcının kendine ait terminali olduğu bu sistemde, bilgisayar beklemekte olan işlerle ilgilenmek yerine gelen taleplere yanıt verebilir hâle getirildi. Bu sayede bir iş – örneğin bir input – beklerken, OS bu işi pas geçerek başka bir işe devam edebilir hâle getirildi. MI.T.’de özel olarak değiştirilmiş bir IBM 7094 cihazı, timesharng sistemlerin ilk örneğini oluşturdu: Compatible Time Sharing System (CTSS). Konu hakkında daha detaylı bilgi almak isterseniz CPU Scheduling yazıma göz atabilirsiniz.

Timesharing sistemler ilk çıktığında donanımsal bazı problemlerden dolayı çok benimsenmese de, günümüzün vaz geçilmezi durumuna geldiler.

CTSS’in başarısından sonra; M.I.T., Bell Labs ve General Electric (evet, o zamanlar bilgisayar işi de yapıyorlardı) yeni bir cihaz geliştirmek istedi. Birkaç yüz timesharing kullanıcıyı destekleyebilecek, duvarda bir prize takıldığında kullanmaya başlayabileceğiniz, gerektiğinde donanım yükseltmeleri yapabileceğiniz bir cihaz hayal ediliyordu. Bahsettiğimiz sistem MULTiplexed Information and Computing Service (MULTICS).

MULTICS, nispeten ucuz bir cihazda yüzlerce kişinin birlikte çalışabileceği bir sistem yaratmak istiyordu. PL/I programlama dilini kullananbu cihazın başarısızlık sebeplerinden biri zaten bu dildi. Compiler’ında bazı sorunlar vardı. Ek olarak MULTICS’in fikirleri, tıpkı zamanında Babbage’ın yaşadığı gibi, zamanının ötesindeydi. Buna rağmen MULTICS, modern işletim sistemlerinin gelişimi için birçok fikir öne sürdü.

Bu fikirlerin o dönemde hayata geçirilmesi oldukça güçtü. Bell Labs projeden çekildi. General Electric ise bilgisayar dünyasından tamamen çekildi. M.I.T. vaz geçmedi ve MULTICS’i çalıştırmayı başardı. MULTICS, Honeywell firması tarafından ticari bir ürün olarak pazarda satıldı. Üstelik dünya genelinde birçok büyük firma ve üniversiteye.

Az ama öz müşterileri olan MULTICS, 1990’ların sonlarına doğru, çıktığı günden 30 yıl sonra, terk edilmeye başlandı. General Motors, Ford, NSA gibi kuruluşlar Honeywell’den donanım güncellemesi alamadıklarını görünce; MULTICS’ten vaz geçmek durumunda kaldı.

Cloud Computing

20. yüzyılın sonlarına doğru, bilgisayar dünyası “bulut bilişim” ile tanıştı. Bu yapıda nispeten ucuz ve donanımsal açıdan güçsüz cihazlar, veri merkezlerinde (datacenter) yer alan ve ciddi hesaplama gücüne sahip cihazlara bağlanarak çalışmaktadır. Bu durumu, kütüphane ve bankalarda karşınıza çıkabilecek “dummy” cihazların “mainframe“e bağlanması gibi düşünebilirsiniz.

MULTICS’e tekrar selam gönderiyoruz. Uzaklarda bir yerlerde bir bilgisayar var. Bütün işi kendisi yapıyor. Fiziksel olarak farklı lokasyonlara dağılmış birçok cihaz da bu bilgisayara bağlanarak işini yaptırıyor. Kabaca özetlemek istersek bulut böyle bir şey.

Şu noktaya dikkat edin lütfen. “Uzaklarda bir yerlerde bir bilgisayar var.”. Evet, gerçekten, fiziken orada bir bilgisayar var. Ve o bilgisayar sizin değil. “Fotoğraflarımı iCloud’a attım. Hepsi bulutta, güvende.” diye düşünmeyin. Hepsi bulutta falan değil, Apple firmasına ait cihazlarda. Her zaman söyleriz: “Bulut yoktur, başkasının bilgisayarı vardır.”

Peki neden böyle bir şeye ihtiyaç duyuyoruz? Aksi durumda herkesin kendi evinde, kendi iş yerinde bir veri merkezi kurması gerekirdi. Kendi sanallaştırma ortamlarını, kendi network altyapılarını, kendi donanım bakım ve onarımlarını yapabilmesi gerekirdi. Örnekler arttırılabilir. Böyle bir çaba göstermektense bulut sağlayıcıları bizim için tüm bu işleri yapıyor. Sonrasında bize belirli bir ücret karşılığında bu hizmeti kiralıyor. Biz de sanıyoruz ki “Hollanda’da 4 tane, Almanya’da 3 tane server’ım var.”. Hayır, yok aslında. Hizmet sağlayıcıdan kiraladığımız ve yüksek ihtimalle sanal olan sunucularımız var. Cihazımızın fiziki konumunu bilmiyoruz, cihaza kimlerin erişimi olduğunu bilmiyoruz.

Fakat bu yapıyı lokalinize de kurabilirsiniz. Eğer gerçekten kendi veri merkezinizi kurabilecek kaynağa sahipseniz, mükemmel değil mi? Sahadaki personele, kolluk kuvvetlerine, araçlara düşük kapasitede bilgisayarlar bırakarak kendi bulut hizmetinizle haberleşebilmelerini sağlayabilirsiniz. Birçok büyük kuruluş bu şekilde çalışırken, yine birçok büyük kuruluş da hizmet sağlayıcılarla anlaşıyor ve bulut hizmetini onlardan alabiliyor.

MULTICS’in etkileri bununla da sınırlı değil. UNIX, FreeBSD, Linux, iOS, Android gibi birçok projeye önemli etkileri olmuştur. MULTICS’i kullanan, tasarlayan, geliştiren ekip hâlâ dışarıda bir yerlerde. Hatta kendilerine “Multician^23 diyorlar 🙂

UNIX

Bu konuya çok detaylı girmeyeceğiz. En azından şimdilik. Fakat MULTICS’e kadar gelip burada bırakmak istemedim.

MULTICS projesinde görev almış bir Bell Labs çalışanı, ortalıkta boş boş yatan bir PDP-7 minibilgisayarı bulur. Hatırlarsanız Bell, projeden çekilmişti. Kenneth Lane Thompson (4 Şubat 1943)^24 isimli bu bilim insanı, MULTICS’in kırpılmış, tek kullanıcılı bir hâini yazmayı ister. Çünkü atıl durumda bir cihaz, güzel bir işletim sistemiyle birleşirse, Ken Thompson rahat rahat oyun oynayabilecektir 🙂^25 (Ay Ali hocam bizim çocuk bilgisayarın başından kalkmıyor sırf oyun oynuyor eüv eüv.)

1969 yılında başlayan ve ilk zamanlarında UNICS olarak bilinen bu proje, C dilinin geliştiricisi Dennis MacAlistair Ritchie^26 (9 Eylül 1941 – 12 Ekim 2011) de katkı vermeye başlayınca; bugün dünyadaki bilgisayarların neredeyse hepsinin çalışmasında bir şekilde etkisi olan UNIX işletim sistemi ortaya çıktı.

“MULTICS iyiydi, bunu tek kullanıcılı yapalım.” diyerek UNICS’i icat ettiler. “B dili bize yetmez. Önce dili geliştirelim.” diyerek C dilini icat ettiler. Projeyi C ile tekrar elden geçirdiler ve dünyanın ilk taşınabilir işletim sistemi kaynak kodunu hazırladılar. İşletim sistemleri artık makinelere bağlı değildi. Ayrı birer yazılım olarak çalışabilirlerdi. Bugün UNIX ve C dediğimiz teknolojiler; mikrodalga fırından çamaşır makinesine, yangın alarmından otomatik kapılara kadar birçok gömülü sistemde, otomobillerde, televizyonlarda, telefonlarda, oyun konsollarında, bilgisayarlarda, klavyenizde, farenizde bile kullanılıyor.

Kenneth Lane “Ken” Thompson ve Dennis MacAlistair “dmr” Ritchie; günümüz bilgisayar teknolojisine inanılmaz katkılarda bulnumuşlardır. Öncülük ettikleri teknolojiler hayatımızın her noktasında karşımıza çıkıyor. Dennis Ritcie, Steve Jobs’tan 1 hafta sonra hayatını kaybetmiştir. Maliyetinin bilmem kaç katına, tamamen kapalı bir sistemi dayatan kişinin “teknoloji harikası” olarak nitelendirildiği, üstelik “Biz bilim yapıyoruz.” diyen insanların özgür bıraktığı araçları kullanan, onların üzerine ürün inşa edip pazarlayan kişinin ayakta alkışlandığı; fakat gerçek kahramanların adının bile duyulmadığı bir dünyada yaşıyoruz.

Tesla, Edison’dan büyüktür arkadaşlar.

Ken Thompson ve Dennis Ritchie
Ken Thompson ve Dennis Ritchie


Sonuç Olarak

Bilim ve teknolojinin gelişmesinde ciddi rol alan fakat adını dahi duymadığımız tüm bilim insanlarına saygı, sevgi ve selamlarımızı iletelim.

Hesaplama yapabilen insanlardan mekanik makinelere, mekanik makinelerden elektronik makinelere, elektronik makinelerden programlanabilir makinelere gelen bilgisayarlar; günümüzde evlerimizde, masalarımızda, çantamızda, cebimizde bulunuyor. Bu yazı, cihaz ve OS tarafından konuyu özetlemeye; hatta özetini özetlemeye çalışmış bir yazıdır. Süreç içerisinde işlemci mimarilerinden tutun depolama ünitelerine, yazılım geliştirme araçlarından tutun binary ve assembly’e kadar bu yazıda adını anmadığımız birçok teknoloji ve bilim insanı oldu. Umarım faydalı olmuştur ve bir nebze merak uyandırabilmiştir.

Bağlantılar

1- The Modern History of Computing, https://plato.stanford.edu/entries/computing-history/

2- Charles Babbage, https://en.wikipedia.org/wiki/Charles_Babbage

3- A Brief History of The Lucasian Professorship of Mathematics at Cambridge University. (archive.org’dan getirilen), https://web.archive.org/web/20131223124958/http://www.lucasianchair.org/papers/brief.html

4- Difference engine, https://en.wikipedia.org/wiki/Difference_engine

5- Analytical Engine, https://en.wikipedia.org/wiki/Analytical_Engine

6- Ada Lovelace, https://en.wikipedia.org/wiki/Ada_Lovelace

7- Ada (programming language), https://en.wikipedia.org/wiki/Ada_(programming_language)

8- Vacuum tube, https://en.wikipedia.org/wiki/Vacuum_tube

9- Atanasoff-Berry computer, https://en.wikipedia.org/wiki/Atanasoff%E2%80%93Berry_computer

10- Z3 (computer), https://en.wikipedia.org/wiki/Z3_(computer)

11- A Computer Pioneer Rediscovered, 50 Years On (archive.org’dan), https://web.archive.org/web/20161104051054/http://www.nytimes.com/1994/04/20/news/20iht-zuse.html

12- Cryptanalysis of the Lorenz cipher, https://en.wikipedia.org/wiki/Cryptanalysis_of_the_Lorenz_cipher

13- Colossus computer, https://en.wikipedia.org/wiki/Colossus_computer

14- Cryptanalysis#Depth, https://en.wikipedia.org/wiki/Cryptanalysis#Depth

15- The Lorenz Cipher and how Bletchley Park broke it by Tony Sale, https://www.codesandciphers.org.uk/lorenz/fish.htm

16- Manhattan Project, https://en.wikipedia.org/wiki/Manhattan_Project

17- John von Neumann, https://www.atomicheritage.org/profile/john-von-neumann

18- 3.2 First Generation Electronic Computers (1937-1953), https://web.archive.org/web/20200703023025/https://www.phy.ornl.gov/csep/ov/node10.html

19- ENIAC, https://history-computer.com/ModernComputer/Electronic/ENIAC.html

20- Transistör, https://tr.wikipedia.org/wiki/Transist%C3%B6r

21- AMD’s 64-Core EPYC and Ryzen CPUs Stripped: A Detailed Inside Look, https://www.tomshardware.com/news/amd-64-core-epyc-cpu-die-design-architecture-ryzen-3000

22- Why is Silicon Valley Called Silicon Valley?, https://pellcenter.org/why-is-silicon-valley-called-silicon-valley/

23- Multicians, https://multicians.org/

24- Ken Thompson, https://en.wikipedia.org/wiki/Ken_Thompson

25- UNIX, http://www.catb.org/~esr/jargon/html/U/Unix.html

26- Dennis Ritchie, https://en.wikipedia.org/wiki/Dennis_Ritchie

Referans

1 – Operating System Concepts Essentials, Abraham SILBERSCHATZ (Yale University), Peter Baer GALVIN (Corporate Technologies, Inc.), Greg GAGNE (Westminster College)

2 – Modern Operating Systems, Andrew S. TANENBAUM, Herbert BOS (Vrije Universiteit)