time(7)

الاسم
time - نظرة عامة على الوقت والمؤقتات

الوصف

  الوقت الحقيقي ووقت العملية
يُعرّف الوقت الحقيقي بأنه الوقت المُقاس من نقطة ثابتة معينة، إما من نقطة معيارية في الماضي (انظر وصف الحقبة والوقت التقويمي أدناه)، أو من نقطة ما (مثل البداية) في عمر العملية (الوقت المنقضي).

يُعرّف وقت العملية بأنه مقدار وقت وحدة المعالجة المركزية (CPU) المستخدم بواسطة عملية. يُقسم هذا أحيانًا إلى مكونات مستخدم و نظام. وقت CPU للمستخدم هو الوقت المُنفق في تنفيذ الكود في وضع المستخدم. وقت CPU للنظام هو الوقت المُنفق بواسطة النواة في تنفيذ وضع النظام نيابة عن العملية (مثل تنفيذ استدعاءات النظام). يمكن استخدام الأمر time(1) لتحديد مقدار وقت CPU المُستهلك أثناء تنفيذ برنامج. يمكن للبرنامج تحديد مقدار وقت CPU الذي استهلكه باستخدام times(2) أو getrusage(2) أو clock(3).

  ساعة الأجهزة
معظم الحواسيب تحتوي على ساعة أجهزة (تعمل بالبطارية) يقرؤها النواة عند وقت الإقلاع من أجل تهيئة ساعة البرمجيات. لمزيد من التفاصيل، انظر rtc(4) و hwclock(8).

  ساعة البرمجيات، HZ، و jiffies
دقة استدعاءات النظام المختلفة التي تُضبط مهلات زمنية (مثل select(2) و sigtimedwait(2)) وتقيس وقت CPU (مثل getrusage(2)) محدودة بدقة ساعة البرمجيات، وهي ساعة تُحافظ عليها النواة وتقيس الوقت بوحدات jiffies. يُحدد حجم jiffy بقيمة الثابت النووي HZ.

تختلف قيمة HZ عبر إصدارات النواة ومنصات الأجهزة. على i386 الوضع كالتالي: على النوى حتى Linux 2.4.x شاملاً، كانت HZ تساوي 100، مما يعطي قيمة jiffy تبلغ 0.01 ثانية؛ بدءًا من Linux 2.6.0، رُفعت HZ إلى 1000، مما يعطي jiffy تبلغ 0.001 ثانية. منذ Linux 2.6.13، قيمة HZ هي معلمة تهيئة للنواة ويمكن أن تكون 100 أو 250 (المبدئي) أو 1000، مما ينتج قيم jiffies تبلغ على التوالي 0.01 أو 0.004 أو 0.001 ثانية. منذ Linux 2.6.20، يتوفر تردد إضافي: 300، وهو رقم يقبل القسمة بالتساوي لمعدلات الإطارات الفيديو الشائعة (PAL، 25 هرتز؛ NTSC، 30 هرتز).

استدعاء النظام times(2) هو حالة خاصة. يُبلغ عن الأوقات بدقة حبيبية مُعرّفة بواسطة الثابت النووي USER_HZ. يمكن لتطبيقات مساحة المستخدم تحديد قيمة هذا الثابت باستخدام sysconf(_SC_CLK_TCK).

  ساعات النظام والعملية؛ مساحات أسماء الوقت
تدعم النواة مجموعة من الساعات التي تقيس أنواعًا مختلفة من الوقت المنقضي والافتراضي (أي وقت CPU المُستهلك). تُوصف هذه الساعات في clock_gettime(2). بعض الساعات قابلة للضبط باستخدام clock_settime(2). قيم بعض الساعات مُظللة بواسطة مساحات أسماء الوقت؛ انظر time_namespaces(7).

  مؤقتات عالية الدقة
قبل Linux 2.6.21، كانت دقة استدعاءات النظام للمؤقت والنوم (انظر أدناه) محدودة أيضًا بحجم jiffy.

