نواة لينكس

نواة لينكس
المؤلف(ون) الأصلي(ون)لينوس تورفالدس
المطور(ون)المساهمون في المجتمع
لينوس تورفالدس
الإصدار الأولي0.02 (5 أكتوبر 1991 ؛ منذ 33 عامًا ) ( 1991-10-05 )
إصدار مستقر
6.11.5 [2]  / 22 أكتوبر 2024
معاينة الإصدار
6.12-rc5 [3]  / 27 أكتوبر 2024
مستودع
  • git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
مكتوب فيC ( C11 منذ 5.18، C89 قبل ذلك)، [4]
Rust (منذ 6.1)، [5]
لغة التجميع
متوفر فيإنجليزي
رخصةGPL-2.0 فقط مع Linux-syscall-note [6] [7] [8] [a]
موقع إلكترونيkernel.org

نواة لينكس هي نواة مجانية ومفتوحة المصدر ، [12] : 4  نواة شبيهة بنظام يونكس تُستخدم في العديد من أنظمة الكمبيوتر في جميع أنحاء العالم. تم إنشاء النواة بواسطة لينوس تورفالدس في عام 1991 وسرعان ما تم اعتمادها كنواة لنظام التشغيل جنو (OS) الذي تم إنشاؤه ليكون بديلاً مجانيًا ليونكس . منذ أواخر التسعينيات، تم تضمينها في العديد من توزيعات أنظمة التشغيل ، والتي يُطلق على العديد منها اسم لينكس . أحد أنظمة تشغيل نواة لينكس هذه هو أندرويد والذي يُستخدم في العديد من الأجهزة المحمولة والمدمجة.

معظم كود النواة مكتوب بلغة سي كما تدعمه مجموعة مُجمِّعات جنو (GCC) التي تحتوي على امتدادات تتجاوز لغة سي القياسية. [12] : 18  [13] يحتوي الكود أيضًا على كود تجميع لمنطق خاص بالهندسة المعمارية مثل تحسين استخدام الذاكرة وتنفيذ المهام. [12] : 379–380  تتميز النواة بتصميم معياري بحيث يمكن دمج الوحدات النمطية كمكونات برمجية - بما في ذلك التحميل الديناميكي. النواة متجانسة من الناحية المعمارية حيث يعمل نظام التشغيل بالكامل في مساحة النواة .

يتم توفير Linux بموجب ترخيص GNU العمومي العام الإصدار 2 ، على الرغم من أنه يحتوي على ملفات بموجب تراخيص متوافقة أخرى . [11]

تاريخ

لينوس تورفالد في مؤتمر LinuxCon Europe 2014 في دوسلدورف

في أبريل 1991، بدأ لينوس تورفالدس، وهو طالب علوم كمبيوتر يبلغ من العمر 21 عامًا في جامعة هلسنكي، العمل على نظام تشغيل مستوحى من يونكس لجهاز كمبيوتر شخصي. [14] بدأ بمبدل مهام بلغة التجميع Intel 80386 وبرنامج تشغيل طرفي . [14] في 25 أغسطس 1991، نشر تورفالدس ما يلي على comp.os.minix ، وهي مجموعة إخبارية على Usenet : [15]

