الثلاثاء، 26 أغسطس، 2014

7- نظام التشغيل (Linux) - مقارنة بين لينكس و ويندوز - Linux VS Windows

بسم الله الرحمن الرحيم



الدرس السابع - Linux VS Windows 


مقارنة بين لينكس و ويندوز - Linux VS Windows
مقارنة البرامج الكبيرة هي عملية صعبة ومعقدة ولاسيما مقارنة أنظمة تشغيل والجدول التالي يوضح مقارنة عامة بين (Windows) و(Linux) من عدة نواحي موضحة بالجدول التالي والتضليل الأخضر اللون في خانة النظام بالجدول يعني أن الصفة هي أفضل في هذا النظام:

المعيار
Linux
Windows
الكلفة
عادة يكون (Linux) مجاني أو اقل كلفة بكثير من (Windows)
تكون كلفة (Windows) بين $50.00 - $150.00دولاراً لكل نسخة مرخصة
سهولة الاستخدام
لقد تحسن (Linux) من ناحية سهولة الاستخدام ولكن يبقى (Windows) أسهل بالنسبة للمستخدمين الجدد
قامت مايكروسوفت بالعديد من التحسينات لتكوين نظام تشغيل سهل الاستخدام
المعولية
إن اغلب توزيعات وإصدارات (Linux) تكون موثوقة جدا وتشتغل لشهور أو سنوات دون الحاجة لإعادة تشغيل
على الرغم من التحسينات العديدة في إصدارات (Windows) الأخيرة من ناحية المعولية إلا أنها لا تستطيع أن تجاري (Linux)
البرمجيات
(Linux) يملك تشكيلة كبيرة من البرامج والألعاب
بسبب كثرة عدد مستخدمي (Windows) فانه يملك تشكيلة اكبر من البرمجيات مقارنة بـ(Linux)
كلفة البرمجيات
معظم البرامج والألعاب والأدوات في (Linux) تكون مجانية و مفتوحة المصدر غالبا وحتى البرامج الكبيرة مثل (Gimp, OpenOffice) تكون مجانية أو قليلة الكلفة
على الرغم من أن (Windows) يملك العديد من الأدوات والبرامج والألعاب مجانا فإنها تكلف البرامج الأساسية للمستخدم الاعتيادي ما بين $20.00 - $200.00+ للنسخة
الماديات
قامت شركات (Linux) ومصنعي الماديات بتطورات عظيمة من ناحية دعم (Linux) للماديات ولكن لا تزال بعض الشركات لا توفر السواقات المناسبة لـ(Linux)
بسبب العدد الكبير لمستخدمي (Windows) وأجهزتهم الصلبة فانه يملك دعماً اكبر للماديات واغلب مصنعي الأجهزة تدعم منتجاتها في ال(Windows)
الأمان
على الرغم من وجود بعض الثغرات في (Linux) لكنه يبقى النظام الأكثر أماناً مقارنة بـ(Windows)
مايكروسوفت تعمل تحسينات أمنية مستمرة على الـ(Windows) ولكنه يبقى النظام الأكثر عرضة للفيروسات والهجمات الأخرى
المصدر المفتوح
العديد من إصدارات (Linux) من البرامج هي مفتوحة المصدر وتسمح للمستخدمين بالتعديل وتخصيص المصدر البرمجي حسب العمل المطلوب
نظام (Windows) مغلق المصدر وأغلب البرامج فيه مغلقة المصدر أيضا
الدعم
على الرغم من صعوبة إيجاد مستخدمين (Linux) متآلفين مع جميع توزيعات (Linux) فإن هنالك كمية كافية من التوثيق والمساعدة متوفرة على الانترنت لدعم (Linux)
(Windows) يمتلك قسماً خاصاً للمساعدة ويمتلك كمية كبيرة من التوثيق والمساعدة على الانترنيت فضلا عن العديد من الكتب لمختلف الإصدارات

الاثنين، 25 أغسطس، 2014

6- نظام التشغيل (Linux) - التوزيعات

بسم الله الرحمن الرحيم

الدرس السادس - التوزيعات


