Bağlam değiştirme, işletim sistemi tarafından, sistemdeki CPU'ları kullanarak işlevini yürütmek üzere bir işlemi bir durumdan diğerine geçirmek için kullanılan bir teknik veya yöntemdir. Sistemde işlem değiştirildiğinde, eski çalışan işlemin durumunu kayıtlar biçiminde saklar ve CPU'yu, görevlerini yerine getirmesi için yeni bir işleme atar. Sistemde yeni bir süreç çalışırken önceki sürecin hazır kuyruğunda beklemesi gerekir. Eski sürecin yürütülmesi, başka bir sürecin onu durdurduğu noktada başlar. Sistemde ek işlemcilere ihtiyaç duymadan birden fazla görevi gerçekleştirmek için birden fazla işlemin aynı CPU'yu paylaştığı, çok görevli bir işletim sisteminin özelliklerini tanımlar.
önemli
Bağlam değiştirme ihtiyacı
Bağlam değiştirme, yürütmeyi tamamlamak ve sistemin görev durumunu depolamak için tek bir CPU'nun tüm işlemler arasında paylaşılmasına yardımcı olur. İşlem sisteme yeniden yüklendiğinde çakışmanın olduğu noktada işlemin yürütülmesi başlar.
İşletim sisteminde bağlam değiştirme ihtiyacını açıklayan nedenler aşağıdadır.
- Bir prosesin diğer prosese geçişi doğrudan sistem içerisinde gerçekleşmez. Bağlam değiştirme, çoklu işlemler arasında geçiş yapan işletim sisteminin, görevlerini gerçekleştirmek ve bağlamını depolamak için CPU'nun kaynağını kullanmasına yardımcı olur. Sürecin hizmetine daha sonra aynı noktada devam edebiliriz. Halihazırda çalışan işlemin verilerini veya içeriğini saklamazsak, işlemler arasında geçiş yaparken depolanan veriler kaybolabilir.
- Yüksek öncelikli bir süreç hazır kuyruğuna düşerse, o anda çalışmakta olan süreç sistemdeki görevlerini tamamlamak için yüksek öncelikli bir süreç tarafından kapatılacak veya durdurulacaktır.
- Çalışan herhangi bir işlem sistemde G/Ç kaynakları gerektiriyorsa, mevcut işlem CPU'ları kullanmak için başka bir işlemle değiştirilecektir. Ve G/Ç gereksinimi karşılandığında eski süreç CPU'da yürütülmesini beklemek üzere hazır duruma geçer. Bağlam değiştirme, bir işletim sistemindeki görevlerini sürdürmek için sürecin durumunu saklar. Aksi takdirde, sürecin yürütmesini başlangıç seviyesinden yeniden başlatması gerekir.
- İşletim sisteminde bir işlemi çalıştırırken herhangi bir kesinti meydana gelirse, işlem durumu bağlam değiştirme kullanılarak kayıtlar olarak kaydedilir. Kesintileri çözdükten sonra işlem, daha sonra işletim sisteminin kesintiye uğradığı aynı noktada yürütülmesine devam etmek için bekleme durumundan hazır durumuna geçer.
- Bağlam değiştirme, tek bir CPU'nun herhangi bir ek işlemciye ihtiyaç duymadan birden fazla işlem isteğini aynı anda işlemesine olanak tanır.
Bağlam Değiştirme Örneği
Bir İşlem Kontrol Bloğunda (PCB) birden fazla işlemin depolandığını varsayalım. Bir süreç, CPU kullanımıyla görevini yürütmek için durumu çalıştırıyor. İşlem çalışırken, CPU kullanarak görevini tamamlamada yüksek önceliğe sahip olan başka bir işlem hazır kuyruğuna gelir. Burada mevcut süreci CPU'nun görevlerini tamamlamasını gerektiren yeni süreçle değiştiren bağlam değiştirmeyi kullandık. Süreç değiştirilirken, bağlam anahtarı eski sürecin durumunu kayıtlara kaydeder. İşlem CPU'ya yeniden yüklendiğinde, yeni işlem eski işlemi durdurduğunda işlemin yürütülmesine başlar. Sürecin durumunu kaydetmezsek, yürütülmesine başlangıç seviyesinde başlamamız gerekir. Bu şekilde bağlam değiştirme, işletim sisteminin işlemler arasında geçiş yapmasına, görevlerin yürütülmesi gerektiğinde işlemi depolamasına veya yeniden yüklemesine yardımcı olur.
Bağlam değiştirme tetikleyicileri
Aşağıda üç tür bağlam değiştirme tetikleyicisi yer almaktadır.
- Kesintiler
- Çoklu görev
- Çekirdek/Kullanıcı anahtarı
Kesintiler : Bir CPU, verilerin bir diskten okunmasını ister ve herhangi bir kesinti olması durumunda, bağlam değiştirme otomatik olarak donanımın, kesintileri işlemek için daha az zaman gerektiren bir bölümünü değiştirir.
dize değiştirme java
Çoklu görev : Bağlam değiştirme, başka bir işlemin çalıştırılabilmesi için işlemin CPU'dan değiştirilmesine olanak tanıyan çoklu görev özelliğidir. İşlem değiştirilirken, sistemin aynı noktasında işlemin yürütülmesine devam etmek için eski durum kaydedilir.
Çekirdek/Kullanıcı Anahtarı : İşletim sistemlerinde kullanıcı modu arasında geçiş yapılırken kullanılır ve çekirdek/kullanıcı modu gerçekleştirilir.
PCB nedir?
PCB (Proses Kontrol Bloğu), işletim sisteminde prosesle ilgili tüm verileri depolamak için kullanılan bir veri yapısıdır. Örneğin işletim sisteminde bir proses oluşturulduğunda prosese ait bilgilerin güncellenmesi, prosese ait bilgilerin değiştirilmesi, PCB'de prosesin sonlandırılması.
Bağlam Değiştirme Adımları
Süreçlerin bağlam değişimini içeren birkaç adım vardır. Aşağıdaki diyagram, PCB'nin hazır kuyruğunda bir kesinti, G/Ç ihtiyacı veya öncelik bazlı işlem meydana geldiğinde P1'den P2'ye iki işlemin bağlam geçişini temsil eder.
çoklu tablo sql'yi seçin
Diyagramda da görebileceğimiz gibi, başlangıçta CPU üzerinde görevini yürütmek üzere P1 işlemi çalışıyor, aynı anda başka bir işlem olan P2 de hazır durumda. Bir hata veya kesinti meydana gelirse veya süreç giriş/çıkış gerektiriyorsa, P1 süreci çalışma durumunu bekleme durumuna geçirir. P1 işleminin durumunu değiştirmeden önce bağlam değiştirme, P1 işleminin içeriğini kayıtlar ve program sayacı biçiminde kaydeder. PCB1 . Bundan sonra P2 işleminin durumunu hazır durumdan yükler. PCB2 çalışma durumuna.
P1 Sürecini Süreç 2'ye geçirirken aşağıdaki adımlar gerçekleştirilir:
- İlk olarak, bu bağlam değiştirmenin, P1 prosesinin durumunu program sayacı ve yazmaçlar biçiminde çalışma durumundaki PCB'ye (Program Sayacı Bloğu) kaydetmesi gerekir.
- Şimdi PCB1'i P1 prosesi için güncelleyin ve prosesi hazır kuyruğu, G/Ç kuyruğu ve bekleme kuyruğu gibi uygun kuyruğa taşıyın.
- Bundan sonra başka bir süreç çalışıyor durumuna geçer veya hazır durumdan yürütülecek yeni bir süreç seçebiliriz veya sürecin görevini yürütmek için yüksek önceliği vardır.
- Şimdi seçilen P2 prosesi için PCB'yi (Proses Kontrol Bloğu) güncellememiz gerekiyor. İşlem durumunun hazır durumdan çalışıyor durumuna veya engellenmiş, çıkış veya askıya alma gibi başka bir durumdan değiştirilmesini içerir.
- Eğer CPU zaten P2 işlemini yürütüyorsa, sistem kesintisinin gerçekleştiği zaman noktasında yürütmeye devam etmek için P2 işleminin durumunu almamız gerekir.
Benzer şekilde, P1 işleminin devam edebilmesi için P2 işlemi CPU'dan kapatılır. P1 prosesi PCB1'den tekrar çalışır duruma getirilerek aynı noktada görevine devam edilir. Aksi takdirde bilgiler kaybolur ve işlem tekrar çalıştırıldığında başlangıç seviyesinde çalışmaya başlar.