The Ultimate Compendium الموجز الشامل (Compendium)
Everything you need for the Midterm. OS Structures, Processes, Scheduling, Synchronization, and Deadlocks. كل ما تحتاجه للاختبار النصفي. هياكل نظم التشغيل، العمليات، الجدولة، التزامن، والجمود.
Covering Modules 1-6 يغطي الوحدات 1-6
Module 1: OS Services & Structure الوحدة 1: خدمات وهيكلية نظام التشغيل
Dual Mode Operation تشغيل ثنائي الوضع (Dual Mode)
Hardware protection against erratic users. حماية الأجهزة ضد المستخدمين غير المستقرين.
System Calls نداءات النظام (System Calls)
The API between User Programs and the OS. واجهة برمجة التطبيقات (API) بين برامج المستخدم ونظام التشغيل.
Common APIs: POSIX (Linux/Unix), Win32 (Windows), Java API.
Note: `printf()` is a library call, which eventually calls `write()` (System Call).
APIs شائعة: POSIX (Linux/Unix), Win32 (Windows), Java API.
ملاحظة: `printf()` هو نداء مكتبة، يستدعي في النهاية `write()` (نداء نظام).
Module 2: Processes & Threads الوحدة 2: العمليات والخيوط (Threads)
Process State Diagram مخطط حالة العملية
PCB (Process Control Block) كتلة تحكم العملية (PCB)
The "Soul" of the process. "روح" العملية.
- PID: Unique ID.PID: معرف فريد.
- Program Counter: Next instruction.Program Counter: التعليمة التالية.
- Registers: CPU state.Registers: حالة المعالج.
- Memory Limits: Base/Limit.Memory Limits: الأساس/الحد.
- Open Files: I/O list.Open Files: قائمة I/O.
Module 3: Scheduling الوحدة 3: الجدولة (Scheduling)
Problem:مشكلة: Convoy Effect (Short waits for Long).تأثير القافلة (القصير ينتظر الطويل).
Non-Preemptive.غير وقائي (Non-Preemptive).
Benefit:فائدة: Optimal Avg Wait Time.أمثل متوسط وقت انتظار.
Problem:مشكلة: Starvation, Predicting next burst.المجاعة (Starvation)، التنبؤ بالدفعة التالية.
Fair. Good response time.عادل. وقت استجابة جيد.
High context switch overhead if $q$ is small.عبء تبديل سياق عالي إذا كانت $q$ صغيرة.
Problem:مشكلة: Starvation.المجاعة.
Solution:حل: Aging.الشيخوخة (Aging).
Module 4: Synchronization Tools الوحدة 4: أدوات التزامن
Critical Section (CS) Requirements متطلبات القسم الحرج (CS)
- Mutual Exclusion:Mutual Exclusion: Only one process in CS at a time.عملية واحدة فقط في الـ CS في نفس الوقت.
- Progress:Progress: If CS is empty, selection isn't postponed indefinitely.إذا كان الـ CS فارغاً، لا يتم تأجيل الاختيار إلى أجل غير مسمى.
- Bounded Waiting:Bounded Waiting: Limit on times others enter CS before me (No starvation).حد لعدد مرات دخول الآخرين للـ CS قبلي (لا مجاعة).
Semaphores (S) Semaphores (S)
Counting Semaphore: For resource pools.Counting Semaphore: لمجمعات الموارد.
Binary Semaphore: Same as Mutex (0 or 1).Binary Semaphore: مثل الـ Mutex (0 أو 1).
Module 5: Classical Problems الوحدة 5: المشاكل الكلاسيكية
Producer/Consumer. Needs 3 semaphores: `mutex` (lock), `full` (item count), `empty` (space count). منتج/مستهلك. يحتاج 3 سيمافورات: `mutex` (قفل)، `full` (عدد العناصر)، `empty` (عدد الفراغات).
Multiple Readers OK. Writer needs exclusive access. Problem: Writer Starvation. قراء متعددون مسموح. الكاتب يحتاج وصولاً حصرياً. مشكلة: مجاعة الكاتب.
5 chairs, 5 sticks. Need 2 to eat. Deadlock if everyone takes Left stick at once. 5 كراسي، 5 أعواد. تحتاج 2 للأكل. يحدث جمود (Deadlock) إذا أخذ الجميع العود الأيسر في آن واحد.
Module 6: Deadlocks الوحدة 6: الجمود (Deadlocks)
The 4 Necessary Conditions الشروط الأربعة الضرورية
ALL must hold for deadlock to occur. يجب أن تتحقق جميعها لحدوث الجمود.
- Mutual Exclusionالاستبعاد المتبادل (Mutual Exclusion)
- Hold and Waitالاحتفاظ والانتظار (Hold and Wait)
- No Preemptionلا استيلاء (No Preemption)
- Circular Waitالانتظار الدائري (Circular Wait)
Banker's Algorithm خوارزمية المصرفي (Banker's Algorithm)
Used for Deadlock Avoidance. تستخدم لـ تجنب الجمود (Deadlock Avoidance).
Check if system is in a Safe State (Is there a sequence where everyone can finish?).
If Request $\le$ Available, pretend to allocate and check Safety.
تحقق مما إذا كان النظام في حالة آمنة (Safe State) (هل يوجد تسلسل يمكن للجميع فيه الانتهاء؟).
إذا كان الطلب $\le$ المتاح، تظاهر بالتخصيص وتحقق من الأمان.
The Mega Vault: Midterm Edition الخزنة الكبرى: إصدار النصفي
`fork()` returns 0 to Child, PID to Parent.
Child gets a copy of data, not shared memory.
`fork()` تعيد 0 للابن، و PID للأب.
يحصل الابن على نسخة من البيانات، وليس ذاكرة مشتركة.
User threads are fast but if one blocks, the whole process blocks (Many-to-One). Kernel threads are slower (overhead) but independent (One-to-One). خيوط المستخدم سريعة لكن إذا توقفت واحدة، تتوقف العملية بالكامل (Many-to-One). خيوط النواة أبطأ (overhead) لكنها مستقلة (One-to-One).
Do NOT just sum waiting periods. Always use:
$Wait = Turnaround - Burst$.
It reduces calculation errors.
لا تجمع فترات الانتظار فقط. استخدم دائماً:
$Wait = Turnaround - Burst$.
تقلل من أخطاء الحساب.
In Bounded Buffer, order matters.
`wait(empty)` BEFORE `wait(mutex)`.
If swapped $\to$ Deadlock.
في Bounded Buffer، الترتيب مهم.
`wait(empty)` قبل `wait(mutex)`.
إذا تم التبديل $\to$ جمود (Deadlock).
Cycle in RAG $\neq$ Deadlock (if multiple instances exist).
Cycle in RAG == Deadlock (if only 1 instance per resource).
دورة في RAG $\neq$ جمود (إذا وجدت مثيلات متعددة).
دورة في RAG == جمود (إذا وجد مثيل واحد فقط لكل مورد).
Monitor `signal()` is not persistent. If no one is waiting, the signal is lost. Semaphore `signal()` increases counter (persistent). إشارة المراقب `signal()` غير دائمة. إذا لم يكن أحد ينتظر، تضيع الإشارة. إشارة السيمافور `signal()` تزيد العداد (دائمة).