التوزيعات: Distributions
التوزيعة هي نظام (Linux) متكامل تم بناؤه من شركات أو منظمات للمساعدة في دعم وتركيب نظام تشغيل (Linux) تعتني التوزيعات بكل المهام الأولية لبناء النظام مثل بناء وفحص البرامج وتزويد الدعم الفني والتحديثات الأمنية وتصحيح الأخطاء وغيرها. هنالك العديد من التوزيعات لنظام التشغيل (Linux) قد تصل إلى الآلاف من التوزيعات بعضها تعود لشركات معينة أو جامعات أو حتى مجموعة من الأصدقاء ولكن هناك نقطة مهمة هي أن هذه التوزيعات تكون متشابهة في العديد من الأجزاء ومختلفة في أجزاء قليلة, فبيئات سطح المكتب والـ (shell) والأوامر ومهام الإدارة للنظام عادة ما تكون نفسها في كل التوزيعات لأنها تبنى على النواة نفسها وتختلف حيث تكون لكل توزيعة طريقة في التنصيب وتحديد أي البرامج سوف تضمن في هذه التوزيعة.
وعلى الرغم من أن كل توزيعة تضع شعارها وبرامجها الخاصة ولها إعداداتها وطرق التنصيب الخاصة بها فان مستخدم إحدى التوزيعات يستطيع بسهولة أن ينتقل إلى توزيعة أخرى للأسباب الآتية:
  1. إن التوزيعات تقوم على قاعدة تحقيق المعايير القياسية الخاصة بـ (Linux): حيث أن كل توزيعة يجب أن تحقق المحددات التي وضعتها www.linuxbase.org والهدف الرئيس من ذلك كله هو ضمان أن البرامج المكتوبة لأحد أنظمة (Linux) سوف يعمل على الأنظمة الأخرى.
  2. مشاريع مفتوحة المصدر: معظم التوزيعات تستخدم المشاريع نفسها مفتوحة المصدر فمثلا معظم الأوامر الأساسية وخدمات الطباعة وخدمات الانترنيت وخدمات إرسال الايميل ستكون نفسها بغض النظر عن ألتوزيعه
  3. الـ(shell) هي نفسها: على الرغم من إمكانية وضع واجهات عدة جميلة عليها فأن مفسر الأوامر هو نفسه (عادة ما يكون sh أو bash ) ولذا فأن مستخدمي (Linux) أو (UNIX) لا يجدون صعوبة في الانتقال بين التوزيعات لتوفر نفس الأوامر.
1.4.2 اختيار التوزيعة: Select Distributions
تستطيع معظم توزيعات (Linux) تنفيذ ما يحتاجه المستخدم من نظام التشغيل إلا أن بعض التوزيعات قد تحتاج لإرساء (install) برمجيات إضافية حتى تستطيع القيام بوظائفها كاملة أو تستطيع تنفيذ بعض مهامها. على كل حال يبقى الوضع المتمثل في وجود هذا الكم من التوزيعات غريبا. إذ يدعي كل توزيع بأنه الاسهل وانه كامل المواصفات. فيجب تحديد التوزيعة الأنسب للعمل. والشيء الذي يحدد اي توزيعة هي الانسب هو نوع العمل المطلوب من النظام.

الرابط التالي يساعدك في اختيار افضل توزيعة مناسبة لك :


كما يمكنك الاطلاع على افضل واحدث توزيعات اللينكس من:


الرابط ويمثل الموقع distrowatch.com واحد من افضل الماوقع للمقارنة بين التوزيعات ومعرفة معلومات تفصيلة عن توزيعات اللينكس




الأحد، 24 أغسطس، 2014

5- نظام التشغيل (Linux) - النواة، الجدولة، جدولة المهام



بسم الله الرحمن الرحيم

الدرس الخامس - النواة، الجدولة، جدولة المهام



