SORU
17 ŞUBAT 2009, Salı


Ne 'gerçek', 'kullanıcı' ve 'sys' ortalama çıkış zamanı(1)?

$ time foo
real        0m0.003s
user        0m0.000s
sys         0m0.004s

Bu üç uygulamam kıyaslama ne zaman anlamlı olur?

CEVAP
17 ŞUBAT 2009, Salı


Kullanıcı ve Sys zaman istatistikleri gerçek süreci

Bunlardan biri diğerine benzemiyor. Gerçek gerçek geçen süreyi ifade eder; Kullanıcı ve Sys zaman kullanılan CPU bakınsadece süreci tarafından.

  • Gerçekduvar saati zaman baştan sona zaman arama. Bu zaman dilimleri, diğer işlemler tarafından kullanılan ve süreci bloke geçirdiği süre, örneğin, eğer G/Ç işlemini tamamlamak için bekliyor (varsa) dahil olmak üzere tüm geçen zaman.

  • KullanıcıCPU süresini user-mode code (çekirdek dışında) geçirdiiçindeişlemi. Bu sadece gerçek CPU zaman süreci uygulanmasında kullanılır. Süreci bloke harcıyor, diğer işlemler ve bu rakam doğru sayılmaz.

  • SysCPU süresini süreci içinde çekirdek geçirdi. Bu yürütme CPU süresi sistem çağrıları harcanan anlamına gelirçekirdek içindeyine de, kullanıcı-mekan. çalışan kütüphane kod, aksine 'Kullanıcı', bu sadece CPU zaman süreci tarafından kullanılır. Aşağıda kernel modu hakkında kısa bir açıklama (da 'Gözetmen' modu) ve bir sistem çağrı düzeneği. olarak bilinen bakın

User Sys süreciniz nasıl kullandığını anlatacağım. Bu tüm İşlemciler arasında ise işlemin birden çok iş parçacığı varsa duvar saati Real tarafından bildirilen aşacak potansiyeli olduğunu unutmayın. Not bu çıktı bu rakamlar dahil User Sys tüm alt süreçleri (ve onların soyundan gelenler) de zaman olabilirdi toplanan, örneğin tarafından wait(2) waitpid(2), ancak temel sistem çağrıları dönüş istatistik süreci ve çocuklar ayrı ayrı.

İstatistikler time (1) tarafından bildirilen kökenleri

İstatistikler time tarafından bildirilen çeşitli sistem çağrıları toplandı. 'Kullanıcı' ve 'Sys' özel sistem wait (2) times (2), göre. ''Başlangıç ve bitiş saati gettimeofday (2) çağrı toplanan hesaplanır. gerçek Sistemi sürümüne bağlı olarak, bağlam anahtarlarının sayısı gibi çeşitli istatistikleri de time tarafından toplanmış olabilir.

İşlemcili bir makinede, çok iş parçacıklı bir işlem ya da süreci çocuklara " ayrılan farklı iş parçacıkları veya işlemler paralel olarak çalışabilir kadar geçen süre toplam CPU zamanı daha küçük - olabilir. Ayrıca, zaman istatistikler örneği Gönderen tarafından verilen gösterildiği gibi, farklı kaynaklardan gelen süreleri Çok Kısa çalışan görevler için kaydedilen yuvarlama hataları tabi olabilir, gel bildirdi.

Kullanıcı modu vs Çekirdek ile ilgili kısa bir astar

Unix veya korunan bellek herhangi bir işletim sistemi, 'Kernel' or 'Supervisor' modu CPU çalışabilen privileged mode anlamına gelir. Güvenlik veya istikrarı etkileyebilecek bazı ayrıcalıklı eylemleri sadece CPU bu modda çalışırken yapılabilir; bu eylemleri uygulama kodu için kullanılamaz. Böyle bir eylem bir örnek başka bir işlem adres alanı erişmek için MMU işlemek için olabilir. Normalde user-mode kod olamaz çekirdeği, shared memory talep olmasına ve bu iyi bir neden ile)olabilirya da birden fazla işlem tarafından yazılmış olması. Bu durumda, paylaşılan bellek açıkça güvenli bir mekanizma sayesinde çekirdekten istenen ve her iki süreç açıkça bunu kullanmak için bunu eklemek zorunda.

Ayrıcalıklı mod genellikle 'çekirdek çekirdek bu modda çalışıyor. CPU tarafından yürütülür çünkü' modu olarak adlandırılır Çekirdek moduna geçiş yapmak için çekirdek modunda çalışan CPU anahtarları belirli bir öğretim (genellikle trap) sorunu varve belirli bir konumdan kod çalıştırır atlama tablo düzenlendi.Güvenlik nedenleriyle, çekirdek moduna geçin ve isteğe bağlı kod çalıştırmak edemiyor tuzakları İŞLEMCİ supervisor modda çalışmıyorsa yazılamıyor adreslerinin bir tablo ile yönetilir. Açık tuzak numarası ve adresi ile tuzak atlamak tabloda baktı; çekirdek kontrollü giriş noktaları sonlu bir numarası vardır.

'Sistem' C kütüphanesinde aramaları (özellikle man sayfaları, Bölüm 2'de tarif edildiği gibi) gerçekten C programınızdan diyoruz kullanıcı modu bileşeni var. Perde arkasında, çekirdek, bir veya daha fazla sistem çağrıları g/gibi özel hizmetler yapmak sorun olabilir, ama yine de kullanıcı modunda çalıştırılan kod var. Bu da oldukça Olası doğrudan sorunu bir tuzak için çekirdek modu herhangi bir kullanıcı alan kodu istenirse, ancak gerekebilir yaz bir parçacığın derleme dil için ayarlama kayıtları doğru çağrı. Bir sayfa sistem çağrıları Linux çekirdeği tarafından sağlanan ve kayıtları ayarlamak için kuralları açıklayan here. bulunabilir

'Sys' . hakkında daha fazla

Kod veya kullanıcı Modu Bellek tahsis etmek ya da donanım erişim gibi şeyler (ağ, vs. siler.) şeyler vardır. Bu Çekirdek gözetimi altında ve tek başıma bunları yapabilirim. Yaptığın bazı işlemler (malloc fread/fwritegibi) sonra 'sys' zaman. olarak Çekirdek işlevleri ve bu çağıracağı Bu kadar basit değil ne yazık ki "malloc her çağrı saymış olacak 'sys' zaman" gibi. Çağrı malloc yapacak bazı işlemleri kendi (hala sayılır 'kullanıcı') ve daha sonra bir yerlerde olabilir çağrı işlevi çekirdek (sayılır 'sys'). Çekirdek Ara döndükten sonra, 'kullanıcı' ve ardından malloc kodunuzu dönecektir. biraz daha zamanımız olacak Anahtarı ne zaman olur, ve çekirdek modunda nasıl harcandığını... diyemezsin ki. Kütüphane uygulanmasına bağlıdır. Ayrıca, masum görünen diğer fonksiyonları da yine 'sys' sonra. biraz zaman alacak planda malloc gibi kullanabilirler

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • El SalvaLobo

    El SalvaLobo

    10 Temmuz 2006
  • NLthomas21

    NLthomas21

    20 Mayıs 2008
  • placeboing

    placeboing

    7 Mart 2006