📚 دروس نظم التشغيل

جامعة ادلب — قسم هندسة البرمجيات | Operating Systems

1. مكونات الحاسوب

Hardware — المادية
🖥️

الأجهزة الملموسة (الجسد)

  • المعالج (CPU)
  • الذاكرة (RAM)
  • القرص الصلب
  • الشاشة، لوحة المفاتيح
Software — البرمجية
💾

البرامج غير الملموسة (الروح)

  • نظام التشغيل (OS)
  • تطبيقات المستخدم
  • برامج النظام
  • تعليمات وبيانات
💡 القياس: السيارة (Hardware) بدون وقود وسائق (Software) لا تتحرك. بدون برامج، الأجهزة مجرد معدن بلا فائدة.

2. نظام التشغيل (Operating System)

📖 التعريف (Galvin): "برنامج يدير الحاسوب وأجهزة الدخل والخرج ويعمل كوسيط بين التطبيقات والمستخدم."

أهداف نظام التشغيل الثلاثة

1️⃣

تنفيذ التطبيقات

السماح بتشغيل البرامج وتوفير الموارد اللازمة لها

2️⃣

بيئة مناسبة

واجهة سهلة، رسائل واضحة، تنظيم الملفات

3️⃣

استفادة فعالة من الموارد

Multiprogramming — لا إهدار للمعالج أو الذاكرة

3. واجهات نظام التشغيل

الواجهةالآليةالمزاياالعيوبالمستخدم
GUI (رسومية)أيقونات، نوافذ، قوائم، سحب وإفلاتسهلة جداً، لا تحتاج حفظ أوامرتستهلك موارد أكثرالمستخدم العادي
CLI (سطر أوامر)كتابة أوامر نصية يدوياًقوية جداً، سريعة، تحكم كاملتحتاج حفظ الأوامرالمحترفون والمطورون
📌 ملاحظة مهمة: مترجم الأوامر (Shell) ليس جزءاً من نواة OS — هو برنامج منفصل يعمل فوق النظام. بعض الأنظمة تعمل بـ GUI فقط بدون CLI.

4. أنواع نظام التشغيل

النوعآلية العملالمثالالميزة / العيب
Single-task
(مهمة واحدة)
برنامج واحد فقط — المعالج ينتظر بعد انتهائه DOS القديم أداء سيء — إهدار كبير للمعالج
Multiprogramming
(تعدد البرامج)
عدة برامج في الذاكرة — المعالج ينتقل لبرنامج آخر عند انتظار I/O Unix الأولى أداء جيد — المعالج دائماً مشغول
Time Sharing
(المشاركة الزمنية)
تبديل دوري حتى لو البرنامج يعمل — كل برنامج يأخذ فترة زمنية قصيرة ثم يُنتقل للتالي Windows, Linux الحديثة أفضل استجابة — يشعر المستخدم بالتزامن
مثال Time Sharing:
متصفح الويب:   100ms  →
معالج الكلمات: 100ms  →
موسيقى:        100ms  →
متصفح الويب:   100ms  ← دورة مستمرة بسرعة فائقة
لماذا يبدو التزامن: المعالج يدور آلاف الدورات في الثانية — الإنسان لا يلاحظ أي تأخير ويشعر أن جميع البرامج تعمل في نفس الوقت.

5. أنظمة التشغيل الشهيرة

النظامالسنةالمزاياالاستخدام
Windows1985الأشهر عالمياً، سهل للمبتدئين، يعمل على معالجات Intelالمنازل والشركات
Unix1974ابتكره Ritchie و Thompson في AT&T Bell — أول OS كُتب بلغة عالية المستوى — انتشر في الجامعات والبحثالجامعات والخوادم
Mac OS1984قوي وسهل — أول من دعم الواجهات الرسومية والأيقونات والقوائم على سطح مكتب — أخذت Windows فكرة النوافذ منهأجهزة Apple فقط
Linux1991نسخة مصغرة من Unix للحاسبات الشخصية — مفتوح المصدر، مجاني، مئات التوزيعات (أشهرها Ubuntu)الخوادم والمطورين
Mobile OSمصممة للهواتف الذكية — بطارية محدودة، شاشة لمسAndroid, iOS, Windows Mobile

6. أنواع الحاسبات (10 أنواع)

#النوعالخصائص الجوهريةالاستخدام
1Mainframe
الحاسبات المركزية
يخدم آلاف المستخدمين عبر طرفيات عمياء (شاشة+لوحة بلا معالج)البنوك، المستشفيات
2Personal Computers
الحاسبات الشخصية
مستخدم واحد — معالج واحد — واجهة رسوميةالمنازل والمكاتب
3Multiprocessors
متعددة المعالجات
عدة معالجات في صندوق واحد — ذاكرة مشتركة واحدة — نواقل ولوحة أم واحدة
متماثلة (SMP): معالجات متطابقة، ذاكرة مشتركة، نظام تشغيل واحد (الأشيع)
غير متماثلة: معالج رئيسي يتحكم في المعالجات الأخرى ويستقبل نتائجها
الحوسبة العلمية
4Distributed Systems
الأنظمة الموزعة
أجهزة بعيدة جغرافياً — كل جهاز له معالج وذاكرة وقرص مستقل — مواصفات وأنظمة مختلفةفروع شركات دولية
5Clustered Systems
الأجهزة المجتمعة
أجهزة قريبة جغرافياً في مكان واحد — متشابهة في المكونات والأنظمة — متصلة بشبكة محليةمراكز البيانات
6Real-Time Systems
أنظمة الزمن الحقيقي
استجابة مضمونة في وقت محدد صارم — أي تأخير = كارثةطائرات، جراحة، سيارات
7Handheld Systems
الأجهزة الكفية
أجهزة صغيرة (جيبية) — شاشة لمس — يقبل تثبيت برامج جديدة — يدعم التصوير والمحادثات وتبادل البيانات لاسلكياًالهواتف الذكية
8Embedded Systems
الأنظمة المضمنة
حاسبات مضمنة داخل جهاز — وظيفة واحدة محددة — برامجها محفوظة مسبقاً من الشركة ولا يمكن إضافة برامج جديدةمايكروويف، غسالة، تلفزيون
9Smart Cards
البطاقات الذكية
بطاقة بلاستيكية برقاقة إلكترونية — تمتلك ذاكرة صغيرة — تستطيع استقبال البيانات ومعالجتها وتخزينها — أمان عالٍبطاقات البنوك، الدفع الإلكتروني
10Server Systems
أنظمة المخدمات
يقدم خدمات عبر الشبكة (ملفات، ويب، طباعة)مراكز الإنترنت

🔵 الأنظمة الموزعة vs الأجهزة المجتمعة

الموزعة: بعيدة جداً (دول مختلفة) — مواصفات وأنظمة مختلفة

المجتمعة: قريبة في مكان واحد — مواصفات وأنظمة متطابقة

🟢 الأجهزة الكفية vs الأنظمة المضمنة

الكفية: هاتف ذكي — يدعم برامج متعددة قابلة للتثبيت

المضمنة: مايكروويف — وظيفة واحدة محددة، برامج ثابتة لا تتغير

⚠️ أنظمة الزمن الحقيقي: يجب أن يتم التنفيذ في وقت معين محدد — التأخر حتى لو قليلاً قد يتسبب في فشل العملية.

📋 ملخص الدرس الأول

1. مكونات الحاسوب

🖥️

Hardware — المكونات المادية (الجسد)

أجهزة ملموسة — موجودة لكن بلا روح بدون برامج

💾

Software — المكونات البرمجية (الروح)

برامج غير ملموسة — تُحيي الأجهزة وتجعلها تعمل

2. واجهات نظام التشغيل

GUI — الواجهة الرسومية (Graphical User Interface)

  • أيقونات ونوافذ وقوائم
  • سهلة جداً — لا تحتاج حفظ أوامر
  • تستهلك موارد أكثر
  • للمستخدم العادي

CLI — سطر الأوامر (Command Line Interface)

  • كتابة أوامر نصية
  • قوية جداً وأسرع
  • تحتاج حفظ الأوامر
  • للمحترفين والمطورين
📌 مترجم الأوامر (Shell) ليس جزءاً من نواة نظام التشغيل — هو برنامج منفصل يعمل فوقه.

3. تطور أنواع نظام التشغيل

الأقدم

Single-task — مهمة واحدة

برنامج واحد فقط — المعالج ينتظر بلا عمل — DOS

تطور

Multiprogramming — تعدد البرامج

عدة برامج بالذاكرة — التبديل عند انتظار الإدخال/الإخراج (I/O) — أداء أفضل

الأحدث

Time Sharing — المشاركة الزمنية

فترة زمنية قصيرة (Time Slice — شريحة زمنية) لكل برنامج — يشعر المستخدم بالتزامن

4. تطور أنظمة التشغيل الشهيرة

1974 — Unix — Ritchie & Thompson في AT&T Bell — أول نظام بلغة عالية المستوى — الجامعات والخوادم
1984 — Mac OS — أول من دعم الواجهات الرسومية والأيقونات على سطح مكتب — أخذت Windows فكرة النوافذ منه
1985 — Windows — الأشهر عالمياً — سهل للمستخدم العادي — المنازل والشركات
1991 — Linux — نسخة مصغرة من Unix — مفتوح المصدر، مجاني، مئات التوزيعات (أشهرها Ubuntu)
الحاضر — أنظمة الهاتف — Android, iOS, Windows Mobile — مصممة للهواتف الذكية

5. متى تختار أي نوع حاسب؟

إذا: آلاف المستخدمين + أمان عالٍ

→ Mainframe (الحاسبات المركزية)

البنوك، المستشفيات

إذا: مستخدم واحد / منزل / مكتب

→ Personal Computers (الحاسبات الشخصية)

Windows / Mac / Linux

إذا: أداء عالٍ + معالجات متعددة في جهاز واحد

→ Multiprocessors (متعددة المعالجات)

متماثلة (SMP) أو غير متماثلة

إذا: أجهزة في دول مختلفة

→ Distributed Systems (الأنظمة الموزعة)

مواصفات وأنظمة مختلفة

إذا: أجهزة في نفس المبنى

→ Clustered Systems (الأجهزة المجتمعة)

مواصفات متطابقة + شبكة محلية

إذا: أي تأخر = كارثة

→ Real-Time Systems (أنظمة الزمن الحقيقي)

طائرات، روبوتات، سيارات

إذا: جهاز محمول + تطبيقات متعددة

→ Handheld Systems (الأجهزة الكفية)

هاتف ذكي، شاشة لمس

إذا: وظيفة واحدة ثابتة داخل جهاز

→ Embedded Systems (الأنظمة المضمنة)

مايكروويف، غسالة، تلفزيون

إذا: أمان + معالجة وتخزين على بطاقة

→ Smart Cards (البطاقات الذكية)

بنوك، دفع إلكتروني

إذا: خدمات عبر الشبكة

→ Server Systems (أنظمة المخدمات)

ويب، ملفات، طباعة

6. الأزواج المتشابهة — كيف تُفرّق؟

الموزعة vs المجتمعة
الموزعةأجهزة بعيدة — مواصفات مختلفة — عبر الإنترنت
المجتمعةأجهزة قريبة — مواصفات متطابقة — شبكة محلية
الكفية vs المضمنة
الكفيةبرامج متعددة — يمكن تثبيت تطبيقات جديدة
المضمنةوظيفة واحدة ثابتة — برامج محفوظة من الشركة

❓ أسئلة الدرس الأول