النواة: Kernel
قام لينوس تروفالدوز بكتابة نواة نظام تشغيل لغرض تشغيل نظام التشغيل الخاص به على حاسبته المنزلية لان أنظمة التشغيل كانت تعمل على حواسيب عملاقة في الجامعات والمؤسسات وبعد نجاحه في كتابة النواة تم دمجها مع مشروع (GNU) لينتج نظام التشغيل (Linux).
والنواة لنظام التشغيل هي الجزء المركزي الذي يدير النظام وهي عبارة عن برنامج خاص جدا يدير كل العمليات وسواقات الأجهزة وعمليات الإدخال والإخراج, وعندما يبدأ تشغيل النظام يتم تشغيل النواة أولا. وثم تقوم بتهيئة الأجزاء المادية وهياكل البيانات وبعد أن تنهي النواة هذه المرحلة تقوم بتحميل وتشغيل برامج النظام.
وللنواة العديد من الوظائف فبعد إقلاع النظام تبدأ مرحلة إدارة الأجهزة والعمليات على الرغم من أن المعالج -في مفهوم الحاسوب- يستطيع أن ينفذ برنامجاً واحداً في وقت واحد فأن النواة تحمل العديد من البرامج على الذاكرة وإدارتها, وعملية إدارة العمليات تكون كالأتي:
  1. النواة لها السيطرة على المعالج, وهنالك العديد من العمليات في الذاكرة.
  2. النواة تختار عملية وتؤشر إلى أين وصل تنفيذ هذه العملية.
  3. النواة تترك السيطرة على المعالج.
  4. يتم تنفيذ العملية لوقت معين (مثلا عدة ثواني).
  5. عندما ينتهي وقت العملية توقف ساعة القطع العملية ويرجع التحكم مرة أخرى للنواة.
  6. النواة تهتم بأعمال النظام المطلوبة مثل القراءة أو الكتابة على احد الأجهزة.
  7. اذهب إلى خطوة (2).
يبسط هذا الوصف عمل النواة بعض الشيء ويتبين أن النواة عبارة عن جزء من الشفرة الذي ينفذ بين حين وآخر بين العمليات.
في (Linux) تقع النواة عادة في ملف اسمه /vmlinuz أو /boot/vmlinuz والـ(Boot Loader ) يحمل هذا الملف إلى الذاكرة يمكنه من العمل عند انطلاق النظام.

الجدولة في لينكس: Scheduling in Linux
الجدولة هي عملية تعيين وقت المعالج إلى مهام مختلفة موجودة في نظام التشغيل و كل مهمة يسمح لها بان تنفذ فقط إذا كانت هي المهمة الوحيدة في النظام ولا علاقة لها بالمهام الأخرى (ما لم يكن تصميم البرنامج يتطلب ذلك) وهذا يجعل البرامج أكثر سهولة في التطوير والصيانة والنقل وعلى الرغم من أن المعالج ينفذ (Thread) واحدة ضمن المهمة فان النظام يتواجد فيه في الوقت نفسه العديد من الـ (Thread) تابعة لعدة مهام بحيث أن النظام يجدول (Thread) واحدة للتنفيذ بوقت قصير ثم يتم الانتقال لتنفيذ (Thread) أخرى ويجب أن تحقق الجدولة وقت استجابة سريع للمهام و(throughput) جيد للمهام التي تعمل بالخلفية، كما يجب تجنب حالات المجاعة للمهام والتوفيق بين متطلبات الأسبقية العالية والمنخفضة وهذا يتم حسب مجموعة من القواعد تحدد متى وكيف سيتم اختيار المهمة لتنفيذها تدعى سياسة الجدولة (scheduling policy).

