← Computers & Automation

Time Sharing in Large Fast Computers

B
Bilinmeyen Yazar
1959 · Computers and Automation

C. Strachey, National Research Development Corporation, Londra, Birleşik Krallık

(Bilgi İşleme Uluslararası Konferansı’nda sunulan bildiri, Paris, Fransa, 13–20 Haziran 1959)


En Zor Problemlerden Biri

Bir elektronik hesaplama makinesinin tasarımcısının karşılaştığı en zor problemlerden biri, giriş ve çıkış için kullanılan elektro-mekanik donanımın hızı ile tamamen elektronik iç aritmetik ve kontrol devrelerinin çalışma hızı arasında mevcut olan ciddi dengesizliktir.

Günümüzde kullanılan hızlı büyük ölçekli bilgisayarların çoğu tarafından benimsenen çözüm, her biri kendi tampon belleğine sahip, tamamen ya da kısmen otonom birimlere sahip olmaktır. Bu planın dezavantajı büyük ölçüde ekonomiktir; çünkü sistem üzerindeki talepler arttıkça, otonom birimler giderek daha karmaşık ve pahalı hâle gelmiş ve sonunda çevre birimlerinin ana bilgisayardan daha pahalı olduğu bir noktaya gelinmiştir.

Zorluk, otonom birimlerden istenen işlemlerin mantıksal karmaşıklığının oldukça yüksek olmasıdır. Bu işlemlerin gerçekleştirilme hızının çok yüksek olmadığı doğrudur; ancak ne yazık ki özel amaçlı bir bilgisayarın maliyeti, hızından ziyade mantıksal karmaşıklığı tarafından belirlenir; dolayısıyla yavaş bir birim inşa etmek çok daha ucuz değildir. Aslında daha hızlı bilgisayarlar inşa etmenin başlıca ekonomik nedenlerinden biri, işlem başına bakıldığında yavaş olanlara göre çok daha ucuz olmalarıdır.

Somut bir örnek, fikirlerimizi belki biraz daha net tanımlamaya yardımcı olabilir. Aşağıda, manyetik bantla çalışmak için olası bir işlevler (ya da alt yordamlar) kümesinin özelliklerini veriyorum.

(Bu örneği bazı açılardan bilerek aşırı basitleştirdim.)


Manyetik Bant İşlemleri

Manyetik Bant Sisteminin Özellikleri

  • Bilgi, sabit uzunlukta bloklar hâlinde aktarılır
  • Bant üzerindeki her karakterin bir eşlik denetim biti vardır
  • Ana bellekteki her sözcüğün bir eşlik denetim biti vardır
  • Bant üzerindeki her bloğun bir sağlama toplamı vardır
  • Okuma ve yazma yalnızca tek yönde yapılabilir
  • Yazma denetimini sağlamak için yazma kafasının hemen ardından bir okuma kafası bulunur. Bu iki kafa arasındaki mesafe hassas biçimde garanti edilemez, dolayısıyla zamanlamaları bağlantılı değildir.

Sağlanacak Olanaklar

A. Dört Komut

  1. Bant birimi x’ten ana bellekte y adresinden başlayarak bir blok oku
  2. Ana bellekte y adresinden başlayarak bant birimi x’e bir blok yaz
  3. Bant birimi x üzerinde y bloğu atla
  4. Bant birimi x’i, ana bellekte y adresindeki sözcükle özdeş bir sözcükle başlayan bir bloğu bulmak üzere ara

B. Denetimler

  • Okuma, atlama ve arama için karakterlerde eşlik denetimi, bloklarda toplam denetimi (i, iii ve iv numaralı komutlar)
  • Yazma için (ii), toplam denetimi ekle ve sözcük sözcük geri okuma denetimi gerçekleştir
  • Denetim hatasında en fazla 4 kez otomatik yeniden okuma ya da yeniden yazma ve her bant birimi için hata sayımlarının biriktirilmesi. 4 yeniden çalıştırmadan sonra özel alarm.

C. Kilitlemeler

Okuma ya da yazma sırasında, ana bilgisayar, manyetik bant işlemi tamamlanıp başarıyla denetlenene kadar y adresinden başlayan tek bir bellek bloğundan kilitlenmelidir.

