
دورة Systems Programming
أتقن برمجة أنظمة لينكس بلغة C من خلال تطبيقات عملية في إدخال/إخراج الملفات واستدعاءات POSIX والتوقيت عالي الدقة وواجهات سطر أوامر قوية وسير عمل لينكس المضمن. ابنِ أدوات سريعة وموثوقة وصحح الأخطاء كمحترف في الأنظمة الإنتاجية والمضمنة الحقيقية.
ماذا ستتعلم:
توفر هذه الدورة في برمجة الأنظمة تدريباً عملياً مركزاً على استدعاءات نظام POSIX C وإدخال/إخراج الملفات الآمن وسطر الأوامر القوي. ستتعلم قياس الإنتاجية ومعالجة القراءات والكتابات الجزئية وإدارة الأخطاء باستخدام errno وتحسين الأداء. تغطي الدورة أيضاً التوقيت عالي الدقة وتحليل /proc و/sys والتصحيح باستخدام Valgrind وstrace والنشر السريع والموثوق على لوحات لينكس المضمنة.
كيف تدرس بشكل عملي دورة Systems Programming
كيف تتدرب عملياً دورة Systems Programming
لك إذا كنت شركة وتريد تدريب فريقك
في Elevify للشركات، يأتي الدورة مع تمارين وأمثلة من عملك نفسه وبالطريقة التي تحتاجها شركتك.
محتوى الدورة
6 فصول • 42 دروسمدة بين 4 و 360 ساعة (أنت تقرر)
الفصل 1إخفاءإخفاء التفاصيلعرض التفاصيلأساسيات استدعاءات النظام POSIX C
أساسيات استدعاءات النظام POSIX C
الدرس 1 • وصفائف الملفات مقابل FILE*: متى تستخدم استدعاءات النظام المنخفضة وكيفية الدمج بأمان
نقارن وصفائف الملفات الصحيحة مع تدفقات stdio FILE*، موضحين التخزين المؤقت، الأداء، والأمان. ستتعلم متى تفضل كل تجريد وكيفية التحويل بينهما دون إفساد الحالة.
الدرس 2 • sys/stat.h وأذونات الملفات: mode_t، S_IRUSR، S_IWUSR، تفاعلات umask
يستعرض هذا القسم sys/stat.h، mode_t، وبتات الإذن الرمزية مثل S_IRUSR وS_IWUSR. سترى كيف يعدل umask الافتراضيات، وكيفية فحص البيانات الوصفية، وكيفية إنشاء ملفات بأذونات دقيقة.
الدرس 3 • unistd.h: open، read، write، close، lseek، fsync وقواعد قيم الإرجاع
هنا ندرس البدائيات unistd.h مثل open، read، write، close، lseek، وfsync. ستتعلم تواقيع الاستدعاءات، قواعد قيم الإرجاع، أوضاع الفشل الشائعة، وكيفية دمجها في أدوات إدخال/إخراج ملفات آمنة وبسيطة.
الدرس 4 • ذرية الإدخال/الإخراج ومعالجة القراءة/الكتابة الجزئية: أنماط قراءة/كتابة متكررة
هنا نحلل ضمانات الذرية في الإدخال/الإخراج وواقع القراءات والكتابات الجزئية. ستطبق مساعدات قراءة وكتابة متكررة، تعالج الإنقطاعات، وتصمم واجهات لا تفقد البيانات بهدوء.
الدرس 5 • fcntl.h وأعلام حالة الملف: O_CREAT، O_TRUNC، O_RDONLY، O_WRONLY، O_RDWR، O_SYNC
يقدم هذا القسم fcntl.h وأعلام حالة الملف مثل O_CREAT، O_TRUNC، O_RDONLY، O_WRONLY، O_RDWR، O_SYNC. ستتعلم كيفية تفاعل أوضاع الوصول، تعديل أعلام الوصف، وتأثير هذه الخيارات على الأمان والسرعة.
الدرس 6 • سلسلة أدوات بناء C وأعلام gcc الدقيقة لبناءات ثابتة/ديناميكية
يغطي هذا القسم سلسلة أدوات بناء C، مع التركيز على أعلام gcc للربط الثابت والديناميكي. ستتعلم كيفية تفاعل مراحل الترجمة، فحص أوامر الربط، وتأثير الأعلام على القابلية للنقل وحجم الثنائي.
الدرس 7 • errno، perror، strerror، أنماط الإبلاغ عن الأخطاء القوية ورموز الخروج
يشرح هذا القسم errno، perror، strerror، موضحاً كيفية التقاط وتفسير وعرض أخطاء النظام. ستصمم واجهات أخطاء متسقة، تختار رموز الخروج، وتسجل الفشلات دون فقدان سياق التشخيص.
الفصل 2إخفاءإخفاء التفاصيلعرض التفاصيلواجهات ملفات Linux /proc و/sys لمعلومات النظام
واجهات ملفات Linux /proc و/sys لمعلومات النظام
الدرس 1 • حالات الحافة والقابلية للنقل: صيغ متغيرة عبر النوى والعمارة
يناقش كيف تختلف صيغ /proc و/sys بين إصدارات النواة، التوزيعات، وعمارة المعالجات، وكيفية كتابة محللات مرنة تتحمل الحقول المفقودة، الخطوط المعاد ترتيبها، والفراغات غير المتوقعة أو التوطين.
الدرس 2 • تخطيط ملفيات /proc الافتراضية ونموذج الأذونات
يقدم تنظيم ملفيات /proc الافتراضية، الدلائل الرئيسية، ونموذج الأذونات، موضحاً كيفية عرض بيانات النواة كملفات، كيفية التحكم في الوصول لكل عملية، وكيف يختلف عن ملفيات القرص العادية.
الدرس 3 • اعتبارات الأمان والأذونات عند قراءة /proc و/sys
يحلل جوانب الأمان في قراءة /proc و/sys، بما في ذلك فحوصات الأذونات، مخاطر الكشف عن المعلومات، البيئات المحتواة، وكيفية تجنب حالات السباق، مشكلات الروابط الرمزية، والافتراضات غير الآمنة عن محتويات الملفات.
الدرس 4 • صيغة /proc/cpuinfo: تحليل حقول مثل 'model name'، 'processor'، 'cpu cores'
يصف تخطيط /proc/cpuinfo، بما في ذلك أقسام المعالج لكل معالج وحقول مثل model name، processor، cpu cores، ويظهر كيفية تحليلها بشكل موثوق مع معالجة معالجات متعددة وأنظمة غير متجانسة.
الدرس 5 • قراءة الملفات بـ open/read مقابل fopen/fgets: تحجيم المخزن ومعالجة EOF
يقارن استخدام open وread مع fopen وfgets لقراءة ملفات /proc و/sys، مع التركيز على التخزين المؤقت، الأداء، كشف EOF، القراءات الجزئية، معالجة الأخطاء، واختيار أحجام المخازن المناسبة للوصول القائم على الخط والكتلي.
الدرس 6 • صيغة /proc/meminfo: تحليل 'MemTotal' والحقول المرتبطة وتحويل الوحدات
يشرح هيكل /proc/meminfo، مع التركيز على حقول مثل MemTotal وMemAvailable، كيفية تحليل القيم الرقمية والوحدات، التحويل إلى بايتات أو MiB، والتحقق من النتائج مقابل توقعات النظام ومخاطر التجاوز.
الدرس 7 • تحليل النصوص القوي في C: بدائل fgets الآمنة، تحليل الخط بـ strtok/strstr
يغطي تقنيات التحليل النصي الآمن في C لقراءة النصوص من /proc و/sys، مقارنة fgets بالطرق المنخفضة المستوى، ويظهر توكينة الخطوط القوية باستخدام strtok، strstr، والمسح اليدوي مع تجنب الفخاخ الشائعة في التحليل.
الفصل 3إخفاءإخفاء التفاصيلعرض التفاصيلالتوقيت عالي الدقة والقياس
التوقيت عالي الدقة والقياس
الدرس 1 • القابلية للنقل عبر إصدارات نواة لينكس والبيئات المضمنة
يعالج هذا القسم قابلية نقل كود التوقيت. ستتعلم أي ساعات وأعلام تختلف عبر إصدارات لينكس والنوى المضمنة، كيفية كشف دعم الميزات، وتصميم بدائل تحافظ على الصحة والدقة المعقولة.
الدرس 2 • اختيار الساعة المناسبة للزمن المنقضي مقابل زمن النظام وتأثيرات NTP/adjtime
يساعد هذا القسم في اختيار الساعات للزمن المنقضي مقابل زمن النظام. سترى كيف يؤثر NTP، adjtime، والثواني الكبيسة على CLOCK_REALTIME، ومتى تكون الساعات الأحادية أكثر أماناً للمراقبة، المهل الزمنية، وقياسات الأنظمة الموزعة.
الدرس 3 • حبيبات التوقيت وضوضاء القياس: أساسيات الإحصاء (المتوسط، الوسيط، الانحراف المعياري)
يشرح هذا القسم حبيبات التوقيت وضوضاء القياس. ستحسب المتوسط، الوسيط، والانحراف المعياري، تكشف الشواذ، وتفهم كيف تشوه الكمية، الاهتزاز، وتأثيرات المجدول بيانات التوقيت الخام ونتائج المعايرة.
الدرس 4 • حسابات timespec: تحويل الثواني/النانوثواني إلى مللي ثواني ومعالجة التجاوز
يغطي هذا القسم حسابات timespec الآمنة. ستحول بين الثواني، نانوثواني، ومللي ثواني، تضبط الحقول، تتجنب التجاوز، وتطبق وظائف مساعدة للإضافة، الطرح، والمقارنة بقيم timespec بشكل صحيح.
الدرس 5 • ساعات POSIX: clock_gettime، clock_getres، CLOCK_MONOTONIC، CLOCK_MONOTONIC_RAW
يقدم هذا القسم ساعات POSIX الرئيسية وخصائصها. ستتعلم كيفية استفسار الزمن والدقة بـ clock_gettime وclock_getres، ومقارنة CLOCK_MONOTONIC مع CLOCK_MONOTONIC_RAW لقياسات حساسة للتأخير.
الدرس 6 • قياس عمليات الإدخال/الإخراج القصيرة: جولات الإحماء، تأثيرات التخزين، واستراتيجيات إسقاط الجولة الأولى
يركز هذا القسم على توقيت عمليات الإدخال/الإخراج القصيرة بشكل موثوق. ستتعلم تصميم جولات الإحماء، التخفيف من التخزين المؤقت وأخطاء الصفحات، إسقاط الشواذ، وترتيب المعايرات لفصل تكلفة الإدخال/الإخراج عن الضوضاء والنشاط غير المتعلق.
الدرس 7 • استخدام clock_nanosleep وnanosleep للتأخيرات المتحكمة والتزامن
يغطي هذا القسم nanosleep وclock_nanosleep للتأخيرات الدقيقة. ستتعلم النوم النسبي والمطلق، معالجة EINTR، تصميم المؤقتات الدورية، وكيفية تأثير تأخير المجدول وحبيبة المؤقت على التزامن الزمني الحقيقي.
الفصل 4إخفاءإخفاء التفاصيلعرض التفاصيلأنماط الإدخال/الإخراج الآمنة للملفات واعتبارات الأداء
أنماط الإدخال/الإخراج الآمنة للملفات واعتبارات الأداء
الدرس 1 • استخدام O_DIRECT ومتطلبات التوافق (مفاهيمي) واستراتيجيات الرجوع
يقدم هذا القسم O_DIRECT، قواعد التوافق، وكيفية تجاوز تخزين الصفحات. ستتعلم توافق المخزن والإزاحة، تحذيرات نظام الملفات، معالجة الأخطاء، واستراتيجيات الرجوع العملية عند عدم توفر الإدخال/الإخراج المباشر أو فشله.
الدرس 2 • معالجة استدعاءات النظام المنقطعة (EINTR) والأخطاء العابرة بمنطق إعادة المحاولة
يركز هذا القسم على معالجة استدعاءات النظام المنقطعة والأخطاء العابرة. ستتعلم سبب حدوث EINTR، تصميم حلقات إعادة المحاولة القوية، التمييز بين الأخطاء القاتلة والقابلة للاسترداد، وضمان عمليات إدخال/الإخراج آمنة وغير متغيرة تحت الإشارات.
الدرس 3 • أوضاع إنشاء الملفات وأنماط الاستبدال الذري: كتابة-إلى-مؤقت-ثم-إعادة تسمية
يشرح هذا القسم إنشاء الملفات الآمن وأنماط الاستبدال الذري. ستتعلم عن أعلام open، الأذونات، الملفات المؤقتة، تدفقات write-to-temp-then-rename، تزامن الدليل، وكيفية تجنب التحديثات الجزئية أو المفسدة عند الانهيار.
الدرس 4 • قياس الإنتاجية وتقرير البايتات المكتوبة والزمن المنقضي بدقة
يعلم هذا القسم كيفية قياس إنتاجية الإدخال/الإخراج للملفات بدقة. ستتعلم توقيت العمليات، حساب البايتات في الثانية، معالجة الكتابات الجزئية، تجنب آثار التخزين، وتقرير النتائج بدقة ووحدات مناسبة للمعايرة.
الدرس 5 • استخدام lseek: دلالات SEEK_END، معالجة الملفات الأصغر من الإزاحة المطلوبة
يغطي هذا القسم استخدام lseek لتحديد إزاحات الملفات، مع التركيز على دلالات SEEK_END. ستتعلم كيفية معالجة الملفات الأصغر من الإزاحات المطلوبة، كشف الأخطاء، تجنب السلوك غير المحدد، ودمج lseek مع القراءة والكتابة بأمان.
الدرس 6 • تخصيص وكتابة كتل حجم ثابت (4096 بايت): memset، حلقة كتابة، ومعالجة الكتابات الجزئية
يوضح هذا القسم كتابة كتل حجم ثابت، مثل 4096 بايت. ستتعلم تخصيص وتهيئة المخازن، تنفيذ حلقات الكتابة، معالجة الكتابات الجزئية والعدد القصير، والتحقق من وصول العدد المقصود من البايتات إلى الملف.
الدرس 7 • تصريف وتزامن البيانات: fsync مقابل fdatasync واعتبارات البيانات الوصفية
يشرح هذا القسم تصريف البيانات المخزنة مؤقتاً إلى التخزين الثابت باستخدام fsync وfdatasync. يقارن دلالاتهما، يناقش متانة البيانات الوصفية، ضمانات الترتيب، الفخاخ الشائعة، ومتى يكون كل استدعاء مناسباً في الأنظمة الحقيقية.
الفصل 5إخفاءإخفاء التفاصيلعرض التفاصيلتصميم واجهة الأوامر ومعالجة الوسائط القوية
تصميم واجهة الأوامر ومعالجة الوسائط القوية
الدرس 1 • أساسيات معالجة الإشارات للإنقطاع السلس (SIGINT) أثناء الإدخال/الإخراج
يقدم هذا القسم أساسيات معالجة الإشارات في يونكس لواجهات CLI التفاعلية، مع التركيز على SIGINT أثناء الإدخال/الإخراج، تثبيت المعالجات بأمان، جعل العمليات قابلة للإنقطاع، وتنظيف الموارد دون إفساد حالة البرنامج.
الدرس 2 • التحويل الآمن بين الأحجام: size_t، ssize_t، off_t ومشكلات القابلية للنقل
يشرح هذا القسم أنواع الصحيح C المستخدمة للأحجام والإزاحات، كيفية التحويل بأمان بين size_t، ssize_t، off_t، وكتابة كود قابل للنقل يتصرف بشكل صحيح على أنظمة يونكس 32 بت و64 بت.
الدرس 3 • التحقق من صحة الإدخال وفحص الحدود لمعاملي العدد وnbytes
يركز هذا القسم على التحقق من إدخال المستخدم للعدد والأحجام البايتية، منع التجاوزات والقيم السالبة، فحص الحدود قبل التخصيص أو الإدخال/الإخراج، والفشل بأمان مع تشخيصات واضحة عند تجاوز الحدود.
الدرس 4 • تحليل argv[] يدوياً: التحقق من الأوامر الفرعية والوسائط الرقمية بـ strtol/strtoul
يوضح هذا القسم التحليل اليدوي لـ argv في C، التحقق من الأوامر الفرعية، استخدام strtol وstrtoul للوسائط الرقمية، معالجة الأخطاء وحالات الحافة، وفرض القيود مثل النطاقات المطلوبة وعدد الوسائط.
الدرس 5 • رموز خروج ذات معنى وطباعة رسائل التشخيص إلى stderr
يشرح هذا القسم كيفية اختيار رموز خروج ذات معنى، رسم حالات الخطأ إلى رموز، وطباعة التشخيصات إلى stderr بسياق واضح، مع الحفاظ على stdout نظيفاً للبيانات حتى تتمكن البرمجيات من تفسير نتائج البرنامج بشكل موثوق.
الدرس 6 • تنفيذ إرسال الأوامر الفرعية وأنماط رسائل الاستخدام/المساعدة
يغطي هذا القسم تصميم أدوات متعددة الأوامر بالأوامر الفرعية، تنفيذ جداول الإرسال، توليد رسائل الاستخدام والمساعدة المتسقة، وترتيب الكود بحيث يمكن إضافة أوامر فرعية جديدة دون كسر السلوك الحالي.
الدرس 7 • اختبار سلوك CLI ببيئات مختلفة وتوجيه stdout/stderr
يصف هذا القسم اختبار أدوات CLI تحت بيئات متنوعة، باستخدام التوجيه والأنابيب لـ stdout وstderr، التقاط رموز الخروج، وبناء اختبارات آلية تتحقق من الرسائل، المخرجات، وسلوك معالجة الأخطاء.
الفصل 6إخفاءإخفاء التفاصيلعرض التفاصيلالتطوير، التصحيح، والنقل إلى لوحات لينكس المضمنة
التطوير، التصحيح، والنقل إلى لوحات لينكس المضمنة
الدرس 1 • استراتيجيات الاختبار على الأجهزة المستهدفة: ملفيات loopback، ملفات كبيرة اصطناعية، والتحقق من التوقيت
طور استراتيجيات لاختبار الكود مباشرة على الأجهزة المضمنة، حتى مع موارد محدودة. استخدم ملفيات loopback، ملفات كبيرة اصطناعية، وأحزمة توقيت للتحقق من الأداء، القوة، ومعالجة الأخطاء تحت أحمال عمل واقعية.
الدرس 2 • التطوير المحلي مقابل الترجمة المتقاطعة: سلاسل الأدوات، sysroot، وخيارات gcc -static/-dynamic
افهم متى تبني محلياً على اللوحة مقابل استخدام أداة ترجمة متقاطعة. تعلم كيفية تفاعل sysroots، الرؤوس، والمكتبات، وكيفية تأثير خيارات الربط الثابت مقابل الديناميكي على القابلية للنقل، الحجم، والسلوك وقت التشغيل في الأنظمة المضمنة.
الدرس 3 • قيود الموارد على اللوحات المضمنة: بصمة الذاكرة، استخدام الستاك، وحجم الثنائي
افحص كيف تشكل حدود RAM، flash، CPU تصميم البرمجيات المضمنة. تعلم قياس وتقليل بصمة الذاكرة، استخدام الستاك، وحجم الثنائي باستخدام خيارات المترجم، التحسين وقت الربط، هياكل بيانات مدروسة، وأدوات المراقبة.
الدرس 4 • تدفق عمل بناء-ونشر بسيط: makefiles، ترجمة مصدر ملف واحد، ونسخ إلى الهدف
استعرض حلقة بناء ونشر بسيطة باستخدام make، مصادر C بسيطة، وبرمجيات صدف أساسية. تعلم ترتيب Makefiles، إدارة أعلام المترجم، ونسخ أو تزامن الثنائيات والأصول إلى الهدف بشكل موثوق عبر SSH أو وسائط قابلة للإزالة.
الدرس 5 • Valgrind وAddressSanitizer لأخطاء الذاكرة وتسرب الموارد في C المنخفض
طبق Valgrind وAddressSanitizer لكشف تسرب الذاكرة، الوصول غير الصالح، وسوء استخدام الموارد في برامج C. تعلم كيفية تكوين البناءات، تفسير التقارير، وتكييف الاستخدام للوحات المضمنة الأبطأ والأصغر أو إعدادات التصحيح عن بعد.
الدرس 6 • التكيف مع ملفيات القراءة فقط والعرض المحدود لـ /proc في بعض النوى المضمنة
تعلم كيف تؤثر ملفيات الجذر للقراءة فقط والعروض المقيدة لـ /proc على التسجيل، البيانات المؤقتة، والتكوين وقت التشغيل. استعرض أنماط التراكب القابل للكتابة، استخدام tmpfs، وتكييف الأدوات التي تتوقع وصول لينكس كامل الأسلوب المكتبي.
الدرس 7 • استخدام strace وltrace لفحص استدعاءات النظام، عمليات الملفات، والتوقيتات
استخدم strace وltrace لمراقبة استدعاءات النظام، استدعاءات المكتبات، والتوقيت في البرامج المضمنة. تعلم المرشحات، تفسير المخرجات، والتقنيات لتصحيح مشكلات الأذونات، الملفات المفقودة، عنق الزجاجة في الأداء، والتفاعلات غير المتوقعة مع النواة.