جدولة المهام: Task Scheduling
في الإصدار 2.4 من نواة (Linux) تدعم النواة طرق جدولة تقليدية من خوارزميات الجدولة الخاصة بيونكس وان هذه الطرق لا تنمو بصورة جيدة (not scale well) عندما يزداد عدد المهام في النظام كما إنها لا توفر دعماً لتعدد المعالجات. ومع الإصدار 2.5 غير المستقر من النواة ثم الإصدار 2.6 المستقر تم استخدام خوارزمية جدولة جديدة هي O1 algorithm وان الحرف Big-O يعني معدل الزيادة في وقت التنفيذ لخوارزمية الجدولة بالاعتماد على كمية الإدخالات للخوارزمية فمثلا On يعني أن وقت التنفيذ للخوارزمية يزداد بصورة خطية كلما ازداد حجم الإدخالات كما أن On^2 يعني أن النمو تربيعي والخوارزمية O1 يعني أن الوقت الأعلى لتنفيذ الخوارزمية هو وقت ثابت أي إنها تضمن الانتهاء بكمية محددة من الوقت بغض النظر عن حجم الإدخالات وتوفر هذه الخوارزمية موازنة للحمل والعدالة والدعم للمهام الفعالة.
مجدول (Linux) يكون قابل للمقاطعة (preemptive) ويستخدم خوارزمية تعتمد على الأولوية (priority-based algorithm) باستخدام نطاقين منفصلين من الأولوية هما مدى الزمن الحقيقي (real-time range) وهو من 0-99 والمدى المعتمد على قيم الـ(nice) وهو من 100-140 والقيم الأقل هي الأعلى أولوية وال(Linux) يعطي وقتاً اكبر للمهام الأعلى أولوية و الشكل (1) يوضح العلاقة بين الأولوية وطول شريحة الوقت

الشكل (1) العلاقة بين الأولوية وطول شريحة الزمن


أي مهمة تعتبر مرشحة للتنفيذ من المعالج طالما أن لها وقتاً متبقياًً في شريحة الوقت الخاصة بها. وعندما تستنزف المهمة شريحة وقتها فإنها تعتبر منتهية (expired) ولا ترشح للتنفيذ ثانية حتى تكمل جميع المهام الأخرى شرائح الوقت الخاصة بها، النواة تدير قائمة بكل المهام قيد التنفيذ في هيكل بيانات هو (runqueue) وهو يراقب ويتابع كل المهام قيد التنفيذ وكل معالج له (runqueue) خاص به والـ (runqueue) يتكون من مصفوفتين مرتبتين حسب الأولوية (Priority arrays) هما (active) و (expired) تحوي المصفوفة (active) جميع المهام التي لها وقت متبقي في شرائح الوقت الخاصة بهم وتحوي المصفوفة (expired) جميع المهام المنتهية لاحظ الشكل (2). مصفوفة الأولوية (Priority arrays) هي عبارة عن مصفوفة كل عنصر يشير إلى بداية قائمة موصولة وكل قائمة موصولة تمثل مستوى من الأولوية وعندما يتم إضافة مهمة إلى الـ (Priority arrays) فإنها تضاف إلى القائمة في مستوى الأولوية الخاص بها ويتم تعديل مصفوفة (bitmap) وهي تحوي على قيم تمثل فعالية أو تعطيل مستوى الأولوية في الـ (Priority arrays) فمثلا إذا كان هنالك ثلاث مهام في النظام واحدة في مستوى الأولوية 5 واثنتين في مستوى الأولوية 0 فانه سيتم تفعيل البت 0 و 5 من الـ (bitmap).

الشكل (2) ترتيب المهام حسب الأولوية

المجدول يقوم باختيار المهمة ذات الأولوية الأعلى من مصفوفة الـ(active) ليتم تنفيذها على المعالج وعملية إيجاد المهمة ذات أعلى أولوية هي عملية سهلة لأنه فقط يجب إيجاد أول بت فعال في الـ (bitmap) ثم تحديد القائمة الموصولة المطلوبة من مصفوفة الـ (active) وإذا كان هنالك أكثر من مهمة في القائمة نفسها فإنها ستنفذ بأسلوب (round-robin) ثم بعد تنفيذ المهمة للـ(time slice) الخاص بها يتم نقلها من مصفوفة الـ(active) إلى مصفوفة الـ(expired) وعندما يتم نقل جميع المهام وتصبح مصفوفة الـ(active) فارغة يتم تبديل مصفوفة الـ(active) و مصفوفة الـ(expired) أي تبديل المؤشرين فقط بين المصفوفتين نلاحظ أن عملية إيجاد أول بت في الـ(bitmap) وإيجاد أول عنصر في القائمة يتطلب وقتاً محدداً لإكمال العملية ولهذا تسمى الخوارزمية O1.


هذه صورة مصغرة لخارطة النواة......