🔵 المجموعة الأولى — أسئلة أساسية
أساسي
س1: اشرح الفرق بين المكونات المادية والمكونات البرمجية للحاسوب. استخدم القياس (جسد/روح).
Hardware — المكونات المادية: أجهزة ملموسة — المعالج (CPU)، الذاكرة (RAM)، القرص، الشاشة. تشبه الجسد.
Software — المكونات البرمجية: برامج غير ملموسة تتحكم في الأجهزة. تشبه الروح.
بدون البرامج، الأجهزة عديمة الفائدة تماماً — كسيارة بدون وقود وسائق.
أساسي
س2: عرّف نظام التشغيل حسب تعريف Galvin.
"برنامج يدير الحاسوب وأجهزة الدخل والخرج ويعمل كوسيط بين التطبيقات والمستخدم."
يدير الموارد (CPU، ذاكرة) ويترجم أوامر المستخدم للأجهزة.
أساسي
س3: ما هي أهداف نظام التشغيل الثلاثة الرئيسية؟
1. تنفيذ تطبيقات المستخدم: السماح بتشغيل البرامج وتوفير مواردها.
2. توفير بيئة مناسبة: واجهة سهلة، رسائل واضحة، تنظيم ملفات.
3. الاستفادة الفعالة من الموارد: Multiprogramming، توزيع وقت المعالج، عدم إهدار الموارد.
أساسي
س4: قارن بين الواجهة الرسومية (GUI) وواجهة سطر الأوامر (CLI).
GUI — الواجهة الرسومية: أيقونات ونوافذ — سهلة جداً للمستخدم العادي، لا تحتاج معرفة تقنية، لكن تستهلك موارد أكثر.
CLI — سطر الأوامر: كتابة أوامر نصية — قوية جداً للمحترفين، أسرع، لكن تحتاج حفظ الأوامر.
ملاحظة: Shell — مترجم الأوامر: ليس جزءاً من نواة نظام التشغيل (OS) — هو برنامج منفصل.
أساسي
س5: اشرح الفرق بين Single-Task و Multiprogramming و Time Sharing.
Single-task — مهمة واحدة: برنامج واحد فقط، المعالج ينتظر — أداء سيء (مثال: DOS).
Multiprogramming — تعدد البرامج: عدة برامج في الذاكرة، التبديل عند انتظار الإدخال/الإخراج (I/O) — استفادة جيدة من المعالج.
Time Sharing — المشاركة الزمنية: تبديل دوري حتى لو البرنامج يعمل — كل برنامج يأخذ Time Slice (شريحة زمنية) قصيرة — أفضل استجابة.
أساسي
س6: ما الذي يُميّز Multiprogramming عن Single-task من ناحية استخدام المعالج؟
Single-task — مهمة واحدة: المعالج ينتظر بدون عمل بعد انتهاء البرنامج أو عند انتظاره — إهدار كبير.
Multiprogramming — تعدد البرامج: عدة برامج في الذاكرة — عندما يتوقف برنامج لانتظار الإدخال/الإخراج (I/O)، المعالج ينتقل فوراً لبرنامج آخر جاهز.
النتيجة: المعالج دائماً مشغول — استفادة جيدة من الموارد وأداء أفضل بكثير.
أساسي
س7: اذكر 5 أنواع من أنواع الحاسبات العشرة مع تحديد الخاصية الجوهرية لكل منها.
Mainframe (الحاسبات المركزية): يخدم آلاف المستخدمين عبر طرفيات عمياء (شاشة + لوحة مفاتيح بلا معالج).
Multiprocessors (متعددة المعالجات): معالجات متعددة في صندوق واحد تتشارك ذاكرة واحدة ونظام تشغيل واحد.
Distributed Systems (الأنظمة الموزعة): أجهزة بعيدة جغرافياً بمواصفات وأنظمة مختلفة عبر الشبكة.
Real-Time Systems (أنظمة الزمن الحقيقي): استجابة مضمونة في وقت محدد صارم — أي تأخير يعني كارثة.
Embedded Systems (الأنظمة المضمنة): وظيفة واحدة محددة ثابتة مدمجة في جهاز — لا يمكن تغيير البرامج.
🟢 المجموعة الثانية — أسئلة سيناريو عملي
سيناريو
س8: أنت تستخدم حاسوبك الآن. اشرح ماذا يحدث عندما: أ) تفتح متصفح ومعالج كلمات معاً. ب) المتصفح ينتظر تحميل صفحة. ج) كيف يتعامل المعالج مع هذه الحالات؟
أ) كلا البرنامجين يُحمَّلان في الذاكرة (Multiprogramming — تعدد البرامج).
ب) عندما ينتظر المتصفح تحميل صفحة — هذا انتظار إدخال/إخراج (I/O)، فالمعالج ينتقل فوراً لمعالج الكلمات ليستمر في العمل.
ج) المعالج يتنقل بين البرامج الجاهزة للعمل، وعند عودة بيانات المتصفح (Interrupt — مقاطعة)، يعود المعالج للمتصفح. النتيجة: الاثنان يبدوان يعملان معاً.
سيناريو
س9: أنت مهندس تصمم نظام للبنك الكبير — يخدم آلاف الموظفين، يحتاج أداء عالٍ وأمان عالٍ. أي نوع حاسب تختار؟
الاختيار: Mainframe.
لأنه: يخدم آلاف المستخدمين من طرفيات عمياء، أمان عالٍ جداً، موثوقية عالية، مصمم خصيصاً للبيئات المصرفية.
سيناريو
س10: شركة عملاقة تريد ربط فروعها في مصر والإمارات والسعودية. هل تختار Distributed أم Clustered؟ لماذا؟
الاختيار: Distributed Systems.
لأن الفروع بعيدة جغرافياً (دول مختلفة) — وهذا تعريف Distributed. أما Clustered فهي للأجهزة القريبة في نفس المكان.
سيناريو
س11: لديك: ثلاجة ذكية، هاتف ذكي، مايكروويف ذكي. صنّف كل واحد: هل هو Handheld أم Embedded؟
هاتف ذكي → Handheld: يمكن تثبيت برامج جديدة، شاشة لمس، برامج متعددة.
ثلاجة ذكية → Embedded: وظيفة واحدة محددة (تبريد)، برامج ثابتة.
مايكروويف ذكي → Embedded: وظيفة واحدة محددة (طهي)، لا يمكن تثبيت برامج جديدة.
سيناريو
س12: طائرة تحتاج نظام تحكم بمحرك حساس للزمن جداً — أي تأخر 1 ثانية = كارثة. أي نوع OS تحتاج؟ لماذا لا يصلح Windows؟
تحتاج: Real-Time OS.
لأنه يضمن الاستجابة خلال وقت محدد صارم.
لماذا لا Windows: Windows لا يضمن وقت استجابة محدد — قد يتأخر بسبب تحديثات أو عمليات أخرى — وهذا غير مقبول في الطيران.
🟠 المجموعة الثالثة — أسئلة تحليلية
تحليلي
س13: قارن بين نظام DOS (Single-task) والأنظمة الحديثة (Multiprogramming) من ناحية: الأداء، استخدام الموارد، تجربة المستخدم.
DOS — Single-task (مهمة واحدة): أداء سيء جداً، موارد مهدرة، المعالج ينتظر كثيراً، تجربة مستخدم سيئة — برنامج واحد فقط.
أنظمة حديثة — Multiprogramming (تعدد البرامج): أداء ممتاز، موارد مستغلة بكفاءة، المعالج دائماً مشغول، تجربة سلسة — عدة برامج تعمل.
تحليلي
س14: لماذا مترجم الأوامر ليس جزءاً من نواة نظام التشغيل؟
لأن: مترجم الأوامر برنامج إضافي يعمل "فوق" OS، وليس ضرورياً لعمل النظام الأساسي. بعض الأنظمة قد تستخدم GUI فقط بدون CLI. هو مجرد واسطة اختيارية بين المستخدم والـ OS.
تحليلي
س15: وضّح كيفية عمل Time Sharing مع مثال. لماذا يشعر المستخدم أن جميع البرامج تعمل معاً؟
كل برنامج يأخذ Time Slice (شريحة زمنية) قصيرة جداً ثم المعالج ينتقل للبرنامج التالي في دورة مستمرة.
لماذا يبدو متزامناً: المعالج سريع جداً — يدور آلاف الدورات في الثانية — فالإنسان لا يلاحظ أي تأخير ويشعر أن كل شيء يعمل "في نفس الوقت".
تحليلي
س16: قارن بين أنظمة التشغيل الشهيرة (Windows, Unix, Mac, Linux) من ناحية الانتشار والمزايا والاستخدام.
Windows (1985): الأشهر عالمياً، سهل للمبتدئين، المنازل والشركات.
Unix (1974): الأقدم، قوي جداً، أول نظام تشغيل (OS) كُتب بلغة عالية المستوى، الجامعات والخوادم.
Mac OS (1984): أول من دعم الواجهات الرسومية (GUI) والأيقونات والقوائم على سطح مكتب، سهل وقوي، حصري لأجهزة Apple — أخذت Windows فكرة النوافذ منه.
Linux (1991): نسخة مصغرة من Unix، مفتوح المصدر، مجاني، مئات التوزيعات، المطورون والخوادم.
تحليلي
س17: لماذا تختلف أنظمة التشغيل باختلاف نوع الحاسوب؟ ما الذي يجب مراعاته عند اختيار OS لجهاز معين؟
لأن كل جهاز له احتياجات مختلفة:
- الهاتف: بطارية محدودة، شاشة صغيرة → OS خفيف وصديق للطاقة
- الخادم: أداء وموثوقية عالية → OS قوي ومستقر
- الطائرة: استجابة فورية مضمونة → Real-time OS
عوامل الاختيار: الموارد المتاحة (RAM/CPU)، الوقت الحرج، عدد المستخدمين، الأمان المطلوب.
النتيجة: 0 / 10
لم تُجب بعد

📝 أسئلة امتحان الدرس الأول

السؤال 1 / 10
ما هي أهم وظائف نظام التشغيل؟
السؤال 2 / 10
أي من الخيارات يصف Multiprogramming بشكل صحيح؟
السؤال 3 / 10
في نظام Time Sharing:
السؤال 4 / 10
GUI تعني:
السؤال 5 / 10
في نظام Mainframe، الطرفيات هي:
السؤال 6 / 10
Personal Computer يخدم:
السؤال 7 / 10
في نظام متعدد المعالجات (Multiprocessor):
السؤال 8 / 10
الفرق الأساسي بين Distributed و Clustered:
السؤال 9 / 10
Real-time Systems تُستخدم في:
السؤال 10 / 10
الأنظمة المضمنة (Embedded Systems):

1. عملية الحوسبة (Computing Process)

معظم عمليات الحوسبة تتم في أربعة خطوات رئيسية:

الخطوةالوصفالمكون المطلوبمثال
1. الإدخال (Input)إدخال البيانات والأوامرInput Device — جهاز الدخلكتابة على لوحة المفاتيح
2. المعالجة (Processing)تنفيذ العمليات الحسابية والمنطقيةCPU (المعالج) + RAM (الذاكرة الرئيسية)حساب 5+3
3. الإخراج (Output)إظهار نتائج المعالجةOutput Device — جهاز الخرجعرض على الشاشة
4. التخزين (Storage)حفظ البيانات للاستخدام لاحقاًSecondary Storage — التخزين الثانويحفظ الملف في القرص الصلب

2. المكونات المادية (Hardware Components)

تنقسم المكونات المادية إلى أربعة أجزاء رئيسية — كل جزء مسؤول عن خطوة في عملية الحوسبة:

📥 2.1 أجهزة الدخل (Input Devices)
الوظيفة: إدخال البيانات والأوامر للحاسب
كيف: تُدخل البيانات من الخارج وتُخزن مؤقتاً في الذاكرة
أمثلة: لوحة المفاتيح، الفأرة، الماسحة الضوئية، الميكروفون، الكاميرا، لوحة الرسم
⚙️ 2.2 المعالج والذاكرة (CPU & RAM)
CPU: دماغ الحاسب — يُنفذ التعليمات، يقوم بالحسابات والعمليات المنطقية، ويتحكم في جميع الأجزاء
RAM: تخزين مؤقت للبيانات والبرامج قيد التنفيذ — سريعة جداً، لكن متطايرة (تُمسح عند الإطفاء) والسعة محدودة
📤 2.3 أجهزة الخرج (Output Devices)
الوظيفة: إظهار نتائج المعالجة للمستخدم
أمثلة: الشاشة، الطابعة، السماعات، جهاز العرض، الشاشة اللمسية
💾 2.4 التخزين الثانوي (Secondary Storage)
الوظيفة: تخزين دائم للبيانات والبرامج
الخصائص: كبيرة السعة، بطيئة نسبياً، غير متطايرة
الأنواع: القرص الصلب (Hard Disk)، القرص المرن (Floppy Disk - قديم)، الأقراص المضغوطة (CD/DVD)، ذاكرة الفلاش (Flash Memory - USB)، الأشرطة الممغنطة

3. مديرو نظام التشغيل (OS Managers)

المديرالاسم العربيالمسؤولية
Memory Managerمدير الذاكرةتوزيع مساحة الذاكرة على البرامج، تتبع من يستخدم أي جزء، تحرير الذاكرة عند الانتهاء
CPU Managerمدير المعالجمراقبة المكونات، تحديد من يستخدم ماذا ومتى وكيف، حجز المكونات وتحريرها في الوقت المناسب
File Managerمدير الملفاتتنظيم طرق تخزين الملفات، البحث عنها، فتحها وإغلاقها
Device Managerمدير الأجهزةإدارة أجهزة الدخل/الخرج، معالجة المقاطعات من الأجهزة
Network Managerمدير الشبكةالاتصالات الخارجية، إدارة موارد الشبكة

4. المتحكمات (Controllers)

الحاسبات الحديثة تتكون من: معالج واحد أو أكثر + عدة متحكمات، جميعها تتصل بذاكرة مشتركة عبر ناقل بيانات (Bus).

المعالج — CPU
ناقل البيانات — Bus
متحكم الطابعة + Buffer
متحكم الشاشة + Buffer + معالج
متحكم الذاكرة (ينظم الوصول)
جميع المكونات تتصل عبر Bus (ناقل البيانات) → المتحكم يوفر واجهة بسيطة بدل التعقيد المباشر

الذاكرة المؤقتة (Buffer)

كل متحكم يحتوي على ذاكرة خازن (Buffer) تساعد في نقل البيانات بين الذاكرة الرئيسية والجهاز الطرفي.

💡 مثال الطابعة: المعالج يضع البيانات في Buffer بسرعته العالية، والطابعة تأخذها بسرعتها الخاصة الأبطأ — لا ينتظر المعالج الطابعة!

المعالج في المتحكم

بعض المتحكمات تحتوي على معالج صغير خاص بها. مثال: متحكم الشاشة يحتوي على معالج يقوم بحساب النقاط والخطوط وإدارة عرض الصور والنصوص — بدلاً من إرهاق المعالج الرئيسي بهذه المهام.

التوازي

المعالج
ينفذ برنامجاً
متحكم الشاشة
يعرض صورة
متحكم الطابعة
يطبع مستنداً

↑ كل هذا يحدث في نفس اللحظة — التوازي يزيد كفاءة النظام بشكل كبير.

متحكم الذاكرة الرئيسية (Memory Controller)

ينظم وصول المتحكمات والمعالج للذاكرة. آلية العمل: الجهاز يحتاج بيانات → المتحكم يطلب من متحكم الذاكرة (Memory Controller) → يجلب البيانات دفعة واحدة → تُخزن في Buffer المتحكم → ترسل للجهاز بسرعة مناسبة.

5. المقاطعات (Interrupts)

المقاطعة هي إشارة من جهاز طرفي للمعالج تطلب منه إيقاف عمله مؤقتاً لخدمتها.

آلية العمل

1 جهاز طرفي يُرسل مقاطعة للمعالج
2 المعالج يوقف عمله الحالي مؤقتاً
3 المعالج ينفذ دالة خدمة المقاطعة (Service Routine)
4 بعد الانتهاء، يعود المعالج لما كان يعمل فيه

أنواع المقاطعات

النوعالمصدر
مقاطعات الدخل/الخرجمن أجهزة الدخل والخرج
مقاطعات خارجيةمن خارج النظام
مقاطعات المؤقت (Timer)من المؤقت عند انتهاء الوقت
مقاطعات الأعطالمن أعطال في المكونات المادية

مثال عملي: P1 و P2

1P1 يعمل — يحتاج بيانات من جهاز الدخل، لكن الجهاز لم يكن جاهزاً
2OS ينتقل لـ P2 — P2 يبدأ التنفيذ (لا وقت مهدور)
3جهاز الدخل يصبح جاهزاً — يُرسل مقاطعة للمعالج
4المعالج يوقف P2 مؤقتاً — ينفذ خدمة المقاطعة — ينقل البيانات من الجهاز
5المعالج يعود إلى P1 — الآن لديه البيانات ويمكنه المتابعة ✓
⚠️ بدون مقاطعات — Polling (الفحص المستمر): المعالج سيبقى في حلقة يفحص الجهاز باستمرار — هدر كبير للوقت والموارد!

6. أنماط التشغيل الثنائي (Dual Mode)

الوضعقيمة البتمن يستخدمهالصلاحيات
User Mode — وضع المستخدم1البرامج العاديةمحدودة — لا وصول مباشر للأجهزة
Kernel Mode — وضع النواة0نظام التشغيلكاملة — وصول مباشر لكل شيء
برنامج عادي
User Mode — وضع المستخدم
System Call — نداء النظام
يطلب خدمة
Kernel Mode — وضع النواة
OS ينفذ الخدمة
User Mode — وضع المستخدم
يعود للبرنامج
الفائدة: حماية نظام التشغيل من البرامج الضارة ومنع البرامج من تعطيل بعضها.

7. المؤقت (Timer)

⚠️ المشكلة
برنامج يدخل في حلقة لا نهائية → يستأثر بالمعالج 100% → البرامج الأخرى لا تعمل
✅ الحل
المؤقت يصدر مقاطعة بعد فترة محددة → التحكم ينتقل تلقائياً لـ OS

مثال: برنامج يحتاج 7 ثواني

العداد = 7 × 60 = 420
كل دورة: العداد ينخفض بمقدار 1
عند الوصول لـ 0: تُرسل مقاطعة → OS يتولى التحكم
   ↪ قد يعتبره خطأ فادح، أو قد يزيد الفترة الزمنية

الفوائد: منع احتكار المعالج | تحقيق العدالة بين البرامج | منع الحلقات اللانهائية

8. هرمية الذاكرة (Memory Hierarchy)

Registers — المسجلات (داخل المعالج) متطايرة ⚡ أسرع
Cache L1 — الذاكرة المخبأة L1 (10 نانو ثانية) متطايرة
Cache L2 — الذاكرة المخبأة L2 متطايرة
RAM — الذاكرة الرئيسية (100 نانو ثانية) متطايرة
Magnetic Disk — الأقراص الممغنطة (القرص الصلب) (15 ملي ثانية) غير متطايرة
Optical Disks — الأقراص الضوئية (CD/DVD) غير متطايرة
Magnetic Tape — الأشرطة الممغنطة (للنسخ الاحتياطي) غير متطايرة 🐌 أبطأ
💡 القرص المرن (Floppy Disk) كان يُستخدم قديماً للتخزين الثانوي وأصبح نادراً اليوم.

الذاكرة المخبأة (Cache)

المعالج (3 نانو ثانية) أسرع من RAM (100 نانو ثانية) بـ 33 مرة. Cache تُوضع بينهما لتقليل الفجوة — تخزن البيانات الأكثر استخداماً قريباً من المعالج.

الميزةRAMDisk
السرعة100 نانو ثانية15 ملي ثانية (أبطأ 150,000×)
السعةصغيرة (GB)كبيرة جداً (TB)
التطايرمتطايرة (تُمسح)غير متطايرة (دائمة)
السعرغاليرخيص

9. تمثيل البيانات

الحاسب يتعامل فقط بـ 0 و 1. كل البيانات (نص، صور، صوت) تُحوَّل لأصفار وآحاد.

شفرة ASCII

A = 01000001    B = 01000010    1 = 00110001
"Hello" = 01001000 01100101 01101100 01101100 01101111 (5 بايتات)

EBCDIC: الشفرة الثنائية الموسعة للتبادل — تُستخدم في بعض الأنظمة القديمة.

Unicode: شفرة موحدة عالمية تدعم لغات متعددة (عربي، صيني، إلخ).

البت (Bit): أصغر وحدة = 0 أو 1. البايت (Byte): 8 بتات = 1 حرف.

1 KB (كيلو بايت) = 1024 Bytes
1 MB (ميجا بايت) = 1024 KB
1 GB (جيجا بايت) = 1024 MB
1 TB (تيرا بايت) = 1024 GB

10. إقلاع الحاسب ودورة التنفيذ

عملية الإقلاع (Booting)

① POST — اختبار التشغيل الأولي
اختبار المكونات المادية
محفوظ في ROM
② Bootstrap Loader — محمّل الإقلاع
يبحث عن OS في القرص
محفوظ في ROM
③ تحميل OS
ينقل OS من القرص
إلى الذاكرة الرئيسية
④ جاهز ✓
OS يتحكم
سطح المكتب يظهر

دورة تنفيذ الأوامر (Fetch-Execute Cycle — دورة الإحضار والتنفيذ) — مثال: 5+3

① Fetch — إحضار
إحضار أمر الجمع من الذاكرة
② Decode — فك الشفرة
فهم أنه جمع — يحتاج رقمين
③ Fetch Operands — إحضار المعاملات
إحضار 5 و 3
④ Execute — التنفيذ
5+3=8 — تُخزن النتيجة
↺ تكرار

📋 ملخص الدرس الثاني

1. عملية الحوسبة — تسلسل الخطوات

الإدخال
Input Device — جهاز الدخل
المعالجة
CPU (المعالج) + RAM (الذاكرة)
الإخراج
Output Device — جهاز الخرج
التخزين
Secondary Storage — التخزين الثانوي

المكونات والبرامج تكرر هذه الخطوات الأربعة باستمرار. ولإدارة الكل: نظام التشغيل.

2. المقاطعة مقابل الحلقة (Interrupt vs Polling)

❌ Polling — الفحص المستمر (حلقة انتظار)
  • المعالج يفحص الجهاز باستمرار
  • هدر كبير في الوقت والموارد
  • المعالج لا يفعل شيئاً مفيداً
✅ Interrupt — المقاطعة
  • الجهاز يُرسل إشارة عند الجهوزية
  • المعالج يعمل بشكل مفيد حتى ذلك الحين
  • استخدام أمثل للموارد

4 أنواع مقاطعات: من أجهزة الدخل/الخرج | من خارج النظام | من المؤقت | من الأعطال

3. أنماط التشغيل الثنائي (Dual Mode)

User Mode — وضع المستخدم (البت = 1)
  • للبرامج العادية
  • صلاحيات محدودة
  • لا وصول مباشر للأجهزة
Kernel Mode — وضع النواة (البت = 0)
  • لنظام التشغيل
  • صلاحيات كاملة
  • وصول مباشر لكل شيء

التبديل بينهما: برنامج يُرسل System Call — نداء النظام → Kernel Mode (وضع النواة) → OS ينفذ الخدمة → User Mode (وضع المستخدم)

4. هرمية الذاكرة

Registers — داخل المعالجأسرع | أصغر | أغلى
Cache L1 — 10 نانو ثانيةمتطايرة
Cache L2متطايرة
RAM — 100 نانو ثانيةمتطايرة
القرص الصلب (Magnetic Disk) — 15 ملي ثانيةغير متطايرة
الأقراص الضوئية (CD/DVD)غير متطايرة
الأشرطة الممغنطة (Magnetic Tape)أبطأ | أكبر | أرخص

Cache: وُضعت بين المعالج (3ns) والـ RAM (100ns) لتقليل الفجوة — أداء أفضل.

5. متى تستخدم أي مكوّن؟

📥 تريد إدخال بيانات؟
جهاز دخل: لوحة المفاتيح، الفأرة، الكاميرا، الماسحة
⚙️ تريد معالجة؟
CPU للتنفيذ + RAM للتخزين المؤقت أثناء العمل
📤 تريد إخراج نتيجة؟
جهاز خرج: الشاشة، الطابعة، السماعات
💾 تريد حفظ دائم؟
تخزين ثانوي: القرص الصلب، ذاكرة الفلاش (USB)، الأشرطة الممغنطة

6. الإقلاع (Booting)

POST — اختبار التشغيل الأولي
ROM — اختبار الأجهزة
Bootstrap Loader — محمّل الإقلاع
ROM — يبحث عن OS
تحميل OS
من القرص للـ RAM
جاهز ✓
OS يتحكم

دورة التنفيذ (Fetch-Execute Cycle)

Fetch — إحضار
إحضار الأمر
Decode — فك الشفرة
فهم الأمر
Fetch Operands — إحضار المعاملات
إحضار البيانات
Execute — التنفيذ
التنفيذ
↺ تكرار

7. تمثيل البيانات

الشفرةالاستخداممثال
ASCIIمعيار أمريكي لتمثيل الحروفA = 01000001
EBCDICتُستخدم في أنظمة قديمة
Unicodeشفرة عالمية تدعم كل اللغاتعربي، صيني، إلخ

وحدات التخزين: 1 KB = 1024 Bytes | 1 MB = 1024 KB | 1 GB = 1024 MB | 1 TB = 1024 GB

❓ أسئلة الدرس الثاني

🔵 المجموعة الأولى — أسئلة أساسية
أساسي
س1: اشرح الخطوات الأربع لعملية الحوسبة مع مثال عملي كامل.
1. Input — الإدخال: إدخال البيانات — مثال: كتابة كلمات على لوحة المفاتيح
2. Processing — المعالجة: معالجة البيانات — مثال: برنامج معالج الكلمات يتحقق من الإملاء
3. Output — الإخراج: إظهار النتيجة — مثال: عرض النص على الشاشة
4. Storage — التخزين: حفظ البيانات — مثال: حفظ المستند في القرص الصلب
أساسي
س2: قسّم المكونات المادية للحاسب حسب الخطوات الأربع لعملية الحوسبة.
الإدخال: لوحة المفاتيح، الفأرة، الماسحة، الميكروفون، الكاميرا
المعالجة: CPU (المعالج) + RAM (الذاكرة الرئيسية)
الإخراج: الشاشة، الطابعة، السماعات
التخزين: القرص الصلب، الأقراص المضغوطة (CD/DVD)، ذاكرة الفلاش (USB Flash)، الأشرطة الممغنطة
أساسي
س3: اشرح وظيفة كل من: أ) مدير الذاكرة ب) مدير المعالج ج) مدير الملفات.
أ) مدير الذاكرة: توزيع مساحة الذاكرة على البرامج، تتبع من يستخدم أي جزء، تحرير الذاكرة عند انتهاء البرنامج، منع تداخل البرامج.
ب) مدير المعالج: مراقبة المكونات باستمرار، تحديد من يستخدم ماذا ومتى وكيف، توزيع وقت المعالج بين البرامج.
ج) مدير الملفات: تنظيم طرق تخزين الملفات، البحث عنها، فتحها وإغلاقها، حمايتها من الحذف غير المقصود.
أساسي
س4: ما الفرق بين متحكم الجهاز (Controller) والجهاز الطرفي نفسه؟
الجهاز الطرفي: الجهاز المادي نفسه — طابعة، شاشة، ماوس. وظيفته تنفيذ عمليات الدخل/الخرج.
المتحكم: دائرة إلكترونية تُدير الجهاز. توفر واجهة بسيطة لـ OS، تحتوي على Buffer، تنسق نقل البيانات.
الفائدة: OS يتعامل مع المتحكم البسيط بدلاً من تعقيدات الجهاز مباشرة.
أساسي
س5: اشرح الفرق بين المقاطعة (Interrupt) والحلقة العادية (Polling).
Polling — الفحص المستمر (حلقة انتظار): المعالج يفحص الجهاز باستمرار في حلقة → وقت مهدور، موارد مستنزفة.
Interrupt — المقاطعة: المعالج يعمل بشكل طبيعي → الجهاز يُرسل مقاطعة عندما يكون جاهزاً → المعالج يستجيب فقط عند الحاجة.
المقاطعة أفضل بكثير: المعالج لا ينتظر — وقت مستغل بشكل أمثل.
أساسي
س5-ب: اذكر الأنواع الأربعة للمقاطعات مع توضيح مصدر كل نوع.
1. مقاطعات من أجهزة الدخل/الخرج: عند انتهاء جهاز طرفي من عملية (مثل انتهاء الطباعة).
2. مقاطعات من خارج النظام: إشارات قادمة من خارج الحاسب.
3. مقاطعات من المؤقت (Timer): عند انتهاء الوقت المخصص لبرنامج ما.
4. مقاطعات من الأعطال: عند حدوث عطل في المكونات المادية.
🟢 المجموعة الثانية — أسئلة سيناريو عملي
سيناريو
س6: أنت تطبع مستنداً. اشرح: أ) المكونات المادية المشاركة ب) دور متحكم الطابعة ج) دور Buffer.
أ) المكونات المشاركة: المعالج (ينفذ أمر الطباعة) + الذاكرة (تخزن المستند) + متحكم الطابعة + الطابعة نفسها.
ب) دور المتحكم: استقبال البيانات من المعالج، تنظيم سرعة النقل (المعالج أسرع من الطابعة)، إرسال البيانات بسرعة مناسبة للطابعة.
ج) دور Buffer: المعالج يضع البيانات في Buffer بسرعته العالية → الطابعة تأخذها ببطئها الخاص → المعالج لا ينتظر الطابعة.
سيناريو
س7: برنامج دخل في حلقة لا نهائية. أ) كيف يؤثر على النظام؟ ب) دور المؤقت في منع هذا؟ ج) كيف يتعامل OS معه؟
أ) التأثير: احتكار المعالج 100%، البرامج الأخرى لا تعمل، النظام يبدو متجمداً.
ب) دور المؤقت: بعد فترة محددة (مثل 100ms) يصدر مقاطعة تُوقف البرنامج قسراً وتنقل التحكم لـ OS.
ج) تعامل OS: يوقف البرنامج، قد يعتبره خطأ فادحاً، أو يُغلقه قسراً، ثم ينتقل للبرامج الأخرى.
سيناريو
س8: عند إقلاع الحاسب: أ) من يقوم بـ POST؟ ب) من يحمل OS؟ ج) لماذا تحتاج هذه العمليات ROM؟
أ) POST — اختبار التشغيل الأولي: برنامج محفوظ في ROM — يختبر المكونات المادية عند التشغيل.
ب) تحميل OS: Bootstrap Loader (محمّل الإقلاع) المحفوظ في ROM — يبحث عن OS في القرص ويحمله للذاكرة.
ج) لماذا ROM: RAM تُمسح عند الإطفاء — لا يمكن تخزين برامج الإقلاع فيها. ROM غير متطايرة تحتفظ بالبرنامج دائماً.
سيناريو
س9: ملف صورة بـ 5 MB. أ) كم بايت هذا؟ ب) عند حفظه أين يُخزن؟ ج) عند فتحه أين ينتقل؟
أ) التحويل: 5 MB = 5 × 1024 × 1024 = 5,242,880 بايت ≈ 41,943,040 بت.
ب) عند الحفظ: يُخزن في التخزين الثانوي (القرص الصلب) — غير متطاير، دائم.
ج) عند الفتح: يُنقل من القرص إلى RAM — ليتمكن المعالج من الوصول إليه بسرعة.
سيناريو
س10: برنامج في User Mode يحتاج فتح ملف. أ) هل يمكنه مباشرة؟ ب) ماذا يفعل؟ ج) ما نوع الانتقال الذي يحدث؟
أ) لا يمكنه مباشرة: User Mode (وضع المستخدم) صلاحيات محدودة — لا وصول مباشر للأجهزة أو الملفات.
ب) ماذا يفعل: يُرسل System Call (نداء النظام) لنظام التشغيل طالباً الخدمة.
ج) نوع الانتقال: المعالج يتحول من User Mode (وضع المستخدم) → Kernel Mode (وضع النواة) → OS يفتح الملف → يعود لـ User Mode.
🟠 المجموعة الثالثة — أسئلة تحليلية
تحليلي
س11: اشرح لماذا تم تطوير الذاكرة المخبأة (Cache). ما المشكلة التي تحلها؟
المشكلة: المعالج (3ns) أسرع من RAM (100ns) بـ 33 مرة → المعالج ينتظر كثيراً → وقت مهدور وأداء منخفض.
الحل: Cache توضع بين المعالج والـ RAM، تعمل بسرعة قريبة من المعالج، تخزن البيانات الأكثر استخداماً.
النتيجة: المعالج يجد البيانات في Cache معظم الوقت → لا انتظار → أداء أفضل بكثير.
تحليلي
س12: قارن بين RAM و Disk من حيث: السرعة، السعة، التطاير، السعر.
السرعة: RAM (100ns) أسرع بـ 150,000 مرة من Disk (15ms).
السعة: RAM صغيرة (GB)، Disk كبيرة جداً (TB).
التطاير: RAM متطايرة (تُمسح عند الإطفاء)، Disk غير متطايرة (دائمة).
السعر: RAM غالي نسبياً، Disk رخيص.
تحليلي
س13: اشرح كيف يميز الحاسب بين البيانات المختلفة. مثال: كيف يعرف أن "01000001" = حرف A؟
باستخدام شفرات التمثيل (Encoding) — كل رمز له قيمة ثنائية فريدة.
مثال ASCII: A=01000001، B=01000010، 1=00110001
عند الضغط على A: لوحة المفاتيح ترسل 01000001 → الحاسب يبحث في جدول ASCII → يعرف أنه حرف A → يعرضه كصورة الحرف على الشاشة.
تحليلي
س14: اشرح دورة تنفيذ الأوامر (Fetch-Execute Cycle) مع مثال: جمع 5 + 3.
1. Fetch — إحضار: المعالج يحضر أمر الجمع من الذاكرة
2. Decode — فك الشفرة: يفهم أنه أمر جمع يحتاج رقمين
3. Fetch Operands — إحضار المعاملات: يحضر 5 و 3 من الذاكرة
4. Execute — التنفيذ: وحدة الحساب تنفذ: 5+3=8، تُخزن النتيجة في مسجل
5. الدورة تتكرر للأمر التالي في البرنامج
تحليلي
س15: لماذا نحتاج أنماط التشغيل الثنائي (Dual Mode)؟ ما الأخطار من السماح لأي برنامج بـ Kernel Mode؟
السبب: برنامج عادي قد يُعطل النظام أو يتداخل مع برامج أخرى إذا حصل على صلاحيات كاملة.
أخطار السماح بـ Kernel Mode (وضع النواة) للجميع:
❌ برنامج خبيث يتحكم في النظام كاملاً
❌ حذف ملفات النظام الحساسة
❌ تعطيل نظام التشغيل
❌ سرقة بيانات البرامج الأخرى
الحل: User Mode (وضع المستخدم) يُقيّد البرامج العادية — الـ OS هو الوحيد في Kernel Mode (وضع النواة).
النتيجة: 0 / 10
لم تُجب بعد