Bu özelliklerde kayda değer bir mantıksal karmaşıklık olduğu görülecektir. Herhangi bir otonom tampon biriminin tüm bu gereksinimleri karşılayabilmesi oldukça düşük bir olasılıktır; neredeyse kesin olarak belirlenen ana bellek adresi y, tampon bellekle sınırlı tutulacak ve böylece manyetik bant komutunun, ana bellek ile tampon bellek arasında başka bir aktarım komutuyla ilişkilendirilmesi gerekecektir. Hatta bu karmaşıklık derecesi bile gerekenden daha az olabilir.

Her blok için bir toplam denetimi gereksinimi kaldırılırsa, ana bellekteki her sözcüğü, üzerinde işlem yapılır yapılmaz (blok sonuna kadar beklemek yerine) kullanmak mümkün hâle gelir. Bu, çok daha basit manyetik bant kopyalama düzenlerine olanak verir, ancak bir bloğun ortasında bir hata (parite ya da geri okuma ile) saptanırsa çok ciddi bazı karmaşıklıkları da beraberinde getirir. Bu tür bir durum, makul derecede basit, özel amaçlı bir sistemin gücünü aşar; ancak merkezi bilgisayarın tüm olanakları mevcutsa görece kolayca programlanabilir.


Zaman Paylaşımlı Çözüm

Böylece, manyetik bant işlemlerini denetlemek amacıyla merkezi bilgisayarın kısa bir süre için ödünç alınması olasılıklarını ele almaya yöneliyoruz. Bunun uygulanabilir olması, yalnızca bilgisayarın çok hızlı olması (tercihen mikrosaniye hız aralığında) ve ödünç almanın, programcının bundan haberdar olmasını gerektirmeyecek şekilde, gereksinim duyulduğunda otomatik olarak düzenlenmesi hâlinde mümkündür.

Bunu düzenlemenin olası bir yolu şu şekildedir. Manyetik bant birimiyle ilişkili iki adet tek sözcüklü yazmaç bulunur. Bunlardan biri kaydırmalı bir yazmaçtır ve manyetik banttan geldikçe karakterlerden tam bir sözcük birleştirmek için kullanılır. Bir sözcük tamamlandığında ikinci yazmaca aktarılır ve merkezi bilgisayara bir kesme programı sinyali gönderilir.

Bu durum, bilgisayarın ana programa uymayı bırakmasına ve banttan gelen sözcükle ilgilenmek için özel bir komut dizisine girmesine neden olur; aynı zamanda ana programdan ayrıldığı yeri kaydeder. Bu özel komut dizisi, manyetik banttan gelen sözcüğün paritesini denetler, gerekirse toplam denetimine ekler ve onu ana belleğin uygun bölümünde saklar. Ardından sayaç ya da indis yazmacını ilerletir. Blok sonuna henüz ulaşılmamışsa, bilgisayar daha sonra ana programa geri döner. Blok sonunda, ana programa dönmeden önce uygun denetimler yapılır.

Bu plan, birkaç zorluğu çözümsüz bırakmaktadır; örneğin, aktarımlar sırasında kilitlemeye yönelik hiçbir düzenleme içermez. Bir diğer önemli güçlük, aynı anda (farklı birimlerden) birden fazla kesme programı sinyalinin gelmesi ya da bir özel komut dizisinin bir başkası tarafından (ya da daha da kötüsü, kendisi tarafından) kesilmesi olasılığıdır.

Bu güçlüklerden çıkış için oldukça doğrudan bir yol, olası tüm kesme sinyallerini az sayıda sınıfa ayırmaktır. Bu sınıflara bir öncelik sırası verilir ve herhangi bir kesme sinyali, yalnızca yürütülmekte olan program daha düşük öncelikli bir sınıfa aitse programı derhâl kesebilir. Yürütülen program aynı ya da daha yüksek öncelik sınıfındaysa, kesme sinyali yalnızca saklanır. Belirli bir önceliğe ait bir komut dizisinin sonunda, makine bekleme listesini tarar ve kalan en yüksek öncelikli çağrı üzerinde çalışmaya başlar.

En yüksek öncelik sınıfı, beklemeye tahammülü olmayan işlemleri içerir; örneğin manyetik banda ya da manyetik banttan sözcük aktarımı. En düşük öncelik ana program olur. Bir ya da iki ara sınıfa gereksinim duyulabilir; sınıflandırmanın ilkesi, ataleti olan süreçlerin, olmayanlara göre daha yüksek önceliğe sahip olmasıdır.

