Süreç (bilgi işlem) - Process (computing)

Olarak işlem , bir işlem olan , örneğin , bir bir bilgisayar programı , bir veya birçok kişi tarafından yürütülmekte olan parçacıkları . Program kodunu ve etkinliğini içerir. İşletim sistemine (OS) bağlı olarak , bir işlem, talimatları aynı anda yürüten birden çok yürütme iş parçacığından oluşabilir .

Bir bilgisayar programı, tipik olarak diskteki bir dosyada saklanan pasif bir talimatlar topluluğu iken , bir süreç, bu talimatların diskten belleğe yüklendikten sonra yürütülmesidir. Aynı programla birkaç işlem ilişkilendirilebilir; örneğin, aynı programın birkaç örneğini açmak, genellikle birden fazla işlemin yürütülmesiyle sonuçlanır.

Çoklu görev , birden çok işlemin işlemcileri (CPU'lar) ve diğer sistem kaynaklarını paylaşmasına izin veren bir yöntemdir . Her CPU (çekirdek) aynı anda tek bir görevi yürütür . Bununla birlikte, çoklu görev, her işlemcinin, her bir görevin bitmesini beklemek zorunda kalmadan ( önceden alma ) yürütülen görevler arasında geçiş yapmasına olanak tanır . İşletim sistemi uygulamasına bağlı olarak, görevler başlatıldığında ve giriş/çıkış işlemlerinin tamamlanmasını beklediğinde , bir görev gönüllü olarak CPU'yu sağladığında, donanım kesintilerinde ve işletim sistemi zamanlayıcısı bir işlemin süresinin dolduğuna karar verdiğinde anahtarlar gerçekleştirilebilir. CPU zamanı (örn tarafından payı Tamamen Adil Zamanlayıcı ait Linux çekirdeği ).

Ortak bir çoklu görev biçimi, CPU'nun , kullanıcıların süreçlerinin ve iş parçacıklarının ve hatta bağımsız çekirdek görevlerinin yürütülmesini serpiştirmek için bir yöntem olan zaman paylaşımı tarafından sağlanır - ancak ikinci özellik yalnızca Linux gibi önleyici çekirdeklerde uygulanabilir . Önceden almanın, CPU'ya bağlı işlemlere göre daha yüksek öncelik verilen etkileşimli işlemler için önemli bir yan etkisi vardır, bu nedenle kullanıcılara, bir tuşa basit bir şekilde basarak veya bir fareyi hareket ettirirken hemen bilgi işlem kaynakları atanır. Ayrıca, video ve müzik reprodüksiyonu gibi uygulamalara bir tür gerçek zamanlı öncelik verilir ve diğer düşük öncelikli süreçleri ön plana çıkarır. Zaman paylaşımlı sistemlerde, bağlam anahtarları hızlı bir şekilde gerçekleştirilir, bu da aynı işlemci üzerinde aynı anda birden çok işlem yürütülüyormuş gibi görünür. Birden çok işlemin bu eşzamanlı yürütülmesine eşzamanlılık denir .

Güvenlik ve güvenilirlik için çoğu modern işletim sistemi , bağımsız süreçler arasında doğrudan iletişimi engelleyerek , kesin olarak aracılık edilen ve kontrollü süreçler arası iletişim işlevselliği sağlar.

temsil

htop tarafından görüntülenen işlemlerin listesi
KDE System Guard tarafından görüntülenen bir işlem tablosu
KDE System Guard tarafından görüntülenen bir işlem tablosu

Genel olarak, bir bilgisayar sistemi süreç oluşur (veya söylenen kendi ) aşağıdaki kaynaklara:

  • Bir programla ilişkili yürütülebilir makine kodunun görüntüsü .
  • Bellek (tipik olarak sanal belleğin bir bölgesi ); yürütülebilir kodu, sürece özel verileri (giriş ve çıkış), bir çağrı yığınını (etkin alt rutinleri ve/veya diğer olayları takip etmek için) ve çalışma süresi boyunca oluşturulan ara hesaplama verilerini tutmak için bir yığını içerir .
  • Dosya tanımlayıcıları ( Unix terminolojisi) veya tanıtıcılar ( Windows ) ve veri kaynakları ve havuzlar gibi sürece tahsis edilen kaynakların işletim sistemi tanımlayıcıları .
  • İşlem sahibi ve işlemin izinler kümesi (izin verilen işlemler) gibi güvenlik öznitelikleri.
  • Kayıtların içeriği ve fiziksel bellek adreslemesi gibi işlemci durumu ( bağlam ) . Durum işlem yürütülürken tipik olarak bilgisayar kayıt depolanır, aksi takdirde bellekte edilir.

İşletim sistemi, aktif süreçlerle ilgili bu bilgilerin çoğunu süreç kontrol blokları adı verilen veri yapılarında tutar . Kaynakların herhangi bir alt kümesi, tipik olarak en azından işlemci durumu, iş parçacıklarını veya alt işlemleri destekleyen işletim sistemlerindeki işlem iş parçacıklarının her biri ile ilişkilendirilebilir .

İşletim sistemi, işlemlerini ayrı tutar ve ihtiyaç duydukları kaynakları tahsis eder, böylece birbirleriyle etkileşime girme ve sistem hatalarına (örneğin kilitlenme veya thrashing ) neden olma olasılıkları daha düşüktür . İşletim sistemi, süreçlerin güvenli ve öngörülebilir şekillerde etkileşime girmesini sağlamak için süreçler arası iletişim için mekanizmalar da sağlayabilir .

Çoklu görev ve süreç yönetimi

Çok görevli bir işletim sistemi , aynı anda (yani paralel olarak ) yürütülen birçok işlemin görünümünü vermek için işlemler arasında geçiş yapabilir , ancak aslında herhangi bir zamanda tek bir CPU'da yalnızca bir işlem yürütülebilir (CPU'nun birden fazla çekirdeği yoksa , daha sonra çoklu iş parçacığı veya diğer benzer teknolojiler kullanılabilir).

