Multi-programming ve Multi-tasking Üzerine
Bu yazıda bilgisayarın başlatılma aşamasından kısaca bahsettim. Ayrıca multi-programming ve multi-tasking’in ne olduğundan bahsettim. En son olarakta bu yapılardan dolayı doğan, donanımın iyi yönetilmesi gerekmektedir. Bu yönetim için neler gereklidir bunlardı belirttim.
İçindekiler;
• Başlangıç
• 1- Multi-programming
• 2- Multi-tasking
Başangıç
Bilgisayarın çalışmaya başlaması için (güç düğmesine basılması durumunda), öncelikle başlangıç bir programa ihtiyaç duyulur. Bu program bilgisayar bağlı tüm çevre birimlerini kontrol etmeli ve sistemdeki donanımların kontrolünü sağlayacak yazılım olan işletim sistemini belleğe alıp çalıştırması lazım. Bu başlangıç programına bootstrap program denir. Genelde donanımsal yazılım olarak bulunur. Yani önyüklü olarak donanımla birlikte gelir.
Bu programın işletim sistemini belleğe alıp çalıştırabilmesi için öncelikle bootstrap programı, işletim sistemini çalıştırmalı ve sistemi işletim sistemiyle çalıştırmalı. Bunları yapabilmek içinse işletim sistemi kernel’inin konumunu bilmeli ve onu belleğe yüklemeli. İşletim sistemini çalıştırma işlemine booting denir.
Kernel belleğe alınıp çalıştırıldıktan sonra artık işletim sistemi kontrolü ele alır. Sisteme ve sistemi kullanan kullanıcıya hizmet etmek için hazırdır. İşletim sisteminin sunduğu hizmetlerin bazıları işletim sisteminden bağımsızdır. Yani işletim sistemi çalışmak için bu hizmetlere bağımlı değildir. Bu tarz hizmetler, kernel tarafından booting işlemi sırasında çalıştırılır ve kernel çalıştığı sürece (bilgisayar açık olduğu sürece) çalışmaya devam ederler. Bu programlara system daemons denir. Örneğin LinuX2ta çalışan ilk system daemon programı systemd ‘dir ve bu daemon başka diğer daemon’ları çalıştırır.
İşletim sistemi boot edilip, gerekli hizmetlerin çalışmaya başlamsından sonra işletim sistemi bazı olayların gerçekleşmesini beklemeye başlar.
Eğer çalıştırılacak herhangi bir process yoksa, sistemde hizmet isteyen I/O cihazları yoksa, kullanıcı bilgisayar üzerinde hiçbir şey yapmıyorsa vs. İşletim sistemi bir şeylerin olmasını sessizce beklemeye devam eder. Beklediği bu olaylar (Events) çoğu interrupt’ler ile gerçekleşir. Bu interrupt’lerin bir diğer formu ise trap (Exception)’lerdir. Bunlar yazılım tarafından hata (örn: sıfıra bölme hatası) ile karşılaışılması sonucu üretilen yada kullanıcı programlarının system call olarak isimlendirilen özel işlemler kullanarak işletim sisteminin sunduğu hizmetin gerçekleşmesi sağlamak için üretiği isteklerdir.
1- Multi-programming
Başlamadan önce not: Aşağıda kullanılan CPU terimi işlemciyi kastetmemetedir. İşlemcinin içindeki işlem birimi olan çekirdeği kastetmektedir. Hem çekirdeğe hem de işlemciye de CPU dendiği için anlam karmaşası meydana gelebilir.
İşletim sisteminin en önemli amaçlarından biri birden fazla programın çalışmasını sağlamak ve CPU, I/O cihazları gibi sistemin parçalarını sürekli meşgul etmektir. Kullanıcılar bilgisayarında aynı anda birden fazla programın çalışmasını ister. Multi-programming çalıştırılacak programları organize ederek hem kullanıcının bu isteğini karşılar hemde CPU sürekli çalıştıracak bir programa sahip olacağı için sürekli meşgul olur. Multi-programmed sistemlerde, çalışmakta olan programlara process denir.
Olay işletim sisteminin bellekte aynı anda birden fazla process tutmasıdır. İşletim sistemi bu process’lerden birini seçer ve çalıştırır. Sistemde belleğe alınmış 5 process olduğunu varsayalım. İşletim sistemi bunlardan birini seçer ve çalıştırmaya başlar. Çalıştırdığı process’in beklemeye ihtiyacı varsa o process’i bırakır, başka process seçer ve onu çalıştırır.
2- Multi-tasking
Multi-tasking aslında multi-programming’in temel bir uzantısıdır. Multi-programming aslında birden fazla process’in çalıştırılabilmesidir. Multi-tasking ise bu process’ler arasında sürekli birini bırakıp diğerini çalıştırma işlemidir. Bellekteki tüm process’ler sadece kısa bir süre çalıştırılır ve o process bırakılığ diğer process’e geçilir. Bu kısa zaman diliminde başka şeyler meydana gelebilir. Böylece o process daha erken bırakıladabilir. Örneğin çalışan process kullanıcıdan girdi bekliyor olabilir. Kullanıcının girdi girmesi yaklaşık bir kaç saniyesini alır ancak sistemin milisaniyelerle hatta nanosaniyelerle çalıştığını düşünürsek 1 saniye dahi sistem için çok uzun bir süredir. Bu süre zarfında o process bırakılabilir ve onun yerine başka process seçilebilir. Seçtiği ikinci process’te beklemeye ihtiyaç duyarsa onu bırakır ve diğerine geçer. Bu yapı böyle devam eder.
İşte yukarıdaki bu çalıştırma-bırakma işlemi multi-tasking’dir.
Multi-programming ve multi-tasking yapısı iyi birer yönetim istemektedir. Yani bellekte birden fazla process bulunacağı için belleği iyi yönetmek gerekir (memory management). Ayrıca process’leride yönetmek gerekir (Process management). Sırada hangi process’in çalıştırılacağına karar verme mekanizması gerekir (CPU Scheduling). Multi-programmed sistemler hızlı çalışmalı bunun için sanal bellek mekanizması geliştirilmiştir(Virtual memory). Ayrıca kullanıcıya kolaylık olmaslı açısından dosya sistemi’ne ihtiyaç duyulur (File systems). Dosya sistemleri ikincil depolamayı kullandığı için ikinci depolamanın’da yönetilmesi gerekir (Storage managemenet). Ayrıca sistemde birbirleri ile ilişkili process’ler çalışabilir. Bunlar arasında iletişim ve senkronizayson sağlamak gerekir (Process comminication ve process syncronization). Ayrıca bir process başka bir process’i sonsuza kadar beklemeye düşebilir. Bunu engellemek gerekir (Deadlocks).