📝 أسئلة امتحان الدرس الثاني

السؤال 1 / 10
خطوات عملية الحوسبة الأربع بالترتيب الصحيح هي:
السؤال 2 / 10
أي من الأجهزة التالية هو جهاز دخل (Input Device)؟
السؤال 3 / 10
وظيفة Buffer في متحكم الجهاز هي:
السؤال 4 / 10
المقاطعة (Interrupt) تُستخدم عندما:
السؤال 5 / 10
في User Mode، البرنامج:
السؤال 6 / 10
المؤقت (Timer) يصدر مقاطعة:
السؤال 7 / 10
أسرع أنواع الذاكرة في هرمية الذاكرة هي:
السؤال 8 / 10
شفرة ASCII تُستخدم لـ:
السؤال 9 / 10
البايت (Byte) يساوي:
السؤال 10 / 10
Bootstrap Loader يقوم بـ:

1. مفهوم العملية (Process Concept)

العملية (Process): برنامج قيد التنفيذ (Program in Execution) — الوحدة الأساسية للعمل في OS.

البرنامج (Program)العملية (Process)
ملف ثابت على القرص الصلببرنامج تم تحميله في الذاكرة الرئيسية
لا يستهلك موارد النظامتستهلك المعالج (CPU) والذاكرة وموارد الإدخال/الإخراج
قد يكون غير مُشغَّل أبداًقيد التنفيذ الآن بواسطة المعالج
Word.exe على القرصفتح Word = عملية في الذاكرة
💡 نفس البرنامج قد يُولّد عدة عمليات: Word.exe ملف واحد، لكن 3 نوافذ مفتوحة = 3 عمليات منفصلة بموارد مستقلة.

2. مكونات العملية (Process Components)

كل عملية في الذاكرة تتكون من أربعة أجزاء:

📄 Text — النص
المحتوى: تعليمات البرنامج التي ينفذها المعالج
الخاصية: ثابت لا يتغير أثناء التنفيذ
📊 Data — البيانات
المحتوى: المتغيرات والثوابت العامة المستخدمة من قبل البرنامج
الخاصية: يتغير أثناء تنفيذ البرنامج
📚 Stack — الأكوام
الغرض: تخزين بيانات الدوال ومتغيراتها المحلية، ومعاملات الدوال
كيف: عند استدعاء دالة تُدفع البيانات، عند انتهائها تُسحب
الخاصية: إدارة تلقائية، حجم محدود
🗄️ Heap — الأكوام الديناميكية
الغرض: ذاكرة ديناميكية يُخصصها البرنامج وقت التشغيل عند الحاجة لحجم غير معروف مسبقاً
الخاصية: إدارة يدوية — يجب تحريرها يدوياً وإلا حدث تسرب الذاكرة

مثال Stack (الأكوام) — استدعاء دالة

① الدالة أ تستدعي الدالة ب
بيانات ب — Push ↓
بيانات أ — Push ↓
قاع الـ Stack
② الدالة ب تنتهي → Pop ↑
بيانات ب — Pop ↑ ✓
بيانات أ — تبقى
قاع الـ Stack
القاعدة: LIFO
آخر ما يدخل → أول ما يخرج
Push = دفع (إضافة للأعلى)
Pop = سحب (إزالة من الأعلى)
الدالة ب دخلت أخيراً → خرجت أولاً
ثم عادت أ من حيث توقفت ✓

3. مجلد السياق (Process Control Block - PCB)

بنية بيانات يحتفظ بها نظام التشغيل لكل عملية — يحتوي على جميع معلوماتها. تخيله "الملف الطبي" للعملية.

المعلومةالوصف
Process ID — معرف العملية (PID)رقم فريد يُعرّف العملية — مثال: عملية أ لها PID=1234، عملية ب لها PID=5678
Process State — حالة العمليةالحالة الحالية (New جديدة / Ready جاهزة / Running جارية / Waiting مجمدة / Terminated منتهية)
Program Counter — عداد البرنامج (PC)يشير للتعليمة التالية — يُحفظ عند الإيقاف ويُستعاد عند الاستئناف
Registers — السجلاتمحتويات جميع سجلات المعالج — تُحفظ عند تبديل السياق
Scheduling Info — معلومات الجدولةالأولوية ومؤشرات قوائم الجدولة
Memory Info — معلومات الذاكرةجداول الصفحات وحدود الذاكرة
Accounting Info — معلومات المحاسبةوقت المعالج المستخدم، الوقت المنقضي الفعلي، التعرفة المالية (في الأنظمة التجارية)
I/O Status — حالة الإدخال/الإخراجالملفات المفتوحة والأجهزة المخصصة

4. حالات العملية (Process States)

New — جديدة
↓ جاري الإعداد
Ready — جاهزة
← انتهت مدة الوقت
(Time Slice)
Running — جارية
طلب I/O ↓
Waiting — مجمدة
↓ اكتمل I/O
↓ → Ready
↓ انتهى البرنامج
Terminated — منتهية
الحالةالمعنىالانتقال إلى
New — جديدةللتو أُنشئت، جاري إعدادها بواسطة نظام التشغيل→ Ready (جاهزة)
Ready — جاهزةجاهزة للتنفيذ، تملك كل الموارد — تنتظر وقت المعالج فقط→ Running (جارية) عند الجدولة
Running — جاريةتنفذ الآن — في أي لحظة عملية واحدة فقط يمكنها أن تكون هنا→ Ready / Waiting / Terminated
Waiting — مجمدةتوقفت تنتظر حدث معين (إدخال/إخراج) — لن تنفذ حتى يحدث الحدث→ Ready (جاهزة) عند اكتمال الإدخال/الإخراج
Terminated — منتهيةانتهت، مواردها تُحررنهاية دورة حياة العملية

5. إنشاء العملية (Process Creation)

① التحقق
التأكد من وجود ذاكرة وموارد كافية
② تخصيص PID
رقم فريد للعملية الجديدة
③ إنشاء PCB
بنية بيانات بكل معلومات العملية + Parent PID
④ تخصيص الذاكرة
منطقة لـ Text, Data, Stack, Heap
⑤ تحميل البرنامج
نسخ التعليمات من القرص للذاكرة
⑥ إضافة للجدولة ✓
وضعها في Ready Queue (قائمة الجاهزين) — جاهزة للجدولة
💡 العملية الأب والابن: كل عملية لها عملية أب (Parent Process) أنشأتها. مثال: Shell أنشأ عمليات Word وExcel والمتصفح — كل منها ترث موارد أبيها لكن لها حياة مستقلة.

6. إنهاء العملية (Process Termination)

نوع الإنهاءالسببمثال
طبيعي (Normal Exit)أكملت جميع التعليمات بنجاحإغلاق Word بعد الحفظ
بخطأ (Error Exit)خطأ حرج (قسمة على صفر مثلاً)"البرنامج توقف بشكل غير متوقع"
قسري (Forced)عملية أخرى أو المستخدم طلب الإنهاءTask Manager (مدير المهام) → إنهاء المهمة

خطوات الإنهاء (بالترتيب):

① وقف
التنفيذ
② تحرير
الذاكرة
③ إغلاق
الملفات
④ إبلاغ
الأب
⑤ حفظ رمز
الإنهاء ✓

7. تبديل السياق (Context Switching)

الانتقال من تنفيذ عملية إلى تنفيذ عملية أخرى — يسمح بتشغيل عدة عمليات على معالج واحد.

لماذا نحتاجه؟

⚠️ المشكلة
المعالج واحد فقط — العمليات كثيرة — نريد تشغيلها "في نفس الوقت"
✅ الحل
نُقسّم وقت المعالج — كل عملية تأخذ مدة زمنية قصيرة (Time Slice / Time Quantum)

الخط الزمني — كيف يبدو توزيع وقت المعالج

A
100ms
تبديل
B
100ms
تبديل
C
100ms
تبديل
A
100ms
...

للإنسان يبدو أن A وB وC تعمل جميعاً معاً — بسبب سرعة المعالج الكبيرة جداً!

آلية العمل

المرحلة 1 — حفظ السياق القديم
✓ حفظ قيمة Program Counter (PC)
✓ حفظ محتويات جميع السجلات
✓ حفظ معلومات الذاكرة
← كل هذا يُحفظ في PCB العملية الحالية
المرحلة 2 — تحميل السياق الجديد
✓ استعادة قيمة PC للعملية الجديدة
✓ استعادة محتويات السجلات
✓ استعادة معلومات الذاكرة
← المعالج يكمل من حيث توقفت العملية بالضبط!

تكلفة تبديل السياق

إذا كل تبديل يستغرق 1 ميلي ثانية، وعندنا 100 عملية تتبدل كل 10 ميلي ثانية:
→ نضيع 1/10 من وقت المعالج في التبديل فقط!
⚠️ التوازن ضروري: Time Slice طويل جداً → عملية واحدة تحتكر المعالج. Time Slice قصير جداً → ضياع كثير في التبديل. يجب اختيار مدة مناسبة.

📋 ملخص الدرس الثالث

1. البرنامج مقابل العملية

📁 البرنامج (Program)
  • ملف ثابت على القرص
  • لا يستهلك موارد
  • قد لا يُشغَّل أبداً
⚙️ العملية (Process)
  • برنامج محمّل في الذاكرة
  • تستهلك المعالج (CPU) والذاكرة وموارد الإدخال/الإخراج
  • لها حالة ومجلد سياق (PCB) خاص

نفس البرنامج → عدة عمليات: Word.exe ملف واحد، 3 نوافذ = 3 عمليات مستقلة بموارد منفصلة.

2. مكونات العملية

Text — النص
تعليمات البرنامج — ثابتة لا تتغير
Data — البيانات
متغيرات وثوابت عامة — تتغير أثناء التنفيذ
Stack — الأكوام
بيانات الدوال — إدارة تلقائية، حجم محدود
Heap — الأكوام الديناميكية
ذاكرة ديناميكية — إدارة يدوية، يجب تحريرها

3. مجلد السياق (PCB) — "الملف الطبي" للعملية

المعلومةدورها
PID — معرف العمليةرقم فريد يُعرّف العملية
Process State — حالة العمليةالحالة الحالية (New جديدة / Ready جاهزة / Running جارية / Waiting مجمدة / Terminated منتهية)
Program Counter — عداد البرنامجالتعليمة التالية — يُحفظ عند الإيقاف ويُستعاد عند الاستئناف
Registers — السجلاتمحتويات سجلات المعالج — تُحفظ عند تبديل السياق
Scheduling Info — معلومات الجدولةالأولوية وقوائم الجدولة
Memory Info — معلومات الذاكرةجداول الصفحات وحدود الذاكرة
Accounting Info — معلومات المحاسبةوقت المعالج المستخدم، الوقت المنقضي الفعلي
I/O Status — حالة الإدخال/الإخراجالملفات المفتوحة والأجهزة المخصصة

