وقت وحدة المعالجة المركزية

وقت وحدة المعالجة المركزية (أو وقت المعالجة ) هو مقدار الوقت الذي استغرقته وحدة المعالجة المركزية (CPU) لمعالجة مجموعة محددة من تعليمات برنامج حاسوبي أو نظام تشغيل ، وذلك على عكس إجمالي الوقت من البداية إلى النهاية، حيث قد تكون وحدة المعالجة المركزية قد أمضت وقتًا في عمليات أخرى . انظر الشكل. يُقاس وقت وحدة المعالجة المركزية بنبضات الساعة أو الثواني. أحيانًا يكون من المفيد تحويل وقت وحدة المعالجة المركزية إلى نسبة مئوية من سعة وحدة المعالجة المركزية، مما يعطي نسبة استخدام وحدة المعالجة المركزية .
يمكن أن يُشير قياس وقت وحدة المعالجة المركزية لبرنامجين متطابقين وظيفيًا يُعالجان مُدخلات مُتماثلة إلى البرنامج الأسرع، ولكن من المفاهيم الخاطئة الشائعة استخدام وقت وحدة المعالجة المركزية لمقارنة الخوارزميات . فمقارنة البرامج بناءً على وقت وحدة المعالجة المركزية تُقارن تطبيقات مُحددة للخوارزميات. (من المُمكن وجود تطبيقات فعّالة وغير فعّالة لنفس الخوارزمية). أما مقارنة الخوارزميات فتتم عادةً باستخدام مقاييس تعقيد الوقت وتعقيد المساحة .
عادةً، يقيس نظام التشغيل وقت وحدة المعالجة المركزية (CPU) الذي يستخدمه البرنامج، حيث يقوم بتنظيم جميع مهام وحدة المعالجة المركزية. تُشغّل أنظمة التشغيل الحديثة متعددة المهام مئات العمليات ( العملية هي برنامج قيد التشغيل). عند بدء تشغيل عملية ما، يسجل نظام التشغيل الوقت باستخدام مؤقت داخلي. وعند تعليق العملية أو إنهائها، يسجل نظام التشغيل الوقت مرة أخرى. إجمالي الوقت الذي استغرقته العملية في التشغيل هو وقت وحدة المعالجة المركزية الخاص بها، كما هو موضح في الشكل.
وقت المستخدم والنظام
تتضمن عملية "المحاسبة" التي تقوم بها أنظمة تشغيل يونكس عنصرين من وقت وحدة المعالجة المركزية . يعكس وقت المستخدم ووقت النظام حقيقة أن معظم البرامج ترسل طلبات إلى نظام التشغيل أثناء تنفيذها. تتم عمليات الإدخال/الإخراج ، مثل قراءة ملف أو الكتابة على الشاشة، عن طريق إرسال طلبات إلى نظام التشغيل، ربما من خلال استدعاءات النظام . تشكل عمليات الإدخال/الإخراج والعمليات الأخرى التي ينفذها نظام التشغيل نيابةً عن عملية ما، وقت النظام.
- وقت المستخدم هو مقدار الوقت الذي يكون فيه المعالج مشغولاً بتنفيذ التعليمات البرمجية في مساحة المستخدم .
- وقت النظام هو مقدار الوقت الذي ينشغل فيه المعالج بتنفيذ التعليمات البرمجية في مساحة النواة . تمثل هذه القيمة مقدار الوقت الذي تقوم فيه النواة بأداء العمل نيابةً عن العملية قيد التنفيذ.
وبالمثل، فإن أنظمة التشغيل الأخرى مثل مايكروسوفت ويندوز لديها حسابات منفصلة لـ "وقت النواة"، وهو مفهوم مشابه جدًا لـ "وقت النظام".
في المقابل، يُعرَّف الوقت الفعلي المنقضي (أو ببساطة الوقت الفعلي، أو وقت الساعة ) بأنه الوقت المستغرق من بداية تشغيل برنامج حاسوبي حتى نهايته، كما يُقاس بساعة عادية. ويشمل الوقت الفعلي المنقضي وقت المستخدم، ووقت النظام، بالإضافة إلى الوقت الذي لم يكن فيه البرنامج قيد التشغيل لأي سبب، مثل وقت مقاطعة تنفيذه.
أوامر يونكس لوقت وحدة المعالجة المركزية