Zamanlama sorunlarını biraz daha ayrıntılı olarak ele almak ilginçtir. Örneğin, manyetik banttan bilgi aktarım hızının 200 µs’de bir sözcük olduğunu ve bu sözcüğü saklayan dizinin gerektirdiği sürenin 5 µs olduğunu varsayalım. Sözcük, ardışık sözcükler arasındaki aralığın yalnızca bir bölümünde kullanılabilir durumda olabilir; örneğin ilk ortaya çıkışından itibaren 150 µs içinde kullanılması gerekebilir.

Bu durumda, aynı anda çalışabilecek bant birimi sayısının en fazla 30 olduğu ve bunların toplam kullanılabilir bilgisayar zamanının %75’ini kullanacağı açıktır; kalan %25 ise her zaman daha düşük öncelikli programlar için kullanılabilir olacaktır.

Ancak, her manyetik bant birimiyle birlikte bir kaydırmalı yazmaç bulundurmak istemediğimizi, bunun yerine merkezi bilgisayarı, manyetik banttan karakter karakter geldikçe her sözcüğü birleştirmek için kullanmak istediğimizi varsayalım. Bu durumda karakter aralığının 30 µs olduğunu varsayabiliriz; arabellek bellek olmadığını ve dolayısıyla karakterin yalnızca kısa bir süre, örneğin 10 µs boyunca kullanılabilir olduğunu kabul edelim. Tek bir sözcüğü birleştirmek için gereken komut dizisi oldukça kısadır, ancak kısmen birleştirilmiş sözcüğün saklanması gerekir; bu işlem için 2 µs’lik bir süre makul görünmektedir.

Bu sayılarla, aynı anda en fazla 5 manyetik bant birimi kullanılabilir ve bunlar toplam makine zamanının %33’ünü kullanır. Ancak tamamlanmış sözcüğü yerleştirmemiz de gerekir. Eğer bu işlem, önceki örnekte olduğu gibi hâlâ 5 µs sürüyorsa ve sözcük sonu dizisini karakter dizisiyle aynı öncelik sınıfında bırakıyorsak, manyetik bant birimi sayısını ikiyle sınırlamak zorunda kalırız. Eğer sözcük sonu dizisini daha düşük bir öncelik sınıfına aktarabilirsek, böylece diğer karakter birleştirme dizileri tarafından kesilebilirse, onu araya sığdırmak için yeterince zaman vardır ve bu, manyetik bant birimi sayısını sınırlamaz.

Bir kez daha vurgulamalıyım ki, burada verilen örnekler bilerek basitleştirilmiştir. Zamanlamalar hesaplanırken dikkate alınması gereken başka birçok husus vardır. Örneğin, çarpma ve bölme gibi bazı işlemler görece yavaş olabilir. Bunlardan biri sırasında bir kesme çağrısı oluşursa, büyük olasılıkla işlemin tamamlanması gerekecektir.

Bu sürenin her manyetik bant dizisi için azami zamana eklenip eklenmeyeceği ya da manyetik bantla ilgilenmek için gereken görece basit işlemlerin, çarpma ya da bölme tamamlanırken gerçekleşip gerçekleşemeyeceği, makinenin mantıksal tasarımının ayrıntılarına bağlıdır.

Ayrıca, bazı yüksek öncelikli programların aritmetik birimi kullanması gerekecektir; yine makinenin özelliklerine bağlı olarak, yeni programa geçmeden önce çeşitli aritmetik ve indis yazmaçlarının içeriklerini saklamak gerekli olabilir. Bu gerekliyse, genel kural bunları kesmeyi başlatan programla ilişkili konumlarda saklamak ve o programın sonunda tekrar geri yüklemektir. Saklanacak bilginin miktarı, kesmeyi başlatan programın bu ortak yazmaçları ne ölçüde kullandığına bağlıdır. Bu yolla, gerekenden fazla bilgi saklanarak zaman kaybedilmez.

Buraya kadar tanımlanan zaman paylaşımı sisteminin işleyiş bakımından oldukça karmaşık olduğu açıkça görülecektir. Bildiğim kadarıyla, bu tür bir sistemi kullanan hâlihazırda var olan bir bilgisayar yoktur; ancak bu ölçekte zaman paylaşımı olanaklarına sahip olacak makinelerin yapım aşamasında olduğuna inanıyorum.

Bununla birlikte, bana göre yukarıda tanımlanan düzen yeterince ileri gitmemektedir ve donanımda görece küçük bir artışla çok daha iyi bir sistem elde edilebilir. Kritik nokta, sanırım, çok hızlı bir bilgisayarın işletilmesi sorunlarını ele aldığımızda ortaya çıkmaktadır.


