طلب النظام (System call) أو طلبات النظام هو الوسيلة لطلب الخدمات من نواة نظام التشغيل حتى يتم تنفيذها. قد تتضمن هذه الخدمات، خدمات معدات الحاسب الآلي (مثل الوصول إلى القرص الصلب) و إنشاء و تنفيذ عمليات جديده، و التواصل مع الخدمات الكاملة لخدمات النواة مثل جدولة المهام. كما أنها توفر واجهة بين المهام و نظام التشغيل. في معظم نظم التشغيل طلبات النظام تصنع في مساحة المستخدم، إلا انه في بعض الأنظمة يقوم رمز النظام المميز بإصدار طلبات النظام (مثل OS/360 and successors).[1]
الامتيازات
معظم المعالجات الحديثة تحتوي على نموذج أمن، فمثلا نموذج الحلقات يخصص عدد من المراحل الامتياز حتى يتيح للبرمجيات ان تنفذ: كل برنامج يملك عنوان خاص به في مساحة التخزين لذلك لا يستطيع أن يصل أو يعدل على البرامج الأخرى التي تعمل أو على نظام التشغيل نفسه، و هذا غالبا ما يمنع التدخل أو التعديل على معدات الحاسب (مثل مخزن الإطار المؤقت أو أجهزة شبكة الحاسوب).لكن يتحتم على كثير من البرامج أن تصل إلى تلك الخصائص لذا طلبات النظام متاحة من قبل نظام التشغيل لهذه البرامج حتى توفر تطبيقات آمنة و محدده لمثل هذه العمليات. نظام التشغيل يعمل على أعلى مستوى من الامتيازات و يسمح للتطبيقات بطلب خدمات عن طريق طلبات النظام، التي غالبا ما تبدأ بمقاطعة. المقاطعة تضع وحدة المعالجة المركزية تلقائيا في مستوى مرتفع من مستويات الامتيازات و من ثم تسمح للنواة بالتحكم مما يحدد إذا كان البرنامج الذي ارسل الطلب يجب أن يحصل على الخدمة أو لا، في حين تم قبول الطلب، تقوم نواة النظام بتنفيذ عدد من التعليمات بحيث لا يكون للبرنامج الطالب للخدمة القدرة على التحكم المباشر.
المكتبة البرمجية كوسيط
في النظام يوجد ما يدعى بالمكتبة البرمجية أو واجهة برمجة التطبيقات(API) التي توجد بين البرامج العادية و نظام التشغيل. في النظم شبيهة يونكس ال(API) تكون جزء من التطبيق لمكتبة سي (libc)، مثل مكتبة جنو لسي التي توفر خاصية الغلاف لطلبات النظام، وتسمى طبقاً لما تطلق عليها طلبات النظام. على ويندوز إن تي تكون ال(API) جزء من واجهة برمجة التطبيقات المحلية، هذه ال(API) الغير موثقة تستعمل بواسطة التطبيقات الاعتيادية لويندوز API و تستخدم مباشرة من قبل بعض برامج نظام ويندوز. خاصية الغلاف للمكتبة تكشف عن خاصية استدعاء الاصطلاح(دالة في مستوى التجميع)لاستخدامها طلبات النظام كما تجعل طلب النظام أكثر نمطية. المهمة الأساسية لخاصية الغلاف هي أن ترسل كل المعاملات لطلبات النظام في السجل المعالج المناسب، و كذلك وضع رقم فريد لطلب النظام حتى تستدعيه النواة. بهذا تزيد قابلية المكتبة التي تقع بين نظام التشغيل و التطبيق.
الطلب من المكتبة لا يدخل في وضع النواة (إذا لم يكن التنفيذ في وضع النواة قبلاَ). طلب النظام الأصلي ينقل التحكم إلى النواة (يعتمد أكثر على التنفيذ و على المنصة منه على طلب المكتبة الملخصة له). مثلا في النظم شبيهة يونكس الfork و execve من خصائص مكتبة سي تنفذ تعليمات طلبات النظام fork و execve. جعل طلبات النظام في شفرة التطبيق أكثر تعقيداً وقد يتطلب شفرة بلغة التجميع(assembly) حتى يمكن استخدامها، كذلك يحتاج إلى معرفة مستوى ضعيف من واجة الشفرة الثنائية (binary) لتنفيذ عمليات طلبات النظام التي قد تكون عرضة للتغير مع الزمن وبذلك لا تكون من جزء من التطبيق الواجهة الثنائية، خصائص المكتبة هي من صممت لتستبدل هذا.
أمثلة وأدوات
من طلبات النظام الشهيرة على يونكس، النظم شبيهة يونكس و أنظمة بوزيكس المتوافقة الأخرى:
- open
- read
- write
- close
- wait
- exec
- fork
- exit
- kill
الكثر من الأنظمة الحديثة تحتوي على مئات طلبات النظام. مثلا لينكس و أوبن بي إس دي لديها أكثر من 300 من الطلبات المختلفة[2][3]، نت بي إس دي يحتوي على ما يقارب 500 من طلبات النظام[4]، فري بي إس دي يحتوي على ما يقارب 500 من طلبات النظام[5]، ويندوز7 يحوي على ما يقارب 700[6]، و بلان 9 يحتوي على 51 طلب[7].
أدوات مثل ستراس، فتريس و ترس تسمح للمعالجات بالتنفيذ من البداية و الإبلاغ عن كل طلبات النظام التي تحتاجها المعالجات أو أن ترفق مع معالجات قيد التشغيل و تقاطع أي طلب نظام انشأ بواسطة المعالج إذا كانت العملية لا تنتهك أذونات المستهلك. غالباً ما تكون هذه الخاصية المميزة للبرنامج تنفذ مع طلبات النظام.
أقسام طلبات النظام
1-التحكم في المعالجات:
- محمل
- نفذ(execute)
- إنهاء، إلغاء
- صنع معالج ( مثال (fork) في النظم شبيهة لينكس)
- إنهاء العملية
- سمات الحصول على /تعين للعملية
- انتظر الوقت، انتظر الحدث، إشارة للحدث
- التخصيص/ ذاكرة متاحة
2-التحكم في الملفات:
- انشاء ملف، حذف ملف
- فتح، اغلاق
- اقرأ، اكتب، غير المكان
- سمات الحصول على/ تعين للملف
3-التحكم في الجهاز:
- اطلب جهاز، اطلق الجهاز
- اقرأ، اكتب، غير المكان
- سمات الحصول على / تعين للجهاز
- ارفاق أو فصل الأجهزة منطقياً
4-صيانة المعلومات:
- الحصول على / تعين الوقت أو التاريخ
- الحصول على /تعين بيانات النظام
- سمات الحصول على /تعين للمعالجات، للملفات، للأجهزة
5-الاتصال:
- انشاء، حذف اتصال
- إرسال، استلام رسائل
- تحول معلومات عن الحالة
- ارفاق أو فصل أجهزة التحكم عن بعد
المراجع
- BM (March 1967). "Writing SVC Routines". IBM System/360 Operating System System Programmer's Guide (PDF). Third Edition. pp. 32–36. C28-6550-2.
- "syscalls(2) - Linux manual page"
- OpenBSD (2013-09-14). "System call names (kern/syscalls.c)". BSD Cross Reference.
- NetBSD (2013-10-17). "System call names (kern/syscalls.c)". BSD Cross Reference
- "FreeBSD syscalls.c, the list of syscall names and IDs"
- Author: Mateusz "j00ru" Jurczyk (2017-11-05). "Windows WIN32K.SYS System Call Table (NT/2000/XP/2003/Vista/2008/7/8/10)"
- "Plan 9 sys.h, the list of syscall names and IDs"