System Call Interface (SCI) হলো একটি প্রোগ্রামিং ইন্টারফেস যা অপারেটিং সিস্টেমের কোর (kernel) এর সাথে ব্যবহারকারী প্রোগ্রামের যোগাযোগ নিশ্চিত করে। এটি অপারেটিং সিস্টেমের গুরুত্বপূর্ণ ফাংশনগুলো, যেমন ফাইল অপারেশন, প্রসেস ম্যানেজমেন্ট, এবং মেমোরি ম্যানেজমেন্ট পরিচালনা করতে ব্যবহার করা হয়। Linux এবং Windows অপারেটিং সিস্টেমের System Call Interface-এর কাঠামো এবং ব্যবহারের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।
Linux এ System Call Interface
Linux System Call Interface সাধারণত Assembly Language বা উচ্চ-স্তরের ভাষা ব্যবহার করে প্রোগ্রামারের অ্যাপ্লিকেশন থেকে kernel ফাংশনগুলো কল করতে ব্যবহৃত হয়। Linux-এ system call ইন্টারফেস সাধারণত int 0x80 বা syscall নির্দেশনা ব্যবহার করে কাজ করে।
প্রক্রিয়া:
- সিস্টেম কল নম্বরটি
eaxরেজিস্টারে লোড করা হয়। - প্রয়োজনীয় প্যারামিটারগুলো
ebx,ecx,edx,esi, এবংediরেজিস্টারে লোড করা হয়। int 0x80বাsyscallনির্দেশনা ব্যবহার করে system call কার্যকর করা হয়।
Assembly উদাহরণ:
section .text
global _start
_start:
; sys_write সিস্টেম কল
mov eax, 4 ; sys_write এর সিস্টেম কল নম্বর (4)
mov ebx, 1 ; ফাইল ডিসক্রিপ্টর (stdout)
mov ecx, msg ; মেসেজের অ্যাড্রেস
mov edx, 13 ; মেসেজের দৈর্ঘ্য
int 0x80 ; সিস্টেম কল
; sys_exit সিস্টেম কল
mov eax, 1 ; sys_exit এর সিস্টেম কল নম্বর (1)
xor ebx, ebx ; এক্সিট কোড 0
int 0x80 ; সিস্টেম কল
section .data
msg db 'Hello, World!', 0নতুন ইন্টারফেস (syscall):
- নতুন ৬৪-বিট আর্কিটেকচারে
syscallনির্দেশনা ব্যবহার করা হয়, যাint 0x80এর চেয়ে দ্রুত। - System call নম্বর
raxরেজিস্টারে এবং প্যারামিটারগুলোrdi,rsi,rdx,r10,r8, এবংr9রেজিস্টারে লোড করা হয়।
Windows এ System Call Interface
Windows System Call Interface সাধারণত API (Application Programming Interface) ব্যবহার করে অ্যাপ্লিকেশন এবং kernel-এর মধ্যে যোগাযোগ স্থাপন করে। Windows-এ system call সরাসরি ব্যবহৃত হয় না; বরং, Windows API কলগুলো kernel32.dll বা ntdll.dll লাইব্রেরির মাধ্যমে kernel-mode ফাংশনে পৌঁছায়।
প্রক্রিয়া:
- Windows API ব্যবহার করে সিস্টেম ফাংশন কল করা হয়।
- API কলগুলো kernel32.dll বা ntdll.dll এর মাধ্যমে kernel-mode ফাংশনে ম্যাপ করা হয়।
- Windows kernel সেই ফাংশন কার্যকর করে এবং রেসপন্স প্রদান করে।
উদাহরণ:
C/C++-এ Windows API ব্যবহার করে system call:
#include <windows.h>
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}নির্দেশনার কার্যপ্রণালী:
- Windows-এ system call interface
ntdll.dllএর মাধ্যমে কাজ করে, যা kernel-level API ফাংশন, যেমনNtWriteFile,NtCreateProcess, ইত্যাদি ব্যবহৃত হয়। - Windows-এ সাধারণত
syscallবাsysenterনির্দেশনা ব্যবহার করা হয় যা kernel-mode এ সিস্টেম কল কার্যকর করে।
Linux এবং Windows System Call Interface এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Linux | Windows |
|---|---|---|
| ইন্টারফেস পদ্ধতি | সরাসরি int 0x80 বা syscall ব্যবহার করে। | Windows API (kernel32.dll, ntdll.dll) মাধ্যমে। |
| সিস্টেম কল নম্বর | নির্দিষ্ট রেজিস্টারে লোড করা হয় (eax, rax)। | সরাসরি ব্যবহার করা হয় না, API মাধ্যমে ম্যাপ হয়। |
| কাস্টম সিস্টেম কল | ব্যবহারকারীরা প্রয়োজন হলে কাস্টম system call তৈরি করতে পারে। | সরাসরি সমর্থন নেই, তবে ড্রাইভার বা kernel-mode কোডের মাধ্যমে। |
| ব্যবহার | সাধারণত অ্যাডভান্সড প্রোগ্রামার বা kernel-level প্রোগ্রামিংয়ে ব্যবহৃত। | সাধারণ অ্যাপ্লিকেশন প্রোগ্রামিংয়ে API ব্যবহৃত। |
| আর্কিটেকচার | ওপেন সোর্স, পরিবর্তন করা যায়। | ক্লোজড সোর্স, Microsoft দ্বারা নিয়ন্ত্রিত। |
সারসংক্ষেপ
Linux এবং Windows উভয় অপারেটিং সিস্টেমেই System Call Interface ব্যবহার করা হয়, তবে তাদের পদ্ধতি ভিন্ন। Linux-এ সরাসরি int 0x80 বা syscall ব্যবহার করা যায়, যেখানে Windows-এ API কল ব্যবহার করে kernel-mode ফাংশন কার্যকর করা হয়। Linux সিস্টেম কল পদ্ধতি সরাসরি এবং প্রোগ্রামার-কেন্দ্রিক, যেখানে Windows পদ্ধতি API-কেন্দ্রিক এবং সাধারণ ব্যবহারকারীদের জন্য সহজতর।
Read more