ممكن استخدام الخارطة التفاعلية لنواة اللنكس من الرابط التالي
Interactive map of linux kernel

الجمعة، 22 أغسطس، 2014

4- نظام التشغيل (Linux) - أجزاء النظام، برامج GNU، برنامج الواجهة الرسومية، مدير النوافذ

بسم الله الرحمن الرحيم

الدرس الرابع - أجزاء النظام، برامج GNU، برنامج الواجهة الرسومية، مدير النوافذ

أجزاء النظام: System component
يتكون نظام (Linux) من عدة أجزاء وهي كالأتي :

1- برامج جنو: GNU program

بدأ تطوير هذه البرامج في الثمانيات عندما قرر ريتشارد ستالمان وهو عالم حاسوب موهوب بكتابة نظام تشغيل مشابه لنظام (UNIX) , والسبب الذي دفع ستالمان إلى ذلك كون رخصة (UNIX) تزايدت ملكيته ولم يعد بُسمح بالاطلاع على شفرته المصدري وكان ستالمان يؤمن بأن مشاركة البرامج هو الشيء الصحيح والطبيعي وقرر أن نسخته من (UNIX) سوف تكون حرة دوماً.

وسمى ستالمان إصداره من (UNIX) بالاسم (GNU) أي (GNU'S NOT UNIX) وكتب مجموعة البرامج الخاصة بنظام التشغيل والمحررات والمترجمات وغيرها ولم يصمم النواة إلى عام 1990 ثم بدا بكتابة النواة وسماها (HURD), وبعدها بدأ الاهتمام بوضع نواة لينوس تروفالدوز مع برمجيات (GNU) لتشكيل نظام التشغيل (GNU/LINUX).


نظام الملفات: File System

في (Linux) تنظم الملفات في أدلة أو مجلدات، نظام (Linux) عبارة عن مجموعة كبيرة مرتبطة من المجلدات وهي تحتوي على ملفات وبعض المجلدات هي مجلدات قياسية خاصة بالنظام وممكن إجراء العديد من العمليات عليها مثل نقل أو نسخ أو مشاركة وغيرها والمجلدات ترتب على شكل شجرة هرمية تبدأ بالجذر وكل المجلدات الأخرى تشتق في النهاية من دليل الجذر.
هنالك عدة مجلدات رئيسة موجودة في أنظمة (Linux) وهذه المجلدات ترتب الملفات والأجهزة والمستخدمين والبرامج وسجلات النظام وغيرها إلى تصانيف مختلفة، والنمط القياسي لهيكلية نظام الملفات يُمكن المستخدمين لأنظمة (Linux) أخرى أن يتأقلموا ويفهموا هيكلية نظام الملفات القياسية .

جدول (2-1) هيكلية نظام الملفات القياسية.

المجلد
الوصف
/bin , /sbin
الملفات القابلة للتنفيذ binary والأوامر الضرورية لاستخدام النظام، وأن محتويات bin تكون مشتركة بين المستخدم الجذر وبقية المستخدمين، محتويات sbin خاصة بالجذر
/boot
الملفات الخاصة بالإقلاع مثل grub ونواة (Linux)
/dev
المعلومات الخاصة بالأجهزة device الموصولة بالجهاز، الأجهزة تعامل كملفات (ملفات من نوع خاص) في نظام جنو/(Linux)
/etc
المجلد الخاص بملفات الإعدادات configuration files للنظام، أغلب ملفات الإعدادات هي ملفات نصية.
/lib
المجلد الخاص بالمكتبات library التي تحتاجها الملفات التنفيذية الموجودة في sbin و bin مثل مكتبات لغة C ومكتبات النواة.
/lost+ found
عند حدوث مشكلة في التيار الكهربائي وانطفاء الجهاز بطريقة غير صحيحة، سيتم فحص القرص الصلب وسيحاول النظام استعادة أي ملف حصل له تلف.
/media
يحوي هذا المجلد محتويات القرص المضغوط عند إدخاله أو محتويات الذاكرة الومضية أو عندما يتم عمل ضم لأقسام نظام ال(Windows).
/proc
مجلد افتراضي يحتوي على ملفات افتراضية خاصة بالعمليات process والنواة ويعطي معلومات عنها
/root
المجلد الخاص بالمستخدم الجذر.
/usr
المجلد الخاص بالبرامج والمكتبات للبرامج وملفات المساعدة لهذه البرامج وهو من أكبر المجلدات مساحة هذا المجلد يحتوي على bin و lib خاصة بالملفات التنفيذية والمكتبات غير الأساسية لعمل الجهاز مثل البرامج العادية
/tmp
مجلد يحفظ فيه الملفات المؤقتة temporary files، يتم حذف محتوياته بين فترة وفترة من قبل النظام
/opt
يحوي هذا الدليل البرامج التي يتم إضافتها على النظام بأي طريقة ما عدا تلك البرامج التي يتم إضافتها عن طريق مدير الحزم
/var
مجلد يحتوي على ملفات متغيرة variable مثل سجلات النظام logs

2- برنامج الواجهة الرسومية: X windows system

يتم الحصول على الواجهة الرسومية في (Linux) عن طريق الـ ( X windows system ) وهو نظام عرض رسومي مؤلف من مجموعة من البروتوكولات والمعايير متعددة اُطر العمل وشفاف للشبكات يعمل على (Linux)، واتى من مشروع (X free 86) ومن الفروق الرئيسة بين X وأنظمة العرض الأخرى الموجودة في (Windows) أو ماكنتوش أن X ورث شفافية الشبكات وصمم من الأساس على مبدأ خادم عميل (Client-server) وهذا يعني أن من الممكن تشغيل البرنامج اليومي وعرض الإخراج في مكان آخر ولكن عادة يتم التشغيل للبرنامج وعرض النتائج على الحاسوب نفسه, والمشاكل التي تظهر مع X عادة هي بعض مشاكل الخطوط أو عمليات التسريع للماديات, وبالإمكان إيقاف X عن العمل والاكتفاء بالعمل عن طريق سطر الأوامر بدون استخدام الواجهة الرسومية للاستفادة من مصادر النظام عند تشغيل برنامج رسومي مثلا (Xteem) فأن البرنامج الرسومي يعمل كـ (client) ويعمل X كـ (Server) لهذا البرنامج.

3- مدير النوافذ: Windows Manager
الـ (X server) يعرف كيف يعرض الإخراج الخاص بالبرنامج ولكنه لا يعرف كيف يدير عدة برامج مختلفة وتكون هذه وظيفة مدير البرامج, يعتني مدير النوافذ بسلوك نوافذ التطبيقات مظهرهم وزينتهم وملمس المقاطع والجدول وأدوات التحكم مثل أزرار الإغلاق والتكبير والطرق التي تتفاعل بها النوافذ مع الفارة ولوحة المفاتيح وغيرها، هنالك العديد من مدراء النوافذ منها المتواضع جدا ذو الخدمات القليلة مثل (twm) و(mwm) والتي تستخدم عادة عندما تحتاج إلى سيرفر مثلا غير أن به دعم رسومي لإعدادات معينة مثل دعم لأدوات المراقبة الخاصة بأوراكل فتكون هذه المدراء مناسبة، ومنها بيئات سطح المكتب المتكاملة مثل (KDE) و(gnome) .وأكثر بيئتين لسطح المكتب شائعتين في (Linux) هما :
    • GNOME (GNU Network Object Model Environment)
    • (KDE (K Development Environment
وكل واحدة منهما بيئتي مكتب متينة وغنية وتوفر مدير نوافذ خاص بها حيث(GNOME) تستخدم (mentality) و (KDE) تستخدم (KWM) ويختلفان في الإعدادات الافتراضية لجهاز الفاءرة ولوحة المفاتيح ومفاتيح الربط والاختصار وترتيب القوائم وأدوات التطوير الرسومية التحتية (underlying graphical toolkit) حيث (GNOME) تستخدم (widget) وتعرف بـ (GTK) بينما (KDE) تستخدم (QT)[47].

4- النواة: Kernel
ساقوم بشرح النواة في الدرس القادم ان شاء الله