أعلى أوامر يونكس
يوفر أمر يونكس top وقت وحدة المعالجة المركزية والأولوية والوقت الفعلي المنقضي ومعلومات أخرى لجميع العمليات ويقوم بتحديثها في الوقت الفعلي.
وقت أوامر يونكس
يعرض الأمر time في نظام يونكس وقت وحدة المعالجة المركزية والوقت الفعلي المنقضي لتنفيذ أمر يونكس (أو سلسلة أوامر ). لاحظ أن العديد من واجهات سطر الأوامر لديها تطبيقاتها الخاصة لهذا الأمر. لتشغيل برنامج يونكس ، نُقدّم مساره الكامل :time/usr/bin/time
$ gcc nextPrimeNumber.c -o nextPrimeNumber -lm $ /usr/bin/time ./nextPrimeNumber 300000070034 العدد الأولي الأكبر من 300000070034 هو 300000070043 0.01 مستخدم 0.00 نظام 0:00.01 منقضي 100% وحدة معالجة مركزية $استغرقت هذه العملية إجمالاً 0.02 ثانية من وقت وحدة المعالجة المركزية (المستخدم + النظام). بلغ وقت النظام المُبلغ عنه 0.00 ثانية، مما يشير إلى أن مقدار وقت النظام المُستخدم كان أقل من الدقة المطبوعة البالغة 0.01 ثانية. بلغ الوقت الفعلي المنقضي 0.08 ثانية.
فيما يلي شفرة المصدر لتطبيق nextPrimeNumber الذي تم استخدامه في المثال أعلاه.
// nextPrimeNumber.c #include <stdio.h> #include <stdlib.h> #include <math.h>دالة ` isPrimeNumber` تأخذ عددًا صحيحًا غير مُوقّع من نوع `unsigned long int n` كمدخل ، وتُعيد الدالة قيمة `limit` من خلال حساب الجذر التربيعي لـ ` n` . ثم تُعيد الدالة قيمة ` limit` من خلال تكرار العملية من 2 إلى ` limit` . إذا كان باقي قسمة `n` على ` i` يساوي صفرًا ، تُعيد الدالة `0` ، وإلا تُعيد `1` .int main ( int argc , char * argv []) { unsigned long int argument = strtoul ( argv [ 1 ], NULL , 10 ), n = argument ; while ( ! isPrimeNumber ( ++ n ));printf ( "العدد الأولي الأكبر من %lu هو %lu \n " , argument , n ); return 0 ; }دوال للحصول على وقت وحدة المعالجة المركزية
تحتوي وحدات المعالجة المركزية الحديثة على عدة ساعات وعدادات، مثل عداد الطابع الزمني ، ومؤقت الأحداث عالي الدقة ، وساعة الوقت الحقيقي ، ولكل منها استخدام متخصص. عندما يرغب برنامج ما في قياس وقت تنفيذه، يمكنه استخدام دالة مثل دالة POSIXclock() ، التي تُعيد وقت وحدة المعالجة المركزية الذي استخدمه البرنامج. يسمح نظام POSIX لهذه الساعة بالبدء من قيمة عشوائية، لذا لقياس الوقت المنقضي، يستدعي البرنامج الدالة clock()، ثم يُنفذ بعض العمليات، ثم يستدعيها clock()مرة أخرى. [ 1 ] والفرق بينهما هو الوقت اللازم لإنجاز العمل.
لا تقتصر وظيفة POSIXgetrusage() على إرجاع وقت وحدة المعالجة المركزية الذي يستهلكه المعالج في بيئة POSIX فحسب، بل تُرجع أيضًا العديد من قياسات المعالج، بما في ذلك غالبًا الاستخدام التقريبي للذاكرة وعدد أحداث تبديل السياق (الجدولة). وتختلف هذه الوظيفة باختلاف أنظمة التشغيل.
إجمالي وقت وحدة المعالجة المركزية
في الأجهزة متعددة المعالجات والأنوية ، يمكن للبرنامج استخدام معالجين أو أكثر في وقت واحد فيما يُعرف بالمعالجة المتوازية . في مثل هذه الحالات، يكون قياس إجمالي وقت وحدة المعالجة المركزية مفيدًا، وهو مجموع وقت وحدة المعالجة المركزية الذي استهلكته جميع المعالجات التي يستخدمها البرنامج.
وقت وحدة المعالجة المركزية والوقت الفعلي المنقضي
في مجال الحوسبة ، يُعرف الوقت الفعلي المنقضي ، أو الوقت الحقيقي ، أو وقت الساعة ، أو وقت التشغيل الفعلي، بأنه الوقت الفعلي المستغرق من بداية تشغيل برنامج حاسوبي إلى نهايته. بعبارة أخرى، هو الفرق بين وقت انتهاء المهمة ووقت بدايتها. وبالتالي، يختلف وقت التشغيل الفعلي عن وقت وحدة المعالجة المركزية، الذي يقيس فقط الوقت الذي يعمل فيه المعالج بنشاط على مهمة أو عملية معينة . قد ينشأ الفرق بينهما من عوامل تتعلق ببنية النظام ووقت التشغيل ، مثل التأخيرات المبرمجة أو انتظار توفر موارد النظام . [ 2 ]
يكون الوقت الفعلي المنقضي دائمًا أكبر من أو يساوي وقت وحدة المعالجة المركزية لبرامج الحاسوب التي تستخدم وحدة معالجة مركزية واحدة فقط للمعالجة. إذا لم يحدث أي انتظار، كما هو الحال بالنسبة لعمليات الإدخال/الإخراج، ولم تتم مقاطعة تنفيذ البرنامج أبدًا، فسيكون الوقت الفعلي المنقضي ووقت وحدة المعالجة المركزية متطابقين تقريبًا.
وقت وحدة المعالجة المركزية والوقت الفعلي المنقضي للمعالجة المتوازية
إذا كان البرنامج يستخدم المعالجة المتوازية ، فإن إجمالي وقت وحدة المعالجة المركزية لهذا البرنامج عادةً ما يكون أطول من وقته الفعلي. أما بالنسبة لبرنامج قادر على توزيع عمله بالتساوي على معالجين دون أي تكلفة إضافية، فإن قيمة (إجمالي وقت وحدة المعالجة المركزية) / (عدد المعالجات) ستكون مطابقة تقريبًا للوقت الفعلي. هنا، قد يكون المعالج وحدة معالجة مركزية أحادية النواة أو نواة واحدة في وحدة معالجة مركزية متعددة النوى .
مثال: تطبيق برمجي يُشغَّل على معالج رباعي النواة يُنشئ أربع عمليات يونكس. إذا كان بإمكان كل عملية أن تُنفَّذ على نواة معالج منفصلة، فإن الحساب يتم على النوى الأربع في آنٍ واحد. في الوضع الأمثل، سيكون إجمالي وقت وحدة المعالجة المركزية أربعة أضعاف الوقت الفعلي المنقضي.
في الواقع، نادرًا ما تحقق المعالجة المتوازية تسارعًا خطيًا، حيث يزداد حجم الحساب لكل وحدة زمنية مع عدد المعالجات المستخدمة. بعض المشكلات التي تبدو متوازية بشكل كبير تسمح بمثل هذه الحلول، ولكن بالنسبة لمعظمها، يلزم بذل جهد إضافي لتقسيم الحساب عند بدء البرنامج، ولدمج نتائج كل معالج في النهاية. هذا الجهد الإضافي يزيد من إجمالي وقت وحدة المعالجة المركزية. في كثير من الأحيان، يجد أحد العمليات نفسه ينتظر بيانات من عملية أخرى قبل أن يتمكن من المتابعة، مما يزيد أيضًا من إجمالي الوقت.
انظر أيضاً
مراجع
- ↑ انظر، على سبيل المثال، https://www.gnu.org/software/libc/manual/html_node/CPU-Time.html
- ↑Wu, X. (2012). Performance Evaluation, Prediction and Visualization of Parallel Systems. The International Series on Asian Studies in Computer and Information Science. Springer US. p. 37. ISBN 978-1-4615-5147-8. Retrieved 2026-02-19.
External links
- Thimmannagari, Chandra (2005-01-01). CPU Design: Answers to Frequently Asked Questions. Springer. p. 68. ISBN 0-387-23799-2.
- "Processor And CPU Time". The GNU C Library. 2014-02-09. Retrieved 2014-08-05.
- "clock - report CPU time used". The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition. Retrieved 2014-08-05.
- "getrusage - get information about resource utilization". The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition. Retrieved 2014-08-05.
- Computer performance
