2012-03-04 19 views
6

Prosesler birbirleriyle nasıl iletişim kurar? Şu ana kadar programla öğrendiğim her şeyi kullanarak, programların çalışması arasında mesajlar göndermek için soketlerin, dosya sistemlerinin ve diğer işlemlerin nasıl yapılacağını açıklayamıyorum.Programlar birbirleriyle nasıl iletişim kurar?

Btw İşletim sisteminize özgü bir şey ekleyecekseniz Linux tabanlı bir işletim sistemi kullanıyorum. Şimdiden teşekkürler. Soru bana yaşları için sinirleniyor. Ayrıca, çekirdeğin bununla bir ilgisi olduğunu tahmin ediyorum.

+1

Aradığın şey "IPC": https://en.wikipedia.org/wiki/Inter-process_communication –

+0

Örneğin bir dosya açmak istediğinizde, örneğin bir OS API kullanarak, paylaşılan bir OS'nin bilgiyi alıp dosyaya yazdığı bellek alanı nedir? Haklı mıyım yoksa tamamen yanlış mıyım? Tekrar teşekkürler. –

+0

Bir dosyayı açtığınızda, OS bu dosyayı (ve arama ve kısaltma gibi birkaç şeyi) okuma ve yazma yeteneği sağlar. İki süreç aynı dosyayı açtığı zaman ve bunun aslında nasıl çalıştığını tam olarak ne anlama geldiği, çekirdeğin uygulama ayrıntılarına bağlıdır ve kullanıcı işlemlerine maruz kalmaz. –

cevap

9

IPC (InterProcess Communication) mekanizmalarının çoğunda, sorunuzun genel cevabı şöyledir: A işleminde, işlemin B işlemine aktarılacak verilerle arabelleğe işaretçiyi ileten çekirdek çağrılır, işlem B çekirdeği çağırır (ya da daha önce bir tampon için bir işaretçi geçen) çekirdeğe bir çağrı bloke edilir a yöntemine veri ile doldurulacak

Bu genel tarif, sockets, pipes, System V message queues sıradan dosyaları vb Görüldüğü gibi için de geçerlidir iletişim maliyeti en az bir bağlam anahtarını içerdiğinden yüksektir. Bir işlemin ikinci işlem tarafından kaydedilen bir işleyiciyi tetikleyen başka bir işleme basit bir bildirim gönderebildiği asenkronize bir IPC mekanizması meydana getirir (sinyale bağlı olarak hiçbir işleyici kaydedilmezse, bu işlemi durduran veya öldüren hiçbir şey yapmaz.)). Büyük miktarda veri aktarımı için System V shared memory numaralı telefonu kullanabilirsiniz, bu durumda iki işlem ana belleğin aynı bölümüne erişebilir. Bu durumda bile, bağlam anahtarlarına da neden olan, System V semaphores gibi bir senkronizasyon mekanizmasının kullanılması gerektiğine dikkat edin.

Bu yüzden, süreçlerin sıklıkla iletişim kurması gerektiğinde, iş parçacıklarını tek bir işlem içinde yapmak daha iyidir.

+0

Teşekkürler. Bu çok mantıklı. Sanırım bir şeylere bakıyordum. Çok detaylı ve açık. Tekrar teşekkürler. –

+1

Konuların her zaman bağlam anahtarlarının sayısını düşürdüğünden emin değilim (iş parçacıklarından çok daha az çekirdeğe sahipseniz kesinlikle değil). İşlemler, Linux'taki süreçler gibi programlanır (çekirdek zamanlayıcı, zamanlama işlerini, çok iş parçacıklı süreçlerin iş parçacıklarını veya tek iş parçacıklı süreçleri). –

İlgili konular