






السمعة:
نظام التشغيل / operating system
نظام التشغيل هو برنامج يقوم بمهمة محورية للأجهزة وهي الربط بين المكونات الالكترونية لأجهزة الحاسوب (hardware) مثل ذاكرة الوصول العشوائية (RAM) ووحدة التحكم المركزية (CPU) و اقراص التخزين (hard drives) وغيرهم و بين العمليات (process) والأوامر و البرامج التي يعتمد عليها المستخدم في تنفيذ مهامه فنظام التشغيل هو من يقوم بادارة الموارد المتاحة بين العمليات و البرامج المختلفة.
وأيضاً لا تقوم أنظمة التشغيل الحديثة بإدارة موارد الأجهزة والبرامج فحسب، بل إنها تقوم بجدولة وأتمتة البرامج لتعمل بطريقة متعددة المهام (كمشاركة المعالج بحيث يمكن أن تحدث مهام متعددة في وقت واحد من خلال مشاركة الموارد المتاحة ) .
وتوفر للمستخدمين والبرامج إمكانية طلب حدوث مهمة ما (على سبيل المثال، مهمة طباعة من نظام التشغيل) ، فإن تم تنفيذ الأمر بشكل صحيح، سيقبل نظام التشغيل الطلب ويؤدي الوظيفة المطلوبة.
يجب الإشارة الى أن :
أغلب الأجهزة الإلكترونية التي تتلقى تعليمات من المستخدم لتنفيذ مهام معينة تعمل بنظام تشغيل. ( كأجهزة ال ATM و الساعات الذكية وغيرهم )
ولكن يختلف درجة تعقيد نظام التشغيل من جهاز لجهاز فمثلاً أنظمة تشغيل سطح المكتب والخوادم بطبيعتها تكون أكثر تعقيدًا من نظام التشغيل الذي يعمل على جهاز أحادي الغرض (ذو وظيفة محددة او مهمة واحدة ) مثل جدار الحماية أو الهاتف المحمول (قديماً).
يتمتع مستخدمو الكمبيوتر اليوم بالاختيار بشكل أساسي بين ثلاثة أنظمة تشغيل رئيسية: Microsoft Windows وApple macOS وLinux.
من بين أنظمة التشغيل الثلاثة الرئيسية المذكورة، يعتبر Microsoft Windows الوحيد الذي يتميز بالكود الأساسي الخاص به.
حيث فقط Microsoft Windows من يعتمد على كود خاص لم يُبنى على UNIX أو Linux .
نظام التشغيل macOS من Apple هو توزيعة UNIX مؤهلة (معتمدة) بالكامل تعتمد على BSD Unix (نظام تشغيل كان رائجاً حتى عام 1995) ، بالأضافة الى كود خاص (proprietary) كما انه يعمل على أجهزة مُحسّنة خصيصًا للعمل مع برامج Apple و ال hardware الخاص بشركة Apple .
يمكن أن يكون Linux واحدًا من مئات التوزيعات المصممة أو المحسّنة لتأدية مهمة مطلوبة .
(مثل ان تكون توزيعة مخصصة لاختبار الأختراق ك backtrack قديماً و kali حديثاً .. أو ان تكون توزيعة مخصصة للألعاب ك Garuda linux و popOs أو غير ذلك من المهام )
يمكن للمستخدم التفاعل بسهولة مع أي من هذه الأنظمة عن طريق الإشارة والنقر على الأيقونات والأزرار لتنفيذ المهام اليومية (كإستخدام المتصفح او برامج الأوفيس وغير ذلك ) والتي تكون جميعها بشكل مشابه بغض النظر عن نظام التشغيل الأساسي.
يتم تنفيذ معظم مهام إدارة النظام باستخدام الأوامر المكتوبة بأستخدام التيرمنال. حيث يمكن للمسؤول الذي يكون على دراية بنظام UNIX عادةً تنفيذ المهام على نظام Linux والعكس صحيح.
باستثناء نظام التشغيل Windows، الذي تتم إدارته في الغالب عبر واجهة المستخدم الرسومية.
هناك مرادفات للعديد من أوامر Linux أيضًا على Microsoft يستخدمها المسؤولون للقيام بعملهم بكفاءة.
كما ذكرنا سابقاً أن انظمة التشغيل ليست إلا نواة تدير موارد الجهاز بالإضافة الى البرامج الأخرى التي تجعل من هذه النواه نظام قائم يساعد المستخدم لتأدية مهام معينة .
ولذلك يعتمد اختيار نظام التشغيل على ماهية المهام الموكلة إليه
فمثلاً عند استخدامك لكمبيوتر شخصي (PC) بنظام التشغيل لينكس على سبيل المثال فهناك بعض البرامج و الأدوات التي لن تستطيع الأستغناء عنها من ضمنها الواجهة الرسومية وأدواتها الرئيسية وهي :
{ Linux Kernel }
وهو المكون الرئيسي لنظام التشغيل Linux (OS) و العنصر الأساسي الذي يقوم بالربط بين عتاد الكمبيوتر (hardware) وعملياته (process) . فهو يتواصل بين الاثنين، ويدير الموارد بأكبر قدر ممكن من الكفاءة. ويتم عليه بناء كل شيء آخر .ما وظيفة اللينكس كيرنل ؟!
يقوم بأربع وظائف رئيسية كالتالي :
١. إدراة الذاكرة (RAM Management) :
حيث يتتبع كم الذاكرة المتاح وكيفية استخدامها و ما يتم تخزينه و أين يتم تخزينه في الذاكرة .
٢. إدارة العمليات المختلفة (Process Management) :
فهو من يحدد العلميات التي يمكنها استخدام وحده التحكم المركزي (CPU) ومتى تبدأ أو تنتهي وإلى متى تعمل هذه العمليات .
٣. وسيط للأجهزة (Device Drivers) :
فهو يعمل كوسيط بين عتاد الجهاز / الموارد المتاحة و مختلف العمليات و الخدمات فهو من يحدد كيفية عمل مختلف الأجهزة مع النظام .
٤. التنفيذ و المعالجة (System Calls and Security) :
تلقي التعليمات من العمليات والبرامج المختلفة والربط بينهم وتنفيذ الطلبات والخدمات .
تقدم التطبيقات طلبات إلى النواة وفي المقابل تتلقى الموارد، مثل الذاكرة ووحدة المعالجة المركزية ومساحة القرص. إذا طلب تطبيقان نفس المورد، فإن النواة تقرر أيهما سيحصل عليه، وفي بعض الحالات، تقتل تطبيقًا آخر لحفظ بقية النظام ومنع التعطل.
يمكننا تصور السيناريو التالي : وجود شركة ما (جهاز الكمبيوتر) وبها أربع عناصر اساسية كالتالي :
المدير (hardware)
مساعد المدير (kernel)
الموظفين (users)
المهام والطلبات (processes and services)
فكر في الأمر على النحو التالي: النواة (kernel) هو مساعد شخصي نشيط لمدير هذه الشركة (عتاد الجهاز : hardware of the computer). وتتمثل مهمة هذا المساعد في تنظيم ونقل الرسائل والطلبات (من البرامج والعمليات المختلفة) من الموظفين (المستخدمين : users) إلى هذا المدير ، وتذكر ما يتم تخزينه وأين يمكن تخزينه ( في الذاكرة) ، وتحديد من يمكنه الوصول إلى المدير في أي وقت وإلى متى . وبنائاً على قدرة هذا المدير ( حجم الرامات و قدره ال CPU وهكذا .. ) يتم تنفيذ المهام و الخدمات المختلفة .
أمثلة :
stable-Linux-kernel | LTS kernel | Hardened kernel | Zen kernel
stable-Linux-kernel | LTS kernel | Hardened kernel | Zen kernel
الأمر لمعرفة الكيرنل المستخدم :
Bash:
uname -r
{ SHELL }
ملحوظة : ال exit code هو حالة تنفيذ الأمر ، هل تم التنفيذ بشكل سليم بدون أخطاء أو غير ذلك ولذلك هو شيء مهم جداً خصوصاً لفهم المشاكل المختلفة والبحث عن طريقة لحلها . ( ملاحظة )هو برنامج يأخذ الأوامر من لوحة المفاتيح ويعطيها لنظام التشغيل لأداء المهام المطلوبة .الشل ، كيف يعمل ؟!
ببساطة ، الشل هو الوسيط بين المستخدم (كإنسان) وبين نظام التشغيل والنواه (كآلة)
ولذلك وجوده أمر اساسي لأي نظام فعَّال .
قديماً في بدايات الأجهزة و أنظمة التشغيل ، كانت واجهة المستخدم الوحيدة المتاحة على أنظمة ال Unix-like مثل لينكس هي واجهة سطر الأوامر (CLI) . ولذلك كان الشل من اهم العناصر -بعد النواه- لأي نظام تشغيل .
في الوقت الحاضر توفر معظم أنظمة التشغيل واجهة المستخدم الرسومية (GUI) لتوفير الأوامر.
تستخدم أنظمة Linux شل sh ، بينما يستخدم نظام ويندوز powershell .
فيما يلي الخطوات التفصيلية لكيفية عمله :
١. في بادئ الأمر يقوم المستخدم بإعطاء الأمر .
٢. يقوم الشل بمحاولة فهم الأمر عن طريق تفكيكه والنظر إليه ككلمات مفتاحية .
٣. بعد ذلك يقوم بالبحث عن احد البرامج الممكن تنفيذها في احد متغيرات النظام (PATH) وهو الذي يحتوى على مسار مختلف الأوامر .
٤. اذا وجد الأمر في أحد مسارات هذا المتغير يقوم بتشغيله على حسب الخيارات والطريقة التي قام بها المستخدم اعطاء الأمر .
٥. يعمل البرنامج بناءً على المدخلات ثم يحدد exit code في النهاية .
٦. يقوم بعرض النتائج للمستخدم .
أمثلة :
Bourne Shell (sh) | Bourne Again Shell (bash) | Fish Shell (fish) | Z shell (zsh) | Korn Shell (ksh) | C Shell (csh)
Bourne Shell (sh) | Bourne Again Shell (bash) | Fish Shell (fish) | Z shell (zsh) | Korn Shell (ksh) | C Shell (csh)
إنتبه لذلك :
Terminal Vs Shell
يعتقد بعض الناس أن ال terminal و ال shell متماثلان او شيء واحد . لكنهم مختلفون عن بعضهم البعض.
التيرمينال : هو واجهة قائمة على المدخلات النصية تسمح للمستخدم بإدخال الأوامر وعرضها.
! قديماً في البداية لم يكن هناك شاشات عرض وكان يتم كتابة الأوامر ثم ارسال النتائج الى الطباعة !
الشل : هو برنامج يفسر الأوامر (interprets the commands) التي يتم إدخالها عبر الجهاز ويوفر طريقة للتفاعل مع نظام التشغيل.
الأمر لمعرفة الشل المستخدم :
Bash:
echo $SHELL
{Display Server}
هو برنامج تتمثل مهمته الأساسية انه يعمل كخادم (server) في تنسيق المدخلات والمخرجات بين العملاء (clients) وبقية نظام التشغيل والأجهزة وبعضهم البعض كلوحة المفاتيح و الفأرة وغير ذلك . و يتواصل ال display server مع ال clients من خلال بروتوكول خاص وهو display server protocol مثل X11 أو Wayland .
ويعد المكون الأساسي وأمرًا بالغ الأهمية في أي واجهة مستخدم رسومية (GUI) ، وتحديدًا نظام النوافذ (windowing system) . حيث انه يعد المكون الأساسي لواجهة المستخدم الرسومية (GUI) ويقع بين الواجهة الرسومية والنواة.
أمثلة لل display servers :
X window system | X.org | Wayland
أمثلة على ال display server protocols :
X11 , Wayland
X window system | X.org | Wayland
أمثلة على ال display server protocols :
X11 , Wayland
X.org server
هو تطبيق مجاني ومفتوح المصدر ل X window system display server الذي تديره مؤسسة X.Org. وهو برنامج يتفاعل مع تطبيقات النظام عبر بروتوكول X11 لرسم الأشياء وعرضها وإرسال أحداث الإدخال مثل حركات الماوس والنقرات وضغطات المفاتيح.
X11
هو network protocol . يصف كيفية تبادل الرسائل بين العميل (التطبيق) والعرض (الخادم). وتحمل هذه الرسائل عادة أوامر رسم بدائية مثل "أرسم مربع" ، "اكتب هذه الأحرف في هذا الموضع او المكان من شاشة العرض" ،أو انه "تم النقر فوق زر الماوس الأيسر" ، إلخ.
هو تطبيق مجاني ومفتوح المصدر ل X window system display server الذي تديره مؤسسة X.Org. وهو برنامج يتفاعل مع تطبيقات النظام عبر بروتوكول X11 لرسم الأشياء وعرضها وإرسال أحداث الإدخال مثل حركات الماوس والنقرات وضغطات المفاتيح.
X11
هو network protocol . يصف كيفية تبادل الرسائل بين العميل (التطبيق) والعرض (الخادم). وتحمل هذه الرسائل عادة أوامر رسم بدائية مثل "أرسم مربع" ، "اكتب هذه الأحرف في هذا الموضع او المكان من شاشة العرض" ،أو انه "تم النقر فوق زر الماوس الأيسر" ، إلخ.
تلخيصاً :
ان ال display server هو المكون الأساسي المختص في عرض الرسومات و طريقة التفاعل وعرض التطبيقات المختلفة .
الأمر لمعرفة ال display server المستخدم :
Bash:
ps -e | grep "tty"
{ Display Manager }
يُعرف أيضًا باسم "مدير تسجيل الدخول" (login manager) ، ويكون ال display manager مسؤولاً عن بدء تشغيل خادم العرض (display server) وتحميل سطح المكتب . ويحدث هذا مباشرة بعد إدخال اسم المستخدم وكلمة المرور بشكل صحيح . فهو من يتحكم في جلسات المستخدم ويدير بيانات المصادقة الخاصة بالمستخدم .
بعبارة أخرى هو برنامج يتيح للمستخدمين تسجيل الدخول الى النظام من خلال واجهة رسومية ويقوم بادارة خادم العرض (display server) .
العنصر الوحيد المرئي للمستخدم هو نافذة تسجيل الدخول، والتي يشار إليها أحيانًا باسم greeter أو المُرَحِب أو اداه الترحيب . وغلاباً ما تحتوي علي صورة خلفية و صورة حساب المستخدم و خانة لكتابة الرقم السري واختيار المستخدم بالإضافة في بعض الأحيان وجود خيارات لاختيار ال display server مثل ال X11 او Wayland او تحديد جلسة (session) ال DE ك gnome او kde او xfce اذا كان هناك اكثر من display server و desktop environment مثبتين بالفعل على النظام . (ملاحظة)
أمثلة :
XDM | lighDM | gdm3 | sddm | KDM | SLIM | lxDM
XDM | lighDM | gdm3 | sddm | KDM | SLIM | lxDM
يمكن التعديل على ال greeter لتغيير شكل شاشة تسجيل الدخول ... فمثلاً :
كل من التوزيعتين في الصور التالية تستخدم نفس ال display manager و هو في هذه الحالة ال lightDM ولكن ال greeter مختلف على حسب ما يناسب التوزيعة و ال theme الخاص بهم :
الأمر لمعرفة ال display manager المستخدم :
Bash:
pstree | grep -i "dm"
Bash:
systemctl | grep "Dispaly Manager"
{ Window Manager }
هو برنامج يتحكم في أوضاع وأماكن النوافذ ومظهرها داخل نظام النوافذ (windowing system) في واجهة المستخدم الرسومية (GUI). ويمكن أن يكون جزءا من بيئة سطح المكتب (DE) أو يمكن استخدامه بشكل مستقل .
مديرو النوافذ (window managers) هم X clients يتحكمون في مظهر وسلوك الإطارات و النوافذ (windows) فهو من يحدد الحدود وشريط العنوان والاحجام والقدرة على تغيير حجم النوافذ واعادة ترتيبها. وغالبا ما يوفر وظائف أخرى مثل المناطق المحجوزة للصق تطبيقات الإرساء ك ال panels and docks . أو القدرة على تبويب النوافذ . حتى أن بعض مديري النوافذ (window managers) مجمعون مع أدوات مساعدة بسيطة مثل نظام القوائم لبدء البرامج وهكذا أو حتى القدرة على تعديل مدير النوافذ نفسه.
أنواع :
١. stacking window managers
يقوم بتنظيم النوافذ مثل قطع الورق على المكتب ، ويمكن تكديسها فوق بعضها البعض .
٢. tiling window managers
"تجانب" النوافذ بحيث لا يتداخل أي منها وغالباً ما يعتمد على اختصارات لوحة المفاتيح لتنظيم النوافذ بهذا الشكل .
٣. Dynamic window managers
يمكن تبديل وضع النوافذ ديناميكياً بين tiling أو floating .
أمثلة :
KWin , openbox , Compiz , iwm , awesome
الأمر لمعرفة ال Window Manager المستخدم :
Bash:
pstree | grep -iE "(dm|win|wm)"
{ Desktop Environment }
بيئة سطح المكتب (Desktop Environment) هي مجموعة المكونات التي توفر لك عناصر واجهة المستخدم الرسومية (GUI) الشائعة مثل الرموز (icons) وأشرطة الأدوات (toolbars) والخلفيات (wallpapers) و الخطوط (fonts) وعناصر المساعدة (widgets) . فبفضل بيئة سطح المكتب ، يمكنك استخدام Linux بواجهة رسومية كاملة وفعالة .
هناك العديد من بيئات سطح المكتب وتُحدد بيئات سطح المكتب هذه شكل نظام Linux الخاص بك و البرامج الأساسية فمثلاً :
kde:
تيرمينال : konsole
مدير الملفات : dolphin
متجر التطبيقات : discover
محرر : kate
gnome:
تيرمينال : gnome-terminal
مدير الملفات : files
متجر التطبيقات : software
محرر : text editor
فكما نرى ، تحتوي معظم بيئات سطح المكتب على مجموعتها الخاصة من التطبيقات والأدوات المساعدة المتكاملة بحيث يشعر المستخدمون بالتجانس أثناء استخدام نظام التشغيل. لذلك، يمكنك الحصول على مدير ملفات، وأدوات البحث على سطح المكتب، وقائمة تطبيقات، وأدوات مساعدة لخلفية الشاشة وشاشة التوقف (screensavers) ، ومحرري النصوص، والمزيد .
بدون بيئة سطح المكتب، سيكون نظام Linux الخاص بك مجرد أداة تيرمينال وسيتعين عليك التفاعل معها باستخدام الأوامر فقط .
أمثلة :
xfce | Gnome | KDE | Mate | lxDE | Sway | Deepin
الأمر لمعرفة ال Desktop Environment المستخدمة :
Bash:
env | grep -i "XDG_CURRENT_DESKTOP"
واذا اخذنا توزيعة الكالي كمثال على ما تم طرحه من معلومات ، سنجد :
وهكذا نكون طرحنا أهم المعلومات عن كيفية عمل الواجهة الرسومية مع اللينكس وشكل نظام كامل فعال .
ولكن هل لينكس لتأدية هذا الدور فقط ؟!
التعديل الأخير: