SORU
30 NİSAN 2009, PERŞEMBE


İpler vs Linux Süreçleri

Ben zaten son zamanlarda duyduğum bir kaç kişi söylemek Linux, hemen hemen her zaman daha iyi işler için kullanmak yerine konuları, beri Linux çok verimli işleme süreçleri, ve çünkü o kadar çok sorun (kilitleme) ile ilgili konuları. İş parçacığı bazı durumlarda oldukça büyük bir performans artışı verebilir gibi görünüyor, çünkü ancak, şüpheli duyuyorum.

Benim sorum, iş parçacığı ve işlemlerin her ikisi de oldukça iyi başa çıkabileceği bir durum ile karşı karşıya zaman, işlemler veya iş parçacıkları kullanmalıyım? Örneğin, eğer bir web server yazıyor olsam, işlemler veya iş parçacıkları (veya bir kombinasyonu) kullanmalıyım?

CEVAP
30 NİSAN 2009, PERŞEMBE


Linux 1-1 bir iş parçacığı modeli kullanır, (çekirdek) süreçler ve evreler arasındaki ayrım her şey sadece çalıştırılabilir bir iştir. *

Linux üzerinde sistem clone klonlar bir görev, hangi arasında paylaşımı ayarlanabilir seviyesi ile arama:

  • CLONE_FILES: Aynı dosya tanımlayıcı tablosu (yerine bir kopyasını oluşturma paylaşın
  • CLONE_PARENT: yeni görev ve eski arasında ebeveyn-çocuk ilişkisi (aksi takdirde, çocuk getppid() = üst getpid()) ayarlama
  • CLONE_VM: aynı bellek alanını (yerine İNEK bir kopyasını oluşturma)

fork() )pthread_create() clone( )çağrı paylaşımıclone( az paylaşım çağırır. **

forkıng maliyetleri bir nebze daha pthread_createıng nedeniyle kopyalama ve tablo oluşturma İNEK eşleştirmeleri için bellek, ama Linux çekirdeği geliştiricileri çalıştı (ve başarılı) bu maliyetleri en aza indirmek.

Eğer bellek alanı ve çeşitli tablolar paylaşırlar eğer görevler arasında geçiş yapmak, eğer veri önbellek zaten yüklü olabilir, çünkü paylaşılan, değilse daha bir nebze daha ucuz olacak. Ancak, geçiş görevleri ise hiçbir şey paylaşılır bile hala çok hızlı bu çekirdek Linux başka bir şey geliştiriciler sağlamak için deneyin (ve başarılı olmasını sağlayacak).

Aslında, eğer işlemcili bir sistem,değileğer her görev farklı bir işlemci üzerinde çalışıyorsa, senkronizasyon paylaşılan bellek pahalıdır. paylaşım aslında performans için yararlı olabilir:


* Basitleştirilmiş. CLONE_THREAD sinyaller teslimat sinyal işleyicisi masayı paylaşan CLONE_SIGHAND, ihtiyacı olan paylaşılan neden olur.

** Basitleştirilmiş. Var hem SYS_fork SYS_clone sistem çağrıları, ama içinde çekirdek, sys_fork sys_clone Her ikisi de çok ince sargı etrafında aynı do_fork işlev, kendisi bir ince etrafında sarıcı copy_process. Evet, process, thread task oldukça terimleri eş anlamlı olarak kullanılmıştır Linux çekirdeği

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DominicFear

    DominicFear

    30 Kasım 2006
  • Nick Pitera

    Nick Pitera

    8 NİSAN 2006
  • RiceBunny

    RiceBunny

    16 ŞUBAT 2006