Tek bir süreci bir ana programla ve alt süreçleri, asenkron altyordamlar gibi davranan herhangi bir yan, paralel süreçle ilişkilendirmek olağandır . Bir işlemin kendi kaynaklarına sahip olduğu söylenir ve programın bir görüntüsü (bellekteki) böyle bir kaynaktır. Bununla birlikte, çok işlemli sistemlerde, birçok işlem bellekte aynı yerde aynı yeniden giriş programını kullanabilir veya paylaşabilir , ancak her işlemin kendi program görüntüsüne sahip olduğu söylenir .

İşlemler, gömülü işletim sistemlerinde genellikle "görevler" olarak adlandırılır . "Süreç" (veya görev) anlamı "yer kaplayan bir şey" olan "hafıza"nın aksine "zaman alan bir şeydir".

Yukarıdaki açıklama, hem bir işletim sistemi tarafından yönetilen işlemler hem de işlem hesapları tarafından tanımlanan işlemler için geçerlidir .

Bir süreç beklemesi gereken bir şey talep ederse, engellenir. İşlem engellenmiş durumdayken , diske geçiş için uygundur, ancak bu, bir işlemin belleğinin bölgelerinin herhangi bir zamanda ana bellekte değil de gerçekten diskte olabileceği bir sanal bellek sisteminde şeffaftır . Bölümler yakın zamanda kullanılmadıysa, etkin işlemlerin/görevlerin (programları yürüten) bölümlerinin bile diske değiştirilmeye uygun olduğunu unutmayın. Yürütülen bir programın tüm bölümlerinin ve verilerinin, ilişkili işlemin etkin olması için fiziksel bellekte olması gerekmez.

Süreç durumları

Durumlar arasındaki olası geçişleri gösteren oklarla birlikte bir durum diyagramında görüntülenen çeşitli işlem durumları.

Çoklu görevlere izin veren bir işletim sistemi çekirdeği , süreçlerin belirli durumlara sahip olmasını gerektirir . Bu durumların adları standartlaştırılmamıştır, ancak benzer işlevlere sahiptirler.

  • İlk olarak, işlem ikincil bir depolama aygıtından ( sabit disk sürücüsü , CD-ROM , vb.) ana belleğe yüklenerek "oluşturulur" . Bundan sonra süreç planlayıcı ona "bekleme" durumunu atar.
  • İşlem "beklerken", zamanlayıcının sözde bağlam değiştirme işlemini yapmasını bekler . Bağlam anahtarı, işlemi işlemciye yükler ve durumu "çalışıyor" olarak değiştirirken, önceki "çalışan" işlem "bekleme" durumunda saklanır.
  • "Çalışıyor" durumundaki bir işlemin bir kaynağı beklemesi gerekiyorsa (örneğin, kullanıcı girişi veya dosyanın açılmasını bekleyin), "engellenmiş" duruma atanır. İşlemin artık beklemesi gerekmediğinde (engellenmiş durumda) işlem durumu "bekliyor" olarak değiştirilir.
  • İşlem yürütmeyi bitirdiğinde veya işletim sistemi tarafından sonlandırıldığında artık gerekli değildir. İşlem anında kaldırılır veya "sonlandırıldı" durumuna taşınır. Kaldırıldığında, sadece ana bellekten silinmeyi bekler.