İşletim Sorunları

Bilgisayarların artan hızı, onları meşgul tutma sorununu önemli ölçüde daha karmaşık hâle getirecektir. Çok büyük ve hızlı makinelerin yapılmasının başlıca nedeni, onsuz yapılamayacak problemlerin varlığı olsa da, bence her zaman çok daha fazla sayıda, görece daha küçük problem var olmaya devam edecektir.

Daha önce de belirttiğim gibi, hızlı makineler verimli biçimde kullanılabildikleri sürece işlem başına çok daha ucuzdur. Mikrosaniye sınıfında bir makine, milisaniye sınıfındaki bir makineden bin kat daha hızlı olacaktır, ancak maliyetinin elli katından fazla olması beklenmez. Kullanabilirsek, yirmi katlık bir kazanç söz konusudur.

Büyük güçlük, elbette, çok hızlı bir makineyi, onun açısından çok küçük olan problemler üzerinde sürekli meşgul tutmaktır. Diğer ölçütlere göre ise bu problemler o kadar da küçük değildir: on iki adet 20 × 20 matrisin tersini almayı ya da 65 doğrusal denklemlik bir kümeyi çözmeyi içeren bir problem, çoğu ölçüte göre küçük sayılmaz.

Bu tür bir problem, Pegasus ya da IBM 650 gibi bir makinede 30 dakika ile bir saat, Mercury ya da IBM 709’da bir ya da iki dakika ve mikrosaniye sınıfında bir makinede bir ya da iki saniye sürer.

Makineye sürekli bir problem akışı sağlamak açıkça çok büyük güçlükler doğuracaktır ve her problem arasında birkaç saniye kayıp olmaması mümkün görünmemektedir. Bir operatör boşta kalırken diğerinin makineyi kullanabilmesi için operatörler arasında zaman paylaşımını düşünmek yerinde görünmektedir.

Bir başka olasılık, makinede her zaman bir taban-yük programı bulundurmaktır. Bu, çalışması uzun süren büyük bir program olur. En düşük önceliğe sahip olur ve iki kısa program arasındaki boşluk oluştuğunda devreye girer.

Günümüzde bir bilgisayarın çok verimsiz kullanıldığı en az iki başka etkinlik daha vardır. Bunlardan ilki program denetimidir. Birçok amaç için program denetiminin en iyi yöntemi, yetenekli bir programcının makinenin işletim konsolunda oturması ve makinenin ürettiği sonuçlara göre işlemlerini planlamasıdır. Ne yazık ki bu yöntem, görece yavaş makinelerde bile makine zamanını son derece israf ettiğinden, genellikle yalnızca birkaç çok özel problem dışında buna izin verilmez. Operatörler arasında zaman paylaşımı kavramı, özel bir konsolda bu elle program denetiminin, sıradan hesaplama için mevcut makine zamanını ciddi biçimde etkilemeden yeniden mümkün kılınmasını sağlar.

Bir bilgisayarın çok verimsiz kullanıldığı diğer etkinlik, kâğıt bant okuyucular ve manyetik bant birimleri gibi çevre birimlerinin bakımı ve ayarlanmasıdır. Bunların bazıları, yalnızca bilgisayar kullanılarak tatmin edici biçimde yapılabilen önemli miktarda ayar gerektirir. Bakımın bu kısmı zaman paylaşımlı olarak yürütülebilirse, bakım için kullanılan toplam makine zamanını oldukça azaltmak mümkün olmalıdır.

Makinede aynı anda birkaç değişken program bulundurmak mümkün olur olmaz, birkaç yeni problem ortaya çıkar. Bunların en önemlisi, programların birbirleriyle etkileşmemesini sağlamaktır. Bu, özellikle ilgili programlardan biri hâlâ geliştirme aşamasındaysa ve dolayısıyla “kontrolden çıkma” eğilimindeyse çok önemlidir. Bu güçlüğün çözümü, ana bellekte kilitlemeler sağlamaktır; böylece her program, belleğin yalnızca kendi bölümündeki sayıları değiştirmekle (ve belki de okumakla) sınırlandırılır. Bu da kendi içinde kilitlemelerin değiştirilmesi sorununu doğurur. Gerektiğinde bunların değiştirilebilmesi gerektiği açıktır (aksi hâlde tüm makineyi tek bir büyük problem için kullanmak imkânsız olur) ve hız nedenleriyle bunların bir makine komutuyla değiştirilmesi açıkça arzu edilir. Sorun, bir program kontrolden çıksa ve tamamen öngörülemez bir komut dizisine uysa bile, kilitlemeleri değiştiremeyecek ve başka bir programı bozmayacak şekilde bunu güvence altına almaktır.

