Önalım (bilgi işlem) - Preemption (computing)

Gelen bilgi işlem , önalım geçici eylemidir kesintiye bir yürütme görevi daha sonra bunu sürdürme niyetiyle. Bu kesinti, görevden herhangi bir yardım veya işbirliği olmaksızın harici bir zamanlayıcı tarafından yapılır . Bu önleyici planlayıcı genellikle en ayrıcalıklı koruma halkasında çalışır , yani kesinti ve devam ettirme son derece güvenli eylemler olarak kabul edilir. Bir işlemcinin şu anda yürütülen görevindeki böyle bir değişiklik, bağlam değiştirme olarak bilinir .

Kullanıcı modu ve çekirdek modu

Herhangi bir sistem tasarımında, sistem tarafından gerçekleştirilen bazı işlemler öncelikli olmayabilir. Bu genellikle , tamamlanmasına izin verilmezse , kilitlenmeye neden olan yarış koşulları üretme eğiliminde olan çekirdek işlevleri ve hizmet kesintileri için geçerlidir . Zamanlayıcının, çekirdek işlevlerini işlerken görevleri önceden almasını engellemek, sistemin yanıt verme süresi pahasına çekirdek tasarımını basitleştirir . Sistem içindeki ayrıcalık seviyesini belirleyen kullanıcı modu ve çekirdek modu arasındaki ayrım , bir görevin şu anda öncelikli olup olmadığını ayırt etmek için de kullanılabilir.