4. دورة حياة العملية — الحالات الخمس

New — جديدة
Ready — جاهزة
↕ (جدولة)
Running — جارية
↓ (I/O)
Waiting — مجمدة → تعود لـ Ready
↓ (انتهاء)
Terminated — منتهية
💡 قاعدة مهمة: Waiting لا تنتقل مباشرة لـ Running — تعود أولاً لـ Ready وتنتظر دورها في الجدولة.
Ready — جاهزة
تستطيع العمل لكن تنتظر وقت المعالج فقط
← يمكن جدولتها في أي لحظة
Waiting — مجمدة
لا تستطيع العمل حتى يكتمل الإدخال/الإخراج
← لا يمكن جدولتها أبداً

5. تبديل السياق (Context Switching)

حفظ
PC + سجلات + ذاكرة → PCB القديم
تبديل العملية
تحميل
PC + سجلات + ذاكرة ← PCB الجديد

التكلفة: وقت التبديل وقت ضائع — المعالج لا ينجز عملاً مفيداً خلاله. كلما زادت التبديلات، زاد الوقت الضائع → يجب التوازن في اختيار مدة الوقت المخصصة (Time Slice).

6. الإنشاء والإنهاء

إنشاء — 6 خطوات
① تحقق من الموارد
② تخصيص PID
③ إنشاء PCB
④ تخصيص الذاكرة
⑤ تحميل البرنامج
⑥ إضافة لـ Ready Queue (قائمة الجاهزين)
إنهاء — 3 أسباب
طبيعي: أكملت عملها بنجاح
⚠️ بخطأ: خطأ حرج لم تتجاوزه
قسري: عملية أخرى أو المستخدم طلبه

بعد الإنهاء: تحرير الذاكرة → إغلاق الملفات → إبلاغ الأب → حفظ رمز الإنهاء

❓ أسئلة الدرس الثالث

🔵 المجموعة الأولى — أسئلة أساسية
أساسي
س1: ما الفرق بين البرنامج والعملية؟ أعط مثالاً يوضح الفرق.
البرنامج: ملف ثابت على القرص، لا يستهلك موارد، قد لا يُشغَّل أبداً.
العملية: برنامج تم تحميله في الذاكرة وقيد التنفيذ، تستهلك CPU وذاكرة وموارد.
مثال: Word.exe على القرص = برنامج واحد. فتح 3 نوافذ Word = 3 عمليات منفصلة في الذاكرة، كل منها بموارد مستقلة.
أساسي
س2: اشرح الفرق بين Stack و Heap في العملية. ما الغرض من كل منهما؟
Stack (الأكوام): يخزن بيانات الدوال ومتغيراتها المحلية ومعاملاتها. إدارة تلقائية. حجم محدود. تُمسح البيانات تلقائياً عند انتهاء الدالة.
Heap (الأكوام الديناميكية): ذاكرة ديناميكية يُخصصها البرنامج وقت التشغيل عند الحاجة لحجم غير معروف مسبقاً. إدارة يدوية — يجب تحريرها يدوياً وإلا حدث تسرب الذاكرة.
أساسي
س3: ما هي المعلومات الأساسية التي يحفظها مجلد السياق (PCB)؟
1. PID (معرف العملية): رقم فريد للعملية
2. Process State (حالة العملية): الحالة (New جديدة / Ready جاهزة / Running جارية / Waiting مجمدة / Terminated منتهية)
3. Program Counter — عداد البرنامج (PC): التعليمة التالية
4. Registers (السجلات): محتويات سجلات المعالج
5. Scheduling Info (معلومات الجدولة): الأولوية وقوائم الجدولة
6. Memory Info (معلومات الذاكرة): جداول الصفحات وحدود الذاكرة
7. Accounting Info (معلومات المحاسبة): وقت المعالج المستخدم
8. I/O Status (حالة الإدخال/الإخراج): الملفات المفتوحة والأجهزة المخصصة
أساسي
س4: اشرح الحالات الخمس التي تمر بها العملية خلال حياتها مع الانتقالات بينها.
1. New (جديدة): للتو أُنشئت → تنتقل لـ Ready (جاهزة)
2. Ready (جاهزة): جاهزة تنتظر وقت المعالج → تنتقل لـ Running (جارية) عند الجدولة
3. Running (جارية): تنفذ الآن → تنتقل لـ Ready (انتهت مدة الوقت المخصصة) أو Waiting (طلبت إدخال/إخراج) أو Terminated (انتهت)
4. Waiting (مجمدة): تنتظر حدث معين (إدخال/إخراج) → تنتقل لـ Ready (جاهزة) عند اكتمال الحدث
5. Terminated (منتهية): انتهت، مواردها تُحرر — نهاية دورة الحياة
أساسي
س5: ما هي الخطوات الرئيسية لإنشاء عملية جديدة في نظام التشغيل؟
1. التحقق من الموارد: هل يوجد ذاكرة كافية؟
2. تخصيص PID: رقم فريد للعملية الجديدة
3. إنشاء PCB: بناء بنية بيانات معلومات العملية
4. تخصيص الذاكرة: منطقة لـ Text (النص), Data (البيانات), Stack (الأكوام), Heap (الأكوام الديناميكية)
5. تحميل البرنامج: نسخ التعليمات من القرص للذاكرة
6. إضافة للجدولة: وضع العملية في Ready Queue (قائمة الجاهزين)
🟢 المجموعة الثانية — أسئلة سيناريو عملي
سيناريو
س6: فتحت 3 نوافذ من Word في نفس الوقت. كم برنامج وكم عملية؟ هل كل نافذة لها PCB منفصل؟
برنامج واحد: Word.exe موجود مرة واحدة فقط على القرص.
3 عمليات: كل نافذة = عملية مستقلة في الذاكرة بموارد خاصة.
نعم، PCB (مجلد سياق) منفصل لكل عملية: PID (معرف) مختلف، حالة مستقلة، Program Counter (عداد البرنامج) خاص، سجلات (Registers) خاصة. لهذا يمكن أن تعمل النوافذ الثلاث باستقلالية كاملة.
سيناريو
س7: برنامج يطلب قراءة بيانات من القرص. ما حالة العملية قبل، أثناء، وبعد القراءة؟
قبل القراءة: حالة Running — تنفذ بشكل طبيعي.
أثناء انتظار البيانات: حالة Waiting (مجمدة) — توقفت، لا تستطيع التنفيذ، حررت المعالج لعمليات أخرى.
بعد وصول البيانات: تنتقل لـ Ready (جاهزة) — جاهزة من جديد، تنتظر وقت المعالج، ثم تعود لـ Running (جارية) وتكمل من حيث توقفت.
سيناريو
س8: المعالج يقوم بـ Context Switching بين عملية A وB. ماذا يحفظ؟ وكيف تكمل A من نفس النقطة؟
ما يُحفظ عند إيقاف A: قيمة PC (عداد البرنامج — أين كانت)، محتويات جميع Registers (السجلات — البيانات الحالية)، معلومات الذاكرة — كلها في PCB (مجلد السياق) الخاص بـ A.
كيف تكمل A: عند العودة لـ A، يُحمَّل PC المحفوظ وجميع السجلات (Registers) من PCB → المعالج يبدأ من نفس التعليمة التي توقف عندها بالضبط!
تأثير عدد Context Switches (تبديلات السياق): كل تبديل يكلف وقتاً — كلما زادت، انخفضت الكفاءة.
سيناريو
س9: عملية أب أنشأت عملية طفل. إذا أُنهيت عملية الأب فجأة، ماذا يحدث للطفل؟
عملية الابن تصبح بلا أب.
الحلول الممكنة:
1. يُنهي نظام التشغيل عمليات الأبناء تلقائياً مع إنهاء الأب.
2. يُحوّل نظام التشغيل الأبناء لعملية أخرى تتولى إدارتهم.
3. الموارد يجب ألا تبقى محجوزة بلا من يُديرها.
سيناريو
س10: حاولت إنشاء عملية جديدة لكن الذاكرة ممتلئة. ماذا يحدث؟ ما البدائل؟
ماذا يحدث: نظام التشغيل يرفض إنشاء العملية — لا موارد كافية.
البدائل الممكنة:
1. إغلاق برامج غير مستخدمة لتحرير ذاكرة
2. إنهاء عمليات بأولوية منخفضة لتوفير مساحة
3. انتظار المستخدم وإعادة المحاولة لاحقاً
سيناريو
س10-ب: اشرح الخطوات التي يتخذها نظام التشغيل عند إنهاء عملية. ما الفرق بين الإنهاء الطبيعي والقسري؟
خطوات الإنهاء:
1. وقف التنفيذ — إزالة العملية من قائمة الجارية
2. تحرير الذاكرة المخصصة
3. إغلاق الملفات المفتوحة وتحرير أجهزة I/O
4. إبلاغ العملية الأب بانتهاء هذه العملية
5. حفظ رمز الإنهاء (Exit Code)

الفرق:
طبيعي: البرنامج أكمل جميع تعليماته بنجاح.
قسري: عملية أخرى أو المستخدم طلب الإنهاء.
🟠 المجموعة الثالثة — أسئلة تحليلية
تحليلي
س11: قارن بين الحالات Ready و Running و Waiting. ما الفرق الجوهري؟ لماذا لا نجمعهم في حالة واحدة؟
Ready (جاهزة): تستطيع العمل لكن تنتظر وقت المعالج فقط — يمكن جدولتها.
Running (جارية): تعمل الآن — تستخدم المعالج فعلاً.
Waiting (مجمدة): لا تستطيع العمل حتى يكتمل الإدخال/الإخراج — لا يمكن جدولتها.
لماذا لا نجمعهم: إذا دمجنا Waiting مع Ready، الجدولة ستحاول تشغيل عملية محصورة (تضيع وقتاً). إذا دمجنا Ready مع Running، لا نعرف أي عملية تستخدم المعالج فعلاً. التمييز يُحسّن كفاءة الجدولة.
تحليلي
س12: لماذا يحتاج OS إلى PCB لكل عملية؟ ما المشاكل بدون PCB؟
بدون PCB (مجلد السياق):
❌ عند Context Switching (تبديل السياق): لا نستطيع حفظ حالة العملية → لن نعرف من أين نكمل!
❌ لا يمكن تشغيل عمليات متعددة — كل تبديل = فقد البيانات
❌ لا جدولة — لا نعرف أولويات ولا معلومات
❌ لا يمكن تحرير الموارد بشكل صحيح — لا نعرف من يملك ماذا
❌ لا أمان — عمليات تتداخل مع بعضها
الخلاصة: PCB ضروري لأي نظام تشغيل حديث يدعم تعدد المهام.
تحليلي
س13: لماذا نحتاج حفظ جميع السجلات (Registers) عند تبديل السياق (Context Switching)؟ هل يمكن حفظ جزء فقط؟
لماذا الكل: السجلات (Registers) تحتوي بيانات العملية الحالية. لو نسينا سجلاً واحداً قد يكون هو المُستخدم في التعليمة التالية → نتيجة خاطئة!
هل يمكن الجزء فقط؟ نظرياً ممكن، لكن عملياً لا نستطيع التنبؤ بأي سجل ستحتاجه التعليمة التالية. الحفظ الكامل = تكلفة صغيرة وأمان 100%.
تحليلي
س14: تبديل السياق (Context Switching) يستغرق 100ms. ما التأثير على الأداء والمستخدم؟
الحساب: كل عملية تأخذ 10ms عمل مفيد + 100ms تبديل = 110ms.
الكفاءة = 10/110 = 9% فقط! (91% ضائع في التبديل!)
على الأداء: النظام بطيء جداً، مثل موظف يقضي أكثر وقته في التنقل بين المكاتب.
على المستخدم: استجابة سيئة جداً، الضغط على زر قد يستغرق ثواني، الشعور بأن البرنامج "معلق".
تحليلي
س15: اشرح التوازن بين الاستجابة (Responsiveness) والكفاءة (Efficiency) في اختيار Time Slice.
Time Slice (مدة الوقت المخصصة) طويلة (100ms): كفاءة عالية (تبديلات السياق قليلة)، لكن المستخدم ينتظر طويلاً = استجابة سيئة.
Time Slice قصيرة (1ms): استجابة سريعة ممتازة، لكن تبديلات السياق كثيرة = كفاءة منخفضة وعبء عالٍ على النظام.
الحل الأمثل: Time Slice بين قصيرة وطويلة — توازن جيد بين الاثنين.
النتيجة: 0 / 10
لم تُجب بعد