Diğer oldukça zor sorunlar, bu tür bir makinede program denetimi için en iyi yöntemle ilgilidir. Programların (ve programcıların) çoğu, elle denetim yöntemleri için uygun değildir.

Bu nedenle, program denetimi için başka yöntemler konusunda bazı düzenlemeler yapmak gerekir ve bu alanda önemli miktarda çalışma olacağı muhtemeldir. Bu bağlamda ortaya çıkan özel bir problem, test altındaki bir programın hatalı olduğunu ve bir döngü durmasına girdiğini saptamanın güçlüğüdür. Bu durum hızla fark edilmezse, orantısız derecede fazla bilgisayar zamanı harcayabilir.

Director

Bilgisayarın genel düzeni artık son derece karmaşık görünebilir. Tüm bu işlevleri yerine getirmek için özel donanım tasarlamak ve inşa etmek gerekseydi, bu oldukça ürkütücü bir görev olurdu. Neyse ki buna gerek yoktur. Bilgisayarın kendisi, tam da bu tür karmaşık mantıksal problemlerle başa çıkmak üzere tasarlanmıştır ve bunlar bir bilgisayar programı için problem olarak ele alındığında, makinenin düzenlenmesi ne olağanüstü derecede zor ne de karmaşıktır. Bu nedenle, makinenin düzenini, Director adını vereceğim bir program aracılığıyla denetlemeyi amaçlıyoruz.

Director’ın ilk önemli özelliği, sabit bir program olmasıdır. Bu, silinemez olan özel bir bellek bölümünde tutulabileceği ve tutulması gerektiği anlamına gelir. Çok hızlı bir okuma süresine (yaklaşık 1/5 μs mertebesinde) sahip silinemez bir bellek sağlamak görece ucuz ve kolay bir iştir. Bu, Director’da harcanan zamanı azaltır ve Director programının asla yok edilememesini güvence altına alır.

İkinci husus, Director’ın, diğer programların müdahalesine karşı bağışık bir çalışma alanına gereksinim duymasıdır. Yani, yalnızca Director’daki komutlar tarafından değiştirilebilen sıradan bir silinebilir bellek bölümüne gereksinim vardır.

Director’ın belleğin özel, sabit bir bölümünde bulunması, yalnızca Director tarafından erişilebilen makine komutlarının tanıtılmasını mümkün kılar. Ana bellek kilitlemelerini değiştiren komutlar bu türden olursa, hiçbir programın başka bir programın kilitlemelerini değiştiremeyeceğini düzenlemek oldukça kolaydır ve böylece test altındaki programların kontrolden çıkmasına karşı koruma sağlanır.

Varsayımsal Makine

Buraya kadar tartışılan fikirleri açıklığa kavuşturmak ve kesinlik kazandırmak amacıyla, zaman paylaşımını geniş ölçüde kullanan büyük ve hızlı bir bilgisayar için olası bir tasarımı ana hatlarıyla betimlemeyi öneriyorum. Tanımlayacağım makinenin, bildiğim kadarıyla, gerçek ya da planlanmış bir bilgisayar olmadığını açıkça belirtmeliyim. Kullandığım performans değerlerinin gizli bir anlamı yoktur; bunlar yalnızca, şu anda ya da yakın gelecekte makul olduğunu düşündüğüm tahminlerdir. Aslında, makinenin başlıca özellikleri varsayılan gerçek hızlara kritik biçimde bağlı olmayacaktır.

Makine matematiksel çalışmalar için tasarlanmıştır. Hem sabit nokta hem de kayan nokta aritmetiğine sahip ikili bir makinedir. Sözcük uzunluğu 40 ile 50 bit arasındadır. 12 μs çevrim süresine sahip 32.000 sözcük ya da daha fazla kapasiteli bir ana belleği (ferrit çekirdekler üzerinde) vardır. Ayrıca, 1/5 μs okuma süresine sahip 1000–4000 sözcüklük sabit (silinemez) bir belleği bulunur. Yalnızca sabit bellekten gelen komutlarla erişilebilen, birkaç yüz sözcüklük özel bir çalışma belleği vardır.

Aritmetik işlemler (toplama, çarpma, bölme; sabit ya da kayan nokta) erişim süresi dâhil olmak üzere 2–10 μs sürer. Red Tape komutları, ana bellekten yürütüldüğünde 1–2 μs, sabit bellekten yürütüldüğünde ise 1/4 ile 1/2 μs arasında süre gerektirir.

Emir yapısının ayrıntıları ve değiştirici yazmaçların (indeks yazmaçları) sağlanması tam olarak ele alınmayacaktır. Mevcut değiştirici yazmaçların sayısı, bir programdan diğerine geçmek için kullanılan yöntemi etkileyecektir ve özellikle sayı çok küçükse (örneğin iki ya da üç) bunlar için özel yükleme ve boşaltma komutlarının bulunması arzu edilebilir.

Makinenin arka deposu sabit blok uzunlukları kullanan manyetik bant olacaktır. Aktarım hızı saniyede 20.000 ila 60.000 6 bitlik karakter olacak; bu da her 100–300 μs’de bir sözcüğe eşdeğerdir. Normal olarak her manyetik bant birimi, yukarıda 3. bölümde açıklandığı gibi, kendisiyle ilişkili iki adet tek sözcüklük arabelleğe sahip olacaktır. Ana bilgisayarla ilişkili 8–10 birim bulunacaktır.

Girdi ve Çıktı Donanımı

20’ye kadar yavaş girdi/çıktı istasyonu bulunacaktır. Her biri bir kâğıt şerit okuyucu (200 karakter/sn), bir kâğıt şerit delici ve yazıcı (ya da bir elektrikli daktilo) ve bir manyetik bant mekanizması ile birlikte bir çalışma alanı ve birkaç kontrol tuşundan oluşur. Manyetik bant mekanizması, ana makineyle ilişkili olanlara kıyasla, neredeyse bu kadar hızlı çalışması gerekmediğinden, önemli ölçüde daha basit olabilir.

Buna ek olarak hızlı girdi/çıktı istasyonları bulunacaktır; yani delikli kart girdi ve çıktısı, bir satır yazıcı (ya da belki iki tane) ve muhtemelen bir grafik çıktı. Bunların her birinin ilişkili bir manyetik bant birimi olacaktır.

Operatör Konsolları

Üç operatör konsolu bulunacaktır: makinenin bakımını ve testini yapmak için bir mühendis konsolu, çeşitli görsel göstergelere ve en az bir elektrikli daktiloya sahip bir program test konsolu ve bir ana operatör konsolu. Üçünün de bir hesaplamanın seyri sırasında müdahalede bulunmaya yönelik oldukça kapsamlı olanakları olacaktır.

Buna ek olarak, her bir girdi/çıktı istasyonu, çevrimdışı mekanizmalar gibi çalıştırılabilmelerini sağlayacak yeterli kontrol tuşlarına sahip olacaktır.

Çalışma Yöntemi

Normal çalışmada, en fazla dört değişken program arasında zaman paylaşımı yapılacaktır.

  1. Bir “temel yük” programı. Bu, daha önce kontrol edilmiş uzun süreli bir programdır. Başlangıçta ana operatör konsolundan kurulur ve en düşük öncelik verilir. Diğer programlar arasındaki boşlukları doldurmak için kullanılır.

  2. Bir dizi kısa süreli program. Bunlar ana operatör konsolundan ardışık olarak çalıştırılır. Kısa ve orta uzunluktaki programların çoğunluğunu oluştururlar. Genel olarak bir tür otomatik kodlama rutininin yardımıyla yazılmış olacaklar ve makine koduna çevrilmiş olarak girdi rutinine uygun bir biçimde manyetik bant üzerinde ardışık olarak saklanacaklardır.

  3. Elle kontrol edilen bir program, program test konsolunda.

  4. Bir mühendis test rutini, çevre birimlerinin bir bölümüne hizmet vermek için kullanılır.

