Sistemimde çalışma süresi şöyledir /proc/uptime
:
$ strace -eopen uptime
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/libproc-3.2.8.so", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/proc/version", O_RDONLY) = 3
open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3
open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
open("/proc/uptime", O_RDONLY) = 3
open("/var/run/utmp", O_RDONLY|O_CLOEXEC) = 4
open("/proc/loadavg", O_RDONLY) = 4
10:52:38 up 3 days, 23:38, 4 users, load average: 0.00, 0.02, 0.05
Gönderen proc manpage :
/proc/uptime
This file contains two numbers: the uptime of the system
(seconds), and the amount of time spent in idle process
(seconds).
Proc dosya sistemi bir takım sahte dosya içerir. Bunlar gerçek dosyalar değil, sadece dosyalara benziyorlar, ancak doğrudan çekirdek tarafından sağlanan değerleri içeriyorlar. Her dosyayı okuduğunuzda /proc/uptime
, içeriği anında yeniden oluşturulur. Proc dosya sistemi çekirdeğe bir arayüzdür.
Dosyanın linux çekirdek kaynak kodunda fs/proc/uptime.c
de hat 49 , bir işlev çağrısı bkz:
proc_create("uptime", 0, NULL, &uptime_proc_fops);
Bu, (procfs genellikle altına monte edilmiştir ) adı verilen bir proc dosya sistemi girişi oluşturur ve bu sözde dosyadaki geçerli dosya işlemlerini ve bunlarla ilişkili işlevleri tanımlayan bir fonksiyonla ilişkilendirir. Çalışma süresi durumunda bu sadece ve operasyonlar. Eğer iz Ancak, işlevleri sona erecek geri burada çalışma süresi hesaplanır nerede.uptime
/proc
read()
open()
Dahili olarak, sistemlerin çalışma süresini periyodik olarak güncelleyen bir zamanlayıcı kesintisi vardır (diğer değerlerin yanı sıra). Zamanlayıcı-aralığın tıklandığı aralık, HZ
tam değeri çekirdek yapılandırma dosyasında tanımlanmış ve derleme zamanında uygulanan önişlemci makrosu tarafından tanımlanır .
Boşta kalma süresi ve CPU devri sayısı, frekansla HZ
(saniye başına devir) birleştirilerek , son önyüklemeden bu yana (saniye cinsinden) hesaplanabilir.
Sorunuzu ele almak için: “Çalışma süresi” ne zaman saymaya başlar?
Çalışma süresi her döngüyü hızlandıran bir çekirdek iç değeri olduğundan, çekirdek başlatıldığında ne zaman saymaya başlar. Yani, ilk döngü sona erdiğinde. Herhangi bir şey monte edilmeden önce bile, doğrudan bootloader'dan hemen sonra çekirdek imajını kontrol eder.