Çoğu modern işletim sistemi, görevlerin çekirdek modundayken bile önceden alınmasına izin vermek için tasarlanmış önleyici çekirdeklere sahiptir. Bu tür işletim sistemlerine örnekler Solaris 2.0/SunOS 5.0, Windows NT , Linux çekirdeği (2.5.4 ve daha yenisi), AIX ve bazı BSD sistemleridir ( sürüm 5'ten beri NetBSD ).

Önleyici çoklu görev

Terimi, önleyici görevli bir ayırt etmek için kullanılan , çok görevli işletim sisteminin bir mesafede, görevlerin preemption izin verir, ortak çoklu görev işlemleri veya görevleri açık bir şekilde programlanmalıdır olup, burada sistemin elde bunlar sistem kaynaklarını gerekmez zaman.

Basit bir ifadeyle: Önleyici çoklu görev, o anda yürütülen işlemi askıya alan ve bir sonraki işlemin hangi işlemin yürütüleceğini belirlemek için bir zamanlayıcıyı çağıran bir kesme mekanizmasının kullanımını içerir . Bu nedenle, tüm işlemler herhangi bir zamanda bir miktar CPU zamanı alacaktır.

Önleyici çoklu görevde , işletim sistemi çekirdeği ayrıca , zamanlama ilkesinin öncelik kısıtlamasını karşılamak için bir bağlam anahtarı başlatabilir ve böylece etkin görevi önleyebilir . Genel olarak, ön alım, "önceden el konulması" anlamına gelir. Bu durumda yüksek öncelikli görev, o anda çalışan görevi ele geçirdiğinde, önleyici zamanlama olarak bilinir.

"Önleyici çoklu görev" terimi bazen, amaçlanan anlam daha spesifik olduğunda, bunun yerine zaman paylaşımlı zamanlama veya zaman paylaşımı olarak bilinen zamanlama politikaları sınıfına atıfta bulunarak yanlışlıkla kullanılır .

Önleyici çoklu görev, bilgisayar sisteminin her işlemin düzenli bir çalışma süresi "dilim"ini daha güvenilir bir şekilde garanti etmesini sağlar. Ayrıca sistemin, bir veya başka bir işlemin derhal ilgilenilmesini gerektirebilecek gelen veriler gibi önemli dış olaylarla hızlı bir şekilde ilgilenmesini sağlar.

Herhangi bir zamanda, süreçler iki kategoriye ayrılabilir: girdi veya çıktı bekleyenler (" G/Ç bağlantılı " olarak adlandırılır) ve CPU'yu tam olarak kullananlar (" CPU bağlantılı "). Erken sistemlerde, süreçler genellikle istenen girişi (disk, klavye veya ağ girişi gibi) beklerken " yoklama " veya " meşgul-bekleme " yapardı . Bu süre boyunca, süreç yararlı işler yapmıyordu, ancak yine de CPU'nun tam kontrolünü elinde tutuyordu. Kesintilerin ve önleyici çoklu görevlerin ortaya çıkmasıyla, bu G/Ç'ye bağlı işlemler, gerekli verilerin gelişini bekleyen diğer işlemlerin CPU'yu kullanmasına izin vererek "engellenebilir" veya beklemeye alınabilir. İstenen verilerin gelmesi bir kesinti oluşturacağından, engellenen işlemlerin zamanında yürütmeye dönüşü garanti edilebilir.

Çoklu görev teknikleri orijinal olarak birden fazla kullanıcının tek bir makineyi paylaşmasına izin vermek için geliştirilmiş olsa da, kullanıcı sayısından bağımsız olarak çoklu görevin yararlı olduğu kısa sürede anlaşıldı. Ana bilgisayarlardan tek kullanıcılı kişisel bilgisayarlara ve kullanıcısız kontrol sistemlerine ( robot uzay gemilerindekiler gibi ) kadar birçok işletim sistemi, çeşitli nedenlerle çoklu görev desteğinin yararlılığını kabul etmiştir. Çoklu görev, tek bir kullanıcının aynı anda birden fazla uygulamayı çalıştırmasını veya bilgisayarın kontrolünü elinde tutarken "arka plan" işlemlerini çalıştırmasını mümkün kılar.

Zaman dilimi

Önleyici bir çoklu görev sisteminde bir işlemin çalışmasına izin verilen süreye genellikle zaman dilimi veya kuantum denir . Zamanlayıcı, çalıştırılacak bir sonraki işlemi seçmek için her zaman diliminde bir kez çalıştırılır. Her bir zaman diliminin uzunluğu, sistem performansı ile süreç yanıt verebilirliğini dengelemek için kritik olabilir - zaman dilimi çok kısaysa, zamanlayıcı çok fazla işlem süresi tüketir, ancak zaman dilimi çok uzunsa, süreçlerin yanıt vermesi daha uzun sürer. giriş.

İşletim sistemi çekirdeğinin , zaman dilimleri sona erdiğinde işlemler arasında geçiş yapmasına izin vermek için bir kesinti planlanır; bu , işlemcinin zamanının bir dizi görev arasında paylaşılmasına etkin bir şekilde izin vererek, bu görevlerle paralel olarak (eşzamanlı olarak) uğraştığı yanılsamasını verir. Böyle bir tasarımı kontrol eden işletim sistemine çok görevli sistem denir.

Sistem desteği

Bugün, Windows , macOS , Linux ( Android dahil ) ve iOS'un mevcut sürümleri de dahil olmak üzere, hemen hemen tüm işletim sistemleri, önleyici çoklu görevi destekler .

Önleyici çoklu görev özelliğine sahip ev kullanıcıları için mevcut olan en eski işletim sistemlerinden bazıları Sinclair QDOS (1984) ve Amiga OS (1985) idi. Bunların ikisi de bellek yönetimi olmadan Motorola 68000 ailesi mikroişlemcilerinde çalışıyordu . Amiga OS , tüm işlemleri önceden aynı düz adres alanında çoklu görev yapmak için yeniden konumlandırılabilir kod bloklarının ( Amiga jargonunda " parçalar ") dinamik yüklemesini kullandı .

MS-DOS ve PC DOS gibi erken PC işletim sistemleri çoklu görevi hiç desteklemiyordu, ancak MP/M-86 (1981) ve Eşzamanlı CP/M-86 gibi alternatif işletim sistemleri önleyici çoklu görevi destekliyordu. MINIX ve Coherent dahil olmak üzere diğer Unix benzeri sistemler , 1980'lerin kişisel bilgisayarlarında önleyici çoklu görev sağladı.

Doğal olarak önleyici çoklu görev/çoklu iş parçacığını destekleyen sonraki DOS sürümleri arasında Eşzamanlı DOS , Çok Kullanıcılı DOS , Novell DOS (daha sonra Caldera OpenDOS ve DR-DOS 7.02 ve üstü olarak adlandırılır) bulunur. Concurrent DOS 386'dan bu yana , sanal DOS makinelerinde aynı anda birden çok DOS programını çalıştırabilirler .

Önleyici multitasking sınırlı formunu desteklemek için Windows'un ilk sürümü olan Windows / 386 2.0 kullanılmış, Intel 80386 'in sanal 8086 modu DOS uygulamaları çalıştırmak için sanal 8086 makinelerinde preempted olabilir genellikle 'DOS kutuları' olarak bilinen, . Olarak Windows 95, 98 ve Me , bir 32-bit uygulamaları ayrı bir adres alanı, her biri çalıştırarak önleme amaçlı yapılmıştır, fakat 16-bit uygulamalar geriye dönük uyumluluk için işbirliği kalmıştır. Windows 3.1x'te (korumalı mod), çekirdek ve sanal aygıt sürücüleri önceden çalışır, ancak tüm 16 bit uygulamalar önleyici değildir ve aynı adres alanını paylaşır.

Önleyici çoklu görev, Windows NT (tüm sürümler), OS/2 (yerel uygulamalar), Unix ve Unix benzeri sistemler ( Linux , BSD ve macOS gibi ), VMS , OS/360 ve tasarlanmış diğer birçok işletim sistemi tarafından her zaman desteklenmiştir. akademik ve orta-büyük iş pazarlarında kullanım için.

Klasik Mac OS'de bulunan işbirlikçi çoklu görevi önleyici bir modele yükseltme planları olmasına rağmen (ve sınırlı bir anlamda da olsa Mac OS 9'da önleyici bir API mevcuttu ), bunlar Mac OS X (şimdiki adıyla anılıyor ) lehine terk edildi. macOS) , eski Mac System stilinin ve NeXTSTEP'in bir melezi olarak, Mach çekirdeğine dayanan ve kısmen her zaman Unix benzeri önleyici çoklu görev sağlayan BSD'den türetilen bir işletim sistemidir .

Ayrıca bakınız

Referanslar