Bunlara ek olarak, yavaş girdi/çıktı istasyonlarının bir kısmı kullanımda olacaktır. Bunların üç ana işlevi vardır.

  1. Programın (ve verilerin) ilk girdisi delikli kâğıt şeritten yapılacaktır. Bu, istasyonlardan birinden okunacak ve hemen (muhtemelen fazla çeviri yapılmadan) manyetik banda kaydedilecektir. Daha sonraki bir zamanda, ana konsoldaki operatör tarafından özel bir çeviri çalıştırması başlatılacak ve ortaya çıkan programlar daha sonra çalıştırılmak üzere tek bir manyetik bantta saklanacaktır.

  2. İstasyonlar ayrıca, çıktı hacmi satır yazıcının kullanımını gerektirmeyen programların sonuçlarını yazdırmak için kullanılacaktır. Bu sonuçlar ana bilgisayar tarafından girdi/çıktı istasyonlarından birinin manyetik bandında saklanacak ve daha sonra yazdırılacaktır.

  3. İstasyonların üçüncü kullanımı, elle test gerektirmeyen bir programı test ederken ölüm sonrası (post mortem) yazdırma içindir. Bu şekilde test edilen bir program tamamlandığında, ya da algılanabilir herhangi bir biçimde arıza verdiğinde, ya da öngörülenden daha uzun süre çalıştığında, belleğin önceden belirlenmiş çeşitli bölümlerinin (muhtemelen problem tarafından kullanılan tüm belleğin) içeriği (Director tarafından) manyetik banda çıkarılacaktır. Daha sonra, programcının ihtiyaç duyduğu bellek bölümlerini, girdi/çıktı istasyonlarından birinde delikli kâğıt yönlendirme şeridi kullanarak yazdırması mümkün olacaktır. Daha fazla düşünmeden sonra ek bilgiye ihtiyaç duyarsa, başka bir yönlendirme şeridi bunu sağlayacaktır.

Bu, döngü durmalarının zorluğunun ele alınabileceği bir yolu göstermektedir. Programcının programı için bir zaman tahmini sağlaması zorunlu olacaktır. (Matris tersleme gibi, veriye bağlı olan standart programlar için bu, girdi sırasında bir ara işlemle hesaplanacaktır. Programcı bir tahmin vermeyi ihmal ederse, bir saniyelik standart bir tahmin kullanılabilir.) Director, her programda harcanan sürenin kaydını tutacak ve tahmin, örneğin iki katı kadar aşılırsa, bunu bir program hatası olarak ele alacaktır.

Olayların normal akışında, satır yazıcı ve diğer hızlı girdi/çıktı aygıtları, ilişkili manyetik bant birimleriyle birlikte, çevrimdışıymış gibi kullanılacaktır.

Bu yolla, makinenin normal çalışması sırasında birkaç operatör aynı anda makineyi kullanmaktadır. Bu operatörlerin her birine makine, ayrı bir makine gibi görünür (elbette gerçek makineden daha küçük ve daha yavaştır). Bununla birlikte, gerekli görüldüğünde tüm makine tek bir büyük ölçekli probleme tahsis edilebilir.

Kilitleme Sorunları

Yukarıda değinilmiş ancak çok kesin bir çözüm bırakılmadan bırakılmış kilitlemelerle bağlantılı bir veya iki güçlük vardır. Varsayımsal makine çerçevesinde bunlar için artık daha ayrıntılı çözümler önermek mümkündür.

Bir değişken programın diğerine müdahale etmesini önlemek için, her programın bellekte kompakt olması gerekir. (Otomatik kodlama kullanılırsa bu oldukça kolay düzenlenir.) Girdi sırasında Director, probleme belleğin kullanılmayan bir bloğunu tahsis eder, ilgili adresleri komutlara ekler ve problemin içinde kalması gereken bellek sınırlarını belirler. Problem çalıştırılırken bu sınırlar iki özel “sınır yazmacı”nda tutulur ve ana belleğin adres yazmacı her kullanıldığında bunlarla karşılaştırılır. İstenen adres programın doğru bölümünde değilse, Director’a bir program hatası bildirilir. Bu karşılaştırma bellekten okuma sürecini yavaşlatmak zorunda değildir. Okuma ile paralel olarak ilerleyebilir ve adres sınırların dışındaysa, aynı sayı yalnızca yeniden belleğe yazılır.

Sınır yazmaçlarını ayarlayan komutlar yalnızca sabit belleğe açıktır ve kontrol taze bir programa aktarıldığında bunları doğru biçimde ayarlamak Director’ın işlevinin bir parçasıdır. Bellek tahsisi böylece Director’ın bir işlevidir. Herhangi bir program kendini kaldırabilir (örneğin sona geldiğinde) ancak hiçbir değişken program başka birini kaldıramaz. Yalnızca Director bir programı zorla kaldırabilir ve bunu da yalnızca bir program hatası varsa (örneğin sınırları dışındaki bir sayıya çağrı) ya da program zaman sınırını aşarsa yapar.