شهادتك الصالحة للتخرج
ماذا يقول طلابنا
آراء من درسوا معنا:
دروسكم مثالية. اشتريت الباقة السنوية، وأخيراً أصبح لدي الفرصة لمتابعة مواضيع متنوعة تهمني دون الحاجة لتغيير المنصة... أشكركم على كل ما تقومون به، لقد أوصيت بكم لأشخاص آخرين...

أحب كيف أن الدروس مباشرة ومركزة وكيف يمكنني تغيير الفصول وتخطي المحتوى الذي لا أحتاجه.

أحب المحتوى وطريقة العرض ونسخ الفيديوهات، مما يسرّع العملية!

المنصة سريعة وبسيطة الاستخدام. تنوع المحتوى والفيديوهات التكميلية تساعد كثيراً في التعلم.

أهم الدورات
الأسئلة الشائعة
من هي Elevify؟ كيف تعمل؟
هل الدورات تتضمن شهادات؟
هل الدورات مجانية؟
ما هو عبء الدورة؟
كيف تبدو الدورات؟
كيف تعمل الدورات؟
ما هي مدة الدورات؟
ما هو سعر أو تكلفة الدورات؟
ما هو التعليم عن بعد أو الدورة عبر الإنترنت وكيف تعمل؟
دورة PDF




















