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
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
/fwrite
gibi) 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
Alma gerçek zamanlı çıkış alt süreci k...
Çıkış-tek kullanıcı modu...
Nasıl web sitesi, TEMEL kimlik doğrula...
Java gerçek çözüm yolu: 2 dizeleri 2 S...
Neden C varsayılan yapı, sabit bir nes...