Süreçler ve Süreçlerin Yönetimi
Süreçler temelde yürütülmekte olan bir program olarak tanımlanır. Süreçler sıralı olarak yürütülmelidir. Bir metin dosyasına bir bilgisayar programı yazdığınızda ve bu programı çalıştırdığınızda, sisteminizde bir süreç haline gelir. Bu süreç, programda belirtilen tüm görevleri yerine getirir. Bir süreç esas olarak dört bölüme ayrılmıştır: Stack, Heap, Text ve Data.
Stack
Stackler fonksiyonlar ve methodların parametreleri gibi geçici dataları tutmakla görevlidir. Adres ve yerel değişkenleri döndürür.
Heap
Heap, belleği, çalışma zamanı sırasında dinamik olarak bir işleme ayırır.
Text
Text, program sayacının değerleriyle temsil edilen mevcut etkinliği ve işlemcinin kaydında depolanan verileri içerir.
Data
Data global ve statik değişkenleri içerir.
Thread Kavramı
Thread süreç kodu aracılığıyla bir yürütme akışı olarak tanımlayabilirsiniz. Thread, program sayacında daha sonra yürütülmesi gereken tüm komutların kaydını tutar. Ayrıca, Threadler, geçerli çalışma değişkenlerini tutan sistem kayıtlarını içerir. Threadler stack, yürütme geçmişini içerir.
Thread, peer Thread ile kod parçasını, veri parçasını ve açık dosyaları paylaşabilir. Bir kod parçası bir Thread tarafından değiştirildiğinde, diğer Threadler bunu görür. Thread aynı zamanda hafif bir süreç olarak da adlandırılır. Paralellik yoluyla uygulamanın performansı iyileştirilebilir. Bir thread tam olarak bir işleme aittir ve threadlerin hiçbiri bir sürecin dışında olamaz. Threadler genellikle web sunucuları ve ağ sunucularının uygulanmasında kullanılır. Temelde iki tür Thread vardır…
Kullanıcı Seviyesinde Thread
Bu seviyedeki thread, thread yönetimi kernel evrelerin varlığından haberdar değildir. Thread kütüphanesi ayrıca threadleri oluşturmak ve yok etmek için kodu tutar. Ayrıca threadler arasında mesaj ve veri geçişi için kod içerir. Kod ayrıca threadlerin yürütmesini zamanlamak ve threadlerin contextini geri yüklemek için de tutulur.
Kernel Seviyesinde Thread
Thread düzeyinde yönetim, kernel tarafından yapılır. Uygulama alanında,Thread yönetimi kodunu bulamazsınız. Doğrudan işletim sistemi tarafından desteklenir. Kernel ayrıca tek tek threadleri ve bir bütün olarak işlemler için context bilgisini korur. Scheduling (Planlama) ayrıca thread temelinde yapılır. Kernel, kernel alanını oluşturmaktan, planlamaktan ve yönetmekten sorumludur.
Scheduling (Planlama)
Scheduling, süreç yöneticisi çalışan süreci CPU’dan kaldırma sorumluluğunu alır, ayrıca belirli bir stratejiye göre başka bir süreci seçer. Multiprogramming için işletim sistemi planlaması önemli bir kısımdır. Bir seferde birden fazla süreç yürütülebilir belleğe yüklenebilir. Süreç, yüklendikten sonra zaman çoğullama kullanarak CPU’yu paylaşır.Süreç planlama kuyruklarında işletim sistemi tüm süreç kontrol bloklarını korur. Süreç durumlarının her biri için işletim sistemi tarafından ayrı bir kuyruk tutulur. Aynı yürütme durumundaki tüm süreçlerin süreç kontrol blokları aynı kuyrukta tutulur. Esas olarak işletim sisteminiz aşağıdaki önemli işlem planlama kuyruğunu korur:
Job queue(İş Kuyruğu)
Tüm süreçlerin sistemde tutulması sorumluluğunu alır.
Ready queue(Hazır Kuyruk)
Ana bellekte, çalıştırılmaya hazır ve bekleyen tüm süreçler bulunur.
Device queues(Cihaz Kuyruğu)
Bu kuyruk, bir I / O cihazının kullanılamaması nedeniyle engellenen işlemleri saklar.
Bellek Yönetimi
Bellek yönetimi, birincil belleği işleyen ve yöneten bir işletim sisteminin işlevselliğini ifade eder. Süreçler, yürütme sırasında ana bellek ile disk arasında ileri geri hareket eder.
Bellek konumları, bellek yönetimi tarafından izlenir. Her seferinde işlemlere ne kadar bellek ayrıldığını kontrol eder. Ayrıca, hangi sürecin ne zaman bellek alacağına da karar verir. Ayrıca, bir bellek serbest kaldığında veya ayrılmadığında durumu günceller. İşletim sistemi, bellek ayırma sırasında mantıksal adresleri fiziksel adreslerle eşler.
Temelde bir programda kullanılan üç tür adres vardır …
Sembolik Adressler
Kaynak kod içerisinde kullanılırlar. Değişken isimleri, sabitler ve komut etiketleri, sembolik adres uzayının temel öğeleridir.
Relative (ilişkili) Adressler
Derleme sırasında, derleyici sembolik adresleri ilişkili adreslere dönüştürür.
Fiziksel Adressler
Yükleyici, program ana belleğe yüklendiğinde bu adresleri oluşturma sorumluluğunu üstlenir.
Inter-Process İletişimi
Bir işletim sisteminde süreçler iki türe ayrılır: Bağımsız(Independent) ve İşbirliği(Cooperating). Bağımsız süreçler, diğer süreçlerin yürütülmesinden etkilenmez. İşbirliği süreci, diğer yürütme sürecinden etkilenir. Bağımsız süreçler verimli bir şekilde yürütülür ve bu durumlarda işbirlikçi yapıları hesaplama hızını, rahatlığını ve modülerliğini artırmak için kullanılır. Bu mekanizmada, süreçlerin birbirleriyle iletişim kurmasına izin verilir. İletişim, aralarında bir işbirliği yöntemi olarak görülüyor.