منذ Linux 2.6.21، يدعم Linux مؤقتات عالية الدقة (HRTs)، قابلة للتكوين اختياريًا عبر CONFIG_HIGH_RES_TIMERS. على نظام يدعم HRTs، لم تعد دقة استدعاءات النظام للنوم والمؤقت مقيدة بـ jiffy، بل يمكن أن تكون دقيقة بقدر ما تسمح به الأجهزة (دقة ميكروثانية نموذجية للأجهزة الحديثة). يمكنك تحديد ما إذا كانت المؤقتات عالية الدقة مدعومة عن طريق التحقق من الدقة التي يُرجعها استدعاء clock_getres(2) أو النظر إلى إدخالات "resolution" في /proc/timer_list.

لا تُدعم HRTs على جميع بنى الأجهزة. (يُوفر الدعم على x86 و ARM و PowerPC، من بين أخرى.)

  الحقبة
تمثل أنظمة UNIX الوقت بالثواني منذ الحقبة، 1970-01-01 00:00:00 +0000 (UTC).

يمكن للبرنامج تحديد الوقت التقويمي عبر ساعة clock_gettime(2) CLOCK_REALTIME، التي تُرجع الوقت (بالثواني والنانوثانية) المنقضي منذ الحقبة؛ يُوفر time(2) معلومات مماثلة، ولكن بدقة لأقرب ثانية فقط. يمكن تغيير وقت النظام باستخدام clock_settime(2).

  الوقت المُفصل
تستخدم بعض دوال المكتبة بنية من النوع tm لتمثيل الوقت المُفصل، الذي يُخزن قيمة الوقت مفصولة إلى مكونات متميزة (سنة، شهر، يوم، ساعة، دقيقة، ثانية، إلخ). تُوصف هذه البنية في tm(3type)، الذي يصف أيضًا دوال التحويل بين الوقت التقويمي والوقت المُفصل. تُوصف دوال التحويل بين الوقت المُفصل وتمثيلات السلسلة القابلة للطباعة للوقت في ctime(3) و strftime(3) و strptime(3).

  النوم وضبط المؤقتات
تسمح استدعاءات النظام والدوال المختلفة لبرنامج بالنوم (تعليق التنفيذ) لفترة زمنية محددة؛ انظر nanosleep(2) و clock_nanosleep(2) و sleep(3).

تسمح استدعاءات النظام المختلفة لعملية بضبط مؤقت ينتهي في نقطة ما في المستقبل، واختياريًا على فترات متكررة؛ انظر alarm(2) و getitimer(2) و timerfd_create(2) و timer_create(2).

  تساهل المؤقت
منذ لينكس 2.6.28، أصبح من الممكن التحكم بقيمة "التراخي المؤقت" (timer slack) لخيط. التراخي المؤقت هو مقدار الوقت الذي قد يؤخر به النواة إيقاظ استدعاءات نظام معينة تمنع مع مهلة. السماح بهذا التأخير يمكن النواة من دمج أحداث الإيقاظ، مما قد يقلل عدد مرات إيقاظ النظام ويوفر الطاقة. لمزيد من التفاصيل، انظر وصف PR_SET_TIMERSLACK في prctl(2).

انظر أيضًا
date(1)، time(1)، timeout(1)، adjtimex(2)، alarm(2)، clock_gettime(2)، clock_nanosleep(2)، getitimer(2)، getrlimit(2)، getrusage(2)، gettimeofday(2)، nanosleep(2)، stat(2)، time(2)، timer_create(2)، timerfd_create(2)، times(2)، utime(2)، adjtime(3)، clock(3)، clock_getcpuclockid(3)، ctime(3)، ntp_adjtime(3)، ntp_gettime(3)، pthread_getcpuclockid(3)، sleep(3)، strftime(3)، strptime(3)، timeradd(3)، usleep(3)، rtc(4)، time_namespaces(7)، hwclock(8)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.