البرنامج التعليمي لبرمجة Linux المتقدمة {تطوير} <br /> الجزء 1 Linux Kernel الجزء 2 دليل برمجة وحدة Linux Kernel الجزء 3 دليل مبرمج Linux الجزء 4 بنية نظام مفهوم Linux Kernel الجزء 5 بنية النظام المحددة لنواة Linux
جدول المحتويات مقدمة لمقدمة ريموند "إعلان" مجموعة هندسة توثيق Linux مقدمة المترجم الجزء الأول مقدمة Linux Kernel الفصل الأول أساسيات الأجهزة وأساسيات البرامج 6 1.1 أساسيات الأجهزة 6 1.1.1 وحدة المعالجة المركزية 7 1.1.2 الذاكرة 8 1.1.3 الحافلة 8 1.1.4 وحدات التحكم والأجهزة الطرفية 8 1.1.5 مساحة العنوان 9 1.1.6 الساعة 9 1.2 أساسيات البرمجيات 9 1.2.1 لغة الكمبيوتر 9 1.2.2 ما هو نظام التشغيل 11 1.2.3 بنية بيانات النواة 13 الفصل الثاني إدارة الذاكرة 15 2.1 نموذج تجريدي للذاكرة الافتراضية 15 2.1.1 طلب الترحيل 17 2.1.2 التبادل 17 2.1.3 الذاكرة الافتراضية المشتركة 18 2.1.4 وضع العنونة المادية ووضع العنونة الافتراضية 18 2.1.5 التحكم في الوصول 18 2.2 التخزين المؤقت 19 2.3 جدول صفحات Linux 20 2.4 تخصيص الصفحات وإعادة تدويرها 21 2.4.1 تخصيص الصفحة 22 2.4.2 إعادة تدوير الصفحة 22 2.5 تعيين الذاكرة 22 2.6 طلب الترحيل 23 2.7 ذاكرة التخزين المؤقت لصفحة Linux 24 2.8 تبديل الصفحات وإزالتها 25 2.8.1 تقليل أحجام المخزن المؤقت وذاكرة التخزين المؤقت للصفحة 25 2.8.2 تبديل صفحات الذاكرة المشتركة للنظام V 26 2.8.3 تبديل الصفحات وسحبها 27 2.9 مبادلة ذاكرة التخزين المؤقت 27 2.10 تغيير الصفحة 28 الفصل 3 العملية 29 3.1 عمليات لينكس 29 3.2 المعرفات 31 3.3 الجدولة 32 3.4 التوثيق 34 3.5 الذاكرة الظاهرية 35 3.6 إنشاء العملية 36 3.7 الوقت والمؤقتات 37 3.8 تنفيذ البرنامج 38 3.8.1 قزم 39 3.8.2 ملفات البرنامج النصي 40 الفصل الرابع آلية الاتصال بين العمليات 41 4.1 آلية التشوير 41 4.2 الأنابيب 42 4.3 المقابس 44 4.3.1 آلية الاتصال بين العمليات في النظام V 44 4.3.2 قائمة انتظار الرسائل 44 4.3.3 الإشارة 45 4.3.4 التخزين المشترك 47 الفصل 5 PCI 49 5.1 مساحة عنوان PCI 49 5.2 رأس تكوين PCI 50 5.3 PCI I/O ومساحة عنوان التخزين 51 5.4 جسر PCI-ISA 51 5.5 جسر PCI-PCI 51 5.5.1 جسر PCI-PCI: عناوين الإدخال/الإخراج والتخزين PCI نافذة على الفضاء 51 5.5.2 جسر PCI-PCI: دورة تكوين PCI وPCI الحافلة رقم 52 5.6 تهيئة Linux PCI 53 5.6.1 بنية بيانات Linux kernel PCI 53 5.6.2 برنامج تشغيل جهاز PCI 53 5.6.3 وظائف PCI BIOS 56 5.6.4 عملية تصحيح PCI 57 الفصل السادس معالجة المقاطعة وبرامج تشغيل الأجهزة 60 6.1 المقاطعات والتعامل مع المقاطعات 60 6.1.1 وحدة تحكم المقاطعة القابلة للبرمجة 61 6.1.2 تهيئة بنية بيانات معالجة المقاطعة 61 6.1.3 معالجة المقاطعة 62 6.2 برامج تشغيل الأجهزة 63 6.2.1 الاختبار والانقطاع 64 6.2.2 الوصول المباشر للذاكرة (DMA) 65 6.2.3 الذاكرة 66 6.2.4 الواجهة بين برنامج تشغيل الجهاز والنواة 66 6.2.5 القرص الصلب 69 6.2.6 معدات الشبكة 74 الفصل السابع أنظمة الملفات 77 7.1 نظام الملفات الممتد الثاني EXT2 78 7.1.1 عقدة Inode لنظام EXT2 79 7.1.2 الكتلة الفائقة في نظام EXT2 80 7.1.3 واصفات المجموعة لأنظمة EXT2 80 7.1.4 دليل نظام EXT2 81 7.1.5 البحث عن الملفات في نظام الملفات EXT2 81 7.1.6 تغيير الملفات في نظام الملفات EXT2 الحجم 82 7.2 نظام الملفات الظاهري 83 7.2.1 الكتلة الفائقة لنظام الملفات VFS 84 7.2.2 عقدة Inode لنظام الملفات VFS 84 7.2.3 تسجيل نظام الملفات 85 7.2.4 تجميع نظام الملفات 85 7.2.5 البحث عن الملفات في نظام الملفات الافتراضي 87 7.2.6 إلغاء تثبيت نظام الملفات 87 7.2.7 ذاكرة التخزين المؤقت Inode لنظام الملفات VFS 87 7.2.8 التخزين المؤقت للدليل 88 7.3 التخزين المؤقت 88 7.3.1 برنامج bdflush kernel daemon 90 7.3.2 عملية التحديث 90 7.4 / نظام الملفات بروك 91 7.5 ملفات الجهاز الخاصة 91 الفصل 8 الشبكة 92 8.1 نظرة عامة على شبكة TCP/IP 92 8.2 التسلسل الهرمي لشبكة TCP/IP في Linux 95 8.3 واجهة مقبس BSD 96 8.4 طبقة مأخذ توصيل INET 97 8.4.1 إنشاء مقبس BSD 98 8.4.2 عنوان الربط لمقبس INET BSD 99 8.4.3 إنشاء اتصال مقبس INET BSD 99 8.4.4 الاستماع إلى مقبس INET BSD 100 8.4.5 قبول طلبات الاتصال 100 8.5 طبقة IP 100 8.5.1 المخزن المؤقت للمقبس 100 8.5.2 استقبال رسائل IP 101 8.5.3 إرسال حزم IP 102 8.5.4 مشاركة البيانات 102 8.6 بروتوكول تحليل العنوان 103 8.7 توجيه IP 104 الفصل 9 آليات ووحدات النواة 107 9.1 آلية النواة 107 9.1.1 التحكم في النصف السفلي 107 9.1.2 قائمة انتظار المهام 108 9.1.3 الموقتات 109 9.1.4 قائمة الانتظار 110 9.1.5 قفل الدوران 110 9.1.6 الإشارة 110 9.2 الوحدات 111 9.2.1 تحميل الوحدة 112 9.2.2 إلغاء تثبيت الوحدة 113 الفصل العاشر المعالجات115 10.1 × 86 115 10.2 آر إم 115 10.3 معالج ألفا AXP 115 الفصل 11 كود مصدر Linux Kernel 117 11.1 كيفية الحصول على الكود المصدري لنواة لينكس 117 11.2 ترتيب كود مصدر النواة 117 11.3 من أين نبدأ 118 الفصل 12 هياكل بيانات Linux 120 الملحق أ مواقع الويب ومواقع FTP المفيدة 138 الملحق ب مسرد 139 الجزء الثاني دليل برمجة وحدة Linux Kernel شكر وتقدير مقدمة الفصل الأول مرحبًا بالعالم 145 1.1 ملفات إنشاء وحدة النواة 146 1.2 وحدة النواة متعددة الملفات 147 الفصل 2 ملفات جهاز الأحرف 149 الفصل الثالث / نظام الملفات proc 158 الفصل 4 استخدام /proc للإدخال 162 الفصل 5 استخدام ملفات الجهاز للإدخال 170 الفصل السادس معلمات بدء التشغيل182 الفصل 7 يستدعي النظام 185 الفصل الثامن منع التعامل190 الفصل 9 استبدال printk 199 الفصل العاشر جدولة المهام 202 الفصل 11 معالجات المقاطعة 207 الفصل 12 المعالجة المتعددة المتماثلة 211 الفصل 13 الأخطاء الشائعة 212 الملحق أ الاختلافات بين 2.0 و 2.2 213 الملحق ب موارد أخرى 214 الملحق ج أعط تقييمك 215 الجزء الثالث دليل مبرمجي Linux الفصل الأول نظام التشغيل Linux 219 الفصل الثاني نواة لينكس 220 الفصل الثالث حزمة Linux libc 221 الفصل الرابع يستدعي النظام 222 الفصل الخامس "سكين الجيش السويسري": ioctl 223 الفصل السادس: الاتصال بين عمليات Linux 224 6.1 مقدمة 224 6.2 أنابيب يونكس أحادية الاتجاه 224 6.2.1 المفاهيم الأساسية 224 6.2.2 إنشاء خطوط الأنابيب في لغة C 225 6.2.3 طريقة بسيطة 229 6.2.4 العمليات الذرية على الأنابيب 233 6.2.5 هناك عدة أشياء يجب ملاحظتها حول الأنابيب أحادية الاتجاه العدد 233 6.3 الأنابيب المسماة 234 6.3.1 المفاهيم الأساسية 234 6.3.2 إنشاء FIFO 234 6.3.3 عملية FIFO 235 6.3.4 حظر الإجراء على FIFO 236 6.3.5 إشارة SIGPIPE 237 6.4 النظام الخامس IPC 237 6.4.1 المفاهيم الأساسية 237 6.4.2 قائمة انتظار الرسائل 239 6.4.3 الإشارة 251 6.4.4 أداة semtool: عمليات الإشارة التفاعلية البرنامج 260 6.4.5 الذاكرة المشتركة 267 الفصل 7 البرمجة الصوتية274 7.1 برمجة السماعات الداخلية 274 7.2 برمجة بطاقة الصوت 274 الفصل 8 رسومات وحدة الأحرف 276 8.1 وظائف الإدخال/الإخراج في libc 277 8.1.1 الإخراج المنسق 277 8.1.2 المدخلات المنسقة 278 8.2 مكتبة المصطلحات 278 8.2.1 المقدمة 278 8.2.2 الحصول على وصف المحطة 279 8.2.3 عرض وصف المحطة 279 8.2.4 قدرات الحد الأقصى 280 8.3 مقدمة إلى Ncurses 280 8.4 التهيئة 282 8.5 ويندوز 283 8.6 الإخراج 284 8.6.1 الإخراج المنسق 285 8.6.2 إدراج الأحرف/السطر 286 8.6.3 حذف الأحرف/السطور 286 8.6.4 المربعات والخطوط 287 8.6.5 أحرف الخلفية 287 8.7 الإدخال 288 8.8 الخيارات 289 8.8.1 خيارات الإخراج 289 8.8.2 خيارات الإدخال 290 8.8.3 خصائص المحطة 291 8.8.4 استخدام الخيارات 291 8.9 تحديث المحطة 292 8.10 خصائص وألوان الفيديو 293 8.11 إحداثيات المؤشر والشاشة 294 8.12 المتداول 294 8.13 لوحة المفاتيح 295 8.14 العلامات الناعمة 295 8.15 متنوعة 295 8.16 الوصول على مستوى منخفض 296 8.17 تفريغ الشاشة 296 8.18 محاكاة Termcap 296 8.19 وظيفة Terminfo 296 8.20 وظائف التصحيح 297 8.21 قدرات Terminfo 297 8.21.1 القدرات المنطقية 297 8.21.2 القدرات العددية 298 8.21.3 قدرات السلسلة 299 8.22 [N] نظرة عامة على وظيفة اللعنات 306 الفصل التاسع برمجة منافذ الإدخال والإخراج 307 9.1 برمجة الفأرة 307 9.2 برمجة المودم 308 9.3 برمجة الطابعة 308 9.4 برمجة عصا التحكم 308 الفصل 10 تطبيقات النقل إلى Linux 309 10.1 مقدمة 309 10.2 معالجة الإشارات 309 10.2.1 ضمن SVR4 وBSD وPOSIX.1 إشارة 310 10.2.2 خيارات إشارة Linux 310 10.2.3 الإشارات في Linux 310 10.2.4 الإشارات التي يدعمها Linux 311 10.3 محطة الإدخال/الإخراج 311 10.4 معلومات العملية والتحكم فيها 311 10.4.1 عملية كيلو فولت في الدقيقة 312 10.4.2 نظام الملفات ptrace و/proc 312 10.4.3 التحكم في العمليات في Linux 312 10.5 التجميع الشرطي المحمول 313 10.6 تعليمات تكميلية 314 الملحق النظام الأبجدي يدعو 315 الجزء الرابع ملخص بنية نظام مفهوم Linux Kernel 323 المقدمة 324 الفصل الأول هيكل النظام 325 1.1 نظرة عامة على النظام 325 1.2 أهداف النواة 325 1.3 نظرة عامة على بنية النواة 325 1.4 دعم العديد من المطورين 327 1.5 بنية بيانات النظام 328 1.5.1 قائمة المهام 328 1.5.2 رسم خرائط الذاكرة 328 1.5.3 عقد الفهرس 328 1.5.4 اتصال البيانات 329 الفصل الثاني هيكل النظام للأنظمة الفرعية 330 2.1 هيكل نظام جدولة العمليات 330 2.1.1 الأهداف 330 2.1.2 الوحدة 330 2.1.3 تعبير البيانات 331 2.1.4 التبعيات وتدفق البيانات وتدفق التحكم 331 2.2 هيكل نظام إدارة الذاكرة 331 2.2.1 الأهداف 331 2.2.2 الوحدات 331 2.2.3 تمثيل البيانات 331 2.2.4 تدفق البيانات وتدفق التحكم والتبعيات 332 2.3 هيكل نظام الملفات الظاهري 333 2.3.1 الأهداف 333 2.3.2 الوحدات 333 2.3.3 تمثيل البيانات 333 2.3.4 تدفق البيانات وتدفق التحكم والتبعيات 334 2.4 هيكل نظام واجهة الشبكة 334 2.4.1 الأهداف 334 2.4.2 الوحدات 334 2.4.3 تمثيل البيانات 335 2.4.4 تدفق البيانات وتدفق التحكم والتبعيات 335 2.5 هيكل نظام الاتصالات بين العمليات 335 الفصل الثالث خاتمة 336 الملحق أ تعريف المصطلحات 337 الملحق ب المراجع 338 الجزء 5 ملخص لبنية النظام المحددة لنواة Linux 341 الفصل الأول المقدمة 342 1.1 الأهداف 342 1.2 مقدمة إلى لينكس 342 1.3 المعرفة الأساسية ببنية نظام البرمجيات 342 1.4 الطرق والأساليب 343 1.5 القراء الذين يستهدفهم هذا الكتاب 344 1.6 ترتيب فصول هذا الجزء 344 الفصل الثاني هيكل النظام 345 الفصل 3 هيكل النظام الفرعي 346 3.1 جدولة العمليات 346 3.1.1 الأهداف 346 3.1.2 الواجهة الخارجية 346 3.1.3 وصف النظام الفرعي 346 3.1.4 بنية البيانات 347 3.1.5 هيكل النظام الفرعي 348 3.1.6 تبعيات النظام الفرعي 348 3.2 مدير الذاكرة 348 3.2.1 الأهداف 348 3.2.2 الواجهة الخارجية 349 3.2.3 وصف النظام الفرعي 349 3.2.4 بنية البيانات 350 3.2.5 هيكل النظام الفرعي 350 3.2.6 تبعيات النظام الفرعي 351 3.3 نظام الملفات الظاهري 352 3.3.1 الأهداف 352 3.3.2 الواجهة الخارجية 352 3.3.3 وصف النظام الفرعي 353 3.3.4 برامج تشغيل الأجهزة 353 3.3.5 نظام الملفات المنطقية 354 3.3.6 الوحدات 354 3.3.7 بنية البيانات 355 3.3.8 هيكل النظام الفرعي 355 3.3.9 تبعيات النظام الفرعي 355 3.4 الاتصال بين العمليات 355 3.4.1 الأهداف 355 3.4.2 الواجهة الخارجية 357 3.4.3 وصف النظام الفرعي 357 3.4.4 بنية البيانات 358 3.4.5 هيكل النظام الفرعي 359 3.4.6 تبعيات النظام الفرعي 359 3.5 واجهة الشبكة 360 3.5.1 الأهداف 360 3.5.2 الواجهة الخارجية 361 3.5.3 وصف النظام الفرعي 361 3.5.4 بنية البيانات 362 3.5.5 هيكل النظام الفرعي 363 3.5.6 تبعيات النظام الفرعي 363 الفصل الرابع خاتمة 365 الملحق أ تعريف المصطلحات 366 الملحق ب المراجع 368 الجزء السادس، الملحق، الملحق أ، نسخة مشروع مستند Linux، الترخيص 372 الملحق ب رخصة جنو العامة 374