الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

رابط يحتوي على قائمة system calls في اللينكس

مغلق
بدأه ماشي في 15 مايو 2007 · 5 رد · 1,063 مشاهدة · في نظام تشغيل Unix & Linux
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

ده رابط يحتوي على قائمة بال system calls في كيرنل اللينكس, مع شرح الarguments وكيفية الرد

http://sourceforge.net/projects/lscr

ملف المساعدة هتلاقوه في /help/main.html

أتمنى انه يكون مفيد

تم تعديل هذه المشاركة بواسطة ماشي في 15 مايو 2007 في 19:45

#2

هه

أنا فاكر الكلمه دي أيام ماكنا بناخد لينوكس في الكليه

system calls ودي بقه كأوامر تنفيذيه ولا دوال c ؟؟؟

#3

الsystem calls هي طلب الخدمات الرئيسية المختلفة في الكيرنل مثل عمل fork أو تخصيص ذاكرة (وإن كان في اللينكس يتم استخدام sys_mmap أو sys_brk للقيام بذلك)

يتم في الغالب استدعاء الخدمة بعمل software interrupt وتكون فعلاً مكتوبة في صيغة دوال إذا كان الكيرنيل مكتوب بلغة عالية المستوى

وممكن بمكتبة الC القيام بهذه المهمات في أغلب النظم الشبيهة باليونكس

#4

ياااااااااااااااااااااااااااااااااه فكرتني بأام مادة نظم التشغيل، علي فكره أنا كنتفيها عامل زي الحما ، ولا بلاش :D

أنا فهمت كل حاجه معادا السطر ده :

اقتباس
يتم في الغالب استدعاء الخدمة بعمل software interrupt وتكون فعلاً مكتوبة في صيغة دوال إذا كان الكيرنيل مكتوب بلغة عالية المستوى

ممكن تبسطه شويه

زادك الله معرفة

#5

أخي الكريم daziplqa

قصدي انه طرق طلب خدمات النظام تختلف من نظام لأخر .. لكنها في الغالب تكون عبر طلب software interrupt أي تحويل التحكم لinterrupt handler وهو مكان أخر في الذاكرة يكون فيه التعليمات الكفيلة بالتعامل مع خدمات النظام

مثال بسيط على sys_exit في كيرنل اللينكس لإنهاء عملية

movl $1, %eax
movl $0, %ebx
int $0x80

في المثال السابق حطينا رقم الخدمة المطلوبة (sys_exit هي الخدمة رقم 1) في مسجل الeax والstatus في مسجل الebx (صفر تعني عدم حدوث اخطاء) ثم طلبنا المقاطعة رقم 0x80 أي 128 بالنظام العشري

والمفترض أن يتم انهاء العملية التي تطلب الخدمة رقم 1 من المقاطعة $0x80

اقتباس
وتكون فعلاً مكتوبة في صيغة دوال إذا كان الكيرنيل مكتوب بلغة عالية المستوى

إذا كان الكيرنل مكتوب بلغة عالية المستوى (مثل لغة الC في حالة اللينكس) .. فالأرجح أن يتم تقسيم الخدمات المختلفة على هيئة دوال بالفعل ..

تعالى نأخد مثال عملي من كيرنل اللينكس نفسه (اخترت نسخة قديمة جداً حتى تكون صغيرة الحجم)

http://www.kernel.org/pub/linux/kernel/His...nux-0.11.tar.gz

ستجد أن الخدمات الأساسية مكتوبة على هيئة دوال فعلاً في المجلد /kernel

(مثالنا السابق ستجده في الملف /kernel/exit.c)

int sys_exit(int error_code)

وكذلك ستجد الHandler في الملف system_call.s, وهو المسؤول عن طلب الدالة الصحيحة عند طلب خدمة معينة (أي طلب sys_exit عندما نضع الرقم 1 في الaccumulator , كما في مثالنا السابق)

وأعتذر إذا ماكانش شرحي واضح بما يكفي

#6

ما قصرت ، جزاك الله خيرا

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…