Sabit programların (örneğin manyetik bant için olanların) bir değişken programa ait belleğin bir bölümünü kullanması gerektiğinde, bunlar (ya da Director) ilk girişte, kullanmaları istenen bellek bölümünün izin verilebilir olup olmadığını denetleyecektir. Ayrıca manyetik banda veri blokları aktarılırken geçici bir kilitleme sağlamak da arzu edilir (bkz. bölüm 3). Bu, ana bellekteki sözcüklerde bir eşlik (parite) denetim biti varsa oldukça zarif biçimde yapılabilir. Öneri, ana bilgisayarı (ancak manyetik bant sabit programını değil) kilitlemek gerektiği süre boyunca eşlik bitinin ters çevrilmesidir. Bu, ana bellekte ters çevrilmiş eşlikle okuma ve yazma için (yalnızca sabit bellekten erişilebilir) komutlar sağlanmasını gerektirir. Ana programın ters eşlikli bir sözcüğü okuma girişimi, (tüm hata göstergelerinin yol açtığı gibi) Director’da bir diziye yol açacaktır. Bu, söz konusu adresi içeren bir manyetik aktarımın sürüp sürmediğini belirleyecektir. Eğer sürüyorsa ana programı geciktirecek; değilse bir bellek hatası sinyali verecektir.

Sonuç

Yukarıda tanımlanan sistemin genel amacı, zaman paylaşımı yapan çeşitli işlemleri mümkün olduğunca birbirinden ayırmak, bunu yaparken de tüm makineyi tek bir birim olarak çalıştırma olanağını korumaktır. Bunun sonucunda ortaya çıkan avantajlar; birincisi, çevre birimleri daha basit olduğu için daha ucuz bir makine; ikincisi, daha süreklilik gösterdiği için makinenin daha verimli kullanımı; ve son olarak, yalnızca Director’ı yeniden yazarak çok büyük bir masrafa girmeden çeşitli zaman paylaşımı düzenlerinin denenebilmesi sayesinde, oldukça daha fazla esnekliktir.

EK

Director’ın İşlevleri

  1. Öncelik değiştirme dizileri

a) Daha yüksek önceliğe geçerken

  • Mevcut kontrol numarasını ve önceliği sakla.
  • Kesintiye uğrayan program için gerekli olduğu ölçüde akümülatörleri, değiştiricileri vb. kopyala. Kullanılan depolama yazmaçları kesintiye giren programa tahsis edilir.
  • Bellek adres sınır yazmaçlarını değiştir.
  • Kesintiye giren programa gir.

b) Daha düşük önceliğe geçerken (yani “bekle” emrinde)

  • Akümülatörleri, değiştiricileri vb., kontrol numarasını, bellek adres sınır yazmacını geri yükle.
  • Programa girmeye hazırlan. Eğer daha yüksek öncelikli başka bir kesinti hâlâ yürürlükteyse, bunun yerine uygun diziye gir.

  • Girdi sırasında belleğin tahsisini düzenlemek ve program sonunda belleği serbest bırakmak.

  • Kontrol edilen programcılar için (ve muhtemelen diğerleri için) zamanı tutmak.

  • Beklenmeyen taşmalar, yasaklı bellek başvuruları, var olmayan emirler ya da diğer hatalı komutlar meydana gelirse, bunları bir program hatası olarak ele almak.

  • Makine hataları ve güç kesintisi için özel işlemler.

  • Ana konsoldaki izleme yazdırmasını denetlemek.

Yalnızca Sabit Belleğe Açık Olan Emirler

  • Özel çalışma belleğine erişim
  • Sınır yazmaçlarını ayarlama
  • Ana bellekte ters eşlikle okuma ve yazma
  • Çevre birimlerini çalıştırma
  • Manyetik bant birimlerindeki mekanik kilitlemeleri çalıştırma

Director için Geçici Öncelik Listesi

Yüksek Öncelik

  • Güç kesintisi
  • Makine arızası
  • Director öncelik değiştirme dizileri
  • Manyetik bant okuma/yazma
  • Satır yazıcı
  • Kâğıt şerit girdisi
  • İzleme yazdırması
  • Çıktı ve ölüm sonrası yazdırma
  • Diğer Director işlevleri
  • Mühendis testleri
  • Elle program testi
  • Kısa süreli programlar

Düşük Öncelik

  • Temel yük programı

Bunları çeşitli gruplara ayırmak, hatta bir programın önceliğinin Director tarafından belirlenmesine izin vermek arzu edilebilir.