أقوم بإنشاء نظام تشغيل (مجاني) (مجرد هواية، ولن يكون كبيرًا واحترافيًا مثل gnu) لنسخ 386(486) AT . كان هذا الأمر قيد التحضير منذ أبريل، وبدأ في الاستعداد. أود الحصول على أي تعليقات حول الأشياء التي يحبها الناس/لا يحبونها في minix، حيث يشبه نظام التشغيل الخاص بي إلى حد ما (نفس التصميم المادي لنظام الملفات (لأسباب عملية) من بين أشياء أخرى).
لقد قمت حاليًا بنقل bash (1.08) و gcc (1.40)، ويبدو أن كل شيء يعمل. هذا يعني أنني سأحصل على شيء عملي في غضون بضعة أشهر [...]
نعم - إنه خالٍ من أي كود minix، ولديه نظام ملفات متعدد الخيوط. إنه غير قابل للحماية [ كذا ] (يستخدم تبديل المهام 386 وما إلى ذلك)، وربما لن يدعم أي شيء بخلاف أقراص AT الصلبة، لأن هذا كل ما لدي :-(.

في 17 سبتمبر 1991، قام تورفالدز بإعداد الإصدار 0.01 من لينكس ووضعه على "ftp.funet.fi" - خادم FTP لشبكة الجامعات والأبحاث الفنلندية ( FUNET ). لم يكن قابلاً للتنفيذ حيث كان كوده لا يزال يحتاج إلى Minix لتجميعه واختباره. [16]

في 5 أكتوبر 1991، أعلن تورفالدز عن أول إصدار "رسمي" من لينكس، الإصدار 0.02. [17] [16]

[كما] ذكرت قبل شهر، فأنا أعمل على إصدار مجاني من برنامج شبيه ببرنامج Minix لأجهزة الكمبيوتر AT-386. وقد وصل أخيرًا إلى المرحلة التي أصبح فيها قابلاً للاستخدام (رغم أنه قد لا يكون كذلك اعتمادًا على ما تريده)، وأنا على استعداد لإصدار المصادر لتوزيعها على نطاق أوسع. إنه مجرد الإصدار 0.02... لكنني نجحت في تشغيل bash وgcc وgnu-make وgnu-sed وcompress وما إلى ذلك تحته.

نما لينكس بسرعة حيث ساهم العديد من المطورين، بما في ذلك مجتمع مينيكس ، في المشروع. [ بحاجة لمصدر ] في ذلك الوقت، أكمل مشروع جنو العديد من المكونات لبديله المجاني ليونكس، نظام التشغيل جنو ، لكن نواة النظام، جنو هورد ، لم تكن مكتملة. تبنى المشروع نواة لينكس لنظام التشغيل الخاص به. [18]

قام تورفالدز بتسمية النواة بالإصدار الرئيسي 0 للإشارة إلى أنها لم تكن مخصصة للاستخدام العام بعد. [19] كان الإصدار 0.11، الذي تم إصداره في ديسمبر 1991، هو الإصدار الأول الذي يتم استضافته ذاتيًا ؛ حيث تم تجميعه على جهاز كمبيوتر يعمل بنظام تشغيل نواة لينكس.

عندما أصدر تورفالدز الإصدار 0.12 في فبراير 1992، اعتمد الإصدار 2 من رخصة جنو العمومية (GPLv2) بدلاً من الترخيص الذي صاغه بنفسه سابقًا، والذي لم يسمح بإعادة التوزيع التجاري. [20] وعلى النقيض من يونكس ، فإن جميع ملفات المصدر الخاصة بلينكس متاحة مجانًا، بما في ذلك برامج تشغيل الأجهزة . [21]

كان النجاح الأولي الذي حققه لينكس مدفوعًا بالمبرمجين والمختبرين في جميع أنحاء العالم. وبفضل دعم واجهات برمجة التطبيقات POSIX ، من خلال مكتبة libC التي تعمل، إذا لزم الأمر، كنقطة دخول إلى مساحة عنوان النواة، يمكن أن يقوم لينكس بتشغيل البرامج والتطبيقات التي تم تطويرها لنظام يونكس. [22]

يدعم نواة Linux العديد من بنيات الأجهزة، مما يوفر منصة مشتركة للبرمجيات، بما في ذلك البرمجيات الاحتكارية .

في 19 يناير 1992، تم تقديم أول مشاركة لمجموعة الأخبار الجديدة alt.os.linux . [23] في 31 مارس 1992، تمت إعادة تسمية مجموعة الأخبار إلى comp.os.linux . [24]

كانت حقيقة أن لينكس عبارة عن نواة متجانسة وليست نواة صغيرة موضوع نقاش بين أندرو إس. تانينباوم ، مبتكر مينيكس، وتورفالدس. [25] بدأ نقاش تانينباوم-تورفالدس في عام 1992 على مجموعة يوزنت comp.os.minix كمناقشة عامة حول بنيات النواة. [26] [27]

كانت النسخة 0.95 هي أول نسخة قادرة على تشغيل نظام X Window . [28] في مارس 1994، تم إصدار Linux 1.0.0 مع 176250 سطرًا من التعليمات البرمجية. [29] وكما هو موضح برقم الإصدار، كان أول إصدار يعتبر مناسبًا لبيئة الإنتاج . [19] في يونيو 1996، بعد الإصدار 1.3، قرر تورفالدز أن Linux قد تطور بما يكفي لضمان رقم رئيسي جديد، ولذلك أطلق على الإصدار التالي اسم الإصدار 2.0.0. [30] [31] تضمنت الميزات المهمة لـ 2.0 تعدد المعالجة المتماثل (SMP)، ودعم المزيد من أنواع المعالجات ودعم تحديد أهداف أجهزة محددة وتمكين ميزات وتحسينات خاصة بالهندسة المعمارية. [22] تتيح مجموعة أوامر make *config من kbuild خيارات التمكين والتكوين لبناء ملفات تنفيذية خاصة بالنواة ( vmlinux ) ووحدات قابلة للتحميل. [32] [33]

تم إصدار الإصدار 2.2 في 20 يناير 1999، [34] وحسّن من دقة القفل وإدارة SMP، وأضاف دعمًا لـ m68k و PowerPC و Sparc64 و Alpha ومنصات 64 بت الأخرى. [35] وعلاوة على ذلك، أضاف أنظمة ملفات جديدة بما في ذلك إمكانية القراءة فقط لنظام NTFS من Microsoft . [35] في عام 1999، نشرت IBM تصحيحاتها لكود Linux 2.2.13 لدعم بنية S/390 . [36]

الإصدار 2.4.0، الذي صدر في 4 يناير 2001، [37] احتوى على دعم ISA Plug and Play و USB وبطاقات الكمبيوتر الشخصي . أضاف Linux 2.4 دعمًا لـ Pentium 4 و Itanium (قدم الأخير ia64 ISA الذي تم تطويره بشكل مشترك بواسطة Intel وHewlett-Packard ليحل محل PA-RISC الأقدم )، ولمعالج MIPS الأحدث 64 بت . [38] تغير تطوير 2.4.x قليلاً حيث تم توفير المزيد من الميزات طوال السلسلة، بما في ذلك دعم Bluetooth و Logic Volume Manager (LVM) الإصدار 1 ودعم RAID وأنظمة الملفات InterMezzo و ext3 .

تم إصدار الإصدار 2.6.0 في 17 ديسمبر 2003. [39] وقد تغير تطوير 2.6.x بشكل أكبر نحو تضمين ميزات جديدة في جميع أنحاء السلسلة. من بين التغييرات التي تم إجراؤها في سلسلة 2.6: دمج μClinux في مصادر نواة الخط الرئيسي، ودعم PAE ، ودعم العديد من خطوط وحدات المعالجة المركزية الجديدة ، ودمج Advanced Linux Sound Architecture (ALSA) في مصادر نواة الخط الرئيسي، ودعم ما يصل إلى 2 32 مستخدمًا (من 2 16 )، ودعم ما يصل إلى 2 29 معرف عملية (64 بت فقط، لا تزال معماريات 32 بت محدودة بـ 2 15[40] زيادة كبيرة في عدد أنواع الأجهزة وعدد أجهزة كل نوع، وتحسين دعم 64 بت ، ودعم أنظمة الملفات التي تدعم أحجام ملفات تصل إلى 16 تيرابايت ، والاستباق داخل النواة ، ودعم مكتبة خيوط POSIX الأصلية (NPTL)، وتكامل Linux في وضع المستخدم في مصادر نواة الخط الرئيسي، وتكامل SELinux في مصادر نواة الخط الرئيسي، ودعم InfiniBand ، والمزيد.

بدءًا من إصدارات 2.6.x، دعمت النواة عددًا كبيرًا من أنظمة الملفات؛ بعضها مصمم لنظام Linux، مثل ext3 و ext4 و FUSE و Btrfs ، [41] والبعض الآخر أصلي لأنظمة تشغيل أخرى مثل JFS و XFS وMinix و Xenix و Irix و Solaris و System V و Windows و MS-DOS . [42]

على الرغم من أن التطوير لم يستخدم نظام التحكم في الإصدارات حتى ذلك الحين، إلا أنه في عام 2002، تبنى مطورو Linux برنامج BitKeeper ، والذي تم توفيره لهم مجانًا على الرغم من أنه لم يكن برنامجًا مجانيًا . في عام 2005، بسبب الجهود المبذولة للهندسة العكسية للبرنامج، ألغت الشركة التي تمتلك البرنامج دعمها لمجتمع Linux. وردًا على ذلك، كتب Torvalds وآخرون Git . تمت كتابة النظام الجديد في غضون أسابيع، وفي غضون شهرين تم إصدار أول نواة رسمية مصنوعة باستخدامها. [43]

في عام 2005، تم تشكيل الفريق المستقر كرد فعل لعدم وجود شجرة نواة حيث يمكن للأشخاص العمل على إصلاح الأخطاء ، وسيستمر الفريق في تحديث الإصدارات المستقرة . [44] في فبراير 2008، تم إنشاء شجرة linux-next لتكون بمثابة مكان حيث يتم تجميع التصحيحات التي تهدف إلى الدمج خلال دورة التطوير التالية. [45] [46] كما تبنى العديد من صياني النظام الفرعي اللاحقة -next للأشجار التي تحتوي على الكود الذي يعتزمون تقديمه للتضمين في دورة الإصدار التالية. اعتبارًا من يناير 2014 ، يتم الاحتفاظ بإصدار Linux قيد التطوير في فرع غير مستقر يسمى linux-next . [47]

احتفل تورفالدز بالذكرى العشرين لنظام لينكس في يوليو 2011 بإصدار الإصدار 3.0.0. [30] ونظرًا لأن 2.6 كان رقم الإصدار لمدة 8 سنوات، فقد كان من الضروري إضافة شخصية جديدة uname26 التي تبلغ عن 3.x كـ 2.6.40+x إلى النواة حتى تعمل البرامج القديمة. [48]

تم إصدار الإصدار 3.0 في 22 يوليو 2011. [49] في 30 مايو 2011، أعلن تورفالدز أن التغيير الكبير كان "لا شيء. لا شيء على الإطلاق." وسأل، "... دعونا نتأكد من أننا نجعل الإصدار التالي ليس مجرد رقم جديد تمامًا، بل نواة جيدة أيضًا." [50] بعد الأسابيع الستة إلى السبعة المتوقعة لعملية التطوير، سيتم إصداره بالقرب من الذكرى السنوية العشرين لنظام Linux.

في 11 ديسمبر 2012، قرر تورفالدز تقليل تعقيد النواة عن طريق إزالة الدعم لمعالجات i386 - على وجه التحديد من خلال عدم الاضطرار إلى محاكاة [51] تعليمات CMPXCHG الذرية المقدمة مع i486 للسماح بمزامنات مؤقتة موثوقة - مما يجعل سلسلة نواة 3.7 هي الأخيرة التي لا تزال تدعم المعالج الأصلي. [52] [53] وحدت نفس السلسلة الدعم لمعالج ARM . [54]

لم يتضمن تغيير الترقيم من 2.6.39 إلى 3.0، ومن 3.19 إلى 4.0، أي تمييز تقني ذي مغزى؛ تمت زيادة رقم الإصدار الرئيسي ببساطة لتجنب الأعداد الثانوية الكبيرة. [49] [55] تم إصدار نوى 3.xy المستقرة حتى 3.19 في فبراير 2015. الإصدار 3.11، الذي تم إصداره في 2 سبتمبر 2013، [56] أضاف العديد من الميزات الجديدة مثل علامة O_TMPFILEopen(2) الجديدة لتقليل نقاط ضعف الملفات المؤقتة، وإدارة الطاقة الديناميكية التجريبية لـ AMD Radeon ، واستطلاع الشبكة منخفض الكمون، و zswap (ذاكرة التخزين المؤقت المضغوطة للمبادلة). [57]

في أبريل 2015، أصدر تورفالدز إصدار النواة 4.0. [30] وبحلول فبراير 2015، تلقى لينكس مساهمات من ما يقرب من 12000 مبرمج من أكثر من 1200 شركة، بما في ذلك بعض أكبر بائعي البرامج والأجهزة في العالم. [58 ] يحتوي الإصدار 4.1 من لينكس، الذي صدر في يونيو 2015، على أكثر من 19.5 مليون سطر من التعليمات البرمجية ساهم بها ما يقرب من 14000 مبرمج. [59]

أعلن لينوس تورفالدس أن إصدار النواة 4.22 سيُرقَّم بدلاً من ذلك برقم 5.0 في مارس 2019، مشيرًا إلى أن ""5.0"" لا يعني شيئًا أكثر من أن أرقام 4.x بدأت تصبح كبيرة بما يكفي لدرجة أنني نفدت يدي وأصابع قدمي." [60] وقد تضمن العديد من الإضافات الرئيسية مثل دعم AMD Radeon FreeSync وشاشة NVIDIA Xavier، وإصلاحات لـ F2FS و EXT4 و XFS ، واستعادة دعم ملفات المبادلة على نظام ملفات Btrfs ومواصلة العمل على رسومات Intel Icelake Gen11 وعلى أنظمة SoC NXP i.MX8 . [61] [62] كان هذا الإصدار أكبر بشكل ملحوظ من الباقي، وذكر تورفالدس أن "التغييرات الإجمالية لجميع إصدارات 5.0 أكبر بكثير." [60]

قام ما مجموعه 1,991 مطورًا، منهم 334 من المتعاونين لأول مرة، بإضافة أكثر من 553,000 سطرًا من التعليمات البرمجية إلى الإصدار 5.8، محطمين بذلك الرقم القياسي الذي كان يحمله الإصدار 4.9 سابقًا. [63]

شعبية

وفقًا لمسح المطورين السنوي الذي أجرته Stack Overflow في عام 2019، قام أكثر من 53% من جميع المشاركين بتطوير برامج لنظام Linux وحوالي 27% لنظام Android ، [64] على الرغم من أن حوالي 25% فقط يطورون باستخدام أنظمة تشغيل تعتمد على Linux. [65]

تعمل معظم مواقع الويب على أنظمة تشغيل تعتمد على Linux ، [66] [67] وتستخدم جميع أجهزة الكمبيوتر العملاقة الخمسمائة الأكثر قوة في العالم شكلًا من أشكال أنظمة التشغيل القائمة على Linux. [68]

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

نظرًا لأن Android ، وهو Linux، يشكل غالبية أنظمة تشغيل الأجهزة المحمولة، [69] [70] [71] وبسبب استخدامه المتزايد في الأجهزة المضمنة ، فإن Android مسؤول بشكل كبير عن زيادة استخدام Linux بشكل عام. [22]

قيمة

تكاليف إعادة تطوير نواة لينكس

تم تقدير تكلفة إعادة تطوير الإصدار 2.6.0 من نواة لينكس في بيئة تطوير تقليدية خاصة بمبلغ 612 مليون دولار أمريكي (467 مليون يورو، 394 مليون جنيه إسترليني) بأسعار عام 2004 باستخدام نموذج تقدير شهر الشخص COCOMO . [72] في عام 2006، وضعت دراسة ممولة من الاتحاد الأوروبي تكلفة إعادة تطوير إصدار النواة 2.6.8 أعلى، عند 882 مليون يورو (1.14 مليار دولار، 744 مليون جنيه إسترليني). [73]

تمت إعادة النظر في هذا الموضوع في أكتوبر 2008 بواسطة أماندا ماكفيرسون وبريان بروفيت ورون هيل إيفانز. باستخدام منهجية ديفيد أ. ويلر، قدروا تكلفة إعادة تطوير نواة 2.6.25 الآن 1.3 مليار دولار (جزء من إجمالي 10.8 مليار دولار لإعادة تطوير فيدورا 9). [74] مرة أخرى، يقدر جارسيا جارسيا وألونسو دي ماجدالينو من جامعة أوفييدو (أسبانيا) أن القيمة المضافة سنويًا إلى النواة كانت حوالي 100 مليون يورو بين عامي 2005 و2007 و225 مليون يورو في عام 2008، كما ستكلف أكثر من مليار يورو (حوالي 1.4 مليار دولار اعتبارًا من فبراير 2010) للتطوير في الاتحاد الأوروبي. [75]

اعتبارًا من 7 مارس 2011 ، باستخدام LOC (أسطر التعليمات البرمجية) الحالية آنذاك لنواة لينكس 2.6.x وأرقام الأجور مع حسابات ديفيد أ. ويلر، ستكلف إعادة تطوير نواة لينكس مع استمرار نموها ما يقرب من 3 مليارات دولار (حوالي 2.2 مليار يورو). تُظهر الحسابات المحدثة اعتبارًا من 26 سبتمبر 2018، باستخدام 20088609 LOC (أسطر التعليمات البرمجية) الحالية آنذاك لنواة لينكس 4.14.14 ومتوسط ​​الراتب الوطني الحالي للمبرمج في الولايات المتحدة البالغ 75506 دولارًا، أن إعادة كتابة التعليمات البرمجية الحالية ستكلف ما يقرب من 14725449000 دولار (11191341000 جنيه إسترليني). [76]

توزيع

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

المطورون

مجتمع

[77]
لا أحد
مجهول
الاستشاريون
سوزي
جوجل
ما يقرب من 500
شركة أخرى


الانتماء المؤسسي للمساهمات في نواة لينكس، 4.8–4.13 [78]

يتألف مجتمع مطوري نواة لينكس من حوالي 5000-6000 عضو. وفقًا لـ "حالة تطوير نواة لينكس 2017"، وهي دراسة أصدرتها مؤسسة لينكس، وتغطي الالتزامات للإصدارات 4.8 إلى 4.13، كان حوالي 1500 مطور يساهمون من حوالي 200-250 شركة في المتوسط. ساهم أفضل 30 مطورًا بأكثر من 16٪ بقليل من الكود. بالنسبة للشركات، فإن المساهمين الرئيسيين هم Intel (13.1٪) وRed Hat (7.2٪) و Linaro (5.6٪) و IBM (4.1٪)، ويحتل المركزين الثاني والخامس فئتي "لا شيء" (8.2٪) و "غير معروف" (4.1٪). [78]

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

صراع

الصراعات البارزة بين مطوري نواة لينكس:

  • في يوليو 2007، أعلن كون كوليفاس أنه سيتوقف عن تطوير نواة لينكس. [79] [80]
  • في يوليو 2009، استقال آلان كوكس من دوره كمسؤول عن صيانة طبقة TTY بعد خلاف مع تورفالدس. [81]
  • في ديسمبر 2010، كان هناك نقاش بين جيمس بوتوملي، مسؤول صيانة SCSI في Linux وفلاديسلاف بولخوفيتين، مسؤول صيانة SCST، حول مجموعة أهداف SCSI التي يجب تضمينها في نواة Linux. [82] وقد أثار هذا استياء بعض مستخدمي Linux. [83]
  • في يونيو 2012، أوضح تورفالدز بشكل واضح أنه لا يوافق على قيام NVIDIA بإصدار برامج التشغيل الخاصة بها مغلقة. [84]
  • في أبريل 2014، منع تورفالدس كاي سيفرز من إرسال التصحيحات إلى نواة لينكس بسبب فشلها في التعامل مع الأخطاء التي تسببت في تفاعل systemd بشكل سلبي مع النواة. [85]
  • في أكتوبر 2014، اتهم لينارت بوترينج تورفالدز بالتسامح مع أسلوب المناقشة الخشن على قوائم البريد المتعلقة بنواة لينكس وبأنه نموذج سيئ يحتذى به. [86]
  • في مارس 2015، رفع كريستوف هيلويج دعوى قضائية ضد شركة VMware لانتهاك حقوق الطبع والنشر الخاصة بنواة Linux. [87] أوضح لينوس تورفالدس أنه لا يتفق مع هذه المبادرات والمبادرات المماثلة من خلال وصف المحامين بالمرض المتقيح. [88]
  • في أبريل 2021، تبين أن فريقًا من جامعة مينيسوتا يرسل تصحيحات "سيئة النية" إلى النواة كجزء من بحثه. أدى هذا إلى التراجع الفوري عن جميع التصحيحات التي أرسلها أحد أعضاء الجامعة. بالإضافة إلى ذلك، أصدر أحد كبار المسؤولين تحذيرًا مفاده أن أي تصحيح مستقبلي من الجامعة سيتم رفضه فورًا. [89] [90]

كان مطورو نواة لينكس البارزون على دراية بأهمية تجنب الصراعات بين المطورين. [91] لفترة طويلة لم يكن هناك مدونة سلوك لمطوري النواة بسبب معارضة تورفالدس. [92] ومع ذلك، تم تقديم مدونة تضارب نواة لينكس في 8 مارس 2015. [93] تم استبدالها في 16 سبتمبر 2018 بمدونة سلوك جديدة تستند إلى ميثاق المساهمين . تزامن هذا مع اعتذار علني من تورفالدس وانقطاع قصير عن تطوير النواة. [94] [95] في 30 نوفمبر 2018، امتثالاً لمدونة السلوك ، أرسل جاركو ساككينين من إنتل تصحيحات تحل محل حالات "fuck" التي تظهر في تعليقات التعليمات البرمجية المصدرية بإصدارات مناسبة تركز على كلمة "hug". [96]

يمكن للمطورين الذين يشعرون أنهم عوملوا بشكل غير عادل الإبلاغ عن ذلك إلى مجلس الاستشارة الفنية لمؤسسة Linux . [97] في يوليو 2013، طلب صيان برنامج تشغيل USB 3.0 Sage Sharp من Torvalds معالجة التعليقات المسيئة في مجتمع تطوير النواة. في عام 2014، تراجعت Sharp عن تطوير نواة Linux، قائلةً إن "التركيز على التميز الفني، جنبًا إلى جنب مع صيانين مثقلين بالأعباء، وأشخاص لديهم معايير ثقافية واجتماعية مختلفة، يعني أن صيانين نواة Linux غالبًا ما يكونون صريحين أو وقحين أو وحشيين لإنجاز عملهم". [98] في مؤتمر linux.conf.au (LCA) في عام 2018، أعرب المطورون عن وجهة نظر مفادها أن ثقافة المجتمع أصبحت أفضل بكثير في السنوات القليلة الماضية. علق دانييل فيتر، صيان برنامج تشغيل نواة الرسومات Intel drm/i915، أن "اللغة والمناقشة العنيفة إلى حد ما" في مجتمع النواة قد انخفضت أو اختفت. [99]

طلب لوران بينشارت من المطورين تقديم ملاحظات حول تجاربهم مع مجتمع النواة في مؤتمر Embedded Linux Europe لعام 2017. تمت مناقشة القضايا التي تم طرحها بعد بضعة أيام في مؤتمر Maintenanceers Summit. أعرب شواه خان ، المشرف على إطار عمل الاختبار الذاتي للنواة، عن مخاوفه بشأن الافتقار إلى الاتساق في كيفية استجابة المشرفين للتصحيحات التي قدمها المطورون. زعم تورفالدز أنه لن يكون هناك اتساق في التعامل مع التصحيحات لأن أنظمة فرعية مختلفة للنواة تبنت بمرور الوقت عمليات تطوير مختلفة. لذلك، تم الاتفاق على أن يقوم كل مشرف على نظام فرعي للنواة بتوثيق قواعد قبول التصحيح. [100]

تطوير

لينكس هو التطور، وليس التصميم الذكي !

—  لينوس تورفالدس، 2005 [101] [102] [103]

قاعدة التعليمات البرمجية

يتم إدارة كود مصدر النواة، المعروف أيضًا باسم شجرة المصدر، في نظام التحكم في الإصدارات Git - الذي أنشأه أيضًا تورفالدس. [104]

اعتبارًا من عام 2021 ، كان الإصدار 5.11 من نواة Linux يحتوي على حوالي 30.34 مليون سطر من التعليمات البرمجية. حوالي 14% من التعليمات البرمجية هي جزء من "النواة" (أدلة arch وkernel وmm)، بينما 60% هي برامج تشغيل.

المساهمات

يتم تقديم المساهمات كتصحيحات، في شكل رسائل نصية على قائمة بريدية خاصة بنواة لينكس (LKML) (وكثيرًا أيضًا على قوائم بريدية أخرى مخصصة لأنظمة فرعية معينة). يجب أن تتوافق التصحيحات مع مجموعة من القواعد ولغة رسمية تصف، من بين أمور أخرى، أسطر التعليمات البرمجية التي يجب حذفها وما هي الأسطر الأخرى التي يجب إضافتها إلى الملفات المحددة. يمكن معالجة هذه التصحيحات تلقائيًا حتى يتمكن مسؤولو النظام من تطبيقها لإجراء بعض التغييرات على التعليمات البرمجية أو الترقية تدريجيًا إلى الإصدار التالي. [105] يتم توزيع لينكس أيضًا بتنسيقات GNU zip (gzip) و bzip2 .

يقوم المطور الذي يريد تغيير نواة لينكس بكتابة واختبار تغيير في الكود. واعتمادًا على مدى أهمية التغيير وعدد الأنظمة الفرعية التي يعدلها، سيتم إرسال التغيير إما كتصحيح واحد أو في تصحيحات متعددة من الكود المصدر . وفي حالة وجود نظام فرعي واحد يتم صيانته بواسطة مشرف واحد، يتم إرسال هذه التصحيحات كرسائل بريد إلكتروني إلى مشرف النظام الفرعي مع قائمة البريد المناسبة في Cc. سيقوم المشرف وقراء قائمة البريد بمراجعة التصحيحات وتقديم الملاحظات. بمجرد انتهاء عملية المراجعة، يقبل مشرف النظام الفرعي التصحيحات في شجرة نواة Git ذات الصلة . إذا كانت التغييرات التي طرأت على نواة لينكس عبارة عن إصلاحات للأخطاء تعتبر مهمة بدرجة كافية، فسيتم إرسال طلب سحب للتصحيحات إلى Torvalds في غضون أيام قليلة. وإلا، فسيتم إرسال طلب سحب إلى Torvalds أثناء نافذة الدمج التالية. تستمر نافذة الدمج عادةً لمدة أسبوعين وتبدأ فورًا بعد إصدار إصدار النواة السابق. [106] تُدرج شجرة مصدر نواة Git جميع المطورين الذين ساهموا في نواة Linux في دليل الاعتمادات ويتم سرد جميع صياني النظام الفرعي في Maintainers . [107]

كما هو الحال مع العديد من مشاريع البرمجيات مفتوحة المصدر الكبيرة، يتعين على المطورين الالتزام بميثاق المساهمين ، وهو مدونة سلوك تهدف إلى معالجة مضايقة المساهمين من الأقليات. [108] [109] بالإضافة إلى ذلك، لمنع الإساءة، فإن استخدام المصطلحات الشاملة داخل الكود المصدر إلزامي. [110]

لغة البرمجة

تمت كتابة Linux بلغة برمجة C خاصة مدعومة بواسطة GCC ، وهو مُجمِّع يوسع معيار C بعدة طرق، على سبيل المثال باستخدام أقسام مضمنة من الكود المكتوب بلغة التجميع (باستخدام صيغة GCC "AT&T-style") للهندسة المعمارية المستهدفة.

في سبتمبر 2021، زاد متطلب إصدار GCC لتجميع وبناء نواة Linux من GCC 4.9 إلى 5.1، مما يسمح بإمكانية نقل النواة من استخدام كود C استنادًا إلى معيار C89 إلى استخدام كود مكتوب بمعيار C11 ، [111] مع حدوث الانتقال إلى المعيار في مارس 2022، مع إصدار Linux 5.18. [112]

تمت إضافة الدعم الأولي للغة برمجة Rust في Linux 6.1 [5] الذي تم إصداره في ديسمبر 2022، [113] مع إصدارات نواة لاحقة، مثل Linux 6.2 وLinux 6.3، مما أدى إلى تحسين الدعم بشكل أكبر. [114] [115]

أسلوب الترميز

منذ عام 2002، يجب أن يلتزم الكود بالقواعد الـ 21 التي تشكل نمط ترميز نواة لينكس. [116] [117]

الإصدارات

كما هو الحال بالنسبة لمعظم البرامج، يتم إصدار النواة كسلسلة من الأرقام المنفصلة بنقاط.

بالنسبة للإصدارات المبكرة، كان الإصدار يتكون من ثلاثة أو أربعة أرقام مفصولة بنقاط تسمى الإصدار الرئيسي والإصدار الثانوي والمراجعة . [12] : 9  في ذلك الوقت، كانت الإصدارات الثانوية ذات الأرقام الفردية مخصصة للتطوير والاختبار، بينما كانت الإصدارات الثانوية ذات الأرقام الزوجية مخصصة للإنتاج. يشير الرقم الرابع الاختياري إلى مستوى التصحيح. [19] تمت الإشارة إلى إصدارات التطوير باستخدام لاحقة مرشح الإصدار ( -rc ).

تختلف اتفاقيات الإصدار الحالية. فقد تم إسقاط الرقم الفردي/الزوجي الذي يشير إلى التطوير/الإنتاج، ويتم الإشارة إلى الإصدار الرئيسي من خلال الرقمين الأولين معًا. وبينما يكون الإطار الزمني مفتوحًا لتطوير الإصدار الرئيسي التالي، يتم استخدام اللاحقة -rcN لتحديد الإصدار المرشح رقم n للإصدار التالي. [118] على سبيل المثال، سبق إصدار الإصدار 4.16 سبعة إصدارات 4.16-rcN (من -rc1 إلى -rc7). بمجرد إصدار إصدار مستقر، يتم تمرير صيانته إلى فريق الإصدار المستقر . يتم تحديد التحديثات الخاصة بالإصدار المستقر من خلال مخطط مكون من ثلاثة أرقام (على سبيل المثال، 4.16.1، 4.16.2، ...). [118]

سلسلة الأدوات

عادةً ما يتم بناء النواة باستخدام سلسلة أدوات GNU . يُعد مُجمِّع GNU C، GNU cc، جزءًا من مجموعة مُجمِّعات GNU (GCC)، المُجمِّع الافتراضي لنظام Linux الرئيسي. تتم معالجة التسلسل بواسطة GNU make . يُخرج GNU Assembler (يُطلق عليه غالبًا GAS أو GNU as) ملفات الكائنات من كود التجميع المُولَّد بواسطة GCC . أخيرًا، يُنتج GNU Linker (GNU ld) ملف نواة قابل للتنفيذ مرتبط بشكل ثابت يُسمى vmlinux . يُعد كل من as و ld جزءًا من GNU Binary Utilities (binutils).

كان GNU cc لفترة طويلة المترجم الوحيد القادر على بناء Linux بشكل صحيح. في عام 2004، ادعت شركة Intel أنها عدلت النواة بحيث أصبح مترجم C الخاص بها قادرًا أيضًا على تجميعها. [119] كان هناك نجاح آخر تم الإبلاغ عنه في عام 2009، مع إصدار 2.6.22 المعدل. [120] [121] تم إسقاط دعم مترجم Intel في عام 2023. [122]

منذ عام 2010، كانت الجهود جارية لبناء لينكس باستخدام Clang ، وهو مُجمِّع بديل للغة C؛ [123] اعتبارًا من 12 أبريل 2014، يمكن تقريبًا تجميع النواة الرسمية بواسطة Clang. [124] [125] يُسمى المشروع المخصص لهذا الجهد LLVMLinux بعد البنية الأساسية لمُجمِّع LLVM التي بُني عليها Clang. [126] لا يهدف LLVMLinux إلى تقسيم لينكس أو LLVM، وبالتالي فهو مشروع ميتا يتكون من تصحيحات يتم تقديمها في النهاية إلى المشاريع الأولية. من خلال تمكين تجميع لينكس بواسطة Clang، قد يستفيد المطورون من أوقات تجميع أقصر. [127]

في عام 2017، أكمل المطورون تصحيحات الدعم لبناء نواة لينكس باستخدام Clang في الإصدار 4.15، بعد نقل دعم X86-64 و AArch64 إلى فروع 4.4 و4.9 و4.14 من شجرة النواة المستقرة. تم شحن Pixel 2 من Google مع أول نواة لينكس مبنية على Clang ، [128] على الرغم من وجود تصحيحات لـ Pixel (الجيل الأول) . [129] شهد عام 2018 انتقال ChromeOS إلى بناء نوى باستخدام Clang افتراضيًا، [130] بينما جعل Android (نظام التشغيل) Clang [131] ورابط LLVM LLD [132] مطلوبًا لبناء النواة في عام 2019. نقلت Google نواة الإنتاج المستخدمة في جميع مراكز البيانات الخاصة بها ليتم بناؤها باستخدام Clang في عام 2020. [133] اليوم، تنسق مجموعة ClangBuiltLinux الإصلاحات لكل من Linux و LLVM لضمان التوافق، وكلاهما يتألف من أعضاء من LLVMLinux ولديهم تصحيحات من LLVMLinux .

تصحيح الأخطاء

مخرجات الذعر في نواة لينكس

كما هو الحال مع أي برنامج، قد يكون من الصعب استكشاف المشكلات المتعلقة بنواة Linux وإصلاحها . تتعلق التحديات الشائعة بالوصول إلى مساحة المستخدم مقابل مساحة النواة، وإساءة استخدام أساسيات المزامنة، وإدارة الأجهزة غير الصحيحة. [12] : 364 

الخطأ غير المميت هو خطأ غير مميت في النواة. بعد حدوث مثل هذا الخطأ، تستمر العمليات بموثوقية مشكوك فيها. [134]

الذعر (الذي يتم إنشاؤه بواسطة panic() ) هو خطأ قاتل. بعد مثل هذا الخطأ، تقوم النواة بطباعة رسالة وإيقاف الكمبيوتر. [12] : 371 

يوفر النواة إمكانية تصحيح الأخطاء عن طريق الطباعة عبر printk () الذي يخزن الرسائل في مخزن مؤقت دائري (يستبدل الإدخالات الأقدم بالإدخالات الأحدث). يوفر استدعاء النظام syslog(2) قراءة ومسح مخزن الرسائل وتعيين الحد الأقصى لمستوى السجل للرسائل التي سيتم إرسالها إلى وحدة التحكم. [135] يتم أيضًا تصدير رسائل النواة إلى عالم المستخدم من خلال واجهة /dev/kmsg . [136]

تسمح آلية ftrace بتصحيح الأخطاء عن طريق التتبع. يتم استخدامها لمراقبة وتصحيح أخطاء Linux في وقت التشغيل ويمكنها تحليل أوقات استجابة مساحة المستخدم بسبب سوء سلوك النواة. [137] [138] [139] [140] علاوة على ذلك، تسمح ftrace للمستخدمين بتتبع Linux في وقت التمهيد. [141]

يمكن لـ kprobes و kretprobes اختراق تنفيذ kernel (مثل أدوات تصحيح الأخطاء في مساحة المستخدم) وجمع المعلومات دون انقطاع. [142] يمكن إدراج kprobes في الكود عند (تقريبًا) أي عنوان، بينما تعمل kretprobes عند إرجاع الوظيفة. تتمتع uprobes بأغراض مماثلة ولكن لديها أيضًا بعض الاختلافات في الاستخدام والتنفيذ. [143]

يمكن تصحيح أخطاء Linux باستخدام KGDB بنفس الطريقة التي يتم بها تصحيح أخطاء برامج مساحة المستخدم. يتطلب KGDB جهازًا إضافيًا يقوم بتشغيل GDB ومتصلًا بالهدف المراد تصحيح أخطائه باستخدام كبل تسلسلي أو Ethernet . [144]

عملية التغيير

يدمج مشروع نواة لينكس الكود الجديد بشكل مستمر. الإجراء التشغيلي القياسي هو أن البرامج التي تم إدخالها إلى المشروع يجب أن تعمل ويتم تجميعها دون أخطاء.

يتم تعيين مشرف لكل نظام فرعي للنواة، ويكون مسؤولاً عن مراجعة التصحيحات مقابل معايير كود النواة والحفاظ على قائمة انتظار التصحيحات التي يمكن إرسالها إلى Torvalds ضمن نافذة دمج عادة ما تكون عدة أسابيع.

يتم دمج التصحيحات بواسطة Torvalds في الكود المصدر لإصدار نواة Linux المستقر السابق، مما يؤدي إلى إنشاء مرشح الإصدار (-rc) للإصدار المستقر التالي. بمجرد إغلاق نافذة الدمج، يتم قبول الإصلاحات الخاصة بالكود الجديد في إصدار التطوير فقط. يخضع إصدار التطوير -rc للنواة لاختبار الانحدار وبمجرد اعتباره مستقرًا بواسطة Torvalds ومسؤولي صيانة النظام الفرعي، يتم إصدار إصدار جديد وتبدأ عملية التطوير من جديد. [145]

لينكس الرئيسي

يشار إلى شجرة Git التي تحتوي على كود مصدر نواة Linux باسم Linux الرئيسي . ينشأ كل إصدار مستقر للنواة من الشجرة الرئيسية، [146] ويتم نشره كثيرًا على kernel.org . يحتوي Linux الرئيسي على دعم قوي لمجموعة فرعية صغيرة فقط من العديد من الأجهزة التي تعمل بنظام Linux. يتم توفير الدعم غير الرئيسي من خلال مشاريع مستقلة، مثل Yocto أو Linaro ، ولكن في كثير من الحالات تكون نواة بائع الجهاز مطلوبة. [147] من المحتمل أن يتطلب استخدام نواة البائع حزمة دعم اللوحة .

لقد ثبت أن الحفاظ على شجرة النواة خارج الخط الرئيسي لنظام Linux أمر صعب. [148]

يشير مصطلح Mainlining إلى الجهد المبذول لإضافة دعم لجهاز إلى نواة الخط الرئيسي، [149] في حين لم يكن هناك في السابق سوى دعم في فرع أو عدم وجود دعم على الإطلاق. يتضمن هذا عادةً إضافة برامج تشغيل أو ملفات شجرة جهاز . عند الانتهاء من ذلك، يتم اعتبار الميزة أو إصلاح الأمان خطًا رئيسيًا . [150]

نواة شبيهة بنواة لينكس

قام جريج كرواه هارتمان ، صاحب الفرع المستقر ، بتطبيق مصطلح شبيه بنظام لينكس على شوكات النواة اللاحقة من قبل البائعين الذين يضيفون ملايين الأسطر من التعليمات البرمجية إلى النواة الرئيسية. [151] في عام 2019، صرحت جوجل أنها تريد استخدام نواة لينكس الرئيسية في أندرويد حتى يتم تقليل عدد شوكات النواة. [152] تم تطبيق مصطلح شبيه بنظام لينكس أيضًا على مجموعة فرعية من نواة لينكس القابلة للتضمين ، والتي لا تتضمن نواة لينكس الرئيسية بالكامل ولكن مجموعة فرعية صغيرة معدلة من التعليمات البرمجية. [153]

شوكة لينكس

تشغيل iPod على نظام التشغيل iPodLinux

توجد مجتمعات معينة تعمل على تطوير نوى تعتمد على Linux الرسمي. وقد تم دمج بعض أجزاء التعليمات البرمجية المثيرة للاهتمام من هذه الفروع التي تتضمن Linux-libre و Compute Node Linux و INK و L4Linux و RTLinux و User-Mode Linux (UML) في الخط الرئيسي. [154] استخدمت بعض أنظمة التشغيل المطورة للهواتف المحمولة في البداية إصدارات معدلة بشكل كبير من Linux، بما في ذلك Google Android و Firefox OS وHP webOS وNokia Maemo وJolla Sailfish OS . في عام 2010، انتقد مجتمع Linux شركة Google لبدء شجرة نواة خاصة بها بشكل فعال: [155] [156]

هذا يعني أن أي برامج تشغيل مكتوبة لمنصات الأجهزة التي تعمل بنظام أندرويد لا يمكن دمجها في شجرة النواة الرئيسية لأنها تعتمد على الكود الذي يعيش فقط في شجرة نواة جوجل، مما يتسبب في فشلها في البناء في شجرة kernel.org. وبسبب هذا، منعت جوجل الآن جزءًا كبيرًا من برامج تشغيل الأجهزة وكود المنصة من الاندماج في شجرة النواة الرئيسية. مما أدى فعليًا إلى إنشاء فرع نواة يعتمد عليه عدد من البائعين المختلفين الآن. [157]

يستخدم Android اليوم نظام Linux مخصصًا [158] حيث يتم تنفيذ تغييرات كبيرة في برامج تشغيل الأجهزة، ولكن يلزم إجراء بعض التغييرات على كود نواة النظام الأساسية. كما يقدم مطورو Android تصحيحات إلى Linux الرسمي الذي يمكنه أخيرًا تشغيل نظام التشغيل Android. على سبيل المثال، يمكن لجهاز Nexus 7 تشغيل Linux الرئيسي وتشغيله. [158]

في عرض تقديمي قدم عام 2001 في متحف تاريخ الكمبيوتر ، قال تورفالد هذا ردًا على سؤال حول توزيعات لينكس التي تستخدم نفس مصادر النواة أم لا:

إنهم ليسوا كذلك... حسنًا، هم كذلك، وهم كذلك. لا يوجد نواة واحدة. كل توزيعة لديها تغييراتها الخاصة. هذا مستمر منذ اليوم الأول تقريبًا. لا أعلم إن كنت تتذكر أن Yggdrasil كانت معروفة بإجراء تغييرات جذرية على النواة وحتى اليوم، لدى جميع البائعين الرئيسيين تعديلاتهم الخاصة لأنهم مهتمون بجزء من السوق وبصراحة هذا هو ما يجب أن يكون عليه الأمر. لأن إذا توقع الجميع أن يكون شخص واحد، أنا، قادرًا على تتبع كل شيء، فهذا ليس الهدف من GPL. هذا ليس الهدف من وجود نظام مفتوح. لذا فإن حقيقة أن التوزيعة تقرر أن شيئًا ما مهم جدًا بالنسبة لها لدرجة أنها ستضيف تصحيحات له حتى عندما لا يكون في النواة القياسية، فهذه علامة جيدة حقًا بالنسبة لي. لذلك على سبيل المثال، هكذا تمت إضافة شيء مثل ReiserFS. والسبب وراء كون ReiserFS هو أول نظام ملفات تسجيل تم دمجه في النواة القياسية لم يكن لأنني أحب هانز رايزر. كان ذلك لأن SUSE بدأت بالفعل في الشحن باستخدام ReiserFS كنواة قياسية لها، وهو ما أخبرني "حسنًا". هذا في الواقع قيد الاستخدام في الإنتاج. يفعل الناس العاديون هذا. لابد أنهم يعرفون شيئًا لا أعرفه. لذا فإن ما تفعله العديد من شركات التوزيع بالمعنى الحقيقي للكلمة هو أنها جزء من "دعونا ننشئ فرعنا الخاص" و"دعونا نجري تغييراتنا على هذا". وبسبب GPL، يمكنني أخذ أفضل أجزاء منها. [159]

دعم طويل الأمد

رسائل التمهيد لنواة Linux 2.6.25.17

يتم صيانة الإصدار الأحدث والإصدارات الأقدم بشكل منفصل. تم الإشراف على معظم إصدارات النواة الأحدث بواسطة Torvalds. [160]

يحافظ مجتمع مطوري نواة Linux على نواة مستقرة من خلال تطبيق الإصلاحات على أخطاء البرامج التي تم اكتشافها أثناء تطوير النواة المستقرة التالية. لذلك، يسرد موقع www.kernel.org دائمًا نواتين مستقرتين. يتم إصدار نواة Linux المستقرة التالية بعد حوالي 8 إلى 12 أسبوعًا.

تم تخصيص بعض الإصدارات للدعم طويل الأمد مع إصدارات لإصلاح الأخطاء لمدة عامين أو أكثر. [161]

الهندسة المعمارية والميزات

خريطة نواة لينكس
مخطط سانكي لخطوط الكود المصدرية لنواة لينكس

على الرغم من التناقض الظاهري، فإن نواة لينكس متجانسة ومقسمة إلى وحدات. يتم تصنيف النواة على أنها نواة متجانسة من حيث البنية حيث يعمل نظام التشغيل بالكامل في مساحة النواة. التصميم معياري حيث يمكن تجميعه من وحدات يتم تحميلها وتفريغها في بعض الحالات وقت التشغيل. [12] : 338  [162] وهي تدعم الميزات المتوفرة مرة واحدة فقط في نوى المصدر المغلق لأنظمة التشغيل غير الحرة.

يستخدم باقي المقال قواعد نظام التشغيل UNIX وأنظمة التشغيل الشبيهة بنظام Unix في صفحات الدليل . يحدد الرقم الذي يلي اسم الأمر أو الواجهة أو أي ميزة أخرى القسم (أي نوع مكون نظام التشغيل أو الميزة) الذي ينتمي إليه. على سبيل المثال، يشير execve(2) إلى استدعاء النظام، ويشير exec(3) إلى غلاف مكتبة مساحة المستخدم.

وفيما يلي نظرة عامة على التصميم المعماري والميزات الجديرة بالذكر.

تعمل معظم برامج تشغيل الأجهزة وملحقات النواة في مساحة النواة ( الحلقة 0 في العديد من بنيات وحدة المعالجة المركزية )، مع إمكانية الوصول الكامل إلى الأجهزة. تعمل بعض الاستثناءات في مساحة المستخدم ؛ ومن الأمثلة البارزة أنظمة الملفات المستندة إلى FUSE /CUSE وأجزاء من UIO. [186] [187] علاوة على ذلك، لا يعمل نظام X Window و Wayland ، نظام النوافذ وبروتوكولات خادم العرض التي يستخدمها معظم الأشخاص مع Linux، داخل النواة. على نحو مختلف، فإن الواجهة الفعلية مع وحدات معالجة الرسومات لبطاقات الرسومات هي نظام فرعي داخل النواة يسمى Direct Rendering Manager (DRM).

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

يستخدم Linux عادةً حماية الذاكرة والذاكرة الافتراضية ويمكنه أيضًا التعامل مع الوصول غير المنتظم للذاكرة ، [189] ومع ذلك، استوعب المشروع μClinux مما يجعل من الممكن أيضًا تشغيل Linux على وحدات تحكم دقيقة بدون ذاكرة افتراضية. [190]

يتم تمثيل الأجهزة في التسلسل الهرمي للملفات. تتفاعل تطبيقات المستخدم مع برامج تشغيل الأجهزة عبر الإدخالات في الدليلين /dev أو /sys . [191] يتم تعيين معلومات العملية في الدليل /proc . [191]

طبقات مختلفة داخل لينكس، تظهر أيضًا الفصل بين مساحة المستخدم ومساحة النواة
وضع المستخدم تطبيقات المستخدم bash ، LibreOffice ، GIMP ، Blender ، 0 AD ، Mozilla Firefox ، ...
مكونات النظام init daemon :
OpenRC ، runit ، systemd ...
شياطين النظام :
polkitd ، smbd ، sshd ، udevd ...
مدير النوافذ :
X11 ، Wayland ، SurfaceFlinger (Android)
الرسومات :
Mesa ، AMD Catalyst ، ...
المكتبات الأخرى:
GTK ، Qt ، EFL ، SDL ، SFML ، FLTK ، GNUstep ، ...
مكتبة سي القياسية fopen, execv, malloc, memcpy, localtime, pthread_create... (ما يصل إلى 2000 برنامج فرعي ) يهدف
glibc إلى أن يكون سريعًا، ويهدف musl إلى أن يكون خفيف الوزن، ويستهدف uClibc الأنظمة المضمنة، وقد تمت كتابة bionic لنظام Android ، إلخ. وتهدف جميعها إلى أن تكون متوافقة مع POSIX / SUS .
وضع النواة نواة لينكس stat, splice, dup, read, open, ioctl, , write, mmap, close, exit, إلخ (حوالي 380 استدعاء نظام) تهدف واجهة استدعاء النظام
(SCI) الخاصة بنواة Linux إلى أن تكون متوافقة مع POSIX / SUS [192]
نظام جدولة العمليات نظام فرعي IPC نظام فرعي لإدارة الذاكرة نظام الملفات الافتراضية نظام فرعي للشبكات
المكونات الأخرى: ALSA ، DRI ، evdev ، klibc ، LVM ، device mapper ، Linux Network Scheduler ، Netfilter
وحدات أمان Linux : SELinux ، TOMOYO ، AppArmor ، Smack
الأجهزة ( وحدة المعالجة المركزية ، الذاكرة الرئيسية ، أجهزة تخزين البيانات ، إلخ.)

الواجهات

يتم التمييز بين أربع واجهات: اثنتان داخليتان للنواة، واثنتان بين النواة ومساحة المستخدم.

بدأ لينكس كنسخة من يونكس، ويهدف إلى التوافق مع معايير POSIX و Single UNIX . [193] توفر النواة نداءات النظام والواجهات الأخرى الخاصة بلينكس. لكي يتم تضمينها في النواة الرسمية، يجب أن يتوافق الكود مع مجموعة من قواعد الترخيص. [6] [11]

تتمتع واجهة التطبيقات الثنائية (ABI) في لينكس بين النواة ومساحة المستخدم بأربع درجات من الاستقرار (مستقرة، اختبارية، قديمة، تمت إزالتها)؛ [194] ومن المتوقع ألا تتغير نداءات النظام أبدًا من أجل الحفاظ على التوافق مع برامج مساحة المستخدم التي تعتمد عليها. [195]

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

لا يوجد ضمان لاستقرار واجهة برمجة التطبيقات في مستوى المصدر [188] ، وبسبب هذا، يجب تحديث كود برنامج تشغيل الجهاز ، بالإضافة إلى كود أي نظام فرعي آخر للنواة، مع تطور النواة. أي مطور يقوم بتغيير واجهة برمجة التطبيقات ملزم بإصلاح أي كود يتعطل نتيجة لتغييره. [196]

واجهة برمجة التطبيقات من النواة إلى مساحة المستخدم

تتكون مجموعة واجهة برمجة تطبيقات نواة لينكس التي تتعلق بالواجهات المعرضة لتطبيقات المستخدم بشكل أساسي من نداءات النظام الخاصة بـ UNIX وLinux . [197] نداء النظام هو نقطة دخول إلى نواة لينكس. [198] على سبيل المثال، من بين نداءات لينكس الخاصة هناك عائلة نداءات النظام clone(2) . [199] يجب تمكين معظم الامتدادات من خلال تحديد الماكرو في ملف رأس أو عند تجميع كود أرض المستخدم. [200]_GNU_SOURCE

لا يمكن استدعاء مكالمات النظام إلا من خلال تعليمات التجميع التي تمكن الانتقال من مساحة المستخدم غير المميزة إلى مساحة النواة المميزة في الحلقة 0. لهذا السبب، تعمل مكتبة C القياسية (libC) كغلاف لمعظم مكالمات نظام Linux، من خلال الكشف عن وظائف C التي، إذا لزم الأمر، [201] تدخل بشفافية إلى النواة والتي سيتم تنفيذها نيابة عن عملية الاستدعاء. [197] بالنسبة لمكالمات النظام غير المكشوفة بواسطة libC، مثل mutex fast userspace ، [202] توفر المكتبة وظيفة تسمى syscall(2) والتي يمكن استخدامها لاستدعائها صراحةً. [203]

تشكل أنظمة الملفات الزائفة (على سبيل المثال، أنظمة الملفات sysfs و procfs ) والملفات الخاصة (على سبيل المثال، /dev/randomو، /dev/sdaو /dev/tty، والعديد من الملفات الأخرى) طبقة أخرى من الواجهة لهياكل بيانات النواة التي تمثل الأجهزة المادية أو المنطقية (البرمجيات). [204] [205]

واجهة برمجة التطبيقات (ABI) بين النواة ومساحة المستخدم

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

المعيار الرئيسي فيما يتعلق بالتطبيق والتوافق الثنائي لتوزيعات لينكس هو قاعدة لينكس القياسية (LSB). [206] [207] ومع ذلك، فإن قاعدة لينكس القياسية تتجاوز ما يتعلق بنواة لينكس، لأنها تحدد أيضًا مواصفات سطح المكتب ومكتبات X وQt التي لا علاقة لها بها كثيرًا. [208] تم بناء الإصدار 5 من قاعدة لينكس القياسية على عدة معايير ومسودات (POSIX وSUS وX/Open و File System Hierarchy (FHS) وغيرها). [209]

الأجزاء الأكثر ارتباطًا بالنواة من LSB هي واجهة ABI العامة (gABI)، [210] وخاصة واجهة ABI للنظام V [211] [212] وتنسيق الملفات القابلة للتنفيذ والربط (ELF)، [213] [214] وواجهة ABI الخاصة بالمعالج (psABI)، على سبيل المثال مواصفات النواة لـ X86-64. [215] [216]

واجهة ABI القياسية لكيفية استدعاء برامج مستخدم x86_64 لمكالمات النظام هي تحميل رقم استدعاء النظام في سجل rax ، والمعلمات الأخرى في rdi و rsi و rdx و r10 و r8 و r9 ، وأخيرًا وضع تعليمات تجميع استدعاء النظام في الكود. [217] [218] [219]

واجهة برمجة التطبيقات داخل النواة

في XDC2014، أعلن Alex Deucher من AMD عن برنامج التشغيل الموحد لوضع النواة. [220] سيشارك برنامج تشغيل الرسوميات الخاص بنظام Linux، libGL-fglrx-glx ، نفس البنية الأساسية لإدارة الحقوق الرقمية مع Mesa 3D . نظرًا لعدم وجود واجهة برمجة تطبيقات مستقرة داخل النواة ، كان على AMD أن تتكيف باستمرار مع الكائن الثنائي السابق الذي يستخدمه Catalyst.

توجد عدة واجهات برمجة تطبيقات داخلية للنواة بين أنظمة فرعية للنواة. بعضها متاح فقط داخل أنظمة فرعية للنواة، بينما يتم عرض مجموعة محدودة إلى حد ما من الرموز داخل النواة (أي المتغيرات وهياكل البيانات والوظائف) على وحدات قابلة للتحميل ديناميكيًا (مثل برامج تشغيل الأجهزة المحملة عند الطلب) سواء تم تصديرها باستخدام وحدات الماكرو EXPORT_SYMBOL() و EXPORT_SYMBOL_GPL() [221] [222] (الأخير محجوز للوحدات الصادرة بموجب ترخيص متوافق مع GPL). [223]

يوفر Linux واجهات برمجة تطبيقات داخل النواة تعمل على معالجة هياكل البيانات (على سبيل المثال، القوائم المرتبطة ، وأشجار الأساس ، [224] وأشجار الأحمر والأسود ، [225] والطوابير ) أو تنفيذ روتينات شائعة (على سبيل المثال، نسخ البيانات من وإلى مساحة المستخدم، وتخصيص الذاكرة، وطباعة الأسطر في سجل النظام، وما إلى ذلك) والتي ظلت مستقرة على الأقل منذ إصدار Linux 2.6. [226] [227] [228]

تتضمن واجهات برمجة التطبيقات الموجودة داخل النواة مكتبات من الخدمات المشتركة منخفضة المستوى التي تستخدمها برامج تشغيل الأجهزة:

واجهة برمجة التطبيقات (ABI) داخل النواة

اختار مطورو Linux عدم الاحتفاظ بواجهة ABI مستقرة داخل النواة. لا يمكن تحميل الوحدات النمطية المجمعة لإصدار معين من النواة إلى إصدار آخر دون إعادة تجميعها. [188]

معالجة متعددة

يقوم لينكس بإنشاء العمليات عن طريق استدعاءات النظام clone(2) أو clone3(2) الأحدث [238] . تعمل استدعاءات النظام هذه على إنشاء كيانات جديدة تتراوح من عمليات مستقلة جديدة (لكل منها معرف خاص يسمى TGID داخل بنية بيانات task_struct في مساحة النواة، على الرغم من أن نفس المعرف يسمى PID في مساحة المستخدم)، إلى خيوط جديدة داخل عملية الاستدعاء. [239] [240]

إذا تم ربط الملف القابل للتنفيذ بشكل ديناميكي بالمكتبات المشتركة، يتم استخدام رابط ديناميكي للعثور على الكائنات المطلوبة وتحميلها، وإعداد البرنامج للتشغيل ثم تشغيله. [241]

توفر مكتبة مؤشرات الترابط الأصلية POSIX (NPTL) [242] واجهة مؤشر الترابط القياسية POSIX ( pthreads ) لمساحة المستخدم.

توفر النواة آليات futex(7) (مزامنة سريعة بين مساحة المستخدم) لقفل مساحة المستخدم ومزامنتها. [243] يتم تنفيذ غالبية العمليات في مساحة المستخدم ولكن قد يكون من الضروري التواصل مع النواة باستخدام نداء النظام futex(2) . [202]

على عكس خيوط مساحة المستخدم الموضحة أعلاه، تعمل خيوط النواة في مساحة النواة. [244]

الجدولة

إن مجدول العمليات في لينكس معياري، بمعنى أنه يمكّن فئات وسياسات جدولة مختلفة. [245] [246] فئات المجدول هي خوارزميات مجدول قابلة للتوصيل يمكن تسجيلها مع كود المجدول الأساسي. تقوم كل فئة بجدولة أنواع مختلفة من العمليات. يتكرر الكود الأساسي للمجدول على كل فئة حسب الأولوية ويختار المجدول ذو الأولوية الأعلى الذي يحتوي على كيان قابل للجدولة من نوع struct sched_entity جاهز للتشغيل. [12] : 46–47  قد تكون الكيانات عبارة عن خيوط أو مجموعة خيوط أو حتى جميع عمليات مستخدم معين.

يوفر Linux كلًا من حق الأولوية للمستخدم بالإضافة إلى حق الأولوية الكامل للنواة . [12] : 62–63  يقلل حق الأولوية من زمن الوصول ، ويزيد من الاستجابة، [247] ويجعل Linux أكثر ملاءمة لتطبيقات سطح المكتب والتطبيقات في الوقت الفعلي .

بالنسبة للمهام العادية، يستخدم نواة النظام افتراضيًا فئة Completely Fair Scheduler (CFS)، التي تم تقديمها في الإصدار 2.6.23. [171] يتم تعريف المجدول على أنه ماكرو في رأس C كـ SCHED_NORMAL. في نوى POSIX الأخرى، توجد سياسة مماثلة تُعرف باسم SCHED_OTHERتخصيص شرائح زمنية لوحدة المعالجة المركزية (أي أنها تخصص شرائح مطلقة من وقت المعالج اعتمادًا على الأولوية المحددة مسبقًا أو المحسوبة ديناميكيًا لكل عملية). يلغي Linux CFS الشرائح الزمنية المطلقة ويخصص نسبة عادلة من وقت وحدة المعالجة المركزية، كدالة لمعلمات مثل العدد الإجمالي للعمليات القابلة للتشغيل والوقت الذي تم تشغيلها فيه بالفعل؛ تأخذ هذه الوظيفة أيضًا في الاعتبار نوعًا من الوزن يعتمد على أولوياتها النسبية (قيم لطيفة). [12] : 46–50 

مع استباق المستخدم، يمكن لمجدول النواة استبدال العملية الحالية بتنفيذ تبديل السياق إلى عملية مختلفة تكتسب بالتالي موارد الحوسبة للتشغيل (وحدة المعالجة المركزية والذاكرة والمزيد). إنه يقوم بذلك وفقًا لخوارزمية CFS (على وجه الخصوص، يستخدم متغيرًا يسمى vruntime لفرز الكيانات ثم يختار الكيان الذي يحتوي على vruntime الأصغر، - أي الكيان القابل للجدولة الذي كان له أقل حصة من وقت وحدة المعالجة المركزية)، إلى سياسة الجدول النشط وإلى الأولويات النسبية. [248] مع استباق النواة، يمكن للنواة أن تستبق نفسها عندما يعود معالج المقاطعة، عندما تحظر مهام النواة، وكلما استدعى نظام فرعي صراحةً وظيفة schedule().

تحتوي النواة أيضًا على فئتين للجدولة في الوقت الفعلي متوافقة مع POSIX [249]SCHED_FIFO تسمى ( الأول في الوقت الفعلي الداخل أولاً الخارج ) و SCHED_RR( الدوران في الوقت الفعلي )، وكلاهما له الأولوية على الفئة الافتراضية. [245] تمت إضافة سياسة جدولة إضافية تُعرف باسم SCHED DEADLINE، والتي تنفذ خوارزمية الموعد النهائي الأقدم أولاً (EDF)، في إصدار النواة 3.14، الذي تم إصداره في 30 مارس 2014. [250] [251] SCHED_DEADLINE لها الأولوية على جميع فئات الجدولة الأخرى.

توفر التصحيحات في الوقت الفعلي PREEMPT_RT، المضمنة في Linux الرئيسي منذ الإصدار 2.6، جدولًا حتميًا ، وإزالة تعطيل الاستباق والمقاطعة (حيثما أمكن)، ومزامنات PI (أي، بدائيات القفل التي تتجنب عكس الأولوية)، [252] [253] ودعم مؤقتات الأحداث عالية الدقة (HPET)، والقراءة الاستباقية والنسخ والتحديث (RCU)، وخيوط IRQ (القسرية)، والميزات الثانوية الأخرى. [254] [255] [256]

في عام 2023، اقترح بيتر زيلسترا استبدال CFS بمجدول زمني أولي افتراضي مؤهل (EEVDF)، [257] [258] لمنع الحاجة إلى تصحيحات "الوقت المناسب" لـ CFS. [259] حل جدول زمني EEVDF محل CFS في الإصدار 6.6 من نواة Linux. [260]

المزامنة

يحتوي النواة على أسباب مختلفة للتزامن (على سبيل المثال، المقاطعات، والنصف السفلي، والاستباق لمهام النواة والمستخدمين، والمعالجة المتعددة المتماثلة). [12] : 167 

لحماية المناطق الحرجة (أقسام التعليمات البرمجية التي يجب تنفيذها ذريًا)، ومواقع الذاكرة المشتركة (مثل المتغيرات العالمية وهياكل البيانات الأخرى ذات النطاق العالمي)، ومناطق الذاكرة التي يمكن تعديلها بشكل غير متزامن بواسطة الأجهزة (على سبيل المثال، وجود مؤهل نوع C )، يوفر Linux مجموعة كبيرة من الأدوات. تتكون من أنواع ذرية (لا يمكن معالجتها إلا من خلال مجموعة من المشغلين المحددين)، وأقفال الدوران ، وإشارات المرور ، ومفاتيح المزامنة ، [261] [12] : 176–198  [262] والخوارزميات الخالية من الأقفال (على سبيل المثال، وحدات التحكم عن بعد ). [263] [264] [265] يتم بناء معظم الخوارزميات الخالية من الأقفال فوق حواجز الذاكرة لغرض فرض ترتيب الذاكرة ومنع الآثار الجانبية غير المرغوب فيها بسبب تحسين المترجم . [266] [267] [268] [269]volatile

PREEMPT_RTيوفر الكود المضمن في Linux الرئيسي RT-mutexes ، وهو نوع خاص من Mutex لا يعطل الاستباق ويدعم توريث الأولوية. [270] [271] يتم تحويل جميع الأقفال تقريبًا إلى أقفال نائمة عند استخدام التكوين للعمل في الوقت الفعلي. [272] [256] [271] يتجنب توريث الأولوية عكس الأولوية من خلال منح مهمة ذات أولوية منخفضة تحمل قفلًا متنازعًا عليه أولوية انتظار ذي أولوية أعلى حتى يتم تحرير هذا القفل. [273] [274]

يتضمن Linux أداة التحقق من قفل النواة تسمى Lockdep . [275] [276]

المقاطعات

على الرغم من أن إدارة المقاطعات يمكن اعتبارها وظيفة واحدة، إلا أنها مقسمة إلى قسمين. ويرجع هذا الانقسام إلى قسمين إلى القيود الزمنية المختلفة وإلى احتياجات المزامنة للمهام التي تتألف منها الإدارة. يتكون الجزء الأول من روتين خدمة المقاطعة غير المتزامنة الذي يُعرف في Linux بالنصف العلوي ، بينما يتم تنفيذ الجزء الثاني بواسطة أحد الأنواع الثلاثة لما يسمى بالنصف السفلي ( softirq و tasklets و work queues ). [12] : 133–137 

يمكن تضمين روتينات خدمة المقاطعة في Linux. يمكن أن يحاصر طلب المقاطعة الجديد ISR عالي الأولوية والذي يسبق أي ISR آخر منخفض الأولوية.

ذاكرة

ينفذ لينكس ذاكرة افتراضية بجداول صفحات ذات 5 مستويات . [277] لا يمكن تقسيم النواة إلى صفحات (بمعنى أنها مقيمة دائمًا في الذاكرة الفعلية ولا يمكن تبديلها بالقرص) ولا توجد حماية للذاكرة (لا توجد إشارات SIGSEGV ، على عكس مساحة المستخدم)، وبالتالي تؤدي انتهاكات الذاكرة إلى عدم الاستقرار وتعطل النظام. [12] : 20  يمكن تقسيم ذاكرة المستخدم إلى صفحات بشكل افتراضي، على الرغم من أنه يمكن تعطيل تقسيم الصفحات لمناطق ذاكرة معينة باستخدام عائلة mlock() نداء النظام .

يتم الاحتفاظ بمعلومات إطار الصفحة في هياكل بيانات مناسبة (من نوع struct page ) يتم ملؤها فورًا بعد التمهيد ويتم الاحتفاظ بها حتى إيقاف التشغيل، بغض النظر عما إذا كانت مرتبطة بصفحات افتراضية أم لا. يتم تقسيم مساحة العنوان المادية إلى مناطق مختلفة، وفقًا للقيود المعمارية والاستخدام المقصود. كما يتم دعم أنظمة NUMA ذات بنوك الذاكرة المتعددة. [278]

يمكن تخصيص أجزاء صغيرة من الذاكرة بشكل ديناميكي في مساحة النواة عبر مجموعة من واجهات kmalloc()برمجة التطبيقات وتحريرها باستخدام المتغير المناسب من kfree(). vmalloc()ويتم kvfree()استخدامها للأجزاء الكبيرة المتجاورة افتراضيًا. alloc_pages()يخصص العدد المطلوب من الصفحات الكاملة.

مخطط مجموعة تخزين Linux [279]

كان النواة تستخدم لتضمين المخصصات SLAB وSLUB وSLOB كبدائل قابلة للتكوين. [280] [281] تمت إزالة المخصص SLOB في Linux 6.4 [282] وتم إزالة المخصص SLAB في Linux 6.8. [283] المخصص الوحيد المتبقي هو SLUB، والذي يهدف إلى البساطة والكفاءة، [281] وهو PREEMPT_RTمتوافق [284] وتم تقديمه في Linux 2.6.

المعماريات المدعومة

TiVo DVR ، جهاز استهلاكي يعمل بنظام Linux

على الرغم من أنه لم يتم تصميمه في الأصل ليكون محمولاً ، [15] [285] يعد لينكس الآن أحد أنوية أنظمة التشغيل الأكثر انتشارًا، حيث يعمل على مجموعة متنوعة من الأنظمة من بنية ARM إلى أجهزة الكمبيوتر المركزية IBM z/Architecture . تم إجراء أول منفذ على منصة Motorola 68000. كانت التعديلات على النواة أساسية لدرجة أن تورفالدز نظر إلى إصدار Motorola على أنه فرع و"نظام تشغيل يشبه لينكس". [285] ومع ذلك، دفع هذا تورفالدز لقيادة إعادة هيكلة رئيسية للكود لتسهيل النقل إلى المزيد من هياكل الحوسبة. أول لينكس، الذي يحتوي في شجرة مصدر واحدة على كود لأكثر من i386 وحده، يدعم منصة DEC Alpha AXP 64 بت. [286] [287] [285]

يعمل Linux كنظام تشغيل رئيسي على Summit الخاص بشركة IBM ؛ اعتبارًا من أكتوبر 2019 ، تعمل جميع أسرع 500 حاسوب فائق في العالم بنظام تشغيل يعتمد على نواة Linux، [288] وهو تغيير كبير منذ عام 1998 عندما تمت إضافة أول حاسوب فائق يعمل بنظام Linux إلى القائمة. [289]

تم نقل Linux أيضًا إلى العديد من الأجهزة المحمولة مثل iPhone 3G و iPod من Apple . [290]

الأجهزة المدعومة

في عام 2007، بدأ مشروع LKDDb لبناء قاعدة بيانات شاملة للأجهزة والبروتوكولات المعروفة بواسطة نوى Linux. [291] يتم بناء قاعدة البيانات تلقائيًا من خلال التحليل الثابت لمصادر النواة. في وقت لاحق من عام 2014، تم إطلاق مشروع Linux Hardware لجمع قاعدة بيانات تلقائيًا لجميع تكوينات الأجهزة التي تم اختبارها بمساعدة مستخدمي توزيعات Linux المختلفة. [292]

التصحيح المباشر

يمكن تطبيق التحديثات التي لا تحتاج إلى إعادة تشغيل على النواة باستخدام تقنيات التصحيح المباشر مثل Ksplice و kpatch و kGraft . تم دمج الأسس البسيطة لتصحيح النواة المباشر في الخط الرئيسي لنواة Linux في إصدار النواة 4.0، الذي تم إصداره في 12 أبريل 2015. تشكل هذه الأسس، المعروفة باسم livepatch والمستندة في المقام الأول إلى وظيفة ftrace للنواة ، نواة مشتركة قادرة على دعم التصحيح المباشر بواسطة كل من kGraft وkpatch، من خلال توفير واجهة برمجة التطبيقات (API) لوحدات النواة التي تحتوي على تصحيحات مباشرة وواجهة ثنائية للتطبيق (ABI) لأدوات إدارة مساحة المستخدم. ومع ذلك، فإن النواة المشتركة المضمنة في نواة Linux 4.0 تدعم فقط بنية x86 ولا توفر أي آليات لضمان الاتساق على مستوى الوظيفة أثناء تطبيق التصحيحات المباشرة. اعتبارًا من أبريل 2015 ، هناك عمل مستمر على نقل kpatch وkGraft إلى نواة التصحيح المباشر المشتركة التي يوفرها الخط الرئيسي لنواة Linux. [293] [294] [295]

حماية

تمثل أخطاء النواة مشكلات أمنية محتملة. على سبيل المثال، قد تسمح بتصعيد الامتيازات أو إنشاء متجهات هجوم رفض الخدمة . على مر السنين، تم العثور على العديد من الأخطاء التي تؤثر على أمان النظام وتم إصلاحها. [296] يتم تنفيذ ميزات جديدة بشكل متكرر لتحسين أمان النواة. [297] [298]

تم تقديم القدرات (7) بالفعل في القسم الخاص بالعمليات والخيوط. يستخدمها Android ويمنح systemd المسؤولين تحكمًا تفصيليًا في قدرات العمليات. [299]

يقدم لينكس مجموعة كبيرة من الآليات لتقليل سطح هجوم النواة وتحسين الأمان والتي تُعرف مجتمعة باسم وحدات أمان لينكس (LSM). [300] وهي تتألف من وحدة لينكس المحسّنة أمنيًا (SELinux)، والتي تم تطوير كودها في الأصل ثم إصداره للجمهور من قبل وكالة الأمن القومي ، [301] و AppArmor [185] من بين آخرين. يتم الآن تطوير SELinux وصيانته بنشاط على GitHub . [184] توفر SELinux وAppArmor الدعم لسياسات أمان التحكم في الوصول، بما في ذلك التحكم الإلزامي في الوصول (MAC)، على الرغم من اختلافهما بشكل كبير في التعقيد والنطاق.

هناك ميزة أمان أخرى وهي Seccomp BPF (الحوسبة الآمنة باستخدام مرشحات حزم بيركلي) والتي تعمل عن طريق تصفية المعلمات وتقليل مجموعة مكالمات النظام المتاحة لتطبيقات أرض المستخدم. [302]

اتهم النقاد مطوري النواة بإخفاء العيوب الأمنية، أو على الأقل عدم الإعلان عنها؛ في عام 2008، رد تورفالدز على هذا بما يلي: [303] [304]

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

عادةً ما تصدر توزيعات Linux تحديثات أمان لإصلاح الثغرات الأمنية في نواة Linux. تقدم العديد منها إصدارات دعم طويلة الأجل تتلقى تحديثات أمان لإصدار معين من نواة Linux لفترة زمنية ممتدة.

شروط الترخيص

في البداية، أصدر تورفالدس لينكس بموجب ترخيص يحظر أي استخدام تجاري. [305] وقد تغير هذا في الإصدار 0.12 بالتبديل إلى GNU General Public License الإصدار 2 (GPLv2). [20] يسمح هذا الترخيص بتوزيع وبيع إصدارات معدلة وغير معدلة من لينكس ولكنه يتطلب إصدار كل هذه النسخ بموجب نفس الترخيص وأن تكون مصحوبة - أو أن يتم منح الوصول المجاني إلى - الكود المصدري المقابل الكامل عند الطلب. [306] وصف تورفالدس ترخيص لينكس بموجب GPLv2 بأنه "أفضل شيء قمت به على الإطلاق". [305]

تم ترخيص نواة لينكس صراحةً بموجب إصدار GNU General Public License 2 فقط (GPL-2.0-only) مع استثناء استدعاء النظام الصريح (Linux-syscall-note)، [6] [9] [10] دون منح المرخص له خيار اختيار أي إصدار لاحق، وهو امتداد GPL شائع. يجب أن يكون الكود المساهم متاحًا بموجب ترخيص متوافق مع GPL . [11] [196]

كان هناك جدال كبير حول مدى سهولة تغيير الترخيص لاستخدام إصدارات GPL الأحدث (بما في ذلك الإصدار 3)، وما إذا كان هذا التغيير مرغوبًا فيه. [307] أشار تورفالدز نفسه بشكل خاص عند إصدار الإصدار 2.4.0 إلى أن الكود الخاص به تم إصداره فقط بموجب الإصدار 2. [308] ومع ذلك، تنص شروط GPL على أنه إذا لم يتم تحديد أي إصدار، فيمكن استخدام أي إصدار، [309] وأشار آلان كوكس إلى أن عددًا قليلاً جدًا من المساهمين الآخرين في Linux قد حددوا إصدارًا معينًا من GPL. [310]

في سبتمبر 2006، أشار استطلاع رأي أجري على 29 من مبرمجي النواة الرئيسيين إلى أن 28 منهم فضلوا GPLv2 على مسودة GPLv3 الحالية آنذاك. علق تورفالدز قائلاً: "أعتقد أن عددًا من الغرباء... اعتقدوا أنني شخصيًا كنت مجرد رجل شاذ لأنني لم أكن معجبًا كبيرًا بـ GPLv3 علنًا". [311] علقت هذه المجموعة من مطوري النواة البارزين، بما في ذلك تورفالدز وجريج كرواه هارتمان وأندرو مورتون ، على وسائل الإعلام حول اعتراضاتهم على GPLv3. [312] وأشاروا إلى البنود المتعلقة بإدارة الحقوق الرقمية / تيفويزيشن ، وبراءات الاختراع، و"القيود الإضافية" وحذروا من تقسيم "عالم المصدر المفتوح" بواسطة GPLv3. [312] [313] كرر تورفالدز، الذي قرر عدم اعتماد GPLv3 لنواة لينكس، انتقاده حتى بعد سنوات. [314]

وحدات النواة القابلة للتحميل

هناك جدل حول ما إذا كان يجب اعتبار بعض وحدات النواة القابلة للتحميل (LKMs) أعمالًا مشتقة بموجب قانون حقوق النشر، وبالتالي ما إذا كانت تقع ضمن شروط GPL أم لا.

وفقًا لقواعد الترخيص، فإن LKMs التي تستخدم مجموعة فرعية عامة فقط من واجهات النواة [221] [222] هي أعمال غير مشتقة، وبالتالي يمنح Linux مسؤولي النظام الآليات لتحميل الكائنات الثنائية خارج الشجرة إلى مساحة عنوان النواة. [11]

توجد بعض الوحدات النمطية القابلة للتحميل خارج الشجرة والتي تستخدم ميزة نواة dma_buf بشكل مشروع . [315] يمكن للكود المتوافق مع GPL بالتأكيد استخدامها. ومع ذلك، فإن حالة الاستخدام المحتملة المختلفة ستكون Nvidia Optimus التي تقرن وحدة معالجة رسومية سريعة بوحدة معالجة رسومية مدمجة مع Intel، حيث تكتب وحدة معالجة الرسوميات Nvidia في إطار عمل Intel عندما تكون نشطة. ولكن، لا تستطيع Nvidia استخدام هذه البنية الأساسية لأنها تتطلب تجاوز قاعدة لا يمكن استخدامها إلا بواسطة LKMs التي هي أيضًا GPL. [223] رد آلان كوكس على LKML ، رافضًا طلبًا من أحد مهندسي Nvidia لإزالة هذا الإنفاذ الفني من واجهة برمجة التطبيقات. [316] صرح تورفالدز بوضوح على LKML أن "[أنا] أزعم أن وحدات النواة الثنائية فقط مشتقة "افتراضيًا"". [317]

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

عندما يتم تحميل وحدات الملكية إلى لينكس، فإن النواة تحدد نفسها على أنها "ملوثة"، [319] وبالتالي فإن تقارير الأخطاء من النواة الملوثة غالبًا ما يتم تجاهلها من قبل المطورين.

كتل ثنائية للبرامج الثابتة

تحتوي نواة لينكس الرسمية، وهي فرع لينوس git في مستودع kernel.org، على كتل ثنائية تم إصدارها بموجب شروط ترخيص GNU GPLv2. [6] [11] يمكن لنظام لينكس أيضًا البحث في أنظمة الملفات لتحديد الكتل الثنائية، والبرامج الثابتة الملكية، وبرامج التشغيل، أو وحدات قابلة للتنفيذ الأخرى، ثم يمكنه تحميلها وربطها بمساحة النواة. [320]

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

العلامة التجارية

Linux هي علامة تجارية مسجلة باسم Linus Torvalds في الولايات المتحدة والاتحاد الأوروبي وبعض البلدان الأخرى. [322] [323] بدأت معركة قانونية حول العلامة التجارية في عام 1996، عندما بدأ ويليام ديلا كروس، وهو محامٍ لم يشارك مطلقًا في تطوير Linux، في طلب رسوم الترخيص لاستخدام كلمة Linux . بعد أن ثبت أن الكلمة كانت شائعة الاستخدام قبل فترة طويلة من الاستخدام الأول الذي ادعى ديلا كروس أنه استخدمه، مُنحت العلامة التجارية لـ Torvalds. [324] [325] [326]

الامتثال للعقوبات

في أكتوبر 2024، قام جريج كرواه هارتمان بإزالة أسماء الروس من MAINTAINERSالملف، مع الاحتفاظ برمز الأنظمة الفرعية المذكورة في مكانها. وقد أيد تورفالدز هذا الإزالة. [327]

انظر أيضا

ملحوظات

  1. ^ ككل، يتم توفير مصدر لينكس بموجب شروط ترخيص GPL-2.0 فقط مع استثناء استدعاء النظام الصريح. [9] [10] وبصرف النظر عن ذلك، يمكن توفير الملفات الفردية بموجب ترخيص مختلف مطلوب أن يكون متوافقًا مع ترخيص GPL-2.0 فقط (أي، إصدار GNU General Public License 2) أو ترخيص مزدوج، مع كون أحد الخيارات هو إصدار GPL 2 أو ترخيص متوافق مع GPLv2. [11]

مراجع

  1. ^ "شعارات ورموز لينكس". Linux Online. 2008. مؤرشف من الأصل في 15 أغسطس 2010. تم الاسترجاع في 11 أغسطس 2009 .
  2. ^ Greg Kroah-Hartman (22 أكتوبر 2024). "Linux 6.11.5" . تم الاسترجاع في 22 أكتوبر 2024 .
  3. ^ Linus Torvalds (27 أكتوبر 2024). "Linux 6.12-rc5" . تم الاسترجاع في 28 أكتوبر 2024 .
  4. ^ بيرجمان، أرند (3 مارس 2022). "Kbuild: move to -std=gnu11". git.kernel.org .
  5. ^ ab Proven, Liam. "Linux 6.1: Rust to hit mainline kernel". The Register . تم الاسترجاع في 12 مايو 2023 .
  6. ^ abcd "COPYING". git.kernel.org . مؤرشف من الأصل في 2 سبتمبر 2021 . تم الاسترجاع 2 سبتمبر 2021 .
  7. ^ "GPL-2.0-only". spdx.org . تم الاسترجاع في 2 سبتمبر 2021 .
  8. ^ "Linux-syscall-note". spdx.org . تم الاسترجاع في 2 سبتمبر 2021 .
  9. ^ من "GPL-2.0". git.kernel.org .
  10. ^ ab "Linux-syscall-note". git.kernel.org .
  11. ^ abcdef "قواعد ترخيص نواة لينكس - وثائق نواة لينكس". www.kernel.org . مؤرشف من الأصل في 7 مارس 2020 . تم الاسترجاع في 6 يناير 2020 .
  12. ^ abcdefghijklmn Love, Robert (2010). تطوير نواة لينكس (الطبعة الثالثة). Upper Saddle River, NJ: Addison-Wesley . ISBN 978-0-672-32946-3. OCLC  268788260.
  13. ^ "امتدادات C (باستخدام مجموعة GNU Compiler Collection (GCC))". gcc.gnu.org . مؤرشف من الأصل في 20 نوفمبر 2020 . تم الاسترجاع 13 نوفمبر 2020 .
  14. ^ ab Richardson, Marjorie (1 November 1999). "Interview: Linus Torvalds". Linux Journal. مؤرشف من الأصل في 14 مايو 2011. تم الاسترجاع في 20 أغسطس 2009 .
  15. ^ ab Torvalds, Linus Benedict (26 أغسطس 1991). "ما الذي تود رؤيته أكثر في minix؟". مجموعة الأخبار : comp.os.minix. Usenet:  1991Aug25.205708.9541@klaava.Helsinki.FI. مؤرشف من الأصل في 9 مايو 2013. تم الاسترجاع في 14 سبتمبر 2016 .
  16. ^ ab Welsh, Matt; Dalheimer, Matthias Kalle; Kaufman, Lar (1999). "1: Introduction to Linux". Running Linux (الطبعة الثالثة). Sebastopol, California: O'Reilly Media, Inc. ص. 5. ISBN 1-56592-976-4. OCLC  50638246.
  17. ^ "مصادر مجانية لنواة تشبه minix لـ 386-AT - مجموعات Google". groups.google.com . 5 أكتوبر 1991. مؤرشف من الأصل في 1 مارس 2021 . تم الاسترجاع 19 مارس 2020 .
  18. ^ وليامز، سام (مارس 2002). "الفصل التاسع: رخصة جنو العمومية". حر كما في الحرية: حملة ريتشارد ستالمان من أجل البرمجيات الحرة . أوريلي . رقم ISBN 0-596-00287-4تم الاسترجاع بتاريخ 12 نوفمبر 2010 .
  19. ^ abc Christine Bresnahan & Richard Blum (2016). LPIC-2: Linux Professional Institute Certification Study Guide: Exam 201 and Exam 202 . John Wiley & Sons. p. 107. ISBN 9781119150794.
  20. ^ ab Torvalds, Linus . "Release Notes for Linux v0.12". أرشيفات نواة لينكس. مؤرشف من الأصل في 19 أغسطس 2007. تم الاسترجاع في 21 فبراير 2007 .
  21. ^ فريد هانتلمان (2016). دليل بدء التشغيل لنظام التشغيل LINUX: مقدمة مستقلة . Springer Science & Business Media. ص. 1. ISBN 9783642607493.
  22. ^ abc Fred Hantelmann (2016). LINUX Start-up Guide: A self-contained introduction . Springer Science & Business Media. ص. 16. ISBN 9783642607493.
  23. ^ Summers, David W. (19 January 1992). "Troubles with Partitions". Newsgroup : alt.os.linux. Usenet:  1992Jan19.085628.18752@cseg01.uark.edu. مؤرشف من الأصل في 2 يونيو 2013. تم الاسترجاع في 7 يناير 2007 .
  24. ^ كليج، آلان ب. (31 مارس 1992). "إنه هنا!". مجموعة الأخبار : comp.os.linux. Usenet:  1992Mar31.131811.19832@rock.concert.net. مؤرشف من الأصل في 2 يونيو 2013. تم الاسترجاع في 7 يناير 2007 .
  25. ^ "الملحق أ: مناظرة تانينباوم-تورفالد". المصادر المفتوحة: أصوات من ثورة المصادر المفتوحة . أوريلي . 1999. رقم ISBN 1-56592-582-3تم الاسترجاع بتاريخ 22 نوفمبر 2006 .
  26. ^ تانينباوم، آندي (29 يناير 1992). "LINUX is obsolete". مجموعة الأخبار : comp.os.minix. Usenet:  12595@star.cs.vu.nl. مؤرشف من الأصل في 17 أكتوبر 2011. تم الاسترجاع في 10 مايو 2006 .
  27. ^ تانينباوم، آندي (12 مايو 2006). "مناظرة تانينباوم-تورفالدس: الجزء الثاني". جامعة أمستردام . مؤرشف من الأصل في 5 أغسطس 2015. تم الاسترجاع في 6 يناير 2007 .
  28. ^ هايوورد، ديفيد (22 نوفمبر 2012). "تاريخ لينكس: كيف شكل الزمن البطريق". TechRadar . مؤرشف من الأصل في 19 مارس 2020 . تم الاسترجاع 19 مارس 2020 .
  29. ^ هايوورد، ديفيد (22 نوفمبر 2012). "تاريخ لينكس: كيف شكل الزمن البطريق". TechRadar . مؤرشف من الأصل في 19 مارس 2020 . تم الاسترجاع 26 مارس 2020 .
  30. ^ abc Christine Bresnahan & Richard Blum (2016). LPIC-2: Linux Professional Institute Certification Study Guide: Exam 201 and Exam 202 . John Wiley & Sons. p. 108. ISBN 9781119150794.
  31. ^ Torvalds, Linus (9 June 1996). "Linux 2.0 really _is_ released." LKML (Mailing list). مؤرشف من الأصل في 2 أبريل 2015. تم الاسترجاع في 8 مارس 2015 .
  32. ^ "نظام بناء النواة - وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 22 يوليو 2020 . تم الاسترجاع في 17 يوليو 2020 .
  33. ^ ab "Kconfig make config — The Linux Kernel documentation". Kernel.org . مؤرشف من الأصل في 17 يوليو 2020 . تم الاسترجاع في 13 سبتمبر 2020 .
  34. ^ Torvalds, Linus (20 January 1999). "2.2.0-final". LKML (Mailing list). مؤرشف من الأصل في 2 أبريل 2015. تم الاسترجاع في 8 مارس 2015 .
  35. ^ "العالم الرائع لنظام Linux 2.2". 26 يناير 1999. مؤرشف من الأصل في 6 نوفمبر 2014. اطلع عليه بتاريخ 27 أكتوبر 2008 .
  36. ^ "ملاحظات وملاحظات حول Linux/390". linuxvm.org . مؤرشف من الأصل في 26 فبراير 2019 . تم الاسترجاع 29 مارس 2020 .
  37. ^ Torvalds, Linus (4 January 2001). "و بالمناسبة." LKML (قائمة بريدية). مؤرشف من الأصل في 26 يناير 2016. تم الاسترجاع في 8 مارس 2015 .
  38. ^ "العالم الرائع لنظام Linux 2.4". مؤرشف من الأصل في 17 مارس 2005. اطلع عليه بتاريخ 27 أكتوبر 2008 .
  39. ^ Torvalds, Linus (17 December 2003). "Linux 2.6.0". LKML (Mailing list). مؤرشف من الأصل في 2 أبريل 2015. تم الاسترجاع في 28 فبراير 2015 .
  40. ^ "proc(5) - صفحة دليل Linux" (انظر /proc/sys/kernel/pid_max). مؤرشف من الأصل في 7 فبراير 2014. تم الاسترجاع في 19 فبراير 2014 .
  41. ^ "btrfs Wiki". btrfs.wiki.kernel.org . مؤرشف من الأصل في 25 أبريل 2012 . تم الاسترجاع 17 يوليو 2020 .
  42. ^ فريد هانتلمان (2016). دليل بدء التشغيل لنظام لينكس: مقدمة مستقلة . Springer Science & Business Media. ص 1-2. ISBN 9783642607493.
  43. ^ قائمة بريدية لنواة لينكس (17 يونيو 2005). "Linux 2.6.12". git-commits-head (قائمة بريدية). مؤرشف من الأصل في 26 يناير 2016. تم الاسترجاع في 23 يناير 2008 .
  44. ^ Kroah-Hartman, Greg (3 أغسطس 2006). "Adrian Bunk is now taking over the 2.6.16-stable branch". LKML (Mailing list). مؤرشف من الأصل في 26 يناير 2016. تم الاسترجاع في 21 فبراير 2015 .
  45. ^ Rothwell, Stephen (12 February 2008). "Announce: Linux-next (Or Andrew's dream :-))". LKML (Mailing list). مؤرشف من الأصل في 24 نوفمبر 2010. تم الاسترجاع في 30 أكتوبر 2010 .
  46. ^ Corbet, Jonathan (21 أكتوبر 2010). "linux-next and patch management process". LWN.net . Eklektix, Inc. مؤرشف من الأصل في 21 يونيو 2010 . تم الاسترجاع في 30 أكتوبر 2010 .
  47. ^ "أرشيف نواة لينكس". Kernel.org. مؤرشف من الأصل في 30 يناير 1998. تم استرجاعه في 22 يناير 2014 .
  48. ^ "إضافة شخصية للإبلاغ عن أرقام إصدار 2.6.x [LWN.net]". lwn.net . مؤرشف من الأصل في 16 يوليو 2020 . تم الاسترجاع 15 يوليو 2020 .
  49. ^ ab Torvalds, Linus (21 July 2011). "Linux 3.0 release". قائمة بريدية لنواة لينكس . مؤرشف من الأصل في 18 أكتوبر 2019. تم الاسترجاع في 16 مايو 2013 .
  50. ^ Torvalds, Linus (30 May 2011). "Linux 3.0-rc1". LKML (Mailing list). مؤرشف من الأصل في 31 مايو 2011. تم الاسترجاع في 1 يوليو 2013 .
  51. ^ Torvalds, Linus (10 أبريل 2001). "Re: [PATCH] i386 rw_semaphores fix". yarchive.net . تم الاسترجاع في 26 مايو 2024 .
  52. ^ Vaughan-Nichols, Steven J. (13 December 2012). "وداعًا 386: لينكس سيوقف دعم شرائح i386 مع الإصدار الرئيسي القادم". ZDNet . CBS Interactive . مؤرشف من الأصل في 17 فبراير 2015 . تم الاسترجاع في 6 فبراير 2013 .
  53. ^ Fingas, Jon (15 ديسمبر 2012). "Linux to drop i386 support in the 3.8 kernel, make us upgrade our Doom rig". Engadget . AOL . مؤرشف من الأصل في 2 أبريل 2015 . تم الاسترجاع في 22 مارس 2015 .
  54. ^ Vaughan-Nichols, Steven J. (11 December 2012). "Linux 3.7 comes, ARM developers rejoice". ZDNet . CBS Interactive . مؤرشف من الأصل في 5 نوفمبر 2014 . تم الاسترجاع في 6 فبراير 2013 .
  55. ^ Torvalds, Linus (12 أبريل 2015). "Linux 4.0 released". LKML (Mailing list). مؤرشف من الأصل في 13 أبريل 2015. تم الاسترجاع في 12 أبريل 2015 .
  56. ^ Torvalds, Linus (2 September 2013). "Linux 3.11". LKML (Mailing list). مؤرشف من الأصل في 26 فبراير 2014. تم الاسترجاع في 3 سبتمبر 2013 .
  57. ^ "Linux 3.11". kernelnewbies.org. 2 سبتمبر 2013. تم الاسترجاع في 21 يناير 2014 .
  58. ^ "مؤسسة لينكس تصدر تقرير تطوير لينكس". مؤسسة لينكس . 18 فبراير 2015. مؤرشف من الأصل في 19 يوليو 2016. تم الاسترجاع 20 فبراير 2015 .
  59. ^ مايكل لارابيل (23 يونيو 2014). "نواة لينكس تصل إلى 19.5 مليون سطر من التعليمات البرمجية، وتستمر في الارتفاع". Phoronix . مؤرشف من الأصل في 23 نوفمبر 2020 . تم الاسترجاع في 23 يونيو 2015 .
  60. ^ ab Torvalds, Linus (3 مارس 2019). "Linus Torvalds: Linux 5.0". LKML . مؤرشف من الأصل في 25 أغسطس 2024 . تم الاسترجاع 25 أغسطس 2024 .
  61. ^ براكاش، أبيشيك (11 يناير 2023). "إصدار نواة لينكس 5.0! تعرف على الميزات الجديدة". إنه برنامج مفتوح المصدر . تم الاسترجاع في 25 أغسطس 2024 .{{cite news}}: CS1 maint: url-status (link)
  62. ^ لارابيل، مايكل (6 يناير 2019). "العديد من الميزات الجديدة والتحسينات في نواة لينكس 5.0". www.phoronix.com . تم الاسترجاع في 25 أغسطس 2024 .
  63. ^ Corbet, Jonathan (3 أغسطس 2020). "بعض الإحصائيات من دورة نواة 5.8". LWN - Linux Weekly News . مؤرشف من الأصل في 4 سبتمبر 2020 . تم الاسترجاع 11 أغسطس 2020 .
  64. ^ "استطلاع مطوري Stack Overflow لعام 2019 - التقنيات الأكثر شعبية". Stack Overflow . مؤرشف من الأصل في 8 أكتوبر 2020 . تم الاسترجاع في 17 مارس 2020 .
  65. ^ "استطلاع رأي مطوري Stack Overflow 2019 - بيئات وأدوات التطوير". Stack Overflow . مؤرشف من الأصل في 7 مارس 2020 . تم الاسترجاع 17 مارس 2020 .
  66. ^ "إحصائيات الاستخدام وحصة السوق لأنظمة التشغيل لمواقع الويب، مارس 2020". w3techs.com . تم الاسترجاع في 17 مارس 2020 .
  67. ^ "إحصائيات الاستخدام وحصة السوق لنظام التشغيل يونكس لمواقع الويب، مارس 2020". w3techs.com . تم الاسترجاع في 17 مارس 2020 .
  68. ^ "أفضل 500 موقع حاسوب فائق: عائلة أنظمة التشغيل / لينكس". Top500.org. مؤرشف من الأصل في 19 نوفمبر 2012. تم الاسترجاع 5 أكتوبر 2019 .
  69. ^ "غارتنر تقول إن مبيعات الأجهزة اللوحية ستمثل أقل من 10 في المائة من جميع الأجهزة في عام 2014" (بيان صحفي). إيغام، المملكة المتحدة : غارتنر . 15 أكتوبر 2014. مؤرشف من الأصل في 17 أكتوبر 2014. تم الاسترجاع في 19 أكتوبر 2014 .
  70. ^ لوندن، إنجريد (15 أكتوبر 2014). "انخفاض حاد في نمو مبيعات الأجهزة اللوحية في عام 2014 مع استمرار ارتفاع مبيعات الهواتف الذكية التي تعمل بنظام أندرويد: جارتنر". تيك كرانش . إيه أو إل . مؤرشف من الأصل في 23 أكتوبر 2014. تم الاسترجاع في 23 أكتوبر 2014 .
  71. ^ "شحنات أجهزة الكمبيوتر الشخصية العالمية تتجاوز التوقعات مع تحسن طفيف في الطلب الاستهلاكي، بينما تنتقل شركة أبل إلى المركز الخامس، وفقًا لـ IDC" (بيان صحفي). فرامنغهام، ماساتشوستس : IDC . 8 أكتوبر 2014. مؤرشف من الأصل في 11 أكتوبر 2014. تم الاسترجاع في 19 أكتوبر 2014 .
  72. ^ ويلر، ديفيد أ. "Linux Kernel 2.6: It's Worth More!". مؤرشف من الأصل في 20 أغسطس 2011. تم الاسترجاع في 18 يناير 2007 .
  73. ^ "التأثير الاقتصادي للبرمجيات الحرة والمفتوحة المصدر على الابتكار والقدرة التنافسية لقطاع تكنولوجيا المعلومات والاتصالات في الاتحاد الأوروبي" (PDF) (الجدول 3 على الصفحة 50). مؤرشف من الأصل (PDF) في 15 فبراير 2010. تم الاسترجاع في 8 يناير 2011 .
  74. ^ "تقدير التكلفة الإجمالية لتطوير توزيعة لينكس" (PDF) (الجدول في الصفحة 6). مؤرشف من الأصل (PDF) في 11 يوليو 2010.
  75. ^ "نواة المليار دولار". Linux.slashdot.org. 24 فبراير 2010. مؤرشف من الأصل في 15 مايو 2011. تم الاسترجاع في 12 نوفمبر 2010 .
  76. ^ ويلر، ديفيد. "نواة لينكس: إنها تستحق أكثر!". مؤرشف من الأصل في 24 فبراير 2021. تم الاسترجاع في 17 سبتمبر 2012 .
  77. ^ "أرشيفات نواة لينكس". www.kernel.org . تم الاسترجاع في 28 فبراير 2023 .
  78. ^ "حالة تطوير نواة لينكس 2017". مؤسسة لينكس . 25 أكتوبر 2017. مؤرشف من الأصل في 27 مايو 2020. تم الاسترجاع 27 مايو 2020 .
  79. ^ "لماذا تركت العمل: مطور نواة كون كوليفاس". مجلة APC . مجلات ACP. 24 يوليو 2007. مؤرشف من الأصل في 7 يوليو 2011. تم الاسترجاع في 15 أغسطس 2011 .
  80. ^ Corbet, Jonathan (25 July 2007). "Re: -mm merge plans for 2.6.23". LWN.net. مؤرشف من الأصل في 11 فبراير 2018 . تم الاسترجاع 10 فبراير 2018 .
  81. ^ Cox, Alan (28 July 2009). "Re: [PATCH] kdesu broken". مؤرشف من الأصل في 11 فبراير 2018 . تم الاسترجاع في 10 فبراير 2018 .
  82. ^ رودريجيز، جولدوين (22 يناير 2011). "قصة هدفين SCSI". مؤرشف من الأصل في 15 فبراير 2018. تم الاسترجاع 14 فبراير 2018 .
  83. ^ Steinmetz, Andreas (17 January 2013). "LIO - the broken iSCSI target implementation". مؤرشف من الأصل في 15 فبراير 2018 . تم الاسترجاع في 14 فبراير 2018 .
  84. ^ بول، رايان (19 يونيو 2012). "لينوس تورفالدس يقول "اذهب إلى الجحيم" مع إنفيديا". مؤرشف من الأصل في 15 فبراير 2018 . تم الاسترجاع في 14 فبراير 2018 .
  85. ^ جون جولد (3 أبريل 2014). "لينوس تورفالدس يعلق عمل مطور رئيسي لنظام لينكس: حالة من الذعر في نواة النظام مع قيام مطور Systemd بدفع الدب". مؤرشف من الأصل في 24 مارس 2019. استرجاع 24 مارس 2019 .
  86. ^ Poettering, Lennart (6 أكتوبر 2014). "حول مرض مجتمع نواة لينكس". Google+ . مؤرشف من الأصل في 27 مايو 2018 . تم الاسترجاع 10 فبراير 2018 .
  87. ^ Brodkin, Jon (6 March 2015). "VMware supposed to have violationed Linux's open source license for years". Ars Technica . مؤرشف من الأصل في 15 فبراير 2018 . تم الاسترجاع في 14 فبراير 2018 .
  88. ^ مكارثي، كيرين (26 أغسطس 2016). "بعد أن أساء إلى كل شخص آخر في العالم، يصف لينوس تورفالدس محاميه بـ "المرض المتقيح القبيح". السجل . مؤرشف من الأصل في 15 فبراير 2018. تم الاسترجاع في 14 فبراير 2018 .
  89. ^ Kroah-Hartman, Greg. "[PATCH 000/190] Revertion of all of the umn.edu commits". أرشيف قائمة بريدية لنواة Linux . تم الاسترجاع في 13 يناير 2022 .
  90. ^ تشين، مونيكا (30 أبريل 2021). "كيف تم حظر جامعة من استخدام نواة لينكس". The Verge . تم الاسترجاع في 13 يناير 2022 .
  91. ^ كوربيت، جوناثان (10 سبتمبر 2007). "KS2007: علاقات المطورين وعملية التطوير". LWN.net . مؤرشف من الأصل في 12 فبراير 2018. تم الاسترجاع 11 فبراير 2018 .
  92. ^ Brodkin, Jon (16 July 2013). "Linus Torvalds defends his right to shame Linux kernel developers". ARS Technica . مؤرشف من الأصل في 17 فبراير 2018 . تم الاسترجاع في 11 فبراير 2018 .
  93. ^ كوربيت، جوناثان (9 مارس 2015). "شفرة الصراع في النواة". LWN.net . مؤرشف من الأصل في 12 فبراير 2018. تم الاسترجاع 11 فبراير 2018 .
  94. ^ كوربيت، جوناثان (18 سبتمبر 2018). "القانون والصراع والسلوك". LWN.net . مؤرشف من الأصل في 19 سبتمبر 2018. استرجاع 19 سبتمبر 2018 .
  95. ^ كوهين، نوام (19 سبتمبر 2018). "بعد سنوات من رسائل البريد الإلكتروني المسيئة، يتنحى مبتكر لينكس". النيويوركر . مؤرشف من الأصل في 20 فبراير 2020. تم الاسترجاع في 24 سبتمبر 2018 .
  96. ^ لارابيل، مايكل. "إسقاط الألفاظ النابية في تعليقات كود نواة النظام: لينكس يحصل على "عناق"". Phoronix . مؤرشف من الأصل في 21 أبريل 2019 . تم الاسترجاع في 15 يونيو 2019 .
  97. ^ "Code of Conflict" . تم الاسترجاع في 4 فبراير 2018 .[ رابط ميت دائم ]
  98. ^ شاروود، سيمون (6 أكتوبر 2015). "مطور نواة لينكس الذي طلب من لينوس تورفالدس التوقف عن الإساءة اللفظية يترك منصبه بسبب الإساءة اللفظية". The Register . مؤرشف من الأصل في 29 مارس 2020 . تم الاسترجاع في 4 فبراير 2018 .
  99. ^ إيدج، جيك (31 يناير 2018). "عدد كبير جدًا من اللوردات، وعدد غير كافٍ من الوكلاء". LWN.net . مؤرشف من الأصل في 9 نوفمبر 2020. تم الاسترجاع في 4 فبراير 2018 .
  100. ^ Corbet, Jonathan (6 نوفمبر 2017). "Bash the kernel maintainers". LWN.net . مؤرشف من الأصل في 26 يناير 2021 . تم الاسترجاع 4 فبراير 2018 .
  101. ^ "Linux Evolution" (PDF) . 26 مارس 2008. مؤرشف من الأصل (PDF) في 14 ديسمبر 2013. تم الاسترجاع 6 نوفمبر 2013 .
  102. ^ "التطوير الدائم: نموذج لدورة حياة نواة لينكس" (PDF) . 25 أكتوبر 2011. مؤرشف من الأصل (PDF) في 17 أكتوبر 2013. تم الاسترجاع في 6 نوفمبر 2013 .
  103. ^ Kroah-Hartman, Greg (12 فبراير 2008). "Re: Announce: Linux-next (Or Andrew's dream :-))". قائمة بريدية لنواة لينكس (قائمة بريدية). مؤرشف من الأصل في 2 فبراير 2017. تم الاسترجاع في 30 يناير 2017 .
  104. ^ روبرت لوف (2010). تطوير نواة لينكس: تطوير نواة لينكس . بيرسون للتعليم. ص. 11. ISBN 9780768696790.
  105. ^ روبرت لوف (2010). تطوير نواة لينكس: تطوير نواة لينكس . بيرسون للتعليم. ص. 12. ISBN 9780768696790.
  106. ^ "كيف تعمل عملية التطوير". مؤرشف من الأصل في 9 ديسمبر 2017 . اطلع عليه بتاريخ 4 فبراير 2018 .
  107. ^ روبرت لوف (2010). تطوير نواة لينكس: تطوير نواة لينكس . بيرسون للتعليم. ص. 13. ISBN 9780768696790.
  108. ^ "قواعد سلوك ميثاق المساهمين". وثائق نواة لينكس . تم الاسترجاع في 6 أكتوبر 2021 .
  109. ^ "تفسير ميثاق قواعد السلوك للمساهمين في نواة لينكس". وثائق نواة لينكس . تم الاسترجاع في 6 أكتوبر 2021 .
  110. ^ ويليامز، دان. "[PATCH] CodingStyle: المصطلحات الشاملة". قائمة بريدية لنواة لينكس .
  111. ^ تيم أندرسون. "تم رفع الحد الأدنى لمترجم نواة لينكس إلى GCC 5.1، مما يسمح باستخدام C11 المحتمل". The Register . تم الاسترجاع في 12 مايو 2023 .
  112. ^ لارابيل، مايكل. "تم التحول من C89 إلى C11/GNU11 مع Linux 5.18". www.phoronix.com . تم الاسترجاع في 12 مايو 2023 .
  113. ^ شاروود، سيمون (11 ديسمبر 2022). "لينوس تورفالدس يكشف عن نواة لينكس 6.1". The Register . تم الاسترجاع في 12 مايو 2023 .
  114. ^ كوربيت، جوناثان. "الصدأ في نواة 6.2". LWN.net . تم الاسترجاع في 12 مايو 2023 .
  115. ^ لارابيل، مايكل. "المزيد من أكواد Rust جاهزة لنظام Linux 6.3 - أقرب إلى رفع مستوى برامج تشغيل Rust". Phoronix . تم الاسترجاع في 12 مايو 2023 .
  116. ^ "كيفية تطوير نواة لينكس - وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 7 مارس 2020 . تم الاسترجاع في 4 يناير 2020 .
  117. ^ "أسلوب ترميز نواة لينكس - توثيق نواة لينكس". Kernel.org . مؤرشف من الأصل في 5 يناير 2020 . تم الاسترجاع في 4 يناير 2020 .
  118. ^ "كيف تعمل عملية التطوير - وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 9 ديسمبر 2017 . تم الاسترجاع 26 مارس 2020 .
  119. ^ Kubbilun, Ingo A. (2 يونيو 2004). "Linux kernel patch for Intel Compiler" (باللغة الألمانية). Pyrillion.org. مؤرشف من الأصل في 22 يوليو 2011. تم الاسترجاع في 12 نوفمبر 2010 .
  120. ^ تيموثي (26 فبراير 2009). "مشروع نواة لينكس عالية الأداء — LinuxDNA". Slashdot Linux . Dice Holdings . مؤرشف من الأصل في 18 أكتوبر 2019 . تم الاسترجاع في 30 أكتوبر 2010 .
  121. ^ ريان، جوستين (25 فبراير 2009). "LinuxDNA Supercharges Linux with the Intel C/C++ Compiler". Linux Journal . Belltown Media, Inc. مؤرشف من الأصل في 9 نوفمبر 2020 . تم الاسترجاع في 30 أكتوبر 2010 .
  122. ^ لارابيل، مايكل (5 مارس 2023). "Linux 6.3 Drops Support For The Intel ICC Compiler". Phoronix . تم الاسترجاع في 6 مارس 2023 .
  123. ^ Lelbach, Bryce (25 October 2010). "Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts)". cfe-dev (Mailing list). مؤرشف من الأصل في 7 سبتمبر 2015.
  124. ^ لارابيل، مايكل (12 أبريل 2014). "Linux 3.15 Can Almost Be Compiled Under LLVM's Clang". Phoronix . مؤرشف من الأصل في 13 أغسطس 2020 . تم الاسترجاع في 10 يونيو 2014 .
  125. ^ Larabel, Michael . "Patch By Patch, LLVM Clang Gets Better At Building The Linux Kernel". Phoronix . مؤرشف من الأصل في 13 أغسطس 2020 . تم الاسترجاع في 20 نوفمبر 2014 .
  126. ^ Edge, Jake (7 May 2013). "LFCS: The LLVMLinux project". LWN.net . مؤرشف من الأصل في 10 أغسطس 2020 . تم الاسترجاع في 3 مارس 2015 .
  127. ^ مولر، يان سيمون (2 فبراير 2014). "LLVMLinux: نواة لينكس بأجنحة التنين" (PDF) . مشروع LLVM . مؤرشف من الأصل (PDF) في 3 أغسطس 2020. تم الاسترجاع في 3 مارس 2015 .
  128. ^ Desaulniers, Nick; Hackmann, Greg; Hines, Stephen (18 أكتوبر 2017). "اجتماع مطوري LLVM لعام 2017: تجميع مساحة مستخدم Android ونواة Linux باستخدام LLVM". YouTube . مؤرشف من الأصل في 31 ديسمبر 2020 . تم الاسترجاع في 7 ديسمبر 2020 .
  129. ^ Hackmann, Greg (2 فبراير 2017). "marlin-nougat-mr1-clang Patch Series". مؤرشف من الأصل في 10 ديسمبر 2020. تم الاسترجاع 6 ديسمبر 2020 .
  130. ^ Kaehlcke, Matthias (22 أكتوبر 2018). "cros-kernel2: Make clang the default compiler for kernel builds". مؤرشف من الأصل في 10 ديسمبر 2020 . تم الاسترجاع 6 ديسمبر 2020 .
  131. ^ لارابيل، مايكل (4 فبراير 2019). "استخدام LLVM Clang لتجميع نواة Linux يزداد انتشارًا بفضل Google". Phoronix . مؤرشف من الأصل في 25 نوفمبر 2020 . تم الاسترجاع في 6 ديسمبر 2020 .
  132. ^ Desaulniers, Nick (10 ديسمبر 2019). "vts: kernel: enforcement vts_kernel_toolchain for all TARGET_ARCH for R". مؤرشف من الأصل في 10 ديسمبر 2020 . تم الاسترجاع 6 ديسمبر 2020 .
  133. ^ Desaulniers, Nick (19 نوفمبر 2020). "Re: violating function pointer signature". LKML . تم الاسترجاع في 6 ديسمبر 2020 .
  134. ^ برادفورد، جون (8 مارس 2003). "رد: ما هو OOPS". LKML (قائمة بريدية). مؤرشف من الأصل في 31 أكتوبر 2014. تم الاسترجاع في 30 أكتوبر 2010 .
  135. ^ "syslog(2) - صفحة دليل Linux". man7.org . مؤرشف من الأصل في 13 أكتوبر 2020 . تم الاسترجاع في 15 أغسطس 2020 .
  136. ^ "kmsg: تصدير سجلات printk إلى واجهة /dev/kmsg [LWN.net]". lwn.net . مؤرشف من الأصل في 2 أكتوبر 2015 . تم الاسترجاع في 16 أغسطس 2020 .
  137. ^ شاهد ما يفعله جهاز الكمبيوتر الخاص بك باستخدام أدوات Ftrace، 24 يناير 2019، مؤرشف من الأصل في 15 ديسمبر 2021 ، تم الاسترجاع في 9 مايو 2021
  138. ^ "تصحيح أخطاء النواة باستخدام Ftrace - الجزء 1 [LWN.net]". lwn.net . مؤرشف من الأصل في 9 نوفمبر 2020 . تم الاسترجاع 15 سبتمبر 2020 .
  139. ^ "تصحيح أخطاء النواة باستخدام Ftrace - الجزء 2 [LWN.net]". lwn.net . مؤرشف من الأصل في 31 مارس 2020 . تم الاسترجاع 15 سبتمبر 2020 .
  140. ^ "ftrace - Function Tracer — The Linux Kernel documentation". Kernel.org . مؤرشف من الأصل في 19 سبتمبر 2020 . تم الاسترجاع في 15 سبتمبر 2020 .
  141. ^ "تتبع وقت التمهيد — وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 31 أكتوبر 2020 . تم الاسترجاع في 19 سبتمبر 2020 .
  142. ^ "Kernel Probes (Kprobes) — The Linux Kernel documentation". Kernel.org . مؤرشف من الأصل في 11 أكتوبر 2020 . تم الاسترجاع في 6 أكتوبر 2020 .
  143. ^ "Uprobe-tracer: Uprobe-based Event Tracing — The Linux Kernel documentation". Kernel.org . مؤرشف من الأصل في 4 ديسمبر 2020 . تم الاسترجاع في 6 أكتوبر 2020 .
  144. ^ "استخدام kgdb وkdb وبرنامج تصحيح أخطاء النواة". mirrors.edge.kernel.org . مؤرشف من الأصل في 26 يناير 2021 . تم الاسترجاع في 3 نوفمبر 2020 .
  145. ^ جين سالي (2010). أنظمة لينكس المدمجة الاحترافية . دار النشر. ص 252. رقم ISBN 9781430272267.
  146. ^ Billimoria, Kaiwan N. (2021). Linux Kernel Programming A Comprehensive Guide to Kernel Internals, Writing Kernel Modules, and Kernel Synchronization. Birmingham: Packt Publishing, Limited. ص. 55. ISBN 978-1-78995-592-7. OCLC  1240585605.
  147. ^ فادوفا، ألكساندرو؛ جونزاليس، أليكس؛ سيموندز، كريس (2016). لينكس: التطوير المضمّن: الاستفادة من قوة لينكس لتطوير مشاريع لينكس المضمّنة الجذابة والقوية: دورة في ثلاث وحدات. برمنغهام، المملكة المتحدة: باكيت للنشر . ص. 663. ISBN 978-1-78712-445-5. OCLC  960471438.
  148. ^ كريم يغمور (2008). بناء أنظمة لينكس المضمنة (الطبعة الثانية). سيباستوبول [كاليفورنيا]: أوريلي ميديا. ص. 387. ISBN 978-0-596-52968-0. OCLC  273049576.
  149. ^ يغمور، كريم (2011). نظام أندرويد مدمج. سيباستوبول، كاليفورنيا: أوريلي ميديا. ص. 44. ISBN 978-1-4493-2798-9. OCLC  812180000.
  150. ^ "SoC (نظام على شريحة)". OpenWrt Wiki . 6 نوفمبر 2014. مؤرشف من الأصل في 23 أغسطس 2022. تم الاسترجاع 15 مارس 2021 .
  151. ^ "ماذا نفعل بشأن أرقام CVE [LWN.net]". lwn.net . تم الاسترجاع في 15 مارس 2021 .
  152. ^ Amadeo, Ron (20 نوفمبر 2019). "جوجل تحدد خططها لدعم نواة لينكس الرئيسية في أندرويد". Ars Technica . تم الاسترجاع في 31 مارس 2021 .
  153. ^ بروشون ، جودي (24 أبريل 2021)، جبروشون / إلكس ، استرجاعها 27 أبريل 2021
  154. ^ "حالة preempt-rt". linuxplumbersconf.org . مؤرشف من الأصل في 15 أكتوبر 2016 . تم الاسترجاع 14 يونيو 2016 .
  155. ^ ماير، ديفيد (3 فبراير 2010). "مطور لينكس يشرح إزالة كود نواة أندرويد". ZDNet . CBS Interactive . مؤرشف من الأصل في 15 أكتوبر 2016 . تم الاسترجاع في 3 فبراير 2010 .
  156. ^ "الفصل 03: نظرة عامة على منصة مايمو". نظرة عامة على تقنية مايمو . نوكيا . 2008. مؤرشف من الأصل في 16 يونيو 2008. تم الاسترجاع في 9 أبريل 2010 .
  157. ^ Kroah-Hartman, Greg (2 فبراير 2010). "Android and the Linux kernel community". مؤرشف من الأصل في 27 أبريل 2019. تم الاسترجاع في 3 فبراير 2010 .
  158. ^ أب روجر يي (2017). برمجة نظام الاندرويد . نشر الحزمة. ص. 14. رقم ISBN 9781787120389.
  159. ^ Torvalds, Linus (19 September 2001). "The Origins of Linux—Linus Torvalds". YouTube . مؤرشف من الأصل في 15 ديسمبر 2021 . تم الاسترجاع في 6 ديسمبر 2020 .
  160. ^ "ملف Linux MAINTAINERS". مؤرشف من الأصل في 12 يناير 2013.
  161. ^ ألكسندرو فادوفا وأليكس جونزاليس وكريس سيموندز (2016). لينكس: التطوير المضمن . نشر الحزمة. ص. 663. ردمك 9781787124455.
  162. ^ "README". git.kernel.org. مؤرشف من الأصل في 24 يوليو 2012. تم الاسترجاع 24 مارس 2021 .
  163. ^ "KernelBuild - Linux Kernel Newbies". kernelnewbies.org . مؤرشف من الأصل في 19 أكتوبر 2020 . تم الاسترجاع 13 سبتمبر 2020 .
  164. ^ "واجهة Sysctl". Linux.it . مؤرشف من الأصل في 17 فبراير 2020. تم الاسترجاع 13 سبتمبر 2020 .
  165. ^ "sysctl(8) - صفحة دليل Linux". man7.org . مؤرشف من الأصل في 30 سبتمبر 2020 . تم الاسترجاع 13 سبتمبر 2020 .
  166. ^ "procfs(5) - صفحة دليل Linux". man7.org . مؤرشف من الأصل في 24 سبتمبر 2020 . تم الاسترجاع 13 سبتمبر 2020 .
  167. ^ "sched(7) - صفحة دليل Linux". man7.org . مؤرشف من الأصل في 17 يوليو 2020 . تم الاسترجاع في 27 يوليو 2020 .
  168. ^ "الأسئلة الشائعة: حق الأولوية". kernelnewbies.org . 22 أغسطس 2009. مؤرشف من الأصل في 7 أغسطس 2020 . تم الاسترجاع في 7 مايو 2015 .
  169. ^ بواسطة Jonathan Corbet (24 فبراير 2003). "نقل برنامج التشغيل: النواة القابلة للإلغاء". LWN.net . مؤرشف من الأصل في 10 أغسطس 2020. تم الاسترجاع في 7 مايو 2015 .
  170. ^ "دمج EEVDF Scheduler لنظام Linux 6.6، وإعادة تقديم Intel Hybrid Cluster Scheduling". Phoronix .
  171. ^ ab Molnár, Ingo (13 أبريل 2007). "[patch] Modular Scheduler Core and Completely Fair Scheduler [CFS]". LKML (قائمة بريدية). مؤرشف من الأصل في 3 نوفمبر 2020. تم الاسترجاع في 30 مارس 2020 .
  172. ^ "Completely Fair Scheduler | Linux Journal". Linuxjournal.com . مؤرشف من الأصل في 3 أغسطس 2020 . تم الاسترجاع في 30 مارس 2020 .
  173. ^ "ioctl(2) - Linux manual page". man7.org . مؤرشف من الأصل في 20 يوليو 2020 . تم الاسترجاع في 11 أغسطس 2020 .
  174. ^ "aio(7) - صفحة دليل Linux". man7.org . مؤرشف من الأصل في 12 أبريل 2020 . تم الاسترجاع 11 أغسطس 2020 .
  175. ^ "io_setup(2) - Linux manual page". man7.org . مؤرشف من الأصل في 20 أغسطس 2020 . تم الاسترجاع في 11 أغسطس 2020 .
  176. ^ "KVM". Linux-kvm.org . مؤرشف من الأصل في 28 مارس 2020 . تم الاسترجاع 29 مارس 2020 .
  177. ^ "TechComparison - Linux Virtualization Wiki". Virt.kernelnewbies.org . مؤرشف من الأصل في 3 أغسطس 2020 . تم الاسترجاع في 29 مارس 2020 .
  178. ^ "Virtualization_support_through_KVM in Linux_2_6_20 - Linux Kernel Newbies". Kernelnewbies.org . مؤرشف من الأصل في 29 نوفمبر 2019 . تم الاسترجاع في 29 مارس 2020 .
  179. ^ Coekaerts, Wim. "يحتوي الخط الرئيسي لنظام Linux على جميع بتات كود Xen لدعم Dom0 وDomU". blogs.oracle.com . مؤرشف من الأصل في 3 أغسطس 2020 . تم الاسترجاع في 29 مارس 2020 .
  180. ^ "Xen تحتفل بدعم Dom0 وDomU الكامل في Linux 3.0 – blog.xen.org". 7 يونيو 2011. مؤرشف من الأصل في 7 يونيو 2011. تم الاسترجاع 29 مارس 2020 .
  181. ^ Wilk, Konrad Rzeszutek (31 January 2014). "Linux 3.14 and PVH". Xen Project . مؤرشف من الأصل في 29 مارس 2020 . تم الاسترجاع في 29 مارس 2020 .
  182. ^ "مقدمة إلى تقنية Xen Virtualization | دليل تقنية المحاكاة الافتراضية | openSUSE Leap 15.2". doc.opensuse.org . مؤرشف من الأصل في 28 سبتمبر 2020 . تم الاسترجاع في 29 سبتمبر 2020 .
  183. ^ "تقنية المحاكاة الافتراضية | دليل المحاكاة الافتراضية | openSUSE Leap 15.3". doc.opensuse.org . تم الاسترجاع في 30 سبتمبر 2021 .
  184. ^ من "مشروع SELinux". GitHub . مؤرشف من الأصل في 12 ديسمبر 2019. تم الاسترجاع 10 يناير 2020 .
  185. ^ "AppArmor — وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 8 مايو 2020 . تم الاسترجاع في 10 يناير 2020 .
  186. ^ جيك إيدج (25 نوفمبر 2008). "أجهزة الأحرف في مساحة المستخدم". LWN.net . مؤرشف من الأصل في 26 يناير 2021. تم الاسترجاع 7 مايو 2015 .
  187. ^ جوناثان كوربيت (2 مايو 2007). "UIO: برامج تشغيل مساحة المستخدم". LWN.net . مؤرشف من الأصل في 11 نوفمبر 2020. تم الاسترجاع في 7 مايو 2015 .
  188. ^ abcd "stable-api-nonsense - Linux kernel source tree". git.kernel.org . مؤرشف من الأصل في 5 مارس 2021 . تم الاسترجاع 18 أبريل 2020 .
  189. ^ Gorman, Mel (15 February 2004). Understanding the Linux Virtual Memory Manager (PDF) . Prentice Hall. p. 26. ISBN 0-13-145348-3. مؤرشف من الأصل (PDF) في 3 مايو 2019 . استرجاع 27 يناير 2020 .
  190. ^ Greg Ungerer. "uClinux mainline Announcement". مؤرشف من الأصل في 31 أكتوبر 2007. تم الاسترجاع في 15 يناير 2008 .
  191. ^ ab Nguyen, Binh (30 يوليو 2004). "Linux Filesystem Hierarchy: Chapter 1. Linux Filesystem Hierarchy". مشروع توثيق Linux. مؤرشف من الأصل في 2 ديسمبر 2020. تم الاسترجاع في 28 نوفمبر 2012 .
  192. ^ "دليل الإدارة README". مستودعات git الخاصة بـ Kernel.org .
  193. ^ "Linux kernel release 5.x — The Linux Kernel documentation". Kernel.org . مؤرشف من الأصل في 7 مارس 2020 . تم الاسترجاع في 4 يناير 2020 .
  194. ^ "README\ABI\Documentation - kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org . مؤرشف من الأصل في 1 أكتوبر 2020 . تم الاسترجاع في 18 أبريل 2020 .
  195. ^ "syscalls\stable\ABI\Documentation - kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org . مؤرشف من الأصل في 2 أكتوبر 2020 . تم الاسترجاع في 18 أبريل 2020 .
  196. ^ ab "1.Intro.rst - Documentation/process/1.Intro.rst - Linux source code (v5.8) - Bootlin". elixir.bootlin.com . تم الاسترجاع في 8 أغسطس 2020 .
  197. ^ ab "syscalls". man7 . مؤرشف من الأصل في 15 يناير 2020 . تم الاسترجاع 28 يناير 2020 .
  198. ^ "intro(2) - Linux manual page". man7.org . مؤرشف من الأصل في 17 يوليو 2020 . تم الاسترجاع 16 يوليو 2020 .
  199. ^ "clone". man7.org . مؤرشف من الأصل في 18 يناير 2020 . تم الاسترجاع 28 يناير 2020 .
  200. ^ "feature_test_macros". man7.org . مؤرشف من الأصل في 19 يناير 2020 . تم الاسترجاع 28 يناير 2020 .
  201. ^ "vdso(7) - Linux manual page". man7.org . مؤرشف من الأصل في 2 فبراير 2020 . تم الاسترجاع 2 فبراير 2020 .
  202. ^ ab "futex(2) - Linux manual page". man7.org . مؤرشف من الأصل في 31 يناير 2020 . تم الاسترجاع 2 فبراير 2020 .
  203. ^ "syscall(2) - صفحة دليل Linux". man7.org . مؤرشف من الأصل في 21 يناير 2020 . تم الاسترجاع 2 فبراير 2020 .
  204. ^ "sysfs(5) - صفحة دليل Linux". man7.org . مؤرشف من الأصل في 18 يناير 2020 . تم الاسترجاع 6 يناير 2020 .
  205. ^ "قواعد كيفية الوصول إلى المعلومات في sysfs — وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 7 مارس 2020 . تم الاسترجاع في 6 يناير 2020 .
  206. ^ "مواصفات مرجعية من Linux Foundation". refspecs.linuxbase.org . تم الاسترجاع في 3 فبراير 2020 .
  207. ^ "مواصفات LSB". refspecs.linuxbase.org . تم الاسترجاع في 3 فبراير 2020 .
  208. ^ "Linux Standard Base Desktop Specification, Generic Part". refspecs.linuxbase.org . تم الاسترجاع في 3 فبراير 2020 .
  209. ^ "المراجع المعيارية". refspecs.linuxfoundation.org . مؤرشف من الأصل في 12 أغسطس 2020 . تم الاسترجاع 3 فبراير 2020 .
  210. ^ "Linux Standard Base Core Specification, Generic Part". refspecs.linuxfoundation.org . مؤرشف من الأصل في 29 نوفمبر 2019 . تم الاسترجاع في 3 فبراير 2020 .
  211. ^ "واجهة تطبيق النظام الخامس الثنائية - الإصدار 4.1" (PDF) . Sco.com . مؤرشف من الأصل (PDF) في 13 ديسمبر 2019 . تم الاسترجاع في 3 فبراير 2020 .
  212. ^ "Xinuos Inc. | Developers | Gabi | 17 December 2003 | System V Application Binary Interface - DRAFT". Sco.com . مؤرشف من الأصل في 3 فبراير 2020 . تم الاسترجاع في 3 فبراير 2020 .
  213. ^ "تنسيق الملفات القابلة للتنفيذ والربط (ELF)". Refspecs.linuxbase.org . تم الاسترجاع في 3 فبراير 2020 .
  214. ^ "elf(5) - صفحة دليل Linux". man7.org . مؤرشف من الأصل في 30 نوفمبر 2020 . تم الاسترجاع في 18 نوفمبر 2020 .
  215. ^ "Linux Standard Base Core Specification for X86-64". Refspecs.linuxbase.org . تم الاسترجاع في 3 فبراير 2020 .
  216. ^ "واجهة ثنائية لتطبيق System V - مسودة". Refspecs.linuxbase.org . تم الاسترجاع في 3 فبراير 2020 .
  217. ^ Seyfarth, Ray (2012). Introduction to 64 Bit Intel Assembly Language Programming for Linux . CreateSpace Independent Publishing Platform. p. 170. ISBN 9781478119203.
  218. ^ "تشريح نداء النظام، الجزء الأول [LWN.net]". lwn.net . مؤرشف من الأصل في 18 أغسطس 2020 . تم الاسترجاع 16 يوليو 2020 .
  219. ^ "تشريح نداء النظام، الجزء الثاني [LWN.net]". lwn.net . مؤرشف من الأصل في 6 أغسطس 2020 . تم الاسترجاع 16 يوليو 2020 .
  220. ^ Deucher, Alex (7 أكتوبر 2014). "AMD's New Unified Open Source Driver". X.Org Foundation . مؤرشف من الأصل في 21 يناير 2015 . تم الاسترجاع في 21 يناير 2015 .
  221. ^ "الرموز - دليل غير موثوق به لاختراق نواة لينكس - وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 3 أغسطس 2020 . تم الاسترجاع في 8 فبراير 2020 .
  222. ^ ab "الرموز المصدرة وواجهة برمجة التطبيقات الداخلية [LWN.net]". Lwn.net . مؤرشف من الأصل في 31 مارس 2020 . تم الاسترجاع 15 مارس 2020 .
  223. ^ ab "إلغاء تصدير kallsyms_lookup_name() [LWN.net]". Lwn.net . مؤرشف من الأصل في 1 أبريل 2020 . تم الاسترجاع 15 مارس 2020 .
  224. ^ "الأشجار الأولى: الأشجار الجذرية [LWN.net]". lwn.net . مؤرشف من الأصل في 8 نوفمبر 2020 . تم الاسترجاع 13 نوفمبر 2020 .
  225. ^ "الأشجار الثانية: الأشجار الحمراء والسوداء [LWN.net]". lwn.net . مؤرشف من الأصل في 13 نوفمبر 2020 . تم الاسترجاع 13 نوفمبر 2020 .
  226. ^ "دليل غير موثوق به لاختراق نواة لينكس". Kernel.org (الطبعة الأولى). 2005. مؤرشف من الأصل في 16 فبراير 2020. تم الاسترجاع في 15 مارس 2020 .
  227. ^ "دليل غير موثوق به لاختراق نواة لينكس - وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 7 مارس 2020 . تم الاسترجاع في 15 مارس 2020 .
  228. ^ "دليل غير موثوق به للقفل - وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 7 مارس 2020 . تم الاسترجاع في 15 مارس 2020 .
  229. ^ "دليل واجهات SCSI — وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 2 يونيو 2020 . تم الاسترجاع 11 يونيو 2020 .
  230. ^ "دليل مطوري libATA — وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 30 مايو 2020 . تم الاسترجاع في 11 يونيو 2020 .
  231. ^ "DRM Internals — The Linux Kernel documentation". Kernel.org . مؤرشف من الأصل في 1 يونيو 2020 . تم الاسترجاع في 11 يونيو 2020 .
  232. ^ "إعداد وضع Kernel (KMS) — وثائق Kernel Linux". Kernel.org . مؤرشف من الأصل في 11 يونيو 2020 . تم الاسترجاع في 11 يونيو 2020 .
  233. ^ "إدخال آلية مشاركة مخزن DMA [LWN.net]". lwn.net . مؤرشف من الأصل في 11 يونيو 2020 . تم الاسترجاع 11 يونيو 2020 .
  234. ^ "مشاركة مخازن وحدة المعالجة المركزية ووحدة معالجة الرسومات على Linux*". 01.org . 12 مايو 2016. مؤرشف من الأصل في 11 يونيو 2020 . تم الاسترجاع 11 يونيو 2020 .
  235. ^ "مشاركة المخزن المؤقت والمزامنة — وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 1 يونيو 2020 . تم الاسترجاع 11 يونيو 2020 .
  236. ^ "حول mac80211". Linux Kernel Organization, Inc. مؤرشف من الأصل في 1 فبراير 2021. تم الاسترجاع 8 يونيو 2014 .
  237. ^ "دليل مطور برامج تشغيل Linux 802.11 — وثائق Linux Kernel". Kernel.org . تم الاسترجاع في 19 نوفمبر 2021 .
  238. ^ "[PATCH v3 1/2] fork: add clone3 [LWN.net]". lwn.net . مؤرشف من الأصل في 16 يوليو 2020 . تم الاسترجاع في 16 يوليو 2020 .
  239. ^ "clone(2) - Linux manual page". man7.org . مؤرشف من الأصل في 15 يوليو 2020 . تم الاسترجاع في 15 يوليو 2020 .
  240. ^ "clone3()، fchmodat4()، وfsinfo() [LWN.net]". lwn.net . مؤرشف من الأصل في 15 يونيو 2020 . تم الاسترجاع 15 يوليو 2020 .
  241. ^ "ld-linux.so(8) - Linux manual page". man7.org . مؤرشف من الأصل في 26 نوفمبر 2020 . تم الاسترجاع في 18 نوفمبر 2020 .
  242. ^ "nptl(7) - Linux manual page". man7.org . مؤرشف من الأصل في 25 يوليو 2020 . تم الاسترجاع في 25 يوليو 2020 .
  243. ^ "futex(7) - صفحة دليل Linux". man7.org . مؤرشف من الأصل في 15 يوليو 2020 . تم الاسترجاع في 25 يوليو 2020 .
  244. ^ "Kernel threads made easy [LWN.net]". lwn.net . مؤرشف من الأصل في 31 مارس 2020 . تم الاسترجاع في 15 أغسطس 2020 .
  245. ^ ab Bar, Moshe (1 أبريل 2000). "The Linux Scheduler". Linux Journal . Belltown Media, Inc. مؤرشف من الأصل في 2 فبراير 2021 . تم الاسترجاع في 14 أبريل 2012 .
  246. ^ BKK19-TR03 - The Linux Kernel Scheduler - Overview, 23 April 2019, تم أرشفته من الأصل في 15 ديسمبر 2021 ، تم استرجاعه في 17 مايو 2021
  247. ^ "خفض زمن الوصول في لينكس: تقديم نواة قابلة للإلغاء | مجلة لينكس". Linuxjournal.com . مؤرشف من الأصل في 9 أغسطس 2020 . تم الاسترجاع في 17 أغسطس 2020 .
  248. ^ "CFS Scheduler — The Linux Kernel documentation". Kernel.org . تم الاسترجاع في 1 مايو 2021 .
  249. ^ "معيار IEEE لتكنولوجيا المعلومات – واجهة نظام التشغيل المحمول، POSIX.1b، ملحقات الوقت الفعلي (IEEE Std 1003.1b-1993)". مؤرشف من الأصل في 16 نوفمبر 2010. تم الاسترجاع في 17 مارس 2016 .
  250. ^ لارابيل، مايكل (24 يناير 2014). "نواة لينكس 3.14 تحتوي بالفعل على العديد من الميزات المثيرة". Phoronix . مؤرشف من الأصل في 13 أغسطس 2020 . تم الاسترجاع 3 فبراير 2014 .
  251. ^ "Linux kernel 3.14, Section 1.1. Deadline scheduling class for better real-time scheduling". kernelnewbies.org . 30 مارس 2014. مؤرشف من الأصل في 15 يناير 2021 . تم الاسترجاع 2 أبريل 2014 .
  252. ^ "تصميم تنفيذ RT-mutex — وثائق نواة Linux". Kernel.org . تم الاسترجاع في 17 ديسمبر 2021 .
  253. ^ "نظام فرعي RT-mutex مع دعم PI — وثائق نواة Linux". Kernel.org . تم الاسترجاع في 17 ديسمبر 2021 .
  254. ^ ماكيني، بول (10 أغسطس 2005). "نظرة عامة على الاستباق في الوقت الفعلي". LWN.net . مؤرشف من الأصل في 10 أغسطس 2020. تم الاسترجاع في 5 فبراير 2012 .
  255. ^ "مشروع OSADL: Linux في الوقت الفعلي". OSADL . مؤرشف من الأصل في 4 فبراير 2021 . تم الاسترجاع 5 فبراير 2012 .
  256. ^ أ ب "ستيفن-روستيدت_ون_PREEMPT_RT" (PDF) .
  257. ^ "قد يكون EEVDF Scheduler جاهزًا للانطلاق مع Linux 6.6". Phoronix . تم الاسترجاع في 31 أغسطس 2023 .
  258. ^ "[PATCH 00/10] sched: EEVDF يستخدم latency-nice [LWN.net]". LWN.net .
  259. ^ "مجدول وحدة المعالجة المركزية EEVDF لنظام Linux [LWN.net]". LWN.net . تم الاسترجاع في 31 أغسطس 2023 .
  260. ^ "دمج EEVDF Scheduler لنظام Linux 6.6، وإعادة تقديم Intel Hybrid Cluster Scheduling". Phoronix .
  261. ^ "القفل — وثائق نواة لينكس". Kernel.org . تم الاسترجاع في 17 ديسمبر 2021 .
  262. ^ "locking.rst - Documentation/kernel-hacking/locking.rst - Linux source code (v5.11.10) - Bootlin". elixir.bootlin.com . تم الاسترجاع في 29 مارس 2021 .
  263. ^ "ما هو RCU، من حيث الأساس؟ [LWN.net]". lwn.net . تم الاسترجاع في 29 مارس 2021 .
  264. ^ "ما هو RCU؟ الجزء 2: الاستخدام [LWN.net]". lwn.net . تم الاسترجاع في 29 مارس 2021 .
  265. ^ "RCU الجزء 3: واجهة برمجة تطبيقات RCU [LWN.net]". lwn.net . تم الاسترجاع في 29 مارس 2021 .
  266. ^ "نموذج ذاكرة نواة لينكس". open-std.org . تم الاسترجاع في 29 مارس 2021 .
  267. ^ "نموذج رسمي لترتيب ذاكرة النواة (الجزء 1) [LWN.net]". lwn.net . تم الاسترجاع في 29 مارس 2021 .
  268. ^ "نموذج رسمي لترتيب ذاكرة النواة (الجزء 2) [LWN.net]". lwn.net . تم الاسترجاع في 29 مارس 2021 .
  269. ^ ستيرن، آلان. "شرح نموذج اتساق ذاكرة نواة لينكس".
  270. ^ "kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org . تم الاسترجاع في 17 ديسمبر 2021 .
  271. ^ ab "أنواع الأقفال وقواعدها — وثائق نواة لينكس". Kernel.org . تم الاسترجاع في 17 ديسمبر 2021 .
  272. ^ "مواضيع قصيرة: الوقت الحقيقي، وFutexes، وntfs3". Lwn.net . تم الاسترجاع في 20 فبراير 2022 .
  273. ^ "نظام فرعي RT-mutex مع دعم PI — وثائق نواة Linux". Kernel.org . تم الاسترجاع في 20 فبراير 2022 .
  274. ^ "تصميم تنفيذ RT-mutex — وثائق نواة Linux".
  275. ^ "مُتحقق صحة قفل وقت التشغيل — وثائق نواة لينكس". Kernel.org . تم الاسترجاع في 17 ديسمبر 2021 .
  276. ^ "المقاطعات والخيوط وتأمين الشبكة [LWN.net]". lwn.net . تم الاسترجاع في 17 ديسمبر 2021 .
  277. ^ "جداول الصفحات — توثيق نواة لينكس". www.kernel.org . تم الاسترجاع في 21 يوليو 2024 .
  278. ^ "الذاكرة المادية - توثيق نواة لينكس". www.kernel.org . تم الاسترجاع في 21 يوليو 2024 .
  279. ^ "مخطط مجموعة تخزين لينكس". Thomas-krenn.com . مؤرشف من الأصل في 3 أغسطس 2020 . تم الاسترجاع 19 مارس 2020 .
  280. ^ "مخصص SLUB". Lwn.net . 11 أبريل 2007 . تم الاسترجاع في 20 فبراير 2022 .
  281. ^ "مخصصات الشرائح في نواة لينكس: SLAB، SLOB، SLUB" (PDF) . Events.static.linuxfound.org . تم الاسترجاع في 20 فبراير 2022 .
  282. ^ Corbet, Jonathan (28 أبريل 2023). "6.4 Merge window, part 1 [LWN.net]". LWN.net . تم الاسترجاع في 12 مايو 2023 .
  283. ^ "النصف الأول من نافذة دمج 6.8 [LWN.net]". lwn.net . تم الاسترجاع في 21 يوليو 2024 .
  284. ^ "Kernel/Git/Torvalds/Linux.git - شجرة مصدر نواة Linux". Git.kernel.org .
  285. ^ abc Torvalds, Linus (January 1999). "The Linux Edge". المصادر المفتوحة: أصوات من ثورة المصادر المفتوحة . أوريلي . ISBN 1-56592-582-3تم الاسترجاع بتاريخ 13 أكتوبر 2013 .
  286. ^ "نقل لينكس إلى DEC Alpha: النواة والواجهة". مؤرشف من الأصل في 5 سبتمبر 2019 . تم الاسترجاع 5 أكتوبر 2019 .
  287. ^ "لينكس في مرحلة ألفا: خيار استراتيجي". مؤرشف من الأصل في 4 سبتمبر 2019 . تم الاسترجاع 5 أكتوبر 2019 .
  288. ^ "أفضل 500 موقع حاسوب فائق: عائلة أنظمة التشغيل / لينكس". Top500.org. مؤرشف من الأصل في 19 نوفمبر 2012. تم الاسترجاع 5 أكتوبر 2019 .
  289. ^ "Avalon Cluster | TOP500 Supercomputer Sites". Top500.org . مؤرشف من الأصل في 5 أكتوبر 2019 . تم الاسترجاع 5 أكتوبر 2019 .
  290. ^ وانج، ديفيد (6 مايو 2010). "أندرويد يعمل الآن على آيفون 3G". TechHive . IDG . مؤرشف من الأصل في 22 يوليو 2010 . تم الاسترجاع في 11 يوليو 2010 .
  291. ^ "LKDDb". مشروع LKDDb. مؤرشف من الأصل في 25 فبراير 2021. استرجاع 26 يناير 2021 .
  292. ^ "Linux Hardware". مشروع أجهزة Linux. مؤرشف من الأصل في 26 يناير 2021 . تم الاسترجاع 26 يناير 2021 .
  293. ^ "Linux kernel 4.0, Section 1.2. Live patching". kernelnewbies.org . 26 أبريل 2015. مؤرشف من الأصل في 4 مايو 2015 . تم الاسترجاع في 27 أبريل 2015 .
  294. ^ جوناثان كوربيت (25 فبراير 2015). "A rough patch for live patching". LWN.net . مؤرشف من الأصل في 27 أبريل 2015 . تم الاسترجاع في 27 أبريل 2015 .
  295. ^ "kernel/git/torvalds/linux.git: Pull live patching structure from Jiri Kosina (Linux kernel source tree)". kernel.org . 11 فبراير 2015. مؤرشف من الأصل في 11 يونيو 2015 . تم الاسترجاع في 27 أبريل 2015 .
  296. ^ Mookhey, KK; Burghate, Nilesh (1 July 2005). Linux: Security, Audit and Control Features. الولايات المتحدة: ISACA . ص. 14. ISBN 1-893209-78-4. تم أرشفته من الأصل في 2 يونيو 2013 . تم استرجاعه في 31 ديسمبر 2010 .
  297. ^ هاتش، بريان (15 يوليو 2008). اختراق لينكس: أسرار وحلول أمان لينكس. ماكجرو هيل أوزبورن ميديا . ص 524. رقم ISBN 978-0-07-226257-5. تم أرشفته من الأصل في 2 يونيو 2013 . تم استرجاعه في 31 ديسمبر 2010 .
  298. ^ جايجر، ترينت (7 أكتوبر 2008). أمان نظام التشغيل. دار نشر مورجان وكلايبول. ص 122. رقم ISBN 978-1-59829-212-1. تم أرشفته من الأصل في 2 يونيو 2013 . تم استرجاعه في 31 ديسمبر 2010 .
  299. ^ "CAP_PERFMON — والقدرات الجديدة بشكل عام [LWN.net]". lwn.net . مؤرشف من الأصل في 4 أغسطس 2020 . تم الاسترجاع 2 أغسطس 2020 .
  300. ^ "استخدام وحدة أمان Linux — وثائق نواة Linux". Kernel.org . مؤرشف من الأصل في 2 مايو 2020 . تم الاسترجاع في 10 يناير 2020 .
  301. ^ "وكالة الأمن القومي | جهاز الأمن المركزي > ما نقوم به > البحث > SE Linux > الأسئلة الشائعة حول SE Linux". Nsa.gov . مؤرشف من الأصل في 18 سبتمبر 2019. تم الاسترجاع في 10 يناير 2020 .
  302. ^ "Seccomp BPF (SECure COMPuting with filter) — The Linux Kernel documentation". Kernel.org . مؤرشف من الأصل في 7 مارس 2020 . تم الاسترجاع في 10 يناير 2020 .
  303. ^ أندروز، جيريمي (16 يوليو 2008). "أخطاء أمنية وإفصاح كامل". KernelTrap . مؤرشف من الأصل في 19 يوليو 2008 . تم الاسترجاع في 31 ديسمبر 2010 .
  304. ^ سبنجلر، براد (16 يوليو 2008). "سياسة لينكس غير الرسمية للأمن من خلال التغطية". الكشف الكامل (قائمة بريدية). مؤرشف من الأصل في 7 أغسطس 2020. تم الاسترجاع في 31 ديسمبر 2010 .
  305. ^ ab Yamagata, Hiroo (3 أغسطس 1997). "The Pragmatist of Free Software". HotWired . مؤرشف من الأصل في 10 فبراير 2007 . تم الاسترجاع في 21 فبراير 2007 .
  306. ^ "GPL-v2". gnu.org . مؤرشف من الأصل في 25 ديسمبر 2019 . استرجاع 28 يناير 2020 .
  307. ^ Corbet, Jonathan (31 January 2006). "GPLv3 and the kernel". LWN.net . مؤرشف من الأصل في 10 أغسطس 2020 . تم الاسترجاع في 21 فبراير 2007 .
  308. ^ Torvalds, Linus (8 September 2000). "Linux-2.4.0-test8". LKML (Mailing list). مؤرشف من الأصل في 15 مايو 2020. تم الاسترجاع في 21 فبراير 2007 .
  309. ^ "gnu.org". Gnu.org . مؤرشف من الأصل في 2 فبراير 2021 . تم الاسترجاع 18 أكتوبر 2017 .
  310. ^ Cox, Alan (20 January 2006). "Re: GPL V3 and Linux". LKML (Mailing list). مؤرشف من الأصل في 26 يناير 2021. تم الاسترجاع في 21 فبراير 2007 .
  311. ^ شانكلاند، ستيفن (25 سبتمبر 2006). "أفضل مبرمجي لينكس ينتقدون GPL 3". News.com . CNET . مؤرشف من الأصل في 14 سبتمبر 2013 . تم الاسترجاع في 21 فبراير 2007 .
  312. ^ من تأليف جيمس إي جيه بوتوملي؛ ماورو كارفاليو شهاب؛ توماس جليكسنر؛ كريستوف هيلويج؛ ديف جونز؛ جريج كرواه هارتمان؛ توني لوك؛ أندرو مورتون؛ تروند مايكلبوست؛ ديفيد وودهاوس (15 سبتمبر 2006). "موقف مطوري النواة من GPLv3: المخاطر والمشاكل المتعلقة بـ GPLv3". LWN.net . مؤرشف من الأصل في 18 يناير 2021. تم الاسترجاع 11 مارس 2015 .
  313. ^ بيتريلي، نيكولاس (27 سبتمبر 2006). "معركة ضد الشر أم معركة من أجل الاهتمام؟". linuxjournal.com. مؤرشف من الأصل في 2 مارس 2018. تم الاسترجاع 11 مارس 2015 .
  314. ^ "يقول لينوس تورفالدس أن GPL v3 تنتهك كل ما يمثله GPLv2". Debconf 2014. 2014. مؤرشف من الأصل في 8 مايو 2018. تم الاسترجاع في 21 مارس 2018 .
  315. ^ كلارك، روب؛ سيموال، سوميت (1 نوفمبر 2012). "إطار عمل مشاركة مخزن DMA: مقدمة" (PDF) . مؤتمر لينكس المضمن. مؤرشف من الأصل (PDF) في 8 أغسطس 2014. تم الاسترجاع في 2 أغسطس 2014 .
  316. ^ Cox, Alan (10 October 2012). "[PATCH] dma-buf: Use EXPORT_SYMBOL". Direct Rendering Infrastructure (Mailing list). مؤرشف من الأصل في 22 يناير 2013. تم الاسترجاع في 3 سبتمبر 2013 .
  317. ^ Torvalds, Linus (10 December 2003). "RE: Linux GPL and binary module exception clause؟". LKML (Mailing list). مؤرشف من الأصل في 15 يونيو 2011. تم الاسترجاع في 31 ديسمبر 2010 .
  318. ^ Torvalds, Linus (3 December 2003). "Re: Linux GPL and binary module exception clause؟". LKML (Mailing list). مؤرشف من الأصل في 28 أبريل 2020. تم الاسترجاع في 12 نوفمبر 2010 .
  319. ^ "النوى الملوثة — توثيق نواة لينكس". Kernel.org . مؤرشف من الأصل في 7 مارس 2020 . تم الاسترجاع في 13 يناير 2020 .
  320. ^ "واجهة برمجة تطبيقات Linux Firmware — وثائق Linux Kernel". Kernel.org . مؤرشف من الأصل في 13 يناير 2020 . تم الاسترجاع في 13 يناير 2020 .
  321. ^ "البرامج الثابتة المضمنة — وثائق نواة لينكس". Kernel.org . مؤرشف من الأصل في 10 يونيو 2020 . تم الاسترجاع 10 يونيو 2020 .
  322. ^ "تسجيل Linux TM في الولايات المتحدة". uspto.gov . مؤرشف من الأصل في 24 فبراير 2021 . تم الاسترجاع 6 سبتمبر 2019 .
  323. ^ "تسجيل Linux TM في الاتحاد الأوروبي". euipo.europa.eu . مؤرشف من الأصل في 9 يونيو 2016 . تم الاسترجاع 28 نوفمبر 2020 .
  324. ^ هيوز، فيل (1 أغسطس 1997). "Linux Trademark Dispute". Linux Journal . Belltown Media, Inc. مؤرشف من الأصل في 30 أبريل 2010 . تم الاسترجاع في 8 ديسمبر 2010 .
  325. ^ هيوز، فيل (1 مارس 1997). "الإجراء المتخذ بشأن العلامة التجارية لينكس". مجلة لينكس . بيلتاون ميديا، المحدودة. مؤرشف من الأصل في 3 مارس 2010. تم الاسترجاع في 8 ديسمبر 2010 .
  326. ^ جيسلبرج، تونيا (2010). "تاريخ العلامة التجارية لنظام التشغيل لينكس" (PDF) . شركة جيسلبرج للمحاماة. مؤرشف من الأصل (PDF) في 11 يوليو 2011. تم الاسترجاع في 8 ديسمبر 2010 .
  327. ^ Purdy, Kevin (24 أكتوبر 2024). "إزالة المبرمجين الروس تثير الجدل حول سياسة نواة لينكس". Ars Technica . تم الاسترجاع في 24 أكتوبر 2024 .

قراءة إضافية

  • تورفالدز، لينوس؛ دايموند، ديفيد (2001). لمجرد المتعة: قصة ثوري عرضي . هاربر بيزنس . رقم ISBN 978-0066620732.
  • بيزروكوف، نيكولاي. "الفصل الرابع: دكتاتور خير". صور رواد البرمجيات مفتوحة المصدر (كتاب إلكتروني). سوفت بانوراما. مؤرشف من الأصل في 13 أكتوبر 2005. تم الاسترجاع في 3 أكتوبر 2005 .
  • "LinkSys والوحدات الثنائية". LWN.net Weekly Edition. 16 أكتوبر 2003. مؤرشف من الأصل في 1 أغسطس 2016. تم الاسترجاع في 21 يوليو 2016 .
  • "تميمة لينكس المفضلة للجميع". تم أرشفة النسخة الأصلية في 16 أغسطس 2005. تم استرجاعها في 16 يونيو 2005 .
  • Pranevich, Joseph (ديسمبر 2003). "العالم الرائع لنظام Linux 2.6". مؤرشف من الأصل في 16 يوليو 2003.
  • "LinuxChanges". تم أرشفة النسخة الأصلية في 31 أكتوبر 2005. تم استرجاعها في 31 أكتوبر 2005 .
  • "ندوة عن نواة لينكس 2.6". مؤرشف من الأصل في 2 فبراير 2007.
  • "برامج تشغيل الأجهزة في لينكس" (الطبعة الثالثة). مؤرشف من الأصل في 27 يوليو 2016. تم الاسترجاع في 21 يوليو 2016 .
  • "فهم نواة لينكس" (كتاب) (الطبعة الثالثة). مؤرشف من الأصل في 17 ديسمبر 2005. تم الاسترجاع في 22 ديسمبر 2005 .
  • Linux Kernel Networking، تأليف رامي روزن، 2014 (كتاب). مؤرشف من الأصل في 12 مايو 2015. تم الاسترجاع في 14 يونيو 2015 .
  • "لينكس: رخصة جنو العمومية والوحدات الثنائية". مؤرشف من الأصل في 23 يوليو 2005.
  • "تشريح نواة لينكس". آي بي إم . مؤرشف من الأصل في 27 يونيو 2007. تم الاسترجاع في 9 يونيو 2007 .
  • تانينباوم، أندرو؛ بوس، هربرت (2015). أنظمة التشغيل الحديثة . الولايات المتحدة الأمريكية: بيرسون. ص. 722. ISBN 9781292061429. OCLC  892574803.
  • الموقع الرسمي
    • فهرس توثيق نواة لينكس
    • صفحات دليل نواة لينكس
    • أخطاء نواة الكيرنل، والانحدارات لكل إصدار حديث للنواة
  • Kernel Newbies، مصدر للمعلومات المتنوعة المتعلقة بالنواة
  • تغطية النواة في LWN.net، وهو مصدر موثوق للمعلومات المتعلقة بالنواة
  • أداة Elixir Cross Referencer من Bootlin، وهي أداة مرجعية متبادلة لرمز مصدر نواة Linux
  • جريج كرواه هارتمان يتحدث عن نواة لينكس على اليوتيوب
Retrieved from "https://en.wikipedia.org/w/index.php?title=Linux_kernel&oldid=1253190347"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate