Co to jest „czas systemowy”, gdy w wierszu poleceń jest używany „czas”

10

Używam timedo pomiaru czasu Perlskryptu na standardowym terminalu w Ubuntu 14.04.

Mam czytać , że real timejest czas, stoper; czas, który ja, jako użytkownik, spędzam na przyglądaniu się programowi uruchomionemu od uruchomienia programu do jego zakończenia. Ale ja nie rozumiem, co userlub sysczasowa. Strona timepodręcznika jest co najmniej niejasna.

Chociaż jest nieco jasne, że realczas jest podzielony pomiędzy useri sysnie jest jasne, co reprezentują.

W moim skrypcie porównuję ze sobą [1] C ++ i Perla, aby zobaczyć różnicę i chciałbym wiedzieć, jakie dane faktycznie otrzymuję. Przykładowy wynik to:

real    0m24.198s
user    0m23.120s
sys     0m1.030s

Czy ktoś mógłby wyjaśnić, jaki domyślny format czasu mówi użytkownikowi? Jestem nowicjuszem w Linuksie, więc proszę nie zakładaj za dużo.

[1] Co ciekawe, podczas gdy C ++ jest o wiele szybszy niż Perl w moim teście pod względem realczasu, sysczasy nie różnią się tak bardzo, ponieważ C ++ faktycznie zużywa więcej sysczasu niż Perl. Właśnie dlatego chcę wiedzieć, co one oznaczają

Alrekr
źródło

Odpowiedzi:

15

Z wikipedii :

  • Czas użytkownika a czas systemowy

Termin „czas procesora użytkownika” może na początku być nieco mylący. Dla jasności, całkowity czas procesora jest kombinacją czasu, który procesor (y) spędził (e) na wykonaniu jakiejś akcji dla programu i czasu, jaki procesor (y) spędzili na wykonywaniu wywołań systemowych dla jądra w imieniu programu. Gdy program zapętla się przez tablicę, kumuluje czas procesora użytkownika. I odwrotnie, gdy program wykonuje wywołanie systemowe, takie jak exec lub fork, kumuluje czas procesora systemu.

  • Czas rzeczywisty a czas procesora

Termin „czas rzeczywisty” w tym kontekście odnosi się do upływającego czasu „zegara ściennego”, na przykład przy użyciu stopera. Całkowity czas procesora (czas użytkownika + czas sys) może być większy lub mniejszy od tej wartości. Ponieważ program może poświęcić trochę czasu na oczekiwanie i wcale się nie uruchamiać (w trybie użytkownika lub w trybie systemowym), czas rzeczywisty może być dłuższy niż całkowity czas pracy procesora. Ponieważ program może rozwidlać dzieci, których czasy procesora (zarówno użytkownika, jak i sys) są dodawane do wartości zgłaszanych przez komendę time, całkowity czas procesora może być większy niż czas rzeczywisty.

Konstantinos
źródło
1
Nie rozumiem, jak udało mi się nie znaleźć tego artykułu w Wikipedii. Dziękuję Ci.
Alrekr