Çok aşamalı programlama
ya da çok aşamalı görevlendirme yapan işletim sistemi eşzamanlı olarak bir sürü işlemi sürdüren bir sistemdir.Çok aşamalı programlama
, işlemcinin her işlemi bir süre için tahsis etmesi ve uygun anda ayırmasını gerektirir. Eğer işlemci bir işlemin sürdürülmesi sırasında ayırmışsa, tekrar başlatılması mümkün olduğunca kolay olacak şekilde yapılmalıdır. İşletim sisteminin bir programın sürdürülmesi için tahsis ya da ayırma sırasında işlemcinin kontrolünü yeniden almasın için iki mümkün yol vardır: # İşlem bir sistem çağrısı yapar(yazılım kesilmesi olarak da bilinir); örnek olarak sabit diskteki bir dosyaya erişme talebi sırasında bir I/O talebi oluşur. # Donanım kesilmesi meydana gelir; örnek olarak klavyede bir tuşa basılır ya da bir zamanlayıcının süresi biter(baraj çok aşamalı görevlendirmesinde kullanılır) Bir işlemin durması ve başka bir işlemin başlaması bağlam değişimi olarak adlandırılır. Çoğu modern işletim sisteminde işlemler birçok alt işlem oluşturabilir. Bu iş parçacıkları kavramına girer. Bir iş parcağı alt işlem olarak görüntülenir yani bir ayırma, bir işlemin kodunun içinde sürdürülen bağımsız dizidir. İş parçacıklarının önemi dağıtılmış ya da istemci-sunucu sistemlerin dizaynında ve bir yazılımın paralel hesaplama sisteminde çalışmasında önemi artar. Çok aşamalı programlama verimi nasıl artırır? == Çoğu bilgisayar programıyla ilişkili işlemlerin arasında ortak özelliklerinin gözlenmesidir yani işlemci devirleriyle giriş/çıkış devirlerinin yer değiştirmesidir. İşlemci devirleri için gereken sürede; işlem yürütülür yani; işlemciyi meşgul eder. Giriş çıkış için gereken sürede işlem, işlemciyi kullanmaz. Bunun yerine ya giriş çıkışı gerçekleştirmek beklenecek ya da giriş çıkış yapılacaktır. Bunun bir örneği, diskteki bir veriyi okumak ya da yazmaktır.Çok aşamalı programlama
nın gelişinden önce, bilgisayarlar tek kullanıcı sistemiyle işletilirdi. Bu tür sistemlerin kullanıcıları bilgisayarın bir kullanıcıya tahsis ettiğine ve işlemcinin kullanıcı veri girdiğinde ya da hata ayıklarken boşta olduğunun farkına çabuk vardılar. Bilgisayar mühendisleri makinenin tüm performansının farklı işlemlerin işlemciyi başka bir işlem giriş çıkış için beklerken kullanmasıyla artırılabileceğinin farkına vardılar. Bir birleşik programlama sisteminde; N kullanıcıları programları t1, t2, ..., tN, ardından toplam zaman tuni bireysel yürütme zamanlarıyla N işlemine servis etmek için(ardışık biçimde) bütün N kullanıcıları böyle olacaktı: : tuni = t1 + t2 + ... + tN. Bununla birlikte, her işlem hem G/Ç hem işlemci devirlerini tüketeceğinden, her işlemin işlemciyi kullandığı zaman tüm işlem yürütme zamanlarının küçük bir bölümü olacaktı. Bu yüzden i işlemi için: :ti (işlemci) ≪ ti (yürütme) olursa ti (işlemci) i işleminin işlemciyi kullandığı zaman veti (yürütme) ise işlem için toplam yürütme zamanı yani işlemci devirleri + giriş çıkış devirleri işlemin tamamlanmasından önce yapılacak. Aslında, genelde bütün işlemci zamanının toplamı, N işlemi tarafından kullanılan, zamanın küçük bir bölümünü nadiren aşan zamandan yürütmeye herhangi bir işlem; : İşlemin başlaması Bir işlem şu şekillerde çalışmaya başlayabilir: * Sistemi çalışmaya başlaması * Kullanıcının yeni bir iş başlatması * İşlem yaratma sistem çağrısının kullanılması Üç durumlu işlem modeli Bir aşağıdaki 3 durumdan birindedir. * ÇALIŞIYOR: İşlem işleniyor. * HAZIR: İşlem, eğer MİB'de yer bulursa çalışmaya hazır. * ASKIDA: İşlem, bir olayın olmasını (örneğin bir girdiyi) bekliyor. Dış bağlantılar * Sunum