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. حماية الأجهزة ضد المستخدمين غير المستقرين.

User Mode (Bit 1) User Mode (Bit 1) Restricted. No I/O instructions. No HALT. مُقيد. لا تعليمات I/O. لا توقف (HALT).
Kernel Mode (Bit 0) Kernel Mode (Bit 0) Privileged. Access to all hardware instructions. ذو امتيازات. وصول لجميع تعليمات العتاد.
Transition: User $\to$ Kernel via System Call (Trap). Kernel $\to$ User via Return from Trap. الانتقال: مستخدم $\to$ نواة عبر System Call (Trap). نواة $\to$ مستخدم عبر Return from Trap.

System Calls نداءات النظام (System Calls)

The API between User Programs and the OS. واجهة برمجة التطبيقات (API) بين برامج المستخدم ونظام التشغيل.

// Example: Copy File read(src, buffer); -> Trap to Kernel write(dest, buffer); -> Trap to Kernel

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 مخطط حالة العملية

stateDiagram-v2 New --> Ready: Admitted Ready --> Running: Scheduler Dispatch Running --> Ready: Interrupt Running --> Waiting: I/O Wait Waiting --> Ready: I/O Complete Running --> Terminated: Exit

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.
Context Switch: Saving PCB of old process and loading PCB of new one. Pure overhead! Context Switch: حفظ PCB للعملية القديمة وتحميل PCB للجديدة. عبء إضافي (Overhead) بحت!

Module 3: Scheduling الوحدة 3: الجدولة (Scheduling)

Turnaround Time وقت الإنجاز (Turnaround)
$T_{completion} - T_{arrival}$
Waiting Time وقت الانتظار
$Turnaround - Burst$
FCFS First-Come First-Served. من يأتي أولاً يُخدم أولاً.
Problem:مشكلة: Convoy Effect (Short waits for Long).تأثير القافلة (القصير ينتظر الطويل).
Non-Preemptive.غير وقائي (Non-Preemptive).
SJF / SRTF Shortest Job First. أقصر وظيفة أولاً.
Benefit:فائدة: Optimal Avg Wait Time.أمثل متوسط وقت انتظار.
Problem:مشكلة: Starvation, Predicting next burst.المجاعة (Starvation)، التنبؤ بالدفعة التالية.
Round Robin (RR) Time Quantum ($q$). كم الوقت ($q$).
Fair. Good response time.عادل. وقت استجابة جيد.
High context switch overhead if $q$ is small.عبء تبديل سياق عالي إذا كانت $q$ صغيرة.
Priority Highest priority runs. الأعلى أولوية يعمل.
Problem:مشكلة: Starvation.المجاعة.
Solution:حل: Aging.الشيخوخة (Aging).

Module 4: Synchronization Tools الوحدة 4: أدوات التزامن

Critical Section (CS) Requirements متطلبات القسم الحرج (CS)

  1. Mutual Exclusion:Mutual Exclusion: Only one process in CS at a time.عملية واحدة فقط في الـ CS في نفس الوقت.
  2. Progress:Progress: If CS is empty, selection isn't postponed indefinitely.إذا كان الـ CS فارغاً، لا يتم تأجيل الاختيار إلى أجل غير مسمى.
  3. Bounded Waiting:Bounded Waiting: Limit on times others enter CS before me (No starvation).حد لعدد مرات دخول الآخرين للـ CS قبلي (لا مجاعة).

Semaphores (S) Semaphores (S)

wait(S) { while (S <= 0); S--; }
signal(S) { 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: المشاكل الكلاسيكية

1
Bounded Buffer Bounded Buffer (المخزن المحدود)

Producer/Consumer. Needs 3 semaphores: `mutex` (lock), `full` (item count), `empty` (space count). منتج/مستهلك. يحتاج 3 سيمافورات: `mutex` (قفل)، `full` (عدد العناصر)، `empty` (عدد الفراغات).

2
Readers-Writers Readers-Writers (القراء-الكتاب)

Multiple Readers OK. Writer needs exclusive access. Problem: Writer Starvation. قراء متعددون مسموح. الكاتب يحتاج وصولاً حصرياً. مشكلة: مجاعة الكاتب.

3
Dining Philosophers Dining Philosophers (الفلاسفة المتعشون)

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).

Need[i] = Max[i] - Allocation[i]

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$ المتاح، تظاهر بالتخصيص وتحقق من الأمان.

PROFESSOR'S SECRETS أسرار البروفيسور

The Mega Vault: Midterm Edition الخزنة الكبرى: إصدار النصفي

Fork Logic منطق Fork

`fork()` returns 0 to Child, PID to Parent.
Child gets a copy of data, not shared memory.
`fork()` تعيد 0 للابن، و PID للأب.
يحصل الابن على نسخة من البيانات، وليس ذاكرة مشتركة.

User vs Kernel Threads User vs Kernel Threads

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).

Wait Time Formula معادلة وقت الانتظار

Do NOT just sum waiting periods. Always use:
$Wait = Turnaround - Burst$.
It reduces calculation errors.
لا تجمع فترات الانتظار فقط. استخدم دائماً:
$Wait = Turnaround - Burst$.
تقلل من أخطاء الحساب.

Signal Order ترتيب الإشارة (Signal Order)

In Bounded Buffer, order matters.
`wait(empty)` BEFORE `wait(mutex)`.
If swapped $\to$ Deadlock.
في Bounded Buffer، الترتيب مهم.
`wait(empty)` قبل `wait(mutex)`.
إذا تم التبديل $\to$ جمود (Deadlock).

RAG Cycles دورات RAG

Cycle in RAG $\neq$ Deadlock (if multiple instances exist).
Cycle in RAG == Deadlock (if only 1 instance per resource).
دورة في RAG $\neq$ جمود (إذا وجدت مثيلات متعددة).
دورة في RAG == جمود (إذا وجد مثيل واحد فقط لكل مورد).

Monitor Signal إشارة المراقب (Monitor Signal)

Monitor `signal()` is not persistent. If no one is waiting, the signal is lost. Semaphore `signal()` increases counter (persistent). إشارة المراقب `signal()` غير دائمة. إذا لم يكن أحد ينتظر، تضيع الإشارة. إشارة السيمافور `signal()` تزيد العداد (دائمة).