📝 أسئلة امتحان الدرس الثالث

السؤال 1 / 10
أي العبارات صحيحة بخصوص العملية (Process)؟
السؤال 2 / 10
ما المعلومة التي لا تُحفظ في PCB؟
السؤال 3 / 10
عملية في حالة Running انتهت مدة الـ Time Slice الخاصة بها. إلى أي حالة تنتقل؟
السؤال 4 / 10
عملية تطلب عملية إدخال/إخراج (I/O). إلى أي حالة تنتقل؟
السؤال 5 / 10
Context Switching هو:
السؤال 6 / 10
الفرق بين Stack و Heap في العملية:
السؤال 7 / 10
الخطوة الأولى لإنشاء عملية جديدة هي:
السؤال 8 / 10
Context Switching بتكرار عالٍ جداً (كل 1ms) يؤدي إلى:
السؤال 9 / 10
ما الذي يحدث عند إنهاء عملية الأب قبل إنهاء عملية الطفل (Cascading Termination)؟
السؤال 10 / 10
لماذا يجب حفظ جميع سجلات CPU عند Context Switching؟

1. مفهوم جدولة المعالج (CPU Scheduling)

📖 التعريف: عملية اختيار عملية من العمليات الجاهزة للتنفيذ في المعالج (CPU).

⚠️ المشكلة

المعالج واحد — العمليات كثيرة
كيف نختار أي عملية تنفذ أولاً؟

✅ الحل

جدولة المعالج تحدد ترتيب التنفيذ
الهدف: المعالج مشغول دائماً

💡 فائدة تعدد البرمجة

انتظار القرص (I/O): 10 ملي ثانية
في نفس الوقت: ملايين التعليمات!

2. أنواع العمليات — CPU Burst مقابل I/O Burst

CPU Burst — دفقة المعالج

فترة تقضيها العملية داخل المعالج

تقوم بحوسبة ومعالجة بيانات

I/O Burst — دفقة الإدخال/الإخراج

فترة تنتظرها العملية خارج المعالج

انتظار انتهاء عملية إدخال/إخراج

تصنيف العمليات

CPU Bound — مرتبط بالمعالج

CPU Burst طويلة — معظم الوقت بالحوسبة
مثال: البرامج العلمية والحسابية

I/O Bound — مرتبط بالإدخال/الإخراج

CPU Burst قصيرة — معظم الوقت في الانتظار
مثال: برامج التطبيقات التفاعلية

3. أنواع المجدولات (Schedulers)

المجدولالاسم العربيالوظيفةالمكانالسرعة
Long-termالمجدول طويل الأمدتحميل من القرص للذاكرة — من New → Readyبين القرص والذاكرةبطيء جداً
Medium-termالمجدول متوسط الأمدتعليق/استئناف العمليات عند نقص المواردفي الذاكرةمتوسط
Short-termالمجدول قصير الأمداختيار من القائمة الجاهزة للتنفيذفي الذاكرةسريع جداً

4. المرسل (Dispatcher)

هو الآلية التي تنفذ قرار المجدول قصير الأمد. يقوم بأربع خطوات:

1 حفظ سياق العملية الحالية — Context Save
2 استعادة سياق العملية الجديدة — Context Restore
3 التحول من Kernel Mode (وضع النواة) → User Mode (وضع المستخدم)
4 القفز للموقع الصحيح في العملية الجديدة
⏱️ Dispatch Latency — زمن الإرسال: الوقت المستغرق لتبديل العملية — يجب أن يكون صغيراً لأنه يحدث مع كل Context Switch (تبديل السياق).

5. معايير جودة الجدولة

↑ زيادة

CPU Utilization — استغلال المعالج

نسبة استخدام المعالج — الهدف: 40-90%

↑ زيادة

Throughput — الإنتاجية

عدد العمليات المنجزة / الوقت

↓ تقليل

Turnaround Time — زمن الإكمال

زمن الانتهاء − زمن الدخول

↓ تقليل

Waiting Time — زمن الانتظار

Turnaround Time − Burst Time

↓ تقليل

Response Time — زمن الاستجابة

الزمن من الدخول لأول مخرج

6. كيف نحسب الإنتاجية (Throughput)؟

الإنتاجية تقيس كم عملية أنجز النظام في كل وحدة زمن. كلما كانت أعلى كان النظام أكفأ.

📐 المعادلة
الإنتاجية = عدد العمليات المكتملة ÷ زمن انتهاء آخر عملية
الخطوة 1: عدّ عدد العمليات في المسألة (P1، P2، P3 ... إلخ)
مثال: إذا كان عندك P1، P2، P3 → العدد = 3
الخطوة 2: من مخطط Gantt، اقرأ الرقم الأخير على المحور الزمني (نهاية آخر شريط)
هذا هو الزمن الكلي الذي احتاجه النظام لإنجاز جميع العمليات
الخطوة 3: اقسم العدد على الزمن
النتيجة بوحدة "عملية/ms" — كلما كانت أكبر كان النظام أسرع
الخوارزمية عدد العمليات الزمن الكلي الإنتاجية
FCFS330 ms0.10 عملية/ms
SJF418 ms0.22 عملية/ms
Priority519 ms0.26 عملية/ms
Round Robin330 ms0.10 عملية/ms
⚠️ ملاحظة: الإنتاجية وحدها لا تكفي لتقييم الخوارزمية — يجب مقارنة جميع المعايير معاً (الانتظار، الإكمال، الإنتاجية).

7. خوارزمية FCFS (First Come, First Served — الأول يُخدم أولاً)

المبدأ: تنفذ العمليات بترتيب وصولها إلى صف الانتظار.

✅ المميزات

  • بسيطة وسهلة الفهم
  • عادلة: الترتيب حسب الوصول

❌ العيوب

  • Convoy Effect — تأثير القافلة: عملية طويلة تحتكر المعالج فتضطر العمليات القصيرة للانتظار طويلاً

مثال عملي على FCFS

العمليةوقت الوصولBurst Time
P1024
P233
P303

ترتيب الوصول: P1, P3, P2

مخطط Gantt:
P1
P3
P2
0
24
27
30
🧮 كيف نحسب؟ — مصدر كل رقم
الخطوة 1 — من الجدول: نأخذ وقت الوصول (Arrival) وBurst Time لكل عملية
الخطوة 2 — من مخطط Gantt: نقرأ متى بدأت كل عملية (الرقم على اليسار من شريطها) ومتى انتهت (الرقم على يمين شريطها)
الخطوة 3 — الحساب: زمن الانتظار = بداية التنفيذ (من Gantt) − وقت الوصول (من الجدول) زمن الإكمال = وقت الانتهاء (من Gantt) − وقت الوصول (من الجدول)
زمن الانتظار = بداية التنفيذ (Gantt) − وقت الوصول (الجدول)
P1 = 0 − 0 = 0
P3 = 24 − 0 = 24
P2 = 27 − 3 = 24
متوسط = (0 + 24 + 24) ÷ 3 = 16 ms
زمن الإكمال = وقت الانتهاء (Gantt) − وقت الوصول (الجدول)
P1 = 24 − 0 = 24
P3 = 27 − 0 = 27
P2 = 30 − 3 = 27
متوسط = (24 + 27 + 27) ÷ 3 = 26 ms
الإنتاجية (Throughput) = عدد العمليات ÷ الزمن الكلي
3 ÷ 30 = 0.1 عملية/ms

7. خوارزمية SJF (Shortest Job First — الأقصر أولاً)

المبدأ: اختيار العملية ذات أقصر وقت تنفيذ من بين العمليات الجاهزة.

✅ المميزات

  • أقل متوسط زمن انتظار من جميع الخوارزميات

❌ العيوب

  • Starvation — تجويع العمليات: العمليات الطويلة قد لا تجد فرصة أبداً
  • يحتاج معرفة مسبقة بوقت تنفيذ العملية

Non-preemptive — غير استباقية

بعد بدء العملية لا يمكن إيقافها حتى تنتهي

Preemptive — استباقية (SRTF)

إذا دخلت عملية أقصر من المتبقي، توقف الحالية وتنفذ الأقصر

مثال Non-preemptive SJF

العمليةوقت الوصولBurst Time
P1010
P223
P341
P454
مخطط Gantt:
P1
P3
P2
P4
0
10
11
14
18
🧮 كيف نحسب؟ — مصدر كل رقم
الخطوة 1 — من الجدول: نأخذ وقت الوصول (Arrival) لكل عملية — هذا هو الرقم المطروح
الخطوة 2 — من مخطط Gantt: نقرأ متى بدأت كل عملية ومتى انتهت — هذان هما الأرقام الأولى في كل طرح
الخطوة 3 — الحساب: زمن الانتظار = بداية التنفيذ (من Gantt) − وقت الوصول (من الجدول) زمن الإكمال = وقت الانتهاء (من Gantt) − وقت الوصول (من الجدول)
زمن الانتظار = بداية التنفيذ (Gantt) − وقت الوصول (الجدول)
P1 = 0 − 0 = 0
P3 = 10 − 4 = 6
P2 = 11 − 2 = 9
P4 = 14 − 5 = 9
متوسط = (0 + 6 + 9 + 9) ÷ 4 = 6 ms
زمن الإكمال = وقت الانتهاء (Gantt) − وقت الوصول (الجدول)
P1 = 10 − 0 = 10
P3 = 11 − 4 = 7
P2 = 14 − 2 = 12
P4 = 18 − 5 = 13
متوسط = (10 + 7 + 12 + 13) ÷ 4 = 10.5 ms
الإنتاجية (Throughput) = عدد العمليات ÷ الزمن الكلي
4 ÷ 18 = 0.22 عملية/ms

8. خوارزمية الأولوية (Priority Scheduling)

المبدأ: لكل عملية رقم أولوية. تنفذ العملية ذات الأولوية الأعلى أولاً.

⚠️ نظام الترقيم: الرقم الأقل = الأولوية الأعلى (أهمية أكثر) — الرقم 1 أهم من الرقم 10.

⚠️ مشكلة Starvation — تجويع العمليات

العمليات ذات الأولوية المنخفضة قد لا تنفذ أبداً إذا استمرت عمليات ذات أولوية عالية في الوصول

✅ الحل: Aging — تقادم الأولوية

كل عملية تنتظر لفترة → نرفع أولويتها تدريجياً → حتى تصبح عالية وتنفذ

مثال Priority Scheduling

العمليةالأولويةBurst Time
P21 ← أعلى1
P525
P1310
P332
P44 ← أدنى1
مخطط Gantt:
P2
P5
P1
P3
P4
0
1
6
16
18
19
🧮 كيف نحسب؟ — مصدر كل رقم
الخطوة 1 — من الجدول: نأخذ وقت الوصول (Arrival) لكل عملية — في هذا المثال جميع العمليات وصلت في الوقت 0
الخطوة 2 — من مخطط Gantt: نقرأ متى بدأت كل عملية ومتى انتهت — الترتيب حسب الأولوية (رقم أقل = أهمية أعلى)
الخطوة 3 — الحساب: زمن الانتظار = بداية التنفيذ (من Gantt) − وقت الوصول (من الجدول) زمن الإكمال = وقت الانتهاء (من Gantt) − وقت الوصول (من الجدول)
زمن الانتظار = بداية التنفيذ (Gantt) − وقت الوصول (الجدول)
P2 = 0 − 0 = 0
P5 = 1 − 0 = 1
P1 = 6 − 0 = 6
P3 = 16 − 0 = 16
P4 = 18 − 0 = 18
متوسط = (0 + 1 + 6 + 16 + 18) ÷ 5 = 8.2 ms
زمن الإكمال = وقت الانتهاء (Gantt) − وقت الوصول (الجدول)
P2 = 1 − 0 = 1
P5 = 6 − 0 = 6
P1 = 16 − 0 = 16
P3 = 18 − 0 = 18
P4 = 19 − 0 = 19
متوسط = (1 + 6 + 16 + 18 + 19) ÷ 5 = 12 ms
الإنتاجية (Throughput) = عدد العمليات ÷ الزمن الكلي
5 ÷ 19 = 0.26 عملية/ms

9. خوارزمية Round Robin — المشاركة الزمنية

المبدأ: كل عملية تأخذ حصة زمنية صغيرة (Quantum — الكم الزمني) ثم تعود لآخر الصف.

⏱️ Quantum — الكم الزمني: القيمة النموذجية 10–100ms، الشائعة 20ms.

✅ المميزات

  • عادلة: كل عملية تأخذ حصتها
  • لا Starvation — استجابة سريعة

❌ العيوب

  • Context Switching كثير → Overhead عالٍ (عبء على النظام) إذا كان Quantum صغيراً جداً

Quantum صغير جداً

استجابة سريعة ✓
Overhead ضخم ✗

Quantum متوسط (20ms)

توازن جيد ✓

Quantum كبير جداً

Overhead قليل ✓
استجابة بطيئة ✗

مثال Round Robin (Quantum = 4)

العمليةBurst Time
P124
P23
P33
مخطط Gantt (Quantum=4):
P1
P2
P3
P1
P1
P1
P1
P1
0
4
7
10
14
18
22
26
30
🧮 كيف نحسب؟ — مصدر كل رقم
الخطوة 1 — من الجدول: نأخذ Burst Time لكل عملية — يُستخدم في حساب زمن الانتظار فقط في Round Robin
الخطوة 2 — من مخطط Gantt: نقرأ آخر لحظة انتهت فيها العملية نهائياً (آخر شريط لها في المخطط)
الخطوة 3 — الحساب (Round Robin مختلف): زمن الانتظار = زمن الإكمالوقت الوصولBurst Time زمن الإكمال = وقت الانتهاء الأخير (من Gantt) − وقت الوصول (من الجدول)
زمن الانتظار = زمن الإكمال − وقت الوصول − Burst Time
P1 = 30 − 0 − 24 = 6
P2 = 7 − 0 − 3 = 4
P3 = 10 − 0 − 3 = 7
متوسط = (6 + 4 + 7) ÷ 3 = 5.67 ms
زمن الإكمال = وقت الانتهاء (Gantt) − وقت الوصول (الجدول)
P1 = 30 − 0 = 30
P2 = 7 − 0 = 7
P3 = 10 − 0 = 10
متوسط = (30 + 7 + 10) ÷ 3 = 15.67 ms
الإنتاجية (Throughput) = عدد العمليات ÷ الزمن الكلي
3 ÷ 30 = 0.1 عملية/ms

📋 ملخص الدرس الرابع: جدولة المعالج

1. أنواع الدفقات والعمليات

CPU Burst مقابل I/O Burst
CPU Burst — دفقة المعالجوقت العمل الفعلي داخل المعالج
I/O Burst — دفقة الإدخال/الإخراجوقت الانتظار خارج المعالج
CPU Bound مقابل I/O Bound
CPU Bound — مرتبط بالمعالجمعظم وقته حوسبة — CPU Burst طويلة
I/O Bound — مرتبط بالإدخال/الإخراجمعظم وقته انتظار — CPU Burst قصيرة

2. أنواع المجدولات الثلاثة

بطيء جداً

Long-term — المجدول طويل الأمد

القرص → الذاكرة  |  New → Ready

متوسط

Medium-term — المجدول متوسط الأمد

تعليق/استئناف العمليات عند نقص الموارد

سريع جداً

Short-term — المجدول قصير الأمد

يختار من Ready Queue  |  يعمل باستمرار

3. معايير جودة الجدولة

↑ نريد زيادتها

CPU Utilization — استغلال المعالج (40-90%)
Throughput — الإنتاجية (عمليات/وقت)

↓ نريد تقليلها

Turnaround Time — زمن الإكمال (انتهاء − دخول)
Waiting Time — زمن الانتظار (Turnaround − Burst)
Response Time — زمن الاستجابة (أول مخرج − دخول)

4. مقارنة خوارزميات الجدولة

الخوارزميةالاسم العربيالمبدأالميزةالعيب
FCFSالأول يُخدم أولاًترتيب الوصولبسيطة وعادلةConvoy Effect — تأثير القافلة
SJFالأقصر أولاًأقصر Burst أولاًأقل متوسط انتظارStarvation + تحتاج معرفة مسبقة
Priorityالأولويةرقم الأولويةينفذ المهم أولاًStarvation (حل: Aging)
Round Robinالمشاركة الزمنيةQuantum لكل عمليةعادلة — لا StarvationOverhead من Context Switching

5. متى تختار أي خوارزمية؟

إذا: البساطة هي الأهم

→ FCFS

الأول يُخدم أولاً

إذا: تريد أقل متوسط انتظار

→ SJF

الأقصر أولاً

إذا: بعض العمليات أهم من غيرها

→ Priority

مع Aging لمنع Starvation

إذا: تريد عدالة واستجابة سريعة

→ Round Robin

مع Quantum مناسب (20ms)

6. معادلات الحساب الأساسية

زمن الإكمال (Turnaround Time)
زمن الإكمال = زمن الانتهاء زمن الوصول
زمن الانتظار (Waiting Time)
زمن الانتظار = بداية التنفيذ زمن الوصول
المتوسط (Average)
المتوسط = مجموع الأوقات ÷ عدد العمليات
الإنتاجية (Throughput)
الإنتاجية = عدد العمليات المكتملة ÷ الزمن الكلي

7. مصطلحات مهمة

Starvation — تجويع العمليات

عملية لا تجد فرصة أبداً — تحدث في SJF و Priority

Aging — تقادم الأولوية

حل Starvation — ترفع أولوية العمليات التي تنتظر طويلاً

Convoy Effect — تأثير القافلة

عملية طويلة تحتجز المعالج وتجعل العمليات القصيرة تنتظر — مشكلة FCFS

أسئلة الدرس الرابع

المجموعة الأولى: أسئلة أساسية

أساسي
السؤال 1: عرّف جدولة المعالج (CPU Scheduling) واشرح لماذا نحتاج إليها.
أساسي
السؤال 2: اشرح الفرق بين CPU Burst و I/O Burst. أعط أمثلة على كل منهما.
أساسي
السؤال 3: اذكر الأنواع الثلاث من المجدولات واشرح وظيفة كل منها.
أساسي
السؤال 4: ما هي معايير قياس جودة خوارزمية الجدولة؟ اشرح كل معيار.
أساسي
السؤال 5: قارن بين خوارزميات FCFS و SJF من حيث المميزات والعيوب.

المجموعة الثانية: أسئلة سيناريو

سيناريو
السؤال 6: نظام يحتوي على عمليات P1 (20ms)، P2 (3ms)، P3 (3ms) بترتيب الوصول. اشرح مشكلة Convoy Effect في FCFS وكيف تؤثر على الأداء.
سيناريو
السؤال 7: برنامج تحرير صور (CPU Bound) وبرنامج معالجة نصوص (I/O Bound): كيف تختلف متطلبات الجدولة لكل منهما؟ أي خوارزمية تناسب كل برنامج؟
سيناريو
السؤال 8: نظام يعطي أولويات مختلفة للعمليات. ما مشكلة Starvation؟ كيف يمكن حلها باستخدام Aging؟
سيناريو
السؤال 9: عملية P1 تحتاج 53ms والـ Quantum = 20ms في Round Robin. كم مرة ستُقاطع؟ كم مرة ستعود للصف؟
سيناريو
السؤال 10: النظام يستخدم Round Robin مع Quantum=50ms. المستخدمون يشتكون من بطء الاستجابة. اقترح حلاً مع شرح المقايضات.

المجموعة الثالثة: أسئلة تحليلية

تحليلي
السؤال 11: اشرح العلاقة بين Waiting Time و Turnaround Time. هل يمكن أن يكون أحدهما أقل من الآخر؟
تحليلي
السؤال 12: قارن بين FCFS و Round Robin من حيث الإنصاف (Fairness) والكفاءة. أيهما أفضل ولماذا؟
تحليلي
السؤال 13: في خوارزمية SJF Preemptive: لماذا تعطي متوسط زمن انتظار أقل من Non-preemptive؟ ما التكاليف الإضافية؟
تحليلي
السؤال 14: الـ Quantum في Round Robin يؤثر بشكل كبير على الأداء: ما المشاكل إذا جعلنا Quantum=1ms؟ وإذا Quantum=1000ms؟ كيف نختار القيمة المثالية؟
تحليلي
السؤال 15: اشرح كيف تتعامل خوارزمية Priority مع المقايضة بين: تنفيذ العمليات المهمة بسرعة — وعدم حرمان العمليات قليلة الأولوية.
النتيجة: 0 / 10
لم تُجب بعد

أسئلة امتحان الدرس الرابع

السؤال 1 / 10
أي من العبارات التالية صحيح عن جدولة المعالج؟
السؤال 2 / 10
ما الفرق بين CPU Burst و I/O Burst؟
السؤال 3 / 10
أي خوارزمية تعطي أقل متوسط زمن انتظار نظرياً؟
السؤال 4 / 10
مشكلة Starvation (الحرمان) تحدث في:
السؤال 5 / 10
ما هو Convoy Effect في خوارزمية FCFS؟
السؤال 6 / 10
ما الفرق بين Preemptive و Non-preemptive scheduling؟
السؤال 7 / 10
ما هو حل مشكلة Starvation في خوارزمية Priority؟
السؤال 8 / 10
عمليات P1(Burst=24), P2(Burst=3, وصل t=3), P3(Burst=3, وصل t=0) بخوارزمية FCFS. ما متوسط زمن الانتظار؟
السؤال 9 / 10
في Round Robin، إذا كان Quantum صغير جداً (1ms) ما المشكلة الرئيسية؟
السؤال 10 / 10
ما المشكلة المشتركة بين SJF و Priority Scheduling؟