Arası iletişim

Süreçlerin birbirleriyle iletişim kurması gerektiğinde, adres alanlarının bölümlerini paylaşmaları veya süreçler arası iletişimin (IPC) diğer biçimlerini kullanmaları gerekir . Örneğin bir kabuk ardışık düzeninde, ilk işlemin çıktısının ikinciye geçmesi gerekir ve bu böyle devam eder; başka bir örnek, aynı anda çalışabilen (yani, eşzamanlılık veya gerçek paralellik kullanarak) işbirliği yapan ancak kısmen bağımsız süreçlere ayrıştırılabilen bir görevdir - ikinci model, belirli bir eşzamanlı yürütme durumudur ve yeterli CPU çekirdeği mevcut olduğunda mümkündür. çalışmaya hazır tüm işlemler).

Farklı işletim sistemi (OS) çalıştırabilen farklı makinelerde iki veya daha fazla işlemin çalışması bile mümkündür, bu nedenle iletişim ve senkronizasyon için bazı mekanizmalara ( dağıtılmış bilgi işlem için iletişim protokolleri olarak adlandırılır ) ihtiyaç duyulur (örneğin, Mesaj Geçiş Arayüzü, genellikle basitçe MPI olarak adlandırılır ).

Tarih

1960'ların başında, bilgisayar kontrol yazılımı , örneğin IBSYS gibi monitör kontrol yazılımından yönetici kontrol yazılımına dönüştü . Zamanla bilgisayarlar hızlandı, bilgisayar zamanı hala ne ucuz ne de tam olarak kullanıldı; böyle bir ortam çoklu programlamayı mümkün ve gerekli kıldı. Çoklu programlama, birkaç programın aynı anda çalışması anlamına gelir . İlk başta, tek işlemcili bilgisayar mimarisinin bir sonucu olarak, birden fazla program tek bir işlemci üzerinde çalışıyordu ve kıt ve sınırlı donanım kaynaklarını paylaştılar; sonuç olarak, eşzamanlılık seri nitelikteydi. Birden çok işlemciye sahip sonraki sistemlerde, birden çok program aynı anda paralel olarak çalışabilir .

Programlar, işlemciler için talimat dizilerinden oluşur. Tek bir işlemci aynı anda yalnızca bir komut çalıştırabilir: aynı anda daha fazla program çalıştırmak imkansızdır. Bir program , büyük bir gecikmeye sahip bir giriş aygıtı gibi bir kaynağa ihtiyaç duyabilir veya bir program, çıktıyı yazıcıya göndermek gibi bazı yavaş işlemleri başlatabilir. Bu, işlemcinin "boşta" (kullanılmayan) olmasına neden olur. İşlemciyi sürekli meşgul tutmak için böyle bir programın yürütülmesi durdurulur ve işletim sistemi işlemciyi başka bir programı çalıştırmak üzere değiştirir. Kullanıcıya, programların aynı anda çalıştığı görülecektir (dolayısıyla "paralel" terimi).

Kısa bir süre sonra, "program" kavramı "yürüten program ve bağlamı" kavramına genişletildi. Yeniden giriş kodunun icadıyla birlikte gerekli hale gelen bir süreç kavramı doğdu . İpler biraz sonra geldi. Ancak, zaman paylaşımı , bilgisayar ağları ve çok CPU'lu paylaşılan bellekli bilgisayarlar gibi kavramların ortaya çıkmasıyla birlikte, eski "çoklu programlama" gerçek çoklu görev , çoklu işlem ve daha sonra çoklu iş parçacığına yol açtı .

Ayrıca bakınız

Notlar

Referanslar

daha fazla okuma

Dış bağlantılar