مادة عال 340 (المعروفة ايضا بـ CS 340)، نظم التشغيل (Operating Systems) بجامعة الاميرة نورة بنت عبدالرحمن، هي المادة اللي تكشف لك كيف الكمبيوتر يشتغل فعلا من الداخل. كل كود كتبتيه في عال 110 و عال 212 هياكل البيانات كان يشتغل فوق نظام التشغيل بدون ما تحسين. هذي المادة تخليك تفهمين وش يصير تحت الغطاء: كيف المعالج يوزع وقته بين البرامج، ليش جهازك يعلق احيانا، وكيف الذاكرة تنقسم بين عشرات التطبيقات المفتوحة في نفس اللحظة.
تخيلي نظام التشغيل مثل مديرة مطعم في يوم ازدحام. عندها طباخين (المعالجات)، طاولات (الذاكرة)، طلبات (العمليات)، ومخزن مواد (القرص الصلب). شغلتها توزع الموارد بذكاء عشان كل زبونة تاخذ طلبها بدون ما المطعم ينهار. هذا بالضبط اللي يسويه نظام التشغيل، وعال 340 تعلمك كيف هذا الدور يتم بالتفصيل.
📋 ملخص سريع
- رمز المادة: عال 340 / CS 340، نظم التشغيل (Operating Systems)
- الساعات المعتمدة: 3 ساعات
- المتطلب السابق: عال 212 / CS 212 (هياكل البيانات)
- الكتاب المرجعي: Operating System Concepts لـ Silberschatz و Galvin و Gagne (الكتاب الديناصوري)
- المواضيع الاساسية: بنية نظام التشغيل، العمليات والخيوط، جدولة المعالج، التزامن، الجمود (Deadlock)، ادارة الذاكرة، الذاكرة الافتراضية، انظمة الملفات
- تقود الى: مواد انظمة التشغيل المتقدمة، الشبكات، امن المعلومات، والحوسبة السحابية
ليش عال 340 نقطة تحول في تخصصك
قبل هذي المادة، الكمبيوتر بالنسبة لك كان صندوق اسود: تكتبين كود، يشتغل، تظهر النتيجة. عال 340 تفتح لك الصندوق وتفرجيك الاعجوبة اللي داخله:
- لما تفهمين العمليات والخيوط، تفهمين ليش تطبيق مفتوح كم ساعة يستهلك 3 جيجا رام فجاة
- في المقابلات التقنية، السؤال الاول والثاني غالبا يكون “ايش الفرق بين Process و Thread؟” و”كيف يصير Deadlock؟”. جوابك على هذين السؤالين يحدد هل هم راح يكملون معك او لا
- كل مجال حديث مبني على نظم التشغيل، من الحوسبة السحابية الى الحاويات (Docker) الى امن المعلومات. ما تقدرين تفهمين Kubernetes بدون ما تفهمين العمليات اولا
- لو شغلك يشمل تطبيقات متعددة الخيوط او قواعد بيانات ضخمة، انتي تطبقين مبادئ عال 340 مباشرة في الكود
- الطوابير من عال 212 هياكل البيانات تستخدم في جدولة العمليات، والقوائم المتصلة في ادارة الذاكرة الحرة، والاشجار في انظمة الملفات. اساسك في عال 212 يدفعك نص المادة
ℹ️ العلاقة بين عال 340 و المواد الثانية
عال 340 تتقاطع مع عال 206 تنظيم الحاسب في الجزء اللي يخص كيف العتاد يشتغل، ومع عال 220 الخوارزميات في جدولة المعالج (FCFS، SJF، Round Robin كلها خوارزميات). لو اخذتي العال 206 قبلها راح تكون الصورة اكثر وضوح.
نظرة عامة على خطة عال 340
المادة تتوزع عادة على 15 اسبوع بهذا الترتيب:
| الاسابيع | الموضوع | صعوبة |
|---|---|---|
| 1-2 | مقدمة في نظم التشغيل وبنيتها | سهلة |
| 3-4 | العمليات (Processes) | متوسطة |
| 5-6 | الخيوط (Threads) وجدولة المعالج | متوسطة |
| 7-9 | التزامن (Synchronization) | صعبة |
| 10-11 | الجمود (Deadlock) | متوسطة |
| 12-13 | ادارة الذاكرة والذاكرة الافتراضية | صعبة |
| 14 | انظمة الملفات | سهلة |
| 15 | مراجعة شاملة |
1. مقدمة في نظم التشغيل
نظام التشغيل هو الوسيط بين المستخدمة والعتاد. بدونه ما تقدرين تسوين شيء على الكمبيوتر لان ما فيه طريقة تتواصلين بها مع المعالج والذاكرة والقرص مباشرة.
الوظائف الاساسية
- ادارة العمليات: يشغل البرامج ويوزع وقت المعالج
- ادارة الذاكرة: يحدد اي برنامج ياخذ كم مساحة من الرام
- ادارة الملفات: ينظم تخزين الملفات على القرص
- ادارة الاجهزة: يتواصل مع لوحة المفاتيح والشاشة والطابعة عبر Drivers
- الحماية: يمنع البرامج من التدخل في بعضها
System Calls، الجسر مع النظام
System Calls هي الطريقة الوحيدة اللي برنامجك يطلب فيها خدمة من نظام التشغيل. لما تكتبين System.out.println() في جافا، في الخلفية يتم استدعاء System Call اسمه write() يطلب من النظام يكتب على الشاشة. ما تقدرين تطبعين مباشرة على الشاشة من كود المستخدمة.
💡 نقطة مهمة للاختبار
في كل اختبار عال 340 تقريبا يجي سؤال: “ايش الفرق بين User Mode و Kernel Mode؟” الاجابة: User Mode هو الوضع اللي يشتغل فيه برنامجك العادي (محدود الصلاحيات). Kernel Mode هو الوضع اللي يشتغل فيه نظام التشغيل (صلاحيات كاملة). System Call ينقل التنفيذ من User Mode الى Kernel Mode.
2. العمليات (Processes)
العملية هي برنامج اثناء التنفيذ. الفرق بين البرنامج والعملية مثل الفرق بين وصفة الكيكة والكيكة نفسها. نفس البرنامج ممكن يشتغل كخمس عمليات مختلفة في نفس الوقت.
بنية العملية في الذاكرة
كل عملية تحتل منطقة في الذاكرة مقسمة الى اربعة اقسام:
- Text: الكود (instructions) نفسه
- Data: المتغيرات العامة والثابتة
- Heap: الذاكرة الديناميكية اللي تنشا بـ
newفي جافا - Stack: استدعاءات الدوال والمتغيرات المحلية
حالات العملية
العملية تمر بخمس حالات خلال حياتها:
New → Ready → Running → Waiting → Terminated
↑ ↓
└──────────┘
- New: تم انشاء العملية بس ما بدات بعد
- Ready: جاهزة للتنفيذ وتنتظر المعالج
- Running: تنفذ فعليا على المعالج
- Waiting: معلقة تنتظر شيء (مثل ادخال من لوحة المفاتيح)
- Terminated: انتهت
Process Control Block (PCB)
كل عملية عندها هوية كاملة مخزنة في PCB، اللي يحتوي على:
- PID (رقم العملية)
- حالتها الحالية
- Program Counter (المؤشر للتعليمة التالية)
- محتويات الريجسترات
- معلومات الذاكرة
- الملفات المفتوحة
ℹ️ Context Switch، اللحظة الغالية
لما نظام التشغيل يبدل من عملية لعملية ثانية، يسوي Context Switch: يحفظ حالة العملية الحالية في PCB تبعها، ويحمل حالة العملية الجديدة. هذي العملية تاخذ وقت (بالميكروثواني)، ولذلك كلما كثرت، الاداء ينخفض. في الاختبار ممكن يسالك: “ليش Context Switch مكلف؟” الاجابة: لان النظام يحفظ كل الريجسترات ويعيد تحميلها.
3. الخيوط (Threads)
الخيط هو “عملية خفيفة” داخل عملية اكبر. كل العمليات تبدا بخيط واحد، لكنها تقدر تنشئ خيوط اضافية تشتغل بالتوازي.
الفرق الاساسي بين Process و Thread
| الجانب | Process | Thread |
|---|---|---|
| الذاكرة | مستقلة كامل | مشتركة مع الخيوط الاخرى |
| الانشاء | بطيء (fork) | سريع |
| الاتصال | معقد (IPC) | بسيط (الذاكرة المشتركة) |
| الانهيار | لا يؤثر على عمليات اخرى | ينهي كل الخيوط في العملية |
مثال عملي في جافا
class Counter extends Thread {
public void run() {
for (int i = 0; i < 5; i++)
System.out.println(getName() + ": " + i);
}
}
// تشغيل خيطين بالتوازي
Counter t1 = new Counter();
Counter t2 = new Counter();
t1.start();
t2.start();
نماذج الخيوط
- Many-to-One: عدة خيوط مستخدمة تقابل خيط نواة واحد، سريع لكن لو خيط واحد علق كلهم يعلقون
- One-to-One: كل خيط مستخدمة له خيط نواة، الافضل للتوازي الحقيقي (لينكس وويندوز يستخدمونه)
- Many-to-Many: اكثر مرونة، النظام يحدد المطابقة ديناميكيا
4. جدولة المعالج (CPU Scheduling)
لما عندك عشر عمليات جاهزة ومعالج واحد، اي عملية تشتغل اول؟ هذا سؤال جدولة المعالج.
خوارزميات الجدولة الكلاسيكية
FCFS (First-Come, First-Served): العملية اللي تجي اول، تشتغل اول. بسيطة لكنها ظالمة لما عملية طويلة تسبق عمليات قصيرة.
SJF (Shortest Job First): اقصر عملية تشتغل اول. توفر متوسط وقت الانتظار، لكنها تتطلب معرفة مدة كل عملية مسبقا.
Round Robin (RR): كل عملية تاخذ Time Quantum (مثلا 10 ميلي ثانية)، ثم تنتقل للي بعدها. الاكثر عدالة.
Priority Scheduling: كل عملية لها اولوية، الاعلى يشتغل اول. مشكلته Starvation (العمليات الاقل اولوية ممكن ما تشتغل ابدا).
مثال حساب متوسط وقت الانتظار
العمليات: P1 (وقت التنفيذ=5)، P2 (وقت=2)، P3 (وقت=3)
FCFS: P1(0-5) → P2(5-7) → P3(7-10)
متوسط الانتظار = (0 + 5 + 7) / 3 = 4
SJF: P2(0-2) → P3(2-5) → P1(5-10)
متوسط الانتظار = (5 + 0 + 2) / 3 = 2.33
شوفي الفرق: SJF انصف بالاكثر.
⚠️ خطا شائع في حساب الجدولة
كثير طالبات يحسبون متوسط وقت التنفيذ (Turnaround) بدل متوسط وقت الانتظار (Waiting). التنفيذ = وقت الانتهاء - وقت الوصول. الانتظار = التنفيذ - مدة التشغيل. الاختبار يسال تحديدا عن وحدة منهم، اقري السؤال مرتين.
واجب جدولة المعالج محيرك؟
حسابات FCFS و SJF و Round Robin من اكثر الواجبات اللي تطلب فيها طالبات جامعة الاميرة نورة مساعدة. ارسلي لنا السؤال على واتساب ونحله لك مع جدول حساب واضح خطوة بخطوة.
ارسلي واجبك على واتساب5. تزامن العمليات (Process Synchronization)
هذا الجزء من المادة اللي يفصل الطالبات اللي فهموا عن اللي حفظوا. التزامن يدرس كيف نخلي عدة عمليات تشتغل على نفس البيانات بدون ما تفسد النتيجة.
المشكلة: Race Condition
تخيلي حسابين بنكيين، وعمليتين تسحبون من نفس الحساب في نفس اللحظة:
الرصيد = 1000
العملية A: تقرا الرصيد (1000)، تطرح 100، تكتب 900
العملية B: تقرا الرصيد (1000)، تطرح 50، تكتب 950
النتيجة النهائية: 950. المفروض تكون 850! لان العمليتين قروا نفس القيمة الابتدائية. هذي مشكلة Race Condition.
الحل: Critical Section
المنطقة اللي نقرا ونكتب فيها بيانات مشتركة اسمها Critical Section. لازم بس عملية وحدة تكون داخلها في نفس اللحظة.
Semaphore، الاداة الكلاسيكية
// Semaphore بسيط
Semaphore mutex = new Semaphore(1);
void withdraw(int amount) {
mutex.acquire(); // قفل
balance -= amount;
mutex.release(); // فتح
}
الفكرة: acquire() يحجز القفل، release() يحرره. لو عملية ثانية حاولت تدخل، تنتظر.
مشكلة المنتج والمستهلك (Producer-Consumer)
مشكلة كلاسيكية تجي في كل اختبار عال 340. قبل ما ندخل في الحل، قصة من فصل ماضي. جتنا طالبة من نورة قبل الاختبار النصفي بثلاث ايام، كانت تحاول تحل Producer-Consumer من يومين. الكود تبعها كان شغال على الورق بس لما تشغله كان يطلع نتايج عشوائية او يعلق. طلبنا منها ترسم timeline بعمودين (منتج ومستهلك) وتتبع قيمة كل semaphore بعد كل سطر. خلال ربع ساعة اكتشفت المشكلة بنفسها: كانت تحجز mutex قبل empty، وهذا يسبب deadlock لو البفر ممتلئ. الترتيب الصح هو empty ثم mutex، والعكس للاستهلاك. الاختبار جاء ومعاها السؤال نفسه، جاوبت بخمس دقايق.
الفكرة: عندك بفر محدود، منتج يضيف عناصر ومستهلك ياخذها. الحل يستخدم ثلاث semaphores:
empty: عدد الاماكن الفارغة في البفرfull: عدد العناصر الموجودةmutex: قفل للوصول الحصري
ترتيب acquire مهم جدا: المنتج يسوي empty.acquire() ثم mutex.acquire()، ومتى خلص يعكس بـ mutex.release() ثم full.release(). لو عكستي الترتيب، جمود مؤكد لما البفر يمتلئ.
🔴 نصيحة ذهبية لمسائل التزامن
لما تحلين مسالة تزامن، ارسمي timeline بـ عمودين (عملية A و عملية B)، وتتبعي كل قيمة semaphore في كل خطوة. هذي الطريقة تكشف كل الاخطاء. الطالبات اللي يعانون من التزامن يعانون لانهم يحاولون يفكرون في العمليتين في راسهم، وهذا مستحيل.
6. الجمود (Deadlock)
الجمود هو موقف تصل فيه عمليتين (او اكثر) الى حالة كل وحدة تنتظر مورد محجوز عند الثانية، وما راح تتحرك اي وحدة ابدا.
مثال بسيط
العملية A: تحجز الطابعة، تنتظر الماسح
العملية B: تحجز الماسح، تنتظر الطابعة
كلاهما معلقين بدون امل.
الشروط الاربعة للجمود (تحفظيها)
- Mutual Exclusion: المورد ما يقدر يستخدمه اكثر من عملية في نفس الوقت
- Hold and Wait: العملية تحجز مورد وتنتظر مورد اخر
- No Preemption: ما نقدر ناخذ المورد من العملية قسرا
- Circular Wait: دائرة انتظار بين العمليات
كل شروط الاربعة لازم تتحقق، لو منعنا واحد منهم فقط، الجمود مستحيل.
ثلاث استراتيجيات للتعامل مع الجمود
- المنع (Prevention): نتاكد ان شرط من الاربعة ما يصير ابدا (مثلا: كل عملية تطلب كل مواردها مرة وحدة)
- التجنب (Avoidance): نستخدم خوارزمية مثل Banker’s Algorithm تتحقق قبل كل تخصيص
- الكشف والتعافي (Detection and Recovery): نخلي الجمود يصير، نكشفه، ثم ننهي احد العمليات
ℹ️ Banker's Algorithm في الاختبار
خوارزمية المصرفي (Banker’s) تجي في كل اختبار تقريبا. الفكرة: قبل تخصيص مورد لعملية، نتخيل اننا خصصناه ونتحقق هل النظام لا يزال في حالة آمنة (Safe State). لو نعم، نخصص. لو لا، نرفض. ركزي على جدول الحاجة (Need Matrix) وكيف تحسبينه من Maximum ناقص Allocation.
التزامن و Deadlock ضاغطين عليك؟
هذي المواضيع من اصعب مواضيع عال 340. ارسلي لنا سؤالك او واجبك على واتساب ونشرحه لك بالرسم خطوة بخطوة حتى تفهمينه جيدا.
ارسلي سؤالك الان7. ادارة الذاكرة
كيف النظام يقسم الرام بين عشرات التطبيقات المفتوحة؟
Paging، التقسيم الى صفحات
الذاكرة الفيزيائية تنقسم الى اطارات (Frames) بحجم ثابت (عادة 4 كيلوبايت). الذاكرة المنطقية تنقسم الى صفحات (Pages) بنفس الحجم. نظام التشغيل يربط كل صفحة باطار معين عبر جدول الصفحات (Page Table).
الفائدة
تقدرين تشغلين برنامج حجمه 4 جيجا على نظام فيه 8 جيجا رام، حتى لو فيه برامج ثانية مفتوحة. كل برنامج يحس ان الذاكرة كلها له، لكن الحقيقة انها مقسمة.
الذاكرة الافتراضية (Virtual Memory)
هنا الذكاء الحقيقي. النظام يحمل بس الصفحات اللي تحتاجينها فعلا، والباقي يبقى على القرص. لما تحتاجين صفحة مو موجودة في الرام، يصير Page Fault: النظام يحمل الصفحة من القرص، احيانا يزيح صفحة اخرى لتوفير مكان.
خوارزميات الاستبدال (Page Replacement)
لما الرام تمتلئ ونحتاج ندخل صفحة جديدة، اي صفحة نزيحها؟
- FIFO: نزيح اقدم صفحة. بسيطة لكن غير ذكية
- LRU (Least Recently Used): نزيح الصفحة اللي ما استخدمت من فترة اطول. افضل عمليا لكن تتطلب تتبع
- Optimal: نزيح الصفحة اللي راح تستخدم في اقصى وقت في المستقبل. مستحيلة عمليا لكن تستخدم كمعيار مقارنة
💡 حساب Page Faults في الاختبار
لو اعطوك تسلسل مراجعة (مثلا 1, 2, 3, 4, 1, 2, 5) وطلبوا عدد Page Faults بـ FIFO و LRU، ارسمي جدول يوضح محتوى الاطارات بعد كل مرجع. تعلمي تميزي بين Hit (الصفحة موجودة) و Fault (الصفحة غير موجودة). الشغل المرتب يعطيك درجات جزئية حتى لو غلطتي في النهاية.
8. انظمة الملفات
في النهاية بسرعة، لان المادة عادة ما تغطي انظمة الملفات بعمق كبير:
- طرق التخصيص: Contiguous، Linked، Indexed
- بنية الدليل: شجرية، رسم بياني
- الحماية: صلاحيات القراءة والكتابة والتنفيذ
اخطاء شائعة في عال 340
اكثر الاخطاء تكرارا في المادة
- خلط Process و Thread: Process له ذاكرة مستقلة، Thread يشارك الذاكرة مع خيوط عمليته. هذا الفرق الاساس
- نسيان شرط من شروط Deadlock الاربعة: تحفظي Mutual Exclusion، Hold and Wait، No Preemption، Circular Wait
- حساب وقت الانتظار بدل وقت التنفيذ: اقري السؤال جيدا، هل طلب Waiting Time او Turnaround Time؟
- عدم فهم ان Semaphore counter يقدر يصير سالب: لما تنقص المتغير لقيمة سالبة، العدد المطلق يمثل عدد العمليات المنتظرة
- خلط Paging و Segmentation: Paging احجام ثابتة للتسهيل، Segmentation احجام منطقية حسب الحاجة
- ادعاء ان LRU دائما افضل من FIFO: في بعض الحالات (مثل Belady’s Anomaly) FIFO يسوي fault اكثر مع زيادة الاطارات. LRU ما يعاني من هذي المشكلة
- نسيان ان Context Switch مكلف: في Round Robin لو الـ Time Quantum صغير جدا، الـ overhead من Context Switch ياكل كل المكاسب
- التعامل مع System Calls كدوال عادية: System Call ينقل من User Mode الى Kernel Mode، وهذا الانتقال له تكلفة
خطة مذاكرة عال 340
خطة مذاكرة المادة اسبوع باسبوع
- الاسبوع 1-2: اقري الفصول الاولى من Silberschatz وافهمي الفرق بين User و Kernel Mode و System Calls
- الاسبوع 3-4: العمليات. ارسمي PCB وحالات العملية الخمس. حلي مسائل Context Switch
- الاسبوع 5-6: الخيوط وجدولة المعالج. تدربي على حسابات FCFS، SJF، Round Robin على ورقة
- الاسبوع 7-8: التزامن. ابدئي بمشكلة Producer-Consumer وارسميها timeline. اكتبي الكود بـ pseudo-code
- الاسبوع 9: مراجعة ما قبل الاختبار النصفي. حلي اختبارات سابقة لو لقيتي
- الاسبوع 10-11: الجمود. تعلمي Banker’s Algorithm خطوة بخطوة. ارسمي جدول الحاجة بنفسك
- الاسبوع 12-13: ادارة الذاكرة. تدربي على مسائل Paging و Page Replacement. احسبي Page Faults بـ FIFO و LRU و Optimal
- الاسبوع 14: الذاكرة الافتراضية وانظمة الملفات. ركزي على Page Fault handling
- الاسبوع 15: مراجعة شاملة. حلي على الاقل اختبارين سابقين كاملين بوقت محدد
💡 نصيحة ذهبية للاختبار
في اسئلة حسابية (جدولة المعالج، Page Faults، Banker’s Algorithm)، ارسمي جدول قبل ما تكتبين الاجابة. الجدول يوضح شغلك للدكتورة ويعطيك درجات جزئية حتى لو غلطتي في الحساب النهائي. اكثر طالبات يخسرون درجات لانهم يكتبون النتيجة بدون خطوات.
ربط المادة بمسارك الاكاديمي
بعد عال 340، هذي المواد اللي راح تستفيدين فيها مباشرة من اللي تعلمتيه:
- انظمة التشغيل المتقدمة: تتعمق في المواضيع اللي اخذتيها بشكل اوسع
- الشبكات: بروتوكولات الشبكة تعتمد على نفس مبادئ التزامن والعمليات
- امن المعلومات: الحماية والصلاحيات على مستوى النظام من اساسيات الامن
- الحوسبة السحابية: الحاويات (Docker، Kubernetes) كلها مبنية على مبادئ نظم التشغيل
- قواعد البيانات المتقدمة: Transactions و Concurrency Control يستخدمون نفس افكار عال 340
لو تبين تفهمين الروابط بين المواد اكثر، شرح عال 220 تحليل وتصميم الخوارزميات يوضح ان خوارزميات الجدولة (FCFS، SJF، Round Robin) كلها تطبيقات مباشرة لمفاهيم الخوارزميات الاساسية.
خلاصة
عال 340 نقلة نوعية في تخصصك. قبلها كنتي تعرفين تكتبين كود، بعدها راح تفهمين ليش الكود يشتغل كذا. الفرق بين الاثنين هو الفرق بين سائقة تعرف تسوق وسائقة تفهم كيف السيارة تشتغل. الاثنتان يصلون، لكن اللي تفهم السيارة تعرف تحل المشاكل.
ثلاث نصائح تنجيك من اكثر مزالق المادة:
- ارسمي كل مفهوم على ورقة. Context Switch، Page Replacement، Banker’s Algorithm، كلها تصير اسهل بمراحل لو ترسمينها. لا تحاولين تحفظين بدون رسم
- اربطي كل موضوع بتطبيق حقيقي. ليش جهازك يبطئ لما تفتحين كثير تبويبات؟ هذا Thrashing. لما تربطين المفهوم بالواقع، يصير صعب تنسينه
- حلي اختبارات سابقة. نظم التشغيل مادة تتكرر فيها انواع الاسئلة. اذا حليتي ثلاث اختبارات سابقة، راح تلاقين النمط واضح
عال 340 ليست مادة “تقدر تحفظها ليلة الاختبار”. هي مادة تتطلب فهم تدريجي عبر الفصل. الجهد اللي تحطينه فيها يدفع ارباحه مباشرة في المقابلات الوظيفية وفي كل مادة بعدها.
تحتاجين مساعدة في عال 340؟
فريقنا متخصص في مواد علوم الحاسب بجامعة الاميرة نورة، خصوصا نظم التشغيل. ارسلي لنا الواجب او سؤال الاختبار على واتساب وراح نرد عليك خلال ساعة مع شرح كامل ورسومات.
تواصلي معنا على واتسابأسئلة شائعة
ليش مادة عال 340 صعبة مقارنة بالمواد اللي قبلها؟ +
لانها اول مادة تخليك تفكرين في شيء ما تشوفينه بعينك. في عال 110 و 111 كنتي تكتبين كود وتشوفين النتيجة. في عال 340 تدرسين مفاهيم مثل Context Switch و Virtual Memory، وهذي كلها تصير داخل النظام في اجزاء من الثانية. المفتاح هو الرسم. كل مفهوم ارسميه على ورقة قبل ما تحاولين تحفظينه.
ايش الكتاب المعتمد في عال 340؟ +
الكتاب الاكثر استخداما في نظم التشغيل في الجامعات السعودية هو Operating System Concepts لـ Silberschatz و Galvin و Gagne، المعروف بـ الكتاب الديناصوري بسبب غلافه. تاكدي من الدكتورة بداية الفصل، لكن في اغلب الحالات هذا هو المرجع. فيه ترجمات عربية متاحة لكن النسخة الانجليزية اوضح.
كيف اذاكر مواضيع التزامن (Synchronization)؟ +
التزامن من اصعب المواضيع لانه يتطلب تفكير في عدة عمليات تشتغل في نفس الوقت. ابدئي بمشكلة المنتج والمستهلك (Producer-Consumer) باستخدام Semaphore، ثم مشكلة القراء والكتاب. ارسمي السيناريو على ورقة وتتبعي كل خطوة. اكتبي الكود بـ pseudo-code قبل الكود الفعلي.
هل نظم التشغيل مهمة لمقابلات العمل؟ +
نعم، خصوصا في الشركات الكبيرة. اسئلة مثل الفرق بين Process و Thread، ليش Deadlock يصير وكيف نمنعه، ووش الفرق بين Stack و Heap، هذي اسئلة متكررة في مقابلات امازون وجوجل وحتى الشركات السعودية مثل STC و علم. المادة مفيدة اكاديميا ومهنيا.