Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ما هو الـ Syscall؟

جزء من قسم الأساسيات في رحلة Assembly على Coddy — الدرس 31 من 45.

لقد كتبت تعليمات تجميع (assembly) مثل mov و lea. تعمل هذه التعليمات مباشرة على وحدة المعالجة المركزية (CPU). ولكن ماذا لو كنت بحاجة إلى القيام بشيء لا تستطيع وحدة المعالجة المركزية القيام به بمفردها — مثل الطباعة على الشاشة، أو القراءة من لوحة المفاتيح، أو إنهاء برنامج ما؟

لهذه المهام، تحتاج إلى نظام التشغيل (لينكس، في هذه الدورة).

ما هو الـ syscall؟

الـ syscall (استدعاء النظام) هو طلب من برنامجك إلى نظام التشغيل. إنه الطريقة التي تطلب بها من نظام التشغيل القيام بشيء ما نيابة عنك.

لماذا تحتاج إلى استدعاءات النظام (syscalls):

المهمةهل يمكن للمعالج القيام بذلك بمفرده؟هل يحتاج إلى استدعاء نظام؟
جمع رقميننعملا
نقل البيانات بين السجلات (registers)نعملا
طباعة نص على الشاشةلانعم
قراءة إدخال لوحة المفاتيحلانعم
الخروج من برنامجلانعم
فتح ملفلانعم

كيفية عمل استدعاء النظام (syscall):

  1. تضع رقم استدعاء النظام (syscall number) في rax (يخبر نظام التشغيل بما تريده)
  2. تضع المعاملات (arguments) في سجلات أخرى (rdi، rsi، rdx، إلخ.)
  3. تقوم بتنفيذ تعليمة syscall
  1. تنتقل وحدة المعالجة المركزية (CPU) إلى نواة نظام التشغيل
  2. يقوم نظام التشغيل بتنفيذ الطلب
  3. يعيد نظام التشغيل التحكم إلى برنامجك

التشبيه:

فكر في استدعاء النظام (syscall) كأنه اتصال بمكتب حكومي:

الخطوةالتشبيهفي لغة التجميع (assembly)
1حدد الخدمة التي تحتاجهااختر رقم استدعاء النظام (ضعه في rax)
2املأ النماذجضع المعاملات (arguments) في السجلات (registers)
3قدم الطلبنفذ syscall
4الحكومة تعالج الطلبنواة نظام التشغيل (OS kernel) تقوم بالعمل
5احصل على النتيجةيستمر البرنامج

استدعاءات النظام التي ستتعلمها في هذه الدورة:

استدعاء النظامالرقمماذا يفعلالفصل
exit60ينهي البرنامجالفصل 4
write1يطبع النص على الشاشةالفصل 5

أهم استدعاء نظام (syscall) في الوقت الحالي: <strong>exit</strong>

بدون exit، سيستمر برنامجك في العمل للأبد أو سيتوقف عن العمل بشكل مفاجئ. يجب أن ينتهي كل برنامج تكتبه باستدعاء نظام exit.

mov rax, 60    ; رقم استدعاء النظام للخروج
mov rdi, 0     ; رمز الخروج (0 = نجاح)
syscall        ; طلب الخروج من نظام التشغيل

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات