System Software

الفصل العاشر: أنظمة التشغيل وأدوات البرمجة

الهدف: فهم وظائف نظام التشغيل (OS)، أنواع الجدولة (Scheduling)، وعمل المترجمات (Compilers).
1

OS Architecture (معمارية النواة)

Monolithic Kernel (المتكتلة)

كل الخدمات (الجدولة، الذاكرة، التعريفات) محشورة في نواة واحدة ضخمة.

  • سرعة تنفيذ عالية جداً (تواصل مباشر).
  • صعبة الصيانة، وأي خطأ قد يسقط النظام كاملاً.
أمثلة: Linux, Windows, MacOS

Microkernel (المصغرة)

النواة تحتوي الحد الأدنى فقط. باقي الخدمات تعمل كبرامج خارجية.

  • أمان أعلى، سهولة في الصيانة والنقل (Portability).
  • أبطأ قليلاً بسبب كثرة التواصل بين الأجزاء.
أمثلة: QNX, MINIX, Mach
2

CPU Scheduling (جدولة المعالج)

Scheduling Types:

Long-term: قرار إدخال عملية جديدة للنظام (Job Admission).
Short-term: قرار من يأخذ المعالج الآن (CPU Assignment).

FCFS

First Come, First Served

من يصل أولاً يخدم أولاً (عادلة لكن قد تكون بطيئة).

SJF

Shortest Job First

الأقصر أولاً (الأفضل للأداء، لكن صعب التنبؤ به).

Round Robin

Preemptive Time Slicing

كل عملية تأخذ وقتاً محدداً (Time Slice) بالدور. (الأكثر شيوعاً).

Priority

Highest Priority First

الأهمية أولاً (قد تسبب مجاعة Starvation للعمليات الصغيرة).

3

Protected Environments

النوع الوصف الاستخدام
Virtual Machines (VM) جهاز وهمي كامل يعمل فوق الجهاز الحقيقي. تشغيل أنظمة تشغيل متعددة (Servers).
Subsystems بيئة منطقية مخصصة لوظيفة معينة (مثل I/O subsystem). إدارة الموارد وعزل الوظائف.
LPARs (Partitions) تقسيم الهاردوير بقوة (عزل تام). الأقوى عزلاً. الأنظمة الضخمة (Mainframes).
4

Compiler Phases (مراحل المترجم)

1. Lexical Analysis

استخراج الرموز (Tokens) مثل الكلمات المحجوزة والمتغيرات.

2. Syntax Analysis

التحقق من القواعد (Parsing) وبناء الشجرة.

3. Semantic Analysis

التحقق من المعنى (أنواع البيانات).

4. Intermediate Code

توليد كود وسيط مستقل عن الآلة.

5. Optimization

تحسين الكود ليكون أسرع وأصغر.

6. Code Generation

توليد كود الآلة النهائي (Binary).

5

Java: The Hybrid Approach

Write Once, Run Anywhere

جافا ليست مترجمة بالكامل وليست مفسرة بالكامل، هي هجين (Hybrid).

.java
Source Code
Compiler
javac
.class
Bytecode
JVM
Interpreter + JIT
Machine
Hardware
EXAM VAULT (خزنة الاختبار)
TRAP / فخ

Preemptive vs Non-preemptive

Non-preemptive: العملية تمسك المعالج ولا تتركه إلا برضاها (حتى تنتهي).
Preemptive: النظام يقاطع العملية "غصباً عنها" (مثل Round Robin).
في الاختبار، إذا قيل لك "Time Slice expires"، فهذا يعني حتماً Preemptive.

CONCEPT / مفهوم

Binding Time (وقت ربط العناوين)

Compile Time: يعطي عناوين ثابتة (Absolute Code). لا يمكن نقل البرنامج.
Load Time: يحدد العناوين عند التحميل.
Run Time: الأكثر مرونة، يمكن نقل البرنامج في الذاكرة أثناء التشغيل (Relocatable).

→ السابق (Ch 9) الفصل التالي (Ch 11) ←