Foundationপ্রথম নীতি থেকে
LEVEL 4 · Operating Systems

System Call

সিস্টেম কল

User program-এর kernel-এর সেবা চাওয়ার একমাত্র নিয়ন্ত্রিত দরজা। x86-64-এ `syscall` instruction, ARM64-এ `svc`। খরচ কয়েকশো ন্যানোসেকেন্ড।

also: syscall

x86-64-এ convention:

Registerকী
raxsyscall number (ফেরার সময় return value)
rdi, rsi, rdx, r10, r8, r9argument ১–৬

লক্ষ্য করুন চতুর্থ argument r10, rcx নয় — যদিও C-র calling convention rcx ব্যবহার করে। কারণ syscall instruction নিজেই rcx-এ return address আর r11-এ RFLAGS রাখে, তাই সেগুলো নষ্ট হয়ে যায়।

Error convention: kernel ঋণাত্মক মান ফেরত দেয় (-EPERM = -1, -ENOENT = -2…)। libc সেটা দেখে -1 রিটার্ন করে আর errno সেট করে। Raw syscall করলে এই অনুবাদটা আপনাকেই করতে হয়।

খরচ: সাধারণত ৪০০–৫০০ ns (KPTI চালু থাকলে বেশি) — mode switch, stack switch, register save/restore। এজন্যই vDSO আছে: clock_gettime-এর মতো কিছু call kernel-এর লেখা read-only page থেকে সরাসরি পড়ে, syscall ছাড়াই ~২৩ ns-এ।

strace -c ./program